From c1af1cf2cd0106ef8fcbb03d93c133ea90ec6fa3 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Mon, 26 May 2025 23:51:14 -0400 Subject: [PATCH 01/14] Update README.md --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b1330a17a..6775cfb44 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ If you have any questions, suggestions or comments, please use our [Discord chan ## 🧩 Features -- Completely open source, deployable on your servers +- Completely open source, deployable on your servers or home devices (e.g Raspberry Pi 4 or 5) - Website monitoring - Page speed monitoring - Infrastructure monitoring (memory, disk usage, CPU performance etc) - requires [Capture](https://github.com/bluewave-labs/capture) @@ -65,18 +65,17 @@ If you have any questions, suggestions or comments, please use our [Discord chan - SSL monitoring - Port monitoring - Incidents at a glance -- E-mail notifications +- Status pages +- E-mail, Webhooks, Discord, Telegram, Slack notifications - Scheduled maintenance +- JSON query monitoring +- Support for multiple languages -**Short term roadmap:** +**Short term roadmap:** ([Milestone 2.2](https://github.com/bluewave-labs/Checkmate/milestone/8)) -- Status pages (**in progress**) https://github.com/bluewave-labs/Checkmate/issues/1131 -- Translations (i18n) (**in progress**) -- Better notification options (Webhooks, Discord, Telegram, Slack) (**in progress**) https://github.com/bluewave-labs/Checkmate/issues/1545 -- JSON query monitoring (**in progress**) https://github.com/bluewave-labs/Checkmate/issues/1573 -- Tagging/grouping monitors https://github.com/bluewave-labs/Checkmate/issues/1546 -- More configuration options -- DNS monitoring +- Better notifications +- Network monitoring +- ..and a few more features ## 🏗️ Screenshots From 94c2cd05827ab0d8cb2a6348445043de5ea887a8 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Mon, 26 May 2025 23:52:15 -0400 Subject: [PATCH 02/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6775cfb44..9cbd32881 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ If you have any questions, suggestions or comments, please use our [Discord chan We are [Alex](http://github.com/ajhollid) (team lead), [Vishnu](http://github.com/vishnusn77), [Mohadeseh](http://github.com/mohicody), [Gorkem](http://github.com/gorkem-bwl/), [Owaise](http://github.com/Owaiseimdad), [Aryaman](https://github.com/Br0wnHammer) and [Mert](https://github/com/mertssmnoglu) helping individuals and businesses monitor their infra and servers. -We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 5000+ stars and attracted 60 contributors from around the globe. +We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 5800+ stars and attracted 70+ contributors from around the globe. Our repo is starred by employees from **Google, Microsoft, Intel, Cisco, Tencent, Electronic Arts, ByteDance, JP Morgan Chase, Deloitte, Accenture, Foxconn, Broadcom, China Telecom, Barclays, Capgemini, Wipro, Cloudflare, Dassault Systèmes and NEC**, so don’t hold back — jump in, contribute and learn with us! From 1b81251c9331138a2b5f7469b74d0d5a6750a069 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:10:32 -0700 Subject: [PATCH 03/14] format all files --- client/README.md | 1 - client/index.html | 33 +- client/package.json | 4 +- client/renovate.json | 8 +- .../Buttons/RoundGradientButton.jsx | 42 +- .../Components/Charts/ChartBox/EmptyView.jsx | 130 +- .../src/Components/Charts/ChartBox/index.jsx | 10 +- client/src/Components/Common/Footer.jsx | 451 +++---- client/src/Components/ConfigBox/index.jsx | 2 +- client/src/Components/ConfigRow/index.jsx | 53 +- client/src/Components/FilterHeader/index.jsx | 12 +- .../Components/Inputs/ImageUpload/index.jsx | 369 +++--- client/src/Components/Label/index.jsx | 10 +- .../Components/Layouts/HomeLayout/index.css | 2 +- .../Components/MonitorCreateHeader/index.jsx | 10 +- .../Components/MonitorStatusHeader/index.jsx | 5 +- .../Components/TabComponent.jsx | 206 ++-- .../Components/TabPanel.jsx | 43 +- .../Hooks/useNotification.js | 217 ++-- client/src/Components/ProgressBars/index.jsx | 2 +- client/src/Components/Sidebar/index.jsx | 24 +- client/src/Components/StarPrompt/index.jsx | 189 +-- client/src/Components/StatBox/index.jsx | 2 +- client/src/Components/Tab/index.jsx | 6 +- .../TabPanels/Account/PasswordPanel.jsx | 20 +- .../TabPanels/Account/ProfilePanel.jsx | 69 +- .../TabPanels/Account/TeamPanel.jsx | 3 +- .../src/Components/WalletProvider/index.css | 42 +- client/src/Hooks/useBulkMonitors.js | 36 +- client/src/Hooks/useMonitorUtils.js | 1 - client/src/Hooks/useSendTestEmail.js | 24 +- client/src/Pages/About/index.jsx | 6 +- client/src/Pages/Account/index.jsx | 14 +- .../Pages/Auth/Login/Components/EmailStep.jsx | 8 +- .../Auth/Login/Components/PasswordStep.jsx | 16 +- client/src/Pages/Auth/Login/Login.jsx | 24 +- .../src/Pages/Auth/NewPasswordConfirmed.jsx | 4 +- client/src/Pages/Auth/Register/Register.jsx | 2 +- .../src/Pages/Auth/Register/StepTwo/index.jsx | 13 +- .../Pages/DistributedUptime/Create/index.jsx | 12 +- .../Details/Components/Chatbot/index.jsx | 2 +- .../Components/ControlsHeader/index.jsx | 2 +- .../Details/Components/DeviceTicker/index.jsx | 4 +- .../Components/MonitorHeader/index.jsx | 4 +- .../Pages/Incidents/Hooks/useChecksFetch.jsx | 9 +- .../Incidents/Hooks/useMonitorsFetch.jsx | 2 +- client/src/Pages/Incidents/index.jsx | 6 +- .../src/Pages/Infrastructure/Create/index.jsx | 118 +- .../Details/Components/GaugeBoxes/Gauge.jsx | 13 +- .../Hooks/useHardwareMonitorsFetch.jsx | 7 +- .../Monitors/Components/Filters/index.jsx | 16 +- .../Pages/Infrastructure/Monitors/index.jsx | 2 +- client/src/Pages/Integrations/index.jsx | 4 +- .../Maintenance/MaintenanceTable/index.jsx | 2 +- .../src/Pages/PageSpeed/Configure/index.jsx | 25 +- client/src/Pages/PageSpeed/Create/index.jsx | 30 +- .../Components/PerformanceReport/index.jsx | 2 +- client/src/Pages/ServerUnreachable.jsx | 292 ++--- client/src/Pages/Settings/SettingsAbout.jsx | 7 +- .../Pages/Settings/SettingsDemoMonitors.jsx | 14 +- client/src/Pages/Settings/SettingsEmail.jsx | 15 +- .../src/Pages/Settings/SettingsPagespeed.jsx | 7 +- .../src/Pages/Settings/SettingsTimeZone.jsx | 7 +- client/src/Pages/Settings/SettingsUI.jsx | 7 +- .../Create/Components/Tabs/ConfigStack.jsx | 7 +- .../Create/Components/Tabs/Settings.jsx | 30 +- .../Create/Components/Tabs/index.jsx | 2 - client/src/Pages/StatusPage/Create/index.jsx | 2 +- client/src/Pages/StatusPage/Status/index.jsx | 2 +- client/src/Pages/Uptime/BulkImport/Upload.jsx | 18 +- client/src/Pages/Uptime/BulkImport/index.jsx | 7 +- client/src/Pages/Uptime/Configure/index.jsx | 24 +- client/src/Pages/Uptime/Create/index.jsx | 31 +- .../Components/UptimeDataTable/index.jsx | 5 +- client/src/Utils/NetworkService.js | 14 +- client/src/Utils/greeting.jsx | 5 +- client/src/Validation/error.js | 9 +- client/src/index.css | 4 +- client/src/locales/gb.json | 2 +- client/src/locales/ru.json | 1004 ++++++++-------- client/src/locales/tr.json | 1070 ++++++++--------- 81 files changed, 2628 insertions(+), 2330 deletions(-) diff --git a/client/README.md b/client/README.md index ee3ed2de2..55bc1efe2 100644 --- a/client/README.md +++ b/client/README.md @@ -1,2 +1 @@ - This directory contains the client side (frontend) of Checkmate. diff --git a/client/index.html b/client/index.html index a667d1ecf..0b0f675b4 100644 --- a/client/index.html +++ b/client/index.html @@ -1,17 +1,24 @@ + + + + - - - - + Checkmate + - Checkmate - - - -
- - - - \ No newline at end of file + +
+ + + diff --git a/client/package.json b/client/package.json index 483f660d1..238ced4ac 100644 --- a/client/package.json +++ b/client/package.json @@ -8,7 +8,9 @@ "build": "vite build", "build-dev": "vite build --mode development", "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "format": "prettier --write .", + "format-check": "prettier --check ." }, "dependencies": { "@emotion/react": "^11.13.3", diff --git a/client/renovate.json b/client/renovate.json index adfd80a40..67bfd7514 100644 --- a/client/renovate.json +++ b/client/renovate.json @@ -1,7 +1,5 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:recommended" - ], - "labels": ["dependencies"] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended"], + "labels": ["dependencies"] } diff --git a/client/src/Components/Buttons/RoundGradientButton.jsx b/client/src/Components/Buttons/RoundGradientButton.jsx index f9e14735c..ff22be955 100644 --- a/client/src/Components/Buttons/RoundGradientButton.jsx +++ b/client/src/Components/Buttons/RoundGradientButton.jsx @@ -3,28 +3,28 @@ import Button from "@mui/material/Button"; import { styled } from "@mui/material/styles"; const RoundGradientButton = styled(Button)(({ theme }) => ({ - position: "relative", - border: "5px solid transparent", - backgroundClip: "padding-box", - borderRadius: 30, - fontSize: "1.2rem", - color: theme.palette.primary.contrastText, - backgroundColor: theme.palette.background.main, + position: "relative", + border: "5px solid transparent", + backgroundClip: "padding-box", + borderRadius: 30, + fontSize: "1.2rem", + color: theme.palette.primary.contrastText, + backgroundColor: theme.palette.background.main, - "&:after": { - position: "absolute", - top: -3, - left: -3, - right: -3, - bottom: -3, - background: - theme.palette.mode === "dark" - ? "linear-gradient(90deg, #842bd2, #ff5451, #8c52ff)" - : "linear-gradient(90deg, #842bd2, #ff5451, #8c52ff)", - content: '""', - zIndex: -1, - borderRadius: 30, - }, + "&:after": { + position: "absolute", + top: -3, + left: -3, + right: -3, + bottom: -3, + background: + theme.palette.mode === "dark" + ? "linear-gradient(90deg, #842bd2, #ff5451, #8c52ff)" + : "linear-gradient(90deg, #842bd2, #ff5451, #8c52ff)", + content: '""', + zIndex: -1, + borderRadius: 30, + }, })); export default RoundGradientButton; diff --git a/client/src/Components/Charts/ChartBox/EmptyView.jsx b/client/src/Components/Charts/ChartBox/EmptyView.jsx index 94b1af7b0..296197a8c 100644 --- a/client/src/Components/Charts/ChartBox/EmptyView.jsx +++ b/client/src/Components/Charts/ChartBox/EmptyView.jsx @@ -31,78 +31,76 @@ import IconBox from "../../IconBox"; */ const EmptyView = ({ - icon, - header, - message = "No Data", - headingLevel = "h2", - justifyContent = "flex-start", - height = "100%" + icon, + header, + message = "No Data", + headingLevel = "h2", + justifyContent = "flex-start", + height = "100%", }) => { - const theme = useTheme(); - return ( - - + - - {icon && {icon}} - {header && {header}} - - - - {message} - - - - - ); + "& tspan, & text": { + fill: theme.palette.primary.contrastTextTertiary, + }, + }} + > + + {icon && {icon}} + {header && {header}} + + + {message} + + + + ); }; EmptyView.propTypes = { - message: PropTypes.string, - icon: PropTypes.node, - header: PropTypes.string, - headingLevel: PropTypes.oneOf(['h1', 'h2', 'h3']), - justifyContent: PropTypes.string, - height: PropTypes.string + message: PropTypes.string, + icon: PropTypes.node, + header: PropTypes.string, + headingLevel: PropTypes.oneOf(["h1", "h2", "h3"]), + justifyContent: PropTypes.string, + height: PropTypes.string, }; export default EmptyView; diff --git a/client/src/Components/Charts/ChartBox/index.jsx b/client/src/Components/Charts/ChartBox/index.jsx index 4b72fe16a..6b74ace68 100644 --- a/client/src/Components/Charts/ChartBox/index.jsx +++ b/client/src/Components/Charts/ChartBox/index.jsx @@ -18,7 +18,13 @@ const ChartBox = ({ }) => { const theme = useTheme(); if (isEmpty) { - return ; + return ( + + ); } return ( - {'Copyright © '} - - UpRock - -   - {new Date().getFullYear()} - - ); + return ( + + {"Copyright © "} + + UpRock + +   + {new Date().getFullYear()} + + ); } export default function Footer() { - return ( - - - -
- - Privacy Policy - - -  •  - - - Terms of Service - - -
- - - - - - - - - - - - - - - - + return ( + + +
+ + Privacy Policy + + +  •  + + + Terms of Service + + +
+ + + + + + + + + + + + + + + + + +
-
-
- - - - Made with ❤️ by  - - UpRock  - - &  - - Bluewave Labs - - - - - Built on  - - -
- ); + + + + + + + + + + + + + + + + + + +  Solana + + + + + ); } diff --git a/client/src/Components/ConfigBox/index.jsx b/client/src/Components/ConfigBox/index.jsx index 9b64712fc..44ae38472 100644 --- a/client/src/Components/ConfigBox/index.jsx +++ b/client/src/Components/ConfigBox/index.jsx @@ -29,7 +29,7 @@ const ConfigBox = styled(Stack)(({ theme }) => ({ }, "& h1, & h2": { color: theme.palette.primary.contrastTextSecondary, - } + }, })); export default ConfigBox; diff --git a/client/src/Components/ConfigRow/index.jsx b/client/src/Components/ConfigRow/index.jsx index c19d9ac5a..217085b6d 100644 --- a/client/src/Components/ConfigRow/index.jsx +++ b/client/src/Components/ConfigRow/index.jsx @@ -7,7 +7,7 @@ import ConfigBox from "../ConfigBox"; * ConfigRow is a styled container used to layout content in a row format with specific padding, border, and spacing. * It serves as the wrapper for ConfigBox, with the left section displaying the title and description, * and the right section displaying the children. - * + * * @component * @example * return ( @@ -19,31 +19,40 @@ import ConfigBox from "../ConfigBox"; */ const ConfigRow = ({ title, description, children }) => { - const theme = useTheme(); + const theme = useTheme(); - return ( - - - - {title} - - {description && ( - - {description} - - )} - - - {children} - - - ); + return ( + + + + {title} + + {description && ( + + {description} + + )} + + + {children} + + + ); }; ConfigRow.propTypes = { - title: PropTypes.string.isRequired, - description: PropTypes.string, - children: PropTypes.node, + title: PropTypes.string.isRequired, + description: PropTypes.string, + children: PropTypes.node, }; export default ConfigRow; diff --git a/client/src/Components/FilterHeader/index.jsx b/client/src/Components/FilterHeader/index.jsx index de438da96..36dd04081 100644 --- a/client/src/Components/FilterHeader/index.jsx +++ b/client/src/Components/FilterHeader/index.jsx @@ -42,10 +42,14 @@ const FilterHeader = ({ header, options, value, onChange, multiple = true }) => return header; } - return header + " | " + selected - .map((value) => options.find((option) => option.value === value)?.label) - .filter(Boolean) - .join(", "); + return ( + header + + " | " + + selected + .map((value) => options.find((option) => option.value === value)?.label) + .filter(Boolean) + .join(", ") + ); }} MenuProps={{ anchorOrigin: { diff --git a/client/src/Components/Inputs/ImageUpload/index.jsx b/client/src/Components/Inputs/ImageUpload/index.jsx index a49dc4860..a81c89393 100644 --- a/client/src/Components/Inputs/ImageUpload/index.jsx +++ b/client/src/Components/Inputs/ImageUpload/index.jsx @@ -36,199 +36,198 @@ const ImageUpload = ({ error, }) => { const theme = useTheme(); - const { t } = useTranslation(); - const [uploadComplete, setUploadComplete] = useState(false); - const [completedFile, setCompletedFile] = useState(null); - const [file, setFile] = useState(null); - const [progress, setProgress] = useState({ value: 0, isLoading: false }); - const intervalRef = useRef(null); - const [localError, setLocalError] = useState(null); - const [isDragging, setIsDragging] = useState(false); + const { t } = useTranslation(); + const [uploadComplete, setUploadComplete] = useState(false); + const [completedFile, setCompletedFile] = useState(null); + const [file, setFile] = useState(null); + const [progress, setProgress] = useState({ value: 0, isLoading: false }); + const intervalRef = useRef(null); + const [localError, setLocalError] = useState(null); + const [isDragging, setIsDragging] = useState(false); const roundStyle = previewIsRound ? { borderRadius: "50%" } : {}; const handleImageChange = useCallback( - (file) => { - if (!file) return; + (file) => { + if (!file) return; - const isValidType = accept.some((type) => - file.type.includes(type) - ); - const isValidSize = file.size <= maxSize; - - if (!isValidType) { - setLocalError(t('invalidFileFormat')); - return; - } - if (!isValidSize) { - setLocalError(t('invalidFileSize')); - return; - } - - setLocalError(null); - - const previewFile = { - src: URL.createObjectURL(file), - name: file.name, - file, - }; - - setFile(previewFile); - setProgress({ value: 0, isLoading: true }); - - intervalRef.current = setInterval(() => { - setProgress((prev) => { - const buffer = 12; - if (prev.value + buffer >= 100) { - clearInterval(intervalRef.current); - setUploadComplete(true); - setCompletedFile(previewFile); - return { value: 100, isLoading: false }; - } - return { value: prev.value + buffer, isLoading: true }; - }); - }, 120); - }, - [maxSize, accept] - ); + const isValidType = accept.some((type) => file.type.includes(type)); + const isValidSize = file.size <= maxSize; - useEffect(() => { - if (uploadComplete && completedFile) { - onChange?.(completedFile); - setUploadComplete(false); - setCompletedFile(null); - } - }, [uploadComplete, completedFile, onChange]); + if (!isValidType) { + setLocalError(t("invalidFileFormat")); + return; + } + if (!isValidSize) { + setLocalError(t("invalidFileSize")); + return; + } + setLocalError(null); + + const previewFile = { + src: URL.createObjectURL(file), + name: file.name, + file, + }; + + setFile(previewFile); + setProgress({ value: 0, isLoading: true }); + + intervalRef.current = setInterval(() => { + setProgress((prev) => { + const buffer = 12; + if (prev.value + buffer >= 100) { + clearInterval(intervalRef.current); + setUploadComplete(true); + setCompletedFile(previewFile); + return { value: 100, isLoading: false }; + } + return { value: prev.value + buffer, isLoading: true }; + }); + }, 120); + }, + [maxSize, accept] + ); + + useEffect(() => { + if (uploadComplete && completedFile) { + onChange?.(completedFile); + setUploadComplete(false); + setCompletedFile(null); + } + }, [uploadComplete, completedFile, onChange]); return ( - <> - {src ? ( - - Uploaded preview - - ) : ( - <> - setIsDragging(true)} - onDragLeave={() => setIsDragging(false)} - onDrop={() => setIsDragging(false)} - sx={{ - position: "relative", - height: "fit-content", - border: "dashed", - borderRadius: theme.shape.borderRadius, - borderColor: isDragging - ? theme.palette.primary.main - : theme.palette.primary.lowContrast, - backgroundColor: isDragging - ? "hsl(215, 87%, 51%, 0.05)" - : "transparent", - borderWidth: "2px", - transition: "0.2s", - "&:hover": { - borderColor: theme.palette.primary.main, - backgroundColor: "hsl(215, 87%, 51%, 0.05)", - }, - }} - > - handleImageChange(e?.target?.files?.[0])} - sx={{ - width: "100%", - "& .MuiInputBase-input[type='file']": { - opacity: 0, - cursor: "pointer", - maxWidth: "500px", - minHeight: "175px", - zIndex: 1, - }, - "& fieldset": { - padding: 0, - border: "none", - }, - }} - /> - - - - - - - {t('ClickUpload')} - {" "} - or {t('DragandDrop')} - - ({t('MaxSize')}: {Math.round(maxSize / 1024 / 1024)}MB) - - - - {(localError || progress.isLoading || progress.value !== 0) && ( - } - label={file?.name || "Upload failed"} - size={file?.size} - progress={progress.value} - onClick={() => { - clearInterval(intervalRef.current); - setFile(null); - setProgress({ value: 0, isLoading: false }); - setLocalError(null); - onChange(undefined); - }} - error={localError || error} - /> - )} - - {t('SupportedFormats')}: {accept.join(", ").toUpperCase()} - - - )} - - ); + <> + {src ? ( + + Uploaded preview + + ) : ( + <> + setIsDragging(true)} + onDragLeave={() => setIsDragging(false)} + onDrop={() => setIsDragging(false)} + sx={{ + position: "relative", + height: "fit-content", + border: "dashed", + borderRadius: theme.shape.borderRadius, + borderColor: isDragging + ? theme.palette.primary.main + : theme.palette.primary.lowContrast, + backgroundColor: isDragging ? "hsl(215, 87%, 51%, 0.05)" : "transparent", + borderWidth: "2px", + transition: "0.2s", + "&:hover": { + borderColor: theme.palette.primary.main, + backgroundColor: "hsl(215, 87%, 51%, 0.05)", + }, + }} + > + handleImageChange(e?.target?.files?.[0])} + sx={{ + width: "100%", + "& .MuiInputBase-input[type='file']": { + opacity: 0, + cursor: "pointer", + maxWidth: "500px", + minHeight: "175px", + zIndex: 1, + }, + "& fieldset": { + padding: 0, + border: "none", + }, + }} + /> + + + + + + + {t("ClickUpload")} + {" "} + or {t("DragandDrop")} + + + ({t("MaxSize")}: {Math.round(maxSize / 1024 / 1024)}MB) + + + + {(localError || progress.isLoading || progress.value !== 0) && ( + } + label={file?.name || "Upload failed"} + size={file?.size} + progress={progress.value} + onClick={() => { + clearInterval(intervalRef.current); + setFile(null); + setProgress({ value: 0, isLoading: false }); + setLocalError(null); + onChange(undefined); + }} + error={localError || error} + /> + )} + + {t("SupportedFormats")}: {accept.join(", ").toUpperCase()} + + + )} + + ); }; ImageUpload.propTypes = { @@ -240,4 +239,4 @@ ImageUpload.propTypes = { error: PropTypes.string, }; -export default ImageUpload; \ No newline at end of file +export default ImageUpload; diff --git a/client/src/Components/Label/index.jsx b/client/src/Components/Label/index.jsx index 6ba55e81c..8c4278fed 100644 --- a/client/src/Components/Label/index.jsx +++ b/client/src/Components/Label/index.jsx @@ -158,7 +158,15 @@ const StatusLabel = ({ status, text, customStyles }) => { }; StatusLabel.propTypes = { - status: PropTypes.oneOf(["up", "down", "paused", "pending", "cannot resolve", "published", "unpublished"]), + status: PropTypes.oneOf([ + "up", + "down", + "paused", + "pending", + "cannot resolve", + "published", + "unpublished", + ]), text: PropTypes.string, customStyles: PropTypes.object, }; diff --git a/client/src/Components/Layouts/HomeLayout/index.css b/client/src/Components/Layouts/HomeLayout/index.css index 28ac340f8..2db147f41 100644 --- a/client/src/Components/Layouts/HomeLayout/index.css +++ b/client/src/Components/Layouts/HomeLayout/index.css @@ -30,4 +30,4 @@ max-width: 1400px; margin: 0 auto; flex: 1; -} \ No newline at end of file +} diff --git a/client/src/Components/MonitorCreateHeader/index.jsx b/client/src/Components/MonitorCreateHeader/index.jsx index 15d6d5c0f..b630cb259 100644 --- a/client/src/Components/MonitorCreateHeader/index.jsx +++ b/client/src/Components/MonitorCreateHeader/index.jsx @@ -4,17 +4,11 @@ import PropTypes from "prop-types"; import { useTranslation } from "react-i18next"; import { useTheme } from "@emotion/react"; -const CreateMonitorHeader = ({ - isAdmin, - label, - isLoading = true, - path, - bulkPath, -}) => { +const CreateMonitorHeader = ({ isAdmin, label, isLoading = true, path, bulkPath }) => { const navigate = useNavigate(); const { t } = useTranslation(); const theme = useTheme(); - + // Use the provided label or fall back to the translated default if (!isAdmin) return null; diff --git a/client/src/Components/MonitorStatusHeader/index.jsx b/client/src/Components/MonitorStatusHeader/index.jsx index a3cb5edfe..edadfb8df 100644 --- a/client/src/Components/MonitorStatusHeader/index.jsx +++ b/client/src/Components/MonitorStatusHeader/index.jsx @@ -28,8 +28,9 @@ const MonitorStatusHeader = ({ path, isLoading = false, isAdmin, monitor }) => { gap={theme.spacing(4)} > - {monitor?.url?.replace(/^https?:\/\//, "") || "..."} diff --git a/client/src/Components/NotificationIntegrationModal/Components/TabComponent.jsx b/client/src/Components/NotificationIntegrationModal/Components/TabComponent.jsx index e46a8cdd5..571379c7e 100644 --- a/client/src/Components/NotificationIntegrationModal/Components/TabComponent.jsx +++ b/client/src/Components/NotificationIntegrationModal/Components/TabComponent.jsx @@ -1,109 +1,115 @@ import React from "react"; -import { - Typography, - Box, - Button, - CircularProgress -} from "@mui/material"; +import { Typography, Box, Button, CircularProgress } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useTheme } from "@emotion/react"; import TextInput from "../../../Components/Inputs/TextInput"; import Checkbox from "../../../Components/Inputs/Checkbox"; -const TabComponent = ({ - type, - integrations, - handleIntegrationChange, - handleInputChange, - handleTestNotification, - isLoading +const TabComponent = ({ + type, + integrations, + handleIntegrationChange, + handleInputChange, + handleTestNotification, + isLoading, }) => { - const theme = useTheme(); - const { t } = useTranslation(); - - // Helper to get the field state key (e.g., slackWebhook, telegramToken) - const getFieldKey = (typeId, fieldId) => { - return `${typeId}${fieldId.charAt(0).toUpperCase() + fieldId.slice(1)}`; - }; - - // Check if all fields have values to enable test button - const areAllFieldsFilled = () => { - return type.fields.every(field => { - const fieldKey = getFieldKey(type.id, field.id); - return integrations[fieldKey]; - }); - }; - - return ( - <> - - {type.label} - - - - {type.description} - - - - handleIntegrationChange(type.id, e.target.checked)} - disabled={isLoading} - /> - - - {type.fields.map(field => { - const fieldKey = getFieldKey(type.id, field.id); - - return ( - - - {field.label} - - - handleInputChange(fieldKey, e.target.value)} - disabled={!integrations[type.id] || isLoading} - /> - - ); - })} - - - - - - ); + const theme = useTheme(); + const { t } = useTranslation(); + + // Helper to get the field state key (e.g., slackWebhook, telegramToken) + const getFieldKey = (typeId, fieldId) => { + return `${typeId}${fieldId.charAt(0).toUpperCase() + fieldId.slice(1)}`; + }; + + // Check if all fields have values to enable test button + const areAllFieldsFilled = () => { + return type.fields.every((field) => { + const fieldKey = getFieldKey(type.id, field.id); + return integrations[fieldKey]; + }); + }; + + return ( + <> + + {type.label} + + + + {type.description} + + + + handleIntegrationChange(type.id, e.target.checked)} + disabled={isLoading} + /> + + + {type.fields.map((field) => { + const fieldKey = getFieldKey(type.id, field.id); + + return ( + + + {field.label} + + + handleInputChange(fieldKey, e.target.value)} + disabled={!integrations[type.id] || isLoading} + /> + + ); + })} + + + + + + ); }; -export default TabComponent; \ No newline at end of file +export default TabComponent; diff --git a/client/src/Components/NotificationIntegrationModal/Components/TabPanel.jsx b/client/src/Components/NotificationIntegrationModal/Components/TabPanel.jsx index a9252e710..93546e7bc 100644 --- a/client/src/Components/NotificationIntegrationModal/Components/TabPanel.jsx +++ b/client/src/Components/NotificationIntegrationModal/Components/TabPanel.jsx @@ -5,7 +5,7 @@ import { useTheme } from "@emotion/react"; /** * TabPanel component that displays content for the selected tab. - * + * * @component * @param {Object} props - The component props. * @param {React.ReactNode} props.children - The content to be displayed when this tab panel is selected. @@ -15,32 +15,27 @@ import { useTheme } from "@emotion/react"; * @returns {React.ReactElement|null} The rendered tab panel or null if not selected. */ function TabPanel({ children, value, index, ...other }) { - const theme = useTheme(); - - return ( - - ); + const theme = useTheme(); + + return ( + + ); } TabPanel.propTypes = { + children: PropTypes.node, - children: PropTypes.node, - - index: PropTypes.number.isRequired, - - value: PropTypes.number.isRequired + index: PropTypes.number.isRequired, + + value: PropTypes.number.isRequired, }; -export default TabPanel; \ No newline at end of file +export default TabPanel; diff --git a/client/src/Components/NotificationIntegrationModal/Hooks/useNotification.js b/client/src/Components/NotificationIntegrationModal/Hooks/useNotification.js index 3547873e8..cdbc11598 100644 --- a/client/src/Components/NotificationIntegrationModal/Hooks/useNotification.js +++ b/client/src/Components/NotificationIntegrationModal/Hooks/useNotification.js @@ -1,128 +1,129 @@ -import { useState } from 'react'; +import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { networkService } from '../../../Utils/NetworkService'; -import { createToast } from '../../../Utils/toastUtils'; +import { networkService } from "../../../Utils/NetworkService"; +import { createToast } from "../../../Utils/toastUtils"; // Define constants for notification types to avoid magic values const NOTIFICATION_TYPES = { - SLACK: 'slack', - DISCORD: 'discord', - TELEGRAM: 'telegram', - WEBHOOK: 'webhook' + SLACK: "slack", + DISCORD: "discord", + TELEGRAM: "telegram", + WEBHOOK: "webhook", }; // Define constants for field IDs const FIELD_IDS = { - WEBHOOK: 'webhook', - TOKEN: 'token', - CHAT_ID: 'chatId', - URL: 'url' + WEBHOOK: "webhook", + TOKEN: "token", + CHAT_ID: "chatId", + URL: "url", }; /** * Custom hook for notification-related operations */ const useNotifications = () => { - const [loading, setLoading] = useState(false); - const [error, setError] = useState(undefined); - const { t } = useTranslation(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(undefined); + const { t } = useTranslation(); - /** - * Send a test notification - * @param {string} type - The notification type (slack, discord, telegram, webhook) - * @param {object} config - Configuration object with necessary params - */ - const sendTestNotification = async (type, config) => { - setLoading(true); - setError(undefined); - - // Validation based on notification type - let payload = { platform: type }; - let isValid = true; - let errorMessage = ''; - - switch(type) { - case NOTIFICATION_TYPES.SLACK: - payload.webhookUrl = config.webhook; - if (typeof payload.webhookUrl === 'undefined' || payload.webhookUrl === '') { - isValid = false; - errorMessage = t('notifications.slack.webhookRequired'); - } - break; - - case NOTIFICATION_TYPES.DISCORD: - payload.webhookUrl = config.webhook; - if (typeof payload.webhookUrl === 'undefined' || payload.webhookUrl === '') { - isValid = false; - errorMessage = t('notifications.discord.webhookRequired'); - } - break; - - case NOTIFICATION_TYPES.TELEGRAM: - payload.botToken = config.token; - payload.chatId = config.chatId; - if (typeof payload.botToken === 'undefined' || payload.botToken === '' || - typeof payload.chatId === 'undefined' || payload.chatId === '') { - isValid = false; - errorMessage = t('notifications.telegram.fieldsRequired'); - } - break; - - case NOTIFICATION_TYPES.WEBHOOK: - payload.webhookUrl = config.url; - payload.platform = NOTIFICATION_TYPES.SLACK; - if (typeof payload.webhookUrl === 'undefined' || payload.webhookUrl === '') { - isValid = false; - errorMessage = t('notifications.webhook.urlRequired'); - } - break; - - default: - isValid = false; - errorMessage = t('notifications.unsupportedType'); - } + /** + * Send a test notification + * @param {string} type - The notification type (slack, discord, telegram, webhook) + * @param {object} config - Configuration object with necessary params + */ + const sendTestNotification = async (type, config) => { + setLoading(true); + setError(undefined); - // If validation fails, show error and return - if (isValid === false) { - createToast({ - body: errorMessage, - variant: "error" - }); - setLoading(false); - return; - } + // Validation based on notification type + let payload = { platform: type }; + let isValid = true; + let errorMessage = ""; - try { - const response = await networkService.testNotification({ - platform: type, - payload: payload - }); - - if (response.data.success === true) { - createToast({ - body: t('notifications.testSuccess'), - variant: "info" - }); - } else { - throw new Error(response.data.msg || t('notifications.testFailed')); - } - } catch (error) { - const errorMsg = error.response?.data?.msg || error.message || t('notifications.networkError'); - createToast({ - body: `${t('notifications.testFailed')}: ${errorMsg}`, - variant: "error" - }); - setError(errorMsg); - } finally { - setLoading(false); - } - }; + switch (type) { + case NOTIFICATION_TYPES.SLACK: + payload.webhookUrl = config.webhook; + if (typeof payload.webhookUrl === "undefined" || payload.webhookUrl === "") { + isValid = false; + errorMessage = t("notifications.slack.webhookRequired"); + } + break; - return [ - loading, - error, - sendTestNotification - ]; + case NOTIFICATION_TYPES.DISCORD: + payload.webhookUrl = config.webhook; + if (typeof payload.webhookUrl === "undefined" || payload.webhookUrl === "") { + isValid = false; + errorMessage = t("notifications.discord.webhookRequired"); + } + break; + + case NOTIFICATION_TYPES.TELEGRAM: + payload.botToken = config.token; + payload.chatId = config.chatId; + if ( + typeof payload.botToken === "undefined" || + payload.botToken === "" || + typeof payload.chatId === "undefined" || + payload.chatId === "" + ) { + isValid = false; + errorMessage = t("notifications.telegram.fieldsRequired"); + } + break; + + case NOTIFICATION_TYPES.WEBHOOK: + payload.webhookUrl = config.url; + payload.platform = NOTIFICATION_TYPES.SLACK; + if (typeof payload.webhookUrl === "undefined" || payload.webhookUrl === "") { + isValid = false; + errorMessage = t("notifications.webhook.urlRequired"); + } + break; + + default: + isValid = false; + errorMessage = t("notifications.unsupportedType"); + } + + // If validation fails, show error and return + if (isValid === false) { + createToast({ + body: errorMessage, + variant: "error", + }); + setLoading(false); + return; + } + + try { + const response = await networkService.testNotification({ + platform: type, + payload: payload, + }); + + if (response.data.success === true) { + createToast({ + body: t("notifications.testSuccess"), + variant: "info", + }); + } else { + throw new Error(response.data.msg || t("notifications.testFailed")); + } + } catch (error) { + const errorMsg = + error.response?.data?.msg || error.message || t("notifications.networkError"); + createToast({ + body: `${t("notifications.testFailed")}: ${errorMsg}`, + variant: "error", + }); + setError(errorMsg); + } finally { + setLoading(false); + } + }; + + return [loading, error, sendTestNotification]; }; -export default useNotifications; \ No newline at end of file +export default useNotifications; diff --git a/client/src/Components/ProgressBars/index.jsx b/client/src/Components/ProgressBars/index.jsx index 4f5515d3a..ad7ceb3dc 100644 --- a/client/src/Components/ProgressBars/index.jsx +++ b/client/src/Components/ProgressBars/index.jsx @@ -93,7 +93,7 @@ const ProgressUpload = ({ icon, label, size, progress = 0, onClick, error }) => {error ? error : label} diff --git a/client/src/Components/Sidebar/index.jsx b/client/src/Components/Sidebar/index.jsx index b0f99cd2f..f78ac62f0 100644 --- a/client/src/Components/Sidebar/index.jsx +++ b/client/src/Components/Sidebar/index.jsx @@ -121,7 +121,7 @@ function Sidebar() { const dispatch = useDispatch(); const { t } = useTranslation(); const authState = useSelector((state) => state.auth); - + const menu = getMenu(t); const otherMenuItems = getOtherMenuItems(t); const accountMenuItems = getAccountMenuItems(t); @@ -147,7 +147,7 @@ function Sidebar() { } else { setSidebarReady(false); } - }, [collapsed]); + }, [collapsed]); const renderAccountMenuItems = () => { let filteredAccountMenuItems = [...accountMenuItems]; @@ -170,8 +170,8 @@ function Sidebar() { { - closePopup() - navigate(item.path) + closePopup(); + navigate(item.path); }} sx={{ gap: theme.spacing(2), @@ -231,7 +231,7 @@ function Sidebar() { */ sx={{ position: "relative", - borderRight: `1px solid ${theme.palette.primary.lowContrast}`, + borderRight: `1px solid ${theme.palette.primary.lowContrast}`, borderColor: theme.palette.primary.lowContrast, borderRadius: 0, backgroundColor: theme.palette.primary.main, @@ -732,11 +732,15 @@ function Sidebar() { {authState.user?.firstName} {authState.user?.lastName} - {authState.user?.role?.includes("superadmin") ? t("roles.superAdmin") : - authState.user?.role?.includes("admin") ? t("roles.admin") : - authState.user?.role?.includes("user") ? t("roles.teamMember") : - authState.user?.role?.includes("demo") ? t("roles.demoUser") : - authState.user?.role} + {authState.user?.role?.includes("superadmin") + ? t("roles.superAdmin") + : authState.user?.role?.includes("admin") + ? t("roles.admin") + : authState.user?.role?.includes("user") + ? t("roles.teamMember") + : authState.user?.role?.includes("demo") + ? t("roles.demoUser") + : authState.user?.role} { - const theme = useTheme(); - const dispatch = useDispatch(); - const { t } = useTranslation(); - const isOpen = useSelector((state) => state.ui?.starPromptOpen ?? true); - const mode = useSelector((state) => state.ui.mode); +const StarPrompt = ({ repoUrl = "https://github.com/bluewave-labs/checkmate" }) => { + const theme = useTheme(); + const dispatch = useDispatch(); + const { t } = useTranslation(); + const isOpen = useSelector((state) => state.ui?.starPromptOpen ?? true); + const mode = useSelector((state) => state.ui.mode); - const handleClose = () => { - dispatch(setStarPromptOpen(false)); - }; + const handleClose = () => { + dispatch(setStarPromptOpen(false)); + }; - const handleStarClick = () => { - window.open(repoUrl, '_blank'); - }; + const handleStarClick = () => { + window.open(repoUrl, "_blank"); + }; - if (!isOpen) return null; + if (!isOpen) return null; - return ( - - - - {t('starPromptTitle')} - - - - - + return ( + + + + {t("starPromptTitle")} + + + + + - - {t('starPromptDescription')} - + + {t("starPromptDescription")} + - - - ); + + + ); }; export default StarPrompt; diff --git a/client/src/Components/StatBox/index.jsx b/client/src/Components/StatBox/index.jsx index ed0b6694a..673736ea9 100644 --- a/client/src/Components/StatBox/index.jsx +++ b/client/src/Components/StatBox/index.jsx @@ -80,7 +80,7 @@ const StatBox = ({ }; const responsiveWidths = { - default: `calc(25% - (3 * ${theme.spacing(8)} / 4))`, + default: `calc(25% - (3 * ${theme.spacing(8)} / 4))`, md: `calc(50% - (1 * ${theme.spacing(8)} / 2))`, }; diff --git a/client/src/Components/Tab/index.jsx b/client/src/Components/Tab/index.jsx index 97bb25c7f..72709cc00 100644 --- a/client/src/Components/Tab/index.jsx +++ b/client/src/Components/Tab/index.jsx @@ -20,7 +20,11 @@ const CustomTabList = ({ value, onChange, children, ...props }) => { "& .MuiTabs-root": { height: "fit-content", minHeight: "0" }, }} > - + {children} diff --git a/client/src/Components/TabPanels/Account/PasswordPanel.jsx b/client/src/Components/TabPanels/Account/PasswordPanel.jsx index 94991ab09..88604c72b 100644 --- a/client/src/Components/TabPanels/Account/PasswordPanel.jsx +++ b/client/src/Components/TabPanels/Account/PasswordPanel.jsx @@ -94,7 +94,10 @@ const PasswordPanel = () => { const action = await dispatch(update({ localData })); if (action.payload.success) { createToast({ - body: t("passwordPanel.passwordChangedSuccess", "Your password was changed successfully."), + body: t( + "passwordPanel.passwordChangedSuccess", + "Your password was changed successfully." + ), }); setLocalData({ password: "", @@ -104,7 +107,10 @@ const PasswordPanel = () => { } else { // TODO: Check for other errors? createToast({ - body: t("passwordPanel.passwordInputIncorrect", "Your password input was incorrect."), + body: t( + "passwordPanel.passwordInputIncorrect", + "Your password input was incorrect." + ), }); setErrors({ password: "*" + action.payload.msg + "." }); } @@ -153,7 +159,10 @@ const PasswordPanel = () => { { )} diff --git a/client/src/Components/TabPanels/Account/ProfilePanel.jsx b/client/src/Components/TabPanels/Account/ProfilePanel.jsx index bdf52de3a..53a8a8d77 100644 --- a/client/src/Components/TabPanels/Account/ProfilePanel.jsx +++ b/client/src/Components/TabPanels/Account/ProfilePanel.jsx @@ -85,13 +85,13 @@ const ProfilePanel = () => { // Resets picture-related states and clears interval const removePicture = () => { errors["picture"] && clearError("picture"); - setFile(undefined); + setFile(undefined); setLocalData((prev) => ({ ...prev, file: undefined, - deleteProfileImage: true, + deleteProfileImage: true, })); - }; + }; // Opens the picture update modal const openPictureModal = () => { @@ -102,9 +102,9 @@ const ProfilePanel = () => { // Closes the picture update modal and resets related states const closePictureModal = () => { if (errors["picture"]) clearError("picture"); - setFile(undefined); - setIsOpen(""); - }; + setFile(undefined); + setIsOpen(""); + }; // Updates profile image displayed on UI const handleUpdatePicture = () => { @@ -116,24 +116,23 @@ const ProfilePanel = () => { setIsOpen(""); if (errors["unchanged"]) clearError("unchanged"); }; - + // Handles form submission to update user profile const handleSaveProfile = async (event) => { event.preventDefault(); const nameChanged = - localData.firstName !== user.firstName || - localData.lastName !== user.lastName; + localData.firstName !== user.firstName || localData.lastName !== user.lastName; const avatarChanged = - localData.deleteProfileImage === true || - (localData.file && localData.file !== `data:image/png;base64,${user.avatarImage}`); + localData.deleteProfileImage === true || + (localData.file && localData.file !== `data:image/png;base64,${user.avatarImage}`); if (!nameChanged && !avatarChanged) { - createToast({ - body: "Unable to update profile — no changes detected.", - }); - setErrors({ unchanged: "unable to update profile" }); - return; + createToast({ + body: "Unable to update profile — no changes detected.", + }); + setErrors({ unchanged: "unable to update profile" }); + return; } const action = await dispatch(update({ localData })); @@ -205,7 +204,7 @@ const ProfilePanel = () => { > {/* This 0.9 is a bit magic numbering, refactor */} - {t('FirstName')} + {t("FirstName")} { gap={SPACING_GAP} > - {t('LastName')} + {t("LastName")} { gap={SPACING_GAP} > - {t('email')} + {t("email")} - {t('EmailDescriptionText')} + {t("EmailDescriptionText")} { gap={SPACING_GAP} > - {t('YourPhoto')} + {t("YourPhoto")} - {t('PhotoDescriptionText')} + {t("PhotoDescriptionText")} { color="error" onClick={handleDeletePicture} > - {t('delete')} + {t("delete")} @@ -325,7 +324,7 @@ const ProfilePanel = () => { disabled={Object.keys(errors).length !== 0 && !errors?.picture && true} sx={{ px: theme.spacing(12) }} > - {t('save')} + {t("save")}
@@ -344,12 +343,12 @@ const ProfilePanel = () => { spellCheck="false" > - {t('DeleteAccountTitle')} + {t("DeleteAccountTitle")} - {t('DeleteDescriptionText')} + {t("DeleteDescriptionText")} )} setIsOpen("")} - confirmationButtonLabel={t('DeleteAccountButton')} + confirmationButtonLabel={t("DeleteAccountButton")} onConfirm={handleDeleteAccount} isLoading={isLoading} /> @@ -389,13 +388,13 @@ const ProfilePanel = () => { : user?.avatarImage ? `data:image/png;base64,${user.avatarImage}` : "" - } + } onChange={(newFile) => { if (newFile) { setFile(newFile); clearError("unchanged"); } - }} + }} previewIsRound maxSize={3 * 1024 * 1024} /> @@ -410,7 +409,7 @@ const ProfilePanel = () => { color="info" onClick={removePicture} > - {t('remove')} + {t("remove")} diff --git a/client/src/Components/TabPanels/Account/TeamPanel.jsx b/client/src/Components/TabPanels/Account/TeamPanel.jsx index fe4b201dd..c29762233 100644 --- a/client/src/Components/TabPanels/Account/TeamPanel.jsx +++ b/client/src/Components/TabPanels/Account/TeamPanel.jsx @@ -48,7 +48,8 @@ const TeamPanel = () => { {row.firstName + " " + row.lastName} - {t("teamPanel.table.created")} {new Date(row.createdAt).toLocaleDateString()} + {t("teamPanel.table.created")}{" "} + {new Date(row.createdAt).toLocaleDateString()} ); diff --git a/client/src/Components/WalletProvider/index.css b/client/src/Components/WalletProvider/index.css index 15fb9d816..f3da31efc 100644 --- a/client/src/Components/WalletProvider/index.css +++ b/client/src/Components/WalletProvider/index.css @@ -1,10 +1,10 @@ .wallet-adapter-dropdown { width: 100%; display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: center; - gap: var(--env-var-spacing-1); + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: var(--env-var-spacing-1); } .wallet-adapter-button { @@ -15,37 +15,39 @@ height: var(--env-var-height-2) !important; font-size: var(--env-var-font-size-medium-plus) !important; font-weight: 500 !important; - margin: 0; - padding: calc((var(--env-var-height-2) - var(--env-var-font-size-medium-plus) * 1.2) / 2) var(--env-var-spacing-1); + margin: 0; + padding: calc( + (var(--env-var-height-2) - var(--env-var-font-size-medium-plus) * 1.2) / 2 + ) + var(--env-var-spacing-1); white-space: nowrap; } .wallet-adapter-modal-title { - font-size: var(--font-size-h5) !important; + font-size: var(--font-size-h5) !important; } /* Separator styling */ .wallet-adapter-modal-divider { - background-color: var(--border-color) !important; - margin: var(--spacing-md) 0 !important; + background-color: var(--border-color) !important; + margin: var(--spacing-md) 0 !important; } /* Responsive fixes */ -@media (max-width: 1200px) { +@media (max-width: 1200px) { .wallet-adapter-button { font-size: var(--env-var-font-size-medium) !important; padding: calc((var(--env-var-height-2) - var(--env-var-font-size-medium) * 1.2) / 2) var(--env-var-spacing-1-minus) !important; - } } -@media (max-width: 900px) { - .wallet-adapter-modal-wrapper { - flex-direction: column !important; - } - - .wallet-adapter-modal-divider { - margin: var(--spacing-sm) 0 !important; - } -} \ No newline at end of file +@media (max-width: 900px) { + .wallet-adapter-modal-wrapper { + flex-direction: column !important; + } + + .wallet-adapter-modal-divider { + margin: var(--spacing-sm) 0 !important; + } +} diff --git a/client/src/Hooks/useBulkMonitors.js b/client/src/Hooks/useBulkMonitors.js index 0caa58b41..a834f0140 100644 --- a/client/src/Hooks/useBulkMonitors.js +++ b/client/src/Hooks/useBulkMonitors.js @@ -2,26 +2,26 @@ import { useState } from "react"; import { networkService } from "../main"; export const useBulkMonitors = () => { - const [isLoading, setIsLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); - const createBulkMonitors = async (file, user) => { - setIsLoading(true); + const createBulkMonitors = async (file, user) => { + setIsLoading(true); - const formData = new FormData(); - formData.append("csvFile", file); - formData.append("userId", user._id); - formData.append("teamId", user.teamId); + const formData = new FormData(); + formData.append("csvFile", file); + formData.append("userId", user._id); + formData.append("teamId", user.teamId); - try { - const response = await networkService.createBulkMonitors(formData); - return [true, response.data, null]; // [success, data, error] - } catch (err) { - const errorMessage = err?.response?.data?.msg || err.message; - return [false, null, errorMessage]; - } finally { - setIsLoading(false); - } - }; + try { + const response = await networkService.createBulkMonitors(formData); + return [true, response.data, null]; // [success, data, error] + } catch (err) { + const errorMessage = err?.response?.data?.msg || err.message; + return [false, null, errorMessage]; + } finally { + setIsLoading(false); + } + }; - return [createBulkMonitors, isLoading]; + return [createBulkMonitors, isLoading]; }; diff --git a/client/src/Hooks/useMonitorUtils.js b/client/src/Hooks/useMonitorUtils.js index f187f7250..424112a81 100644 --- a/client/src/Hooks/useMonitorUtils.js +++ b/client/src/Hooks/useMonitorUtils.js @@ -2,7 +2,6 @@ import { useCallback } from "react"; import { useTheme } from "@mui/material"; const useMonitorUtils = () => { - const getMonitorWithPercentage = useCallback((monitor, theme) => { let uptimePercentage = ""; let percentageColor = ""; diff --git a/client/src/Hooks/useSendTestEmail.js b/client/src/Hooks/useSendTestEmail.js index d186fd748..e280b1f99 100644 --- a/client/src/Hooks/useSendTestEmail.js +++ b/client/src/Hooks/useSendTestEmail.js @@ -20,18 +20,20 @@ const useSendTestEmail = () => { setError(null); // Send the test email with or without configuration - const response = await networkService.sendTestEmail({ + const response = await networkService.sendTestEmail({ to: user.email, - emailConfig + emailConfig, }); - + if (typeof response?.data?.data?.messageId !== "undefined") { createToast({ body: t("settingsTestEmailSuccess", "Test email sent successfully"), }); } else { - throw new Error(response?.data?.error || t("settingsTestEmailFailed", "Failed to send test email")); - + throw new Error( + response?.data?.error || + t("settingsTestEmailFailed", "Failed to send test email") + ); } } catch (error) { createToast({ @@ -39,10 +41,14 @@ const useSendTestEmail = () => { }); setError(error); createToast({ - body: t("settingsTestEmailFailedWithReason", "Failed to send test email: {{reason}}", { - reason: error.message || t("settingsTestEmailUnknownError", "Unknown error") - }), - variant: "error" + body: t( + "settingsTestEmailFailedWithReason", + "Failed to send test email: {{reason}}", + { + reason: error.message || t("settingsTestEmailUnknownError", "Unknown error"), + } + ), + variant: "error", }); } finally { setIsSending(false); diff --git a/client/src/Pages/About/index.jsx b/client/src/Pages/About/index.jsx index dcb9d3f43..97040b2e3 100644 --- a/client/src/Pages/About/index.jsx +++ b/client/src/Pages/About/index.jsx @@ -1,6 +1,6 @@ -import React from 'react'; -import AppBar from '../../Components/Common/AppBar'; -import Footer from '../../Components/Common/Footer'; +import React from "react"; +import AppBar from "../../Components/Common/AppBar"; +import Footer from "../../Components/Common/Footer"; import { useTranslation } from "react-i18next"; const AboutUs = () => { diff --git a/client/src/Pages/Account/index.jsx b/client/src/Pages/Account/index.jsx index 0f17d2d01..9ba57eb06 100644 --- a/client/src/Pages/Account/index.jsx +++ b/client/src/Pages/Account/index.jsx @@ -31,21 +31,19 @@ const Account = ({ open = "profile" }) => { let tabList = [ { name: t("menu.profile"), value: "profile" }, { name: t("menu.password"), value: "password" }, - { name: t("menu.team"), value: "team" } + { name: t("menu.team"), value: "team" }, ]; const hideTeams = !requiredRoles.some((role) => user.role.includes(role)); if (hideTeams) { tabList = [ { name: t("menu.profile"), value: "profile" }, - { name: t("menu.password"), value: "password" } + { name: t("menu.password"), value: "password" }, ]; } // Remove password for demo if (user.role.includes("demo")) { - tabList = [ - { name: t("menu.profile"), value: "profile" } - ]; + tabList = [{ name: t("menu.profile"), value: "profile" }]; } const handleKeyDown = (event) => { @@ -70,7 +68,11 @@ const Account = ({ open = "profile" }) => { py={theme.spacing(12)} > - + {tabList.map((item, index) => ( { width: "30%", px: theme.spacing(6), borderRadius: `${theme.shape.borderRadius}px !important`, - '&.MuiButtonBase-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButtonBase-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, - '&.MuiButton-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButton-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, "&.Mui-focusVisible": { outline: `2px solid ${theme.palette.primary.main}`, diff --git a/client/src/Pages/Auth/Login/Components/PasswordStep.jsx b/client/src/Pages/Auth/Login/Components/PasswordStep.jsx index a57246e23..1fbdf93f0 100644 --- a/client/src/Pages/Auth/Login/Components/PasswordStep.jsx +++ b/client/src/Pages/Auth/Login/Components/PasswordStep.jsx @@ -79,11 +79,11 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => { sx={{ px: theme.spacing(5), borderRadius: `${theme.shape.borderRadius}px !important`, - '&.MuiButtonBase-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButtonBase-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, - '&.MuiButton-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButton-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, "& svg.MuiSvgIcon-root": { mr: theme.spacing(3), @@ -108,11 +108,11 @@ const PasswordStep = ({ form, errors, onSubmit, onChange, onBack }) => { width: "30%", px: theme.spacing(4), borderRadius: `${theme.shape.borderRadius}px !important`, - '&.MuiButtonBase-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButtonBase-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, - '&.MuiButton-root': { - borderRadius: `${theme.shape.borderRadius}px !important` + "&.MuiButton-root": { + borderRadius: `${theme.shape.borderRadius}px !important`, }, "&.Mui-focusVisible": { outline: `2px solid ${theme.palette.primary.main}`, diff --git a/client/src/Pages/Auth/Login/Login.jsx b/client/src/Pages/Auth/Login/Login.jsx index 8ac831a40..5df2ed011 100644 --- a/client/src/Pages/Auth/Login/Login.jsx +++ b/client/src/Pages/Auth/Login/Login.jsx @@ -43,8 +43,6 @@ const Login = () => { const [errors, setErrors] = useState({}); const [step, setStep] = useState(0); - - useEffect(() => { if (authToken) { navigate("/uptime"); @@ -84,7 +82,9 @@ const Login = () => { ); if (error) { const errorMessage = error.details[0].message; - const translatedMessage = errorMessage.startsWith('auth') ? t(errorMessage) : errorMessage; + const translatedMessage = errorMessage.startsWith("auth") + ? t(errorMessage) + : errorMessage; setErrors((prev) => ({ ...prev, email: translatedMessage })); createToast({ body: translatedMessage }); } else { @@ -103,7 +103,9 @@ const Login = () => { createToast({ body: error.details && error.details.length > 0 - ? (error.details[0].message.startsWith('auth') ? t(error.details[0].message) : error.details[0].message) + ? error.details[0].message.startsWith("auth") + ? t(error.details[0].message) + : error.details[0].message : t("Error validating data."), }); } else { @@ -227,9 +229,9 @@ const Login = () => { email={form.email} errorEmail={errors.email} /> - + {/* Registration link */} - + { component="span" color={theme.palette.accent.main} ml={theme.spacing(2)} - sx={{ - cursor: 'pointer', - '&:hover': { - color: theme.palette.accent.darker - } + sx={{ + cursor: "pointer", + "&:hover": { + color: theme.palette.accent.darker, + }, }} onClick={() => navigate("/register")} > diff --git a/client/src/Pages/Auth/NewPasswordConfirmed.jsx b/client/src/Pages/Auth/NewPasswordConfirmed.jsx index 9c7734083..57a4aaf25 100644 --- a/client/src/Pages/Auth/NewPasswordConfirmed.jsx +++ b/client/src/Pages/Auth/NewPasswordConfirmed.jsx @@ -100,9 +100,7 @@ const NewPasswordConfirmed = () => { {t("passwordreset")} - - {t("authNewPasswordConfirmed")} - + {t("authNewPasswordConfirmed")} diff --git a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/Gauge.jsx b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/Gauge.jsx index d374d1960..70d36bd00 100644 --- a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/Gauge.jsx +++ b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/Gauge.jsx @@ -16,8 +16,8 @@ const Gauge = ({ value, heading, metricOne, valueOne, metricTwo, valueTwo }) => mb: theme.spacing(2), mt: theme.spacing(2), pr: theme.spacing(2), - textAlign: 'right' - } + textAlign: "right", + }; return ( @@ -32,14 +32,19 @@ const Gauge = ({ value, heading, metricOne, valueOne, metricTwo, valueTwo }) => flexDirection: "column", alignItems: "center", width: "100%", - backgroundColor: theme.palette.gradient.color1 + backgroundColor: theme.palette.gradient.color1, }} > - {heading} + + {heading} + { - // Abort early if creating monitor - if (!monitorId) { - return { monitor: undefined, isLoading: false, networkError: undefined }; - } + if (!monitorId) { + return { monitor: undefined, isLoading: false, networkError: undefined }; + } const [isLoading, setIsLoading] = useState(true); const [networkError, setNetworkError] = useState(false); const [monitor, setMonitor] = useState(undefined); diff --git a/client/src/Pages/Infrastructure/Monitors/Components/Filters/index.jsx b/client/src/Pages/Infrastructure/Monitors/Components/Filters/index.jsx index a2d82613c..3c2511c2f 100644 --- a/client/src/Pages/Infrastructure/Monitors/Components/Filters/index.jsx +++ b/client/src/Pages/Infrastructure/Monitors/Components/Filters/index.jsx @@ -53,10 +53,10 @@ const Filter = ({ return ( { ); } - if (!isLoading && typeof summary?.totalMonitors === "undefined" ) { + if (!isLoading && typeof summary?.totalMonitors === "undefined") { return ( { }} > {t("integrations")} - - {t("integrationsPrism")} - + {t("integrationsPrism")} { - {t("settingsGeneralSettings")} + + {t("settingsGeneralSettings")} + {t("pageSpeedConfigureSettingsDescription")} @@ -349,7 +354,12 @@ const PageSpeedConfigure = () => { - {t("distributedUptimeCreateIncidentNotification")} + + {t("distributedUptimeCreateIncidentNotification")} + {t("distributedUptimeCreateIncidentDescription")} @@ -394,9 +404,7 @@ const PageSpeedConfigure = () => { value="" onChange={() => logger.warn("disabled")} /> - - {t("seperateEmails")} - + {t("seperateEmails")} ) : ( "" @@ -405,7 +413,12 @@ const PageSpeedConfigure = () => { - {t("distributedUptimeCreateAdvancedSettings")} + + {t("distributedUptimeCreateAdvancedSettings")} + { const theme = useTheme(); const { t } = useTranslation(); - + if (!shouldRender) { return ; } diff --git a/client/src/Pages/ServerUnreachable.jsx b/client/src/Pages/ServerUnreachable.jsx index aaa61cbc4..e7d81926e 100644 --- a/client/src/Pages/ServerUnreachable.jsx +++ b/client/src/Pages/ServerUnreachable.jsx @@ -12,150 +12,158 @@ import ThemeSwitch from "../Components/ThemeSwitch"; import LanguageSelector from "../Components/LanguageSelector"; const ServerUnreachable = () => { - const theme = useTheme(); - const navigate = useNavigate(); - const { t } = useTranslation(); - - // State for tracking connection check status - const [isCheckingConnection, setIsCheckingConnection] = useState(false); + const theme = useTheme(); + const navigate = useNavigate(); + const { t } = useTranslation(); - const handleRetry = React.useCallback(async () => { - setIsCheckingConnection(true); - try { - // Try to connect to the backend with a simple API call - // We'll use any lightweight endpoint that doesn't require authentication - await networkService.axiosInstance.get('/health', { timeout: 5000 }); - - // If successful, show toast and navigate to login page - createToast({ - body: t("backendReconnected", "Connection to server restored"), - }); - navigate("/login"); - } catch (error) { - // If still unreachable, stay on this page and show toast - createToast({ - body: t("backendStillUnreachable", "Server is still unreachable"), - }); - } finally { - setIsCheckingConnection(false); - } - }, [navigate, t]); + // State for tracking connection check status + const [isCheckingConnection, setIsCheckingConnection] = useState(false); - return ( - - - - - - {/* Header with logo */} - - - - Checkmate - - - - - - - .MuiStack-root": { - border: 1, - borderRadius: theme.spacing(5), - borderColor: theme.palette.primary.lowContrast, - backgroundColor: theme.palette.primary.main, - padding: { - xs: theme.spacing(12), - sm: theme.spacing(20), - }, - }, - }} - > - - - - - - - {t("backendUnreachableMessage", "The Checkmate server is not responding. Please check your deployment configuration or try again later.")} - - - - - - - - - ); + const handleRetry = React.useCallback(async () => { + setIsCheckingConnection(true); + try { + // Try to connect to the backend with a simple API call + // We'll use any lightweight endpoint that doesn't require authentication + await networkService.axiosInstance.get("/health", { timeout: 5000 }); + + // If successful, show toast and navigate to login page + createToast({ + body: t("backendReconnected", "Connection to server restored"), + }); + navigate("/login"); + } catch (error) { + // If still unreachable, stay on this page and show toast + createToast({ + body: t("backendStillUnreachable", "Server is still unreachable"), + }); + } finally { + setIsCheckingConnection(false); + } + }, [navigate, t]); + + return ( + + + + + + {/* Header with logo */} + + + + Checkmate + + + + + + + .MuiStack-root": { + border: 1, + borderRadius: theme.spacing(5), + borderColor: theme.palette.primary.lowContrast, + backgroundColor: theme.palette.primary.main, + padding: { + xs: theme.spacing(12), + sm: theme.spacing(20), + }, + }, + }} + > + + + + + + + {t( + "backendUnreachableMessage", + "The Checkmate server is not responding. Please check your deployment configuration or try again later." + )} + + + + + + + + + ); }; export default ServerUnreachable; diff --git a/client/src/Pages/Settings/SettingsAbout.jsx b/client/src/Pages/Settings/SettingsAbout.jsx index 91a3c5e58..121b732f8 100644 --- a/client/src/Pages/Settings/SettingsAbout.jsx +++ b/client/src/Pages/Settings/SettingsAbout.jsx @@ -12,7 +12,12 @@ const SettingsAbout = () => { return ( - {t("settingsAbout")} + + {t("settingsAbout")} + Checkmate {2.1} diff --git a/client/src/Pages/Settings/SettingsDemoMonitors.jsx b/client/src/Pages/Settings/SettingsDemoMonitors.jsx index c685038de..fbcbc66ab 100644 --- a/client/src/Pages/Settings/SettingsDemoMonitors.jsx +++ b/client/src/Pages/Settings/SettingsDemoMonitors.jsx @@ -23,7 +23,12 @@ const SettingsDemoMonitors = ({ isAdmin, HEADER_SX, handleChange, isLoading }) = <> - {t("settingsDemoMonitors")} + + {t("settingsDemoMonitors")} + {t("settingsDemoMonitorsDescription")} @@ -48,7 +53,12 @@ const SettingsDemoMonitors = ({ isAdmin, HEADER_SX, handleChange, isLoading }) = - {t("settingsSystemReset")} + + {t("settingsSystemReset")} + {t("settingsSystemResetDescription")} diff --git a/client/src/Pages/Settings/SettingsEmail.jsx b/client/src/Pages/Settings/SettingsEmail.jsx index bc69db106..88f8f98c1 100644 --- a/client/src/Pages/Settings/SettingsEmail.jsx +++ b/client/src/Pages/Settings/SettingsEmail.jsx @@ -52,18 +52,18 @@ const SettingsEmail = ({ systemEmailUser: settingsData?.settings?.systemEmailUser, systemEmailAddress: settingsData?.settings?.systemEmailAddress, systemEmailPassword: password || settingsData?.settings?.systemEmailPassword, - systemEmailConnectionHost: settingsData?.settings?.systemEmailConnectionHost + systemEmailConnectionHost: settingsData?.settings?.systemEmailConnectionHost, }; - + // Basic validation if (!emailConfig.systemEmailHost || !emailConfig.systemEmailPort) { createToast({ body: t("settingsEmailRequiredFields", "Email host and port are required"), - variant: "error" + variant: "error", }); return; } - + // Send test email with current form values sendTestEmail(emailConfig); }; @@ -75,7 +75,12 @@ const SettingsEmail = ({ return ( - {t("settingsEmail")} + + {t("settingsEmail")} + {t("settingsEmailDescription")} diff --git a/client/src/Pages/Settings/SettingsPagespeed.jsx b/client/src/Pages/Settings/SettingsPagespeed.jsx index ea45d66ed..c7007b5bd 100644 --- a/client/src/Pages/Settings/SettingsPagespeed.jsx +++ b/client/src/Pages/Settings/SettingsPagespeed.jsx @@ -41,7 +41,12 @@ const SettingsPagespeed = ({ return ( - {t("pageSpeedApiKeyFieldTitle")} + + {t("pageSpeedApiKeyFieldTitle")} + {t("pageSpeedApiKeyFieldDescription")} diff --git a/client/src/Pages/Settings/SettingsTimeZone.jsx b/client/src/Pages/Settings/SettingsTimeZone.jsx index fccd19466..86fc72992 100644 --- a/client/src/Pages/Settings/SettingsTimeZone.jsx +++ b/client/src/Pages/Settings/SettingsTimeZone.jsx @@ -15,7 +15,12 @@ const SettingsTimeZone = ({ HEADING_SX, handleChange, timezone }) => { return ( - {t("settingsGeneralSettings")} + + {t("settingsGeneralSettings")} + {t("settingsDisplayTimezone")}-{" "} {t("settingsDisplayTimezoneDescription")} diff --git a/client/src/Pages/Settings/SettingsUI.jsx b/client/src/Pages/Settings/SettingsUI.jsx index e15b5e657..a6dc6c9e4 100644 --- a/client/src/Pages/Settings/SettingsUI.jsx +++ b/client/src/Pages/Settings/SettingsUI.jsx @@ -16,7 +16,12 @@ const SettingsUI = ({ HEADING_SX, handleChange, mode, language }) => { return ( - {t("settingsAppearance")} + + {t("settingsAppearance")} + {t("settingsAppearanceDescription")} diff --git a/client/src/Pages/StatusPage/Create/Components/Tabs/ConfigStack.jsx b/client/src/Pages/StatusPage/Create/Components/Tabs/ConfigStack.jsx index adc622eed..e313f0e85 100644 --- a/client/src/Pages/StatusPage/Create/Components/Tabs/ConfigStack.jsx +++ b/client/src/Pages/StatusPage/Create/Components/Tabs/ConfigStack.jsx @@ -9,7 +9,12 @@ const ConfigStack = ({ title, description, children }) => { return ( - {title} + + {title} + {description} {children} diff --git a/client/src/Pages/StatusPage/Create/Components/Tabs/Settings.jsx b/client/src/Pages/StatusPage/Create/Components/Tabs/Settings.jsx index bb43959d9..4242f931c 100644 --- a/client/src/Pages/StatusPage/Create/Components/Tabs/Settings.jsx +++ b/client/src/Pages/StatusPage/Create/Components/Tabs/Settings.jsx @@ -34,10 +34,13 @@ const TabSettings = ({ - {t("access")} - - {t("statusPageCreateSettings")} + + {t("access")} + {t("statusPageCreateSettings")} - {t("basicInformation")} + + {t("basicInformation")} + {t("statusPageCreateBasicInfoDescription")} @@ -82,7 +90,12 @@ const TabSettings = ({ - {t("timezone")} + + {t("timezone")} + {t("statusPageCreateSelectTimeZoneDescription")} @@ -100,7 +113,12 @@ const TabSettings = ({ - {t("settingsAppearance")} + + {t("settingsAppearance")} + {t("statusPageCreateAppearanceDescription")} diff --git a/client/src/Pages/StatusPage/Create/Components/Tabs/index.jsx b/client/src/Pages/StatusPage/Create/Components/Tabs/index.jsx index 5f5433bb6..936a22130 100644 --- a/client/src/Pages/StatusPage/Create/Components/Tabs/index.jsx +++ b/client/src/Pages/StatusPage/Create/Components/Tabs/index.jsx @@ -23,7 +23,6 @@ const Tabs = ({ setTab, TAB_LIST, }) => { - const theme = useTheme(); return ( @@ -63,7 +62,6 @@ const Tabs = ({ setSelectedMonitors={setSelectedMonitors} /> )} - ); }; diff --git a/client/src/Pages/StatusPage/Create/index.jsx b/client/src/Pages/StatusPage/Create/index.jsx index 5f56418fa..d1bb8d196 100644 --- a/client/src/Pages/StatusPage/Create/index.jsx +++ b/client/src/Pages/StatusPage/Create/index.jsx @@ -194,7 +194,7 @@ const CreateStatusPage = () => { color: statusPage?.color, logo: newLogo, showCharts: statusPage?.showCharts ?? true, - showUptimePercentage: statusPage?.showUptimePercentage ?? true + showUptimePercentage: statusPage?.showUptimePercentage ?? true, }; }); setSelectedMonitors(statusPageMonitors); diff --git a/client/src/Pages/StatusPage/Status/index.jsx b/client/src/Pages/StatusPage/Status/index.jsx index bc81bb23c..341c6d731 100644 --- a/client/src/Pages/StatusPage/Status/index.jsx +++ b/client/src/Pages/StatusPage/Status/index.jsx @@ -34,7 +34,7 @@ const PublicStatus = () => { const [statusPage, monitors, isLoading, networkError, fetchStatusPage] = useStatusPageFetch(false, url); const [deleteStatusPage, isDeleting] = useStatusPageDelete(fetchStatusPage, url); - + // Breadcrumbs const crumbs = [ { name: t("statusBreadCrumbsStatusPages"), path: "/status" }, diff --git a/client/src/Pages/Uptime/BulkImport/Upload.jsx b/client/src/Pages/Uptime/BulkImport/Upload.jsx index 9f49b54bc..261dcffe6 100644 --- a/client/src/Pages/Uptime/BulkImport/Upload.jsx +++ b/client/src/Pages/Uptime/BulkImport/Upload.jsx @@ -4,7 +4,8 @@ import { Button, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; import PropTypes from "prop-types"; -const UploadFile = ({ onFileSelect }) => { // Changed prop to onFileSelect +const UploadFile = ({ onFileSelect }) => { + // Changed prop to onFileSelect const theme = useTheme(); const [file, setFile] = useState(); const [error, setError] = useState(""); @@ -18,17 +19,17 @@ const UploadFile = ({ onFileSelect }) => { // Changed prop to onFileSelect const handleFileChange = (e) => { setError(""); const selectedFile = e.target.files[0]; - + // Basic file validation if (!selectedFile) return; - - if (!selectedFile.name.endsWith('.csv')) { + + if (!selectedFile.name.endsWith(".csv")) { setError(t("bulkImport.invalidFileType")); return; } - + setFile(selectedFile); - onFileSelect(selectedFile); // Pass the file directly to parent + onFileSelect(selectedFile); // Pass the file directly to parent }; return ( @@ -63,11 +64,10 @@ const UploadFile = ({ onFileSelect }) => { // Changed prop to onFileSelect ); -} - +}; UploadFile.prototype = { onFileSelect: PropTypes.func.isRequired, }; -export default UploadFile; \ No newline at end of file +export default UploadFile; diff --git a/client/src/Pages/Uptime/BulkImport/index.jsx b/client/src/Pages/Uptime/BulkImport/index.jsx index b3a825740..99a6d51d8 100644 --- a/client/src/Pages/Uptime/BulkImport/index.jsx +++ b/client/src/Pages/Uptime/BulkImport/index.jsx @@ -61,7 +61,12 @@ const BulkImport = () => { - {t("bulkImport.selectFileTips")} + + {t("bulkImport.selectFileTips")} + { - {t("settingsGeneralSettings")} + + {t("settingsGeneralSettings")} + {t("distributedUptimeCreateSelectURL")} @@ -389,7 +394,10 @@ const Configure = () => { - + {t("distributedUptimeCreateIncidentNotification")} @@ -457,7 +465,12 @@ const Configure = () => { - {t("ignoreTLSError")} + + {t("ignoreTLSError")} + {t("ignoreTLSErrorDescription")} @@ -477,7 +490,10 @@ const Configure = () => { - + {t("distributedUptimeCreateAdvancedSettings")} diff --git a/client/src/Pages/Uptime/Create/index.jsx b/client/src/Pages/Uptime/Create/index.jsx index f35a09d9c..65a025b83 100644 --- a/client/src/Pages/Uptime/Create/index.jsx +++ b/client/src/Pages/Uptime/Create/index.jsx @@ -261,7 +261,12 @@ const CreateMonitor = () => { - {t("distributedUptimeCreateChecks")} + + {t("distributedUptimeCreateChecks")} + {t("distributedUptimeCreateChecksDescription")} @@ -342,7 +347,12 @@ const CreateMonitor = () => { - {t("settingsGeneralSettings")} + + {t("settingsGeneralSettings")} + {t("uptimeCreateSelectURL")} @@ -386,7 +396,10 @@ const CreateMonitor = () => { - + {t("distributedUptimeCreateIncidentNotification")} @@ -417,7 +430,12 @@ const CreateMonitor = () => { - {t("ignoreTLSError")} + + {t("ignoreTLSError")} + {t("ignoreTLSErrorDescription")} @@ -437,7 +455,10 @@ const CreateMonitor = () => { - + {t("distributedUptimeCreateAdvancedSettings")} diff --git a/client/src/Pages/Uptime/Monitors/Components/UptimeDataTable/index.jsx b/client/src/Pages/Uptime/Monitors/Components/UptimeDataTable/index.jsx index a6ef105b6..ba4a139e3 100644 --- a/client/src/Pages/Uptime/Monitors/Components/UptimeDataTable/index.jsx +++ b/client/src/Pages/Uptime/Monitors/Components/UptimeDataTable/index.jsx @@ -150,7 +150,10 @@ const UptimeDataTable = ({ id: "responseTime", content: t("responseTime"), render: (row) => ( - + ), diff --git a/client/src/Utils/NetworkService.js b/client/src/Utils/NetworkService.js index 767d36934..86c5bfa6f 100644 --- a/client/src/Utils/NetworkService.js +++ b/client/src/Utils/NetworkService.js @@ -1162,21 +1162,25 @@ class NetworkService { async sendTestEmail(config) { // Extract recipient and email configuration const { to, emailConfig } = config; - + // If emailConfig is provided, use the new endpoint with direct parameters if (emailConfig) { - return this.axiosInstance.post(`/settings/test-email`, { + return this.axiosInstance.post(`/settings/test-email`, { to, systemEmailHost: emailConfig.systemEmailHost, systemEmailPort: emailConfig.systemEmailPort, systemEmailAddress: emailConfig.systemEmailAddress, systemEmailPassword: emailConfig.systemEmailPassword, // Only include these if they are present - ...(emailConfig.systemEmailConnectionHost && { systemEmailConnectionHost: emailConfig.systemEmailConnectionHost }), - ...(emailConfig.systemEmailUser && { systemEmailUser: emailConfig.systemEmailUser }) + ...(emailConfig.systemEmailConnectionHost && { + systemEmailConnectionHost: emailConfig.systemEmailConnectionHost, + }), + ...(emailConfig.systemEmailUser && { + systemEmailUser: emailConfig.systemEmailUser, + }), }); } - + // Fallback to original behavior for backward compatibility return this.axiosInstance.post(`/settings/test-email`, { to }); } diff --git a/client/src/Utils/greeting.jsx b/client/src/Utils/greeting.jsx index 269d4c73b..d2b7fa033 100644 --- a/client/src/Utils/greeting.jsx +++ b/client/src/Utils/greeting.jsx @@ -167,7 +167,7 @@ const Greeting = ({ type = "" }) => { fontSize="inherit" color={theme.palette.primary.contrastTextTertiary} > - {t("greeting.prepend", { defaultValue: prepend })}, {" "} + {t("greeting.prepend", { defaultValue: prepend })},{" "} { lineHeight={1} color={theme.palette.primary.contrastTextTertiary} > - {t("greeting.append", { defaultValue: append })} — {t("greeting.overview", { type: t(`menu.${type}`) })} + {t("greeting.append", { defaultValue: append })} —{" "} + {t("greeting.overview", { type: t(`menu.${type}`) })} ); diff --git a/client/src/Validation/error.js b/client/src/Validation/error.js index 8f043f997..5738edf40 100644 --- a/client/src/Validation/error.js +++ b/client/src/Validation/error.js @@ -1,13 +1,12 @@ /** * Update errors if passed id matches the error.details[0].path, otherwise remove * the error for the id - * @param {*} prev Previous errors * + * @param {*} prev Previous errors * * @param {*} id ID of the field whose error is to be either updated or removed - * @param {*} error the error object + * @param {*} error the error object * @returns the Update Errors with the specific field with id being either removed or updated */ - const buildErrors = (prev, id, error) => { const updatedErrors = { ...prev }; if (error && id == error.details[0].path) { @@ -43,7 +42,7 @@ const getTouchedFieldErrors = (validation, touchedErrors) => { return newErrors; }; /** - * + * * @param {*} form The form object of the submitted form data * @param {*} validation The Joi validation rules * @param {*} setErrors The function used to set the local errors @@ -69,7 +68,7 @@ const hasValidationErrors = (form, validation, setErrors) => { "_id", "__v", "createdAt", - "updatedAt" + "updatedAt", ].includes(err.path[0]) ) { newErrors[err.path[0]] = err.message ?? "Validation error"; diff --git a/client/src/index.css b/client/src/index.css index 173551ba6..f83cdc461 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -52,8 +52,8 @@ html { --env-var-default-1: 24px; --env-var-default-2: 40px; - --env-var-shadow-1: 0px 4px 24px -4px rgba(16, 24, 40, 0.08), - 0px 3px 3px -3px rgba(16, 24, 40, 0.03); + --env-var-shadow-1: + 0px 4px 24px -4px rgba(16, 24, 40, 0.08), 0px 3px 3px -3px rgba(16, 24, 40, 0.03); } .MuiInputBase-root.Mui-disabled input { diff --git a/client/src/locales/gb.json b/client/src/locales/gb.json index 4b73daa54..4bd71e9c6 100644 --- a/client/src/locales/gb.json +++ b/client/src/locales/gb.json @@ -549,7 +549,7 @@ "sendTestEmail": "Send test email", "emailSent": "Email sent successfully", "failedToSendEmail": "Failed to send email", - "statusMsg" : { + "statusMsg": { "paused": "Monitoring is paused.", "up": "Your site is up.", "down": "Your site is down.", diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index d18d5f007..c2321f4ab 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -1,503 +1,503 @@ { - "dontHaveAccount": "Нет аккаунта", - "doNotHaveAccount": "У вас нет учетной записи?", - "registerHere": "Зарегистрироваться здесь", - "email": "Почта", - "forgotPassword": "Забыли пароль", - "password": "Пароль", - "signUp": "Зарегистрироваться", - "submit": "Подтвердить", - "title": "Название", - "continue": "Продолжить", - "enterEmail": "Введите свой email", - "authLoginTitle": "Войти", - "authLoginEnterPassword": "Введите свой пароль", - "commonPassword": "Пароль", - "commonBack": "Назад", - "authForgotPasswordTitle": "Забыли пароль?", - "authForgotPasswordResetPassword": "Сбросить пароль", - "authForgotPasswordInstructions": "Не волнуйтесь, мы отправим вам инструкции по сбросу.", - "createPassword": "Создайте свой пароль", - "createAPassword": "Пароль", - "authRegisterAlreadyHaveAccount": "Уже есть аккаунт?", - "authRegisterLoginLink": "Войти", - "commonAppName": "Checkmate", - "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.", - "authLoginEnterEmail": "Введите свой email", - "authRegisterTitle": "Создать аккаунт", - "authRegisterStepOneTitle": "Создайте свой аккаут", - "authRegisterStepOneDescription": "Введите свои данные, чтобы начать", - "authRegisterStepTwoTitle": "Настройте свой профиль", - "authRegisterStepTwoDescription": "Расскажите нам о себе", - "authRegisterStepThreeTitle": "Почти готово!", - "authRegisterStepThreeDescription": "Проверьте свою информацию", - "authForgotPasswordDescription": "Не волнуйтесь, мы вышлем вам инструкции по сбросу настроек.", - "authForgotPasswordSendInstructions": "Отправить инструкции", - "authForgotPasswordBackTo": "Назад к", - "authCheckEmailTitle": "Проверьте свою почту", - "authCheckEmailDescription": "Мы отправили ссылку для сброса пароля", - "authCheckEmailResendEmail": "Отправить письмо повторно", - "authCheckEmailBackTo": "Назад к", - "goBackTo": "Назад к", - "authCheckEmailDidntReceiveEmail": "Не получили письмо?", - "authCheckEmailClickToResend": "Нажмите, чтобы отправить повторно", - "authSetNewPasswordTitle": "Установите новый пароль", - "authSetNewPasswordDescription": "Ваш новый пароль должен отличаться от ранее использованных паролей.", - "authSetNewPasswordNewPassword": "Новый пароль", - "authSetNewPasswordConfirmPassword": "Подтвердите пароль", - "confirmPassword": "Введите пароль еще раз для подтверждения", - "confirmNewPasswordPlaceholder": "Подтвердите ваш новый пароль", - "authSetNewPasswordResetPassword": "Сбросить пароль", - "authSetNewPasswordBackTo": "Назад к", - "authPasswordMustBeAtLeast": "Должно быть как минимум", - "authPasswordCharactersLong": "длиной 8 символов", - "authPasswordMustContainAtLeast": "Должен содержать как минимум", - "authPasswordSpecialCharacter": "один специальный символ", - "authPasswordOneNumber": "одно число", - "authPasswordUpperCharacter": "один верхний символ", - "authPasswordLowerCharacter": "один нижний символ", - "authPasswordConfirmAndPassword": "Подтвердите пароль и пароль", - "authPasswordMustMatch": "Пароли должны совпадать", - "authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать", - "authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу", - "authRegisterSignUpWithEmail": "Создать учетную запись суперадминистратора", - "authRegisterBySigningUp": "Создавая учетную запись, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.", - "authRegisterFirstName": "Имя", - "authRegisterLastName": "Фамилия", - "authRegisterEmail": "Эл. почта", - "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите ваш адрес электронной почты", - "authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты", - "bulkImport": { - "title": "Массовый импорт", - "selectFileTips": "Выберите CSV-файл для загрузки", - "selectFileDescription": "Вы можете скачать наш или пример", - "selectFile": "Выбрать файл", - "parsingFailed": "Ошибка анализа", - "uploadSuccess": "Мониторы успешно созданы!", - "validationFailed": "Ошибка проверки", - "noFileSelected": "Файл не выбран", - "fallbackPage": "Импортируйте файл для загрузки списка серверов" - }, - "distributedStatusHeaderText": "Охват реального времени и реального устройства", - "distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу", - "settingsGeneralSettings": "Общие настройки", - "settingsDisplayTimezone": "Отображать часовой пояс", - "settingsDisplayTimezoneDescription": "Выберите часовой пояс, используемый для отображения дат и времени в приложении.", - "settingsAppearance": "Внешний вид", - "settingsAppearanceDescription": "Переключение между светлым и темным режимом или изменение языка пользовательского интерфейса", - "settingsThemeMode": "Тема", - "settingsThemeModeLight": "Светлая", - "settingsThemeModeDark": "Тёмная", - "settingsLanguage": "Язык", - "settingsURLTitle": "Отображать IP/URL на странице статуса", - "settingsURLDescription": "Отображать IP-адрес или URL-адрес монитора на общедоступной странице статуса. Если отключено, будет отображаться только имя монитора для защиты конфиденциальной информации.", - "settingsURLSelectTitle": "Показать IP/URL на странице статуса", - "settingsURLEnabled": "Включено", - "settingURLDisabled": "Отключено", - "settingsDistributedUptime": "Distributed uptime", - "settingsDistributedUptimeDescription": "Включить/выключить distributed uptime monitoring.", - "settingsEnabled": "Включено", - "settingsDisabled": "Выключено", - "settingsHistoryAndMonitoring": "История мониторинга", - "settingsHistoryAndMonitoringDescription": "Определите, как долго вы хотите хранить исторические данные. Вы также можете очистить все существующие данные.", - "settingsTTLLabel": "Дни, за которыми вы хотите следить.", - "settingsTTLOptionalLabel": "0 для бесконечности", - "settingsClearAllStats": "Очистить всю статистику. Это необратимо.", - "settingsClearAllStatsButton": "Очистить всю статистику", - "settingsClearAllStatsDialogTitle": "Хотите очистить всю статистику?", - "settingsClearAllStatsDialogDescription": "После удаления история мониторинга и статистика не могут быть восстановлены.", - "settingsClearAllStatsDialogConfirm": "Да, очистить всю статистику", - "settingsClearAllStatsDialogCancel": "Отмена", - "settingsDemoMonitors": "Демо мониторы", - "settingsDemoMonitorsDescription": "Добавьте примеры мониторов для демонстрации.", - "settingsAddDemoMonitors": "Добавление демонстрационных мониторов", - "settingsAddDemoMonitorsButton": "Добавьте демонстрационные мониторы", - "settingsSystemReset": "Сброс системы", - "settingsSystemResetDescription": "Удалить все мониторы из вашей системы.", - "settingsRemoveAllMonitors": "Удаление всех мониторов", - "settingsRemoveAllMonitorsButton": "Удалить все мониторы", - "settingsRemoveAllMonitorsDialogTitle": "Хотите удалить все мониторы?", - "settingsRemoveAllMonitorsDialogConfirm": "Да, удалить все мониторы", - "settingsWallet": "Кошелёк", - "settingsWalletDescription": "Подключите свой кошелек здесь. Это необходимо для того, чтобы монитор Distributed Uptime мог подключиться к нескольким узлам по всему миру.", - "settingsEmail": "Настройки электронной почты", - "settingsEmailDescription": "Настройте параметры электронной почты", - "settingsEmailHost": "Хост электронной почты - имя хоста или IP-адрес SMTP-сервера", - "settingsEmailPort": "Порт электронной почты - порт для подключения", - "settingsEmailAddress": "Адрес электронной почты - используется для аутентификации", - "settingsEmailPassword": "Пароль электронной почты - пароль для аутентификации", - "settingsEmailUser": "Пользователь электронной почты - имя пользователя для аутентификации, переопределяет адрес электронной почты, если указан", - "settingsEmailFieldResetLabel": "Пароль установлен. Нажмите «Сбросить», чтобы изменить его.", - "settingsEmailConnectionHost": "Хост подключения электронной почты - имя хоста, используемое в приветствии HELO/EHLO", - "settingsTestEmail": "Отправить тестовое письмо", - "settingsTestEmailSuccess": "Тестовое письмо успешно отправлено", - "settingsTestEmailFailed": "Не удалось отправить тестовое письмо", - "settingsTestEmailFailedWithReason": "Не удалось отправить тестовое письмо: {{reason}}", - "settingsTestEmailUnknownError": "Неизвестная ошибка", - "settingsEmailRequiredFields": "Требуются хост и порт электронной почты", - "settingsAbout": "О", - "settingsDevelopedBy": "Developed by Bluewave Labs.", - "settingsSave": "Сохранить", - "commonSave": "Сохранить", - "commonSaving": "Сохранение...", - "settingsSuccessSaved": "Настройки успешно сохранены", - "settingsFailedToSave": "Не удалось сохранить настройки", - "settingsStatsCleared": "Статистика успешно очищена", - "settingsFailedToClearStats": "Не удалось очистить статистику", - "FirstName": "Имя", - "LastName": "Фамилия", - "YourPhoto": "Фото профиля", - "PhotoDescriptionText": "Это фото будет отображаться на странице вашего профиля.", - "EmailDescriptionText": "Ваш текущий email—его нельзя изменить.", - "DeleteAccountTitle": "Удалить аккаунт", - "DeleteAccountButton": "Удалить аккаунт", - "DeleteDescriptionText": "Это удалит аккаунт и все связанные данные с сервера. Это необратимо.", - "DeleteAccountWarning": "Удаление аккаунта означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.", - "DeleteWarningTitle": "Действительно удалить этот аккаунт?", - "settingsDemoMonitorsAdded": "Успешно добавлены демонстрационные мониторы", - "settingsFailedToAddDemoMonitors": "Не удалось добавить демонстрационные мониторы", - "settingsMonitorsDeleted": "Успешно удалены все мониторы", - "settingsFailedToDeleteMonitors": "Не удалось удалить все мониторы", - "backendUnreachable": "Ошибка подключения к серверу", - "backendUnreachableMessage": "Мы не можем подключиться к серверу. Пожалуйста, проверьте ваше интернет-соединение или проверьте конфигурацию развертывания, если проблема не устраняется.", - "backendUnreachableError": "Невозможно подключиться к серверу. Пожалуйста, повторите попытку позже.", - "retryConnection": "Повторить подключение", - "retryingConnection": "Подключение...", - "backendReconnected": "Успешно восстановлено подключение к серверу.", - "backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.", - "backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте ваше сетевое подключение.", - "starPromptTitle": "Star Checkmate", - "starPromptDescription": "Ознакомьтесь с последними релизами и помогите развить сообщество на GitHub", - "https": "HTTPS", - "http": "HTTP", - "monitor": "монитор", - "aboutus": "О Нас", - "now": "Сейчас", - "delete": "Удалить", - "configure": "Настроить", - "networkError": "Ошибка сети", - "responseTime": "Время ответа", - "ms": "мс", - "bar": "Bar", - "area": "Area", - "country": "СТРАНА", - "city": "ГОРОД", - "response": "ОТВЕТ", - "checkConnection": "Пожалуйста, проверьте ваше соединение", - "passwordreset": "Сброс пароля", - "authRegisterStepOnePersonalDetails": "Введите свои личные данные", - "authCheckEmailOpenEmailButton": "Откройте приложение почты", - "authNewPasswordConfirmed": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом.", - "monitorStatusUp": "Монитор {name} ({url}) теперь включен и отвечает", - "monitorStatusDown": "Монитор {name} ({url}) ОТКЛЮЧЕН и не отвечает", - "webhookSendSuccess": "Уведомление Webhook успешно отправлено", - "webhookSendError": "Ошибка отправки уведомления webhook на {platform}", - "webhookUnsupportedPlatform": "Неподдерживаемая платформа: {platform}", - "distributedRightCategoryTitle": "Монитор", - "distributedStatusServerMonitors": "Серверные мониторы", - "distributedStatusServerMonitorsDescription": "Мониторинг состояния связанных серверов", - "distributedUptimeCreateSelectURL": "Здесь вы можете выбрать URL-адрес хоста, а также тип монитора.", - "distributedUptimeCreateChecks": "Проверки, которые необходимо выполнить", - "distributedUptimeCreateChecksDescription": "Вы всегда можете добавить или удалить проверки после добавления своего сайта.", - "distributedUptimeCreateIncidentNotification": "Уведомления об инцидентах", - "distributedUptimeCreateIncidentDescription": "В случае возникновения инцидента сообщите об этом пользователям.", - "distributedUptimeCreateAdvancedSettings": "Расширенные настройки", - "distributedUptimeDetailsNoMonitorHistory": "Для этого монитора пока нет истории проверок.", - "distributedUptimeDetailsFooterHeading": "Made with ❤️ by UpRock & Bluewave Labs", - "distributedUptimeDetailsFooterBuilt": "Built on", - "distributedUptimeDetailsFooterSolana": "Solana", - "distributedUptimeDetailsMonitorHeader": "Distributed Uptime Monitoring powered by DePIN", - "distributedUptimeDetailsStatusHeaderUptime": "Аптайм:", - "distributedUptimeDetailsStatusHeaderLastUpdate": "Последнее обновление", - "notifications": { - "enableNotifications": "Включить уведомления {{platform}}", - "testNotification": "Тестовое уведомление", - "addOrEditNotifications": "Добавить или изменить уведомления", - "slack": { - "label": "Slack", - "description": "Чтобы включить уведомления Slack, создайте приложение Slack и включите входящие вебхуки. После этого просто укажите URL вебхука здесь.", - "webhookLabel": "URL вебхука", - "webhookPlaceholder": "https://hooks.slack.com/services/..." - }, - "discord": { - "label": "Discord", - "description": "Чтобы отправить данные на канал Discord из Checkmate через уведомления Discord с использованием веб-хуков, вы можете использовать функцию входящих веб-хуков Discord.", - "webhookLabel": "Discord Webhook URL", - "webhookPlaceholder": "https://discord.com/api/webhooks/..." - }, - "telegram": { - "label": "Telegram", - "description": "Чтобы включить уведомления Telegram, создайте бота Telegram с помощью BotFather, официального бота для создания и управления ботами Telegram. Затем получите токен API и идентификатор чата и запишите их здесь.", - "tokenLabel": "Ваш токен бота", - "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", - "chatIdLabel": "ID Вашего Чата", - "chatIdPlaceholder": "-1001234567890" - }, - "webhook": { - "label": "Вебхуки", - "description": "Вы можете настроить пользовательский вебхук для получения уведомлений о возникновении инцидентов.", - "urlLabel": "URL вебхука", - "urlPlaceholder": "https://your-server.com/webhook" - }, - "testNotificationDevelop": "Тестовое уведомление 2", - "integrationButton": "" - }, - "testLocale": "testLocale", - "add": "Добавить", - "monitors": "мониторы", - "distributedUptimeStatusCreateStatusPage": "страница статуса", - "distributedUptimeStatusCreateStatusPageAccess": "Доступ", - "distributedUptimeStatusCreateStatusPageReady": "Если ваша страница статуса готова, вы можете отметить ее как опубликованную.", - "distributedUptimeStatusBasicInfoHeader": "Основная информация", - "distributedUptimeStatusBasicInfoDescription": "Определите название компании и поддомен, на который ссылается ваша страница статуса.", - "distributedUptimeStatusLogoHeader": "Логотип", - "distributedUptimeStatusLogoDescription": "Загрузите логотип для своей страницы статуса", - "distributedUptimeStatusLogoUploadButton": "Загрузить логотип", - "distributedUptimeStatusStandardMonitorsHeader": "Стандартные Мониторы", - "distributedUptimeStatusStandardMonitorsDescription": "Прикрепите стандартные мониторы к своей странице статуса.", - "distributedUptimeStatusCreateYour": "Создайте свой", - "distributedUptimeStatusEditYour": "Отредактируйте свой", - "distributedUptimeStatusPublishedLabel": "Опубликовано и доступно для общественности", - "distributedUptimeStatusCompanyNameLabel": "Название компании", - "distributedUptimeStatusPageAddressLabel": "Адрес вашей страницы статуса", - "distributedUptimeStatus30Days": "30 дней", - "distributedUptimeStatus60Days": "60 дней", - "distributedUptimeStatus90Days": "90 дней", - "distributedUptimeStatusPageNotSetUp": "Страница статуса не настроена.", - "distributedUptimeStatusContactAdmin": "Пожалуйста, свяжитесь с вашим администратором", - "distributedUptimeStatusPageNotPublic": "Эта страница статуса не является публичной.", - "distributedUptimeStatusPageDeleteDialog": "Вы хотите удалить эту страницу статуса?", - "distributedUptimeStatusPageDeleteConfirm": "Да, удалить страницу статуса", - "distributedUptimeStatusPageDeleteDescription": "После удаления ваша страница статуса не может быть восстановлена.", - "distributedUptimeStatusDevices": "Устройства", - "distributedUptimeStatusUpt": "UPT", - "distributedUptimeStatusUptBurned": "UPT Burned", - "distributedUptimeStatusUptLogo": "Upt Logo", - "incidentsTableNoIncidents": "Инцидентов не зафиксировано", - "incidentsTablePaginationLabel": "инциденты", - "incidentsTableMonitorName": "Имя Монитора", - "incidentsTableStatus": "Статус", - "incidentsTableDateTime": "Дата и Время", - "incidentsTableStatusCode": "Код Статуса", - "incidentsTableMessage": "Сообщение", - "incidentsOptionsHeader": "Инцидент для:", - "incidentsOptionsHeaderFilterBy": "Фильтровать по:", - "incidentsOptionsHeaderFilterAll": "Все", - "incidentsOptionsHeaderFilterDown": "Недоступно", - "incidentsOptionsHeaderFilterCannotResolve": "Невозможно решить", - "incidentsOptionsHeaderShow": "Показать:", - "incidentsOptionsHeaderLastHour": "Последний час", - "incidentsOptionsHeaderLastDay": "Последний день", - "incidentsOptionsHeaderLastWeek": "Последняя неделя", - "incidentsOptionsPlaceholderAllServers": "Все сервера", - "infrastructureCreateYour": "Создайте свой", - "infrastructureCreateGeneralSettingsDescription": "Здесь вы можете выбрать URL-адрес хоста, а также понятное имя и секретный ключ авторизации для подключения к агенту сервера.", - "infrastructureServerRequirement": "Сервер, который вы отслеживаете, должен быть запущен", - "infrastructureCustomizeAlerts": "Настройте оповещения", - "infrastructureAlertNotificationDescription": "Отправлять уведомления пользователям, когда пороговые значения превышают указанный процент.", - "infrastructureCreateMonitor": "Создать Монитор Инфраструктуры", - "infrastructureProtocol": "Протокол", - "infrastructureServerUrlLabel": "URL Сервера", - "infrastructureDisplayNameLabel": "Отображаемое имя", - "infrastructureAuthorizationSecretLabel": "Секрет авторизации", - "gb": "ГБ", - "mb": "МБ", - "mem": "Mem", - "memoryUsage": "Использование памяти", - "cpu": "CPU", - "cpuUsage": "Использование CPU", - "cpuTemperature": "Температура CPU", - "diskUsage": "Использование диска", - "used": "Использовал", - "total": "Всего", - "cores": "Ядра", - "frequency": "Частота", - "status": "Статус", - "cpuPhysical": "CPU (физический)", - "cpuLogical": "CPU (логический)", - "cpuFrequency": "Частота CPU", - "avgCpuTemperature": "Средняя температура CPU", - "memory": "Память", - "disk": "Диск", - "uptime": "Аптайм", - "os": "ОС", - "host": "Хост", - "actions": "Действия", - "integrations": "Интеграции", - "integrationsPrism": "Подключите Prism к вашему любимому сервису.", - "integrationsSlack": "Slack", - "integrationsSlackInfo": "Подключитесь к Slack и просматривайте инциденты в канале", - "integrationsDiscord": "Discord", - "integrationsDiscordInfo": "Подключитесь к Discord и просматривайте инциденты прямо в канале", - "integrationsZapier": "Zapier", - "integrationsZapierInfo": "Отправляйте все инциденты в Zapier, и тогда вы сможете видеть их везде", - "createYour": "", - "createMonitor": "", - "pause": "", - "resume": "", - "editing": "", - "url": "", - "access": "", - "timezone": "", - "features": "", - "administrator": "", - "loginHere": "", - "displayName": "", - "urlMonitor": "", - "portToMonitor": "", - "websiteMonitoring": "", - "websiteMonitoringDescription": "", - "pingMonitoring": "", - "pingMonitoringDescription": "", - "dockerContainerMonitoring": "", - "window": "", - "cancel": "", - "message": "", - "low": "", - "high": "", - "statusCode": "", - "date&Time": "", - "type": "", - "statusPageName": "", - "publicURL": "", - "repeat": "", - "edit": "", - "createA": "", - "remove": "", - "maintenanceWindowDescription": "", - "startTime": "", - "timeZoneInfo": "", - "monitorsToApply": "", - "nextWindow": "", - "notFoundButton": "", - "pageSpeedConfigureSettingsDescription": "", - "monitorDisplayName": "", - "whenNewIncident": "", - "notifySMS": "", - "notifyEmails": "", - "seperateEmails": "", - "checkFrequency": "", - "matchMethod": "", - "expectedValue": "", - "deleteDialogTitle": "", - "deleteDialogDescription": "", - "pageSpeedMonitor": "", - "shown": "", - "ago": "", - "companyName": "", - "pageSpeedDetailsPerformanceReport": "", - "pageSpeedDetailsPerformanceReportCalculator": "", - "checkingEvery": "", - "statusPageCreateSettings": "", - "basicInformation": "", - "statusPageCreateBasicInfoDescription": "", - "statusPageCreateSelectTimeZoneDescription": "", - "statusPageCreateAppearanceDescription": "", - "statusPageCreateSettingsCheckboxLabel": "", - "statusPageCreateBasicInfoStatusPageAddress": "", - "statusPageCreateTabsContent": "", - "statusPageCreateTabsContentDescription": "", - "statusPageCreateTabsContentFeaturesDescription": "", - "showCharts": "", - "showUptimePercentage": "", - "removeLogo": "", - "statusPageStatus": "", - "statusPageStatusContactAdmin": "", - "statusPageStatusNotPublic": "", - "statusPageStatusNoPage": "", - "statusPageStatusServiceStatus": "", - "deleteStatusPage": "", - "deleteStatusPageConfirm": "", - "deleteStatusPageDescription": "", - "uptimeCreate": "", - "uptimeCreateJsonPath": "", - "uptimeCreateJsonPathQuery": "", - "maintenanceTableActionMenuDialogTitle": "", - "incidentsPageTitle": "Инциденты", - "passwordPanel": { - "passwordChangedSuccess": "Ваш пароль был успешно изменен.", - "passwordInputIncorrect": "Ваш пароль введен неверно.", - "currentPassword": "Текущий пароль", - "enterCurrentPassword": "Введите ваш текущий пароль", - "newPassword": "Новый пароль", - "enterNewPassword": "Введите ваш новый пароль", - "confirmNewPassword": "Подтвердите новый пароль", - "passwordRequirements": "Новый пароль должен содержать не менее 8 символов и должен иметь как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ.", - "saving": "Сохранение..." - }, - "pageSpeedWarning": "Предупреждение: Вы не добавили ключ API Google PageSpeed. Без него монитор PageSpeed не будет работать.", - "pageSpeedLearnMoreLink": "Нажмите здесь, чтобы узнать", - "pageSpeedAddApiKey": "как добавить ваш ключ API.", - "pageSpeedApiKeyFieldTitle": "Ключ Google PageSpeed API", - "pageSpeedApiKeyFieldLabel": "Ключ PageSpeed API", - "pageSpeedApiKeyFieldDescription": "Введите свой ключ Google PageSpeed API, чтобы включить мониторинг скорости страниц. Нажмите «Сбросить», чтобы обновить ключ.", - "pageSpeedApiKeyFieldResetLabel": "Ключ API установлен. Нажмите «Сбросить», чтобы изменить его.", - "createNew": "Создать новый", - "greeting": { - "prepend": "Привет", - "append": "День прекрасен для новых достижений!", - "overview": "Вот обзор ваших мониторов {{type}}." - }, - "monitorStatus": { - "up": "работает", - "down": "не работает", - "paused": "приостановлен" - }, - "roles": { - "superAdmin": "Суперадминистратор", - "admin": "Администратор", - "teamMember": "Член команды", - "demoUser": "Демо-пользователь" - }, - "teamPanel": { - "teamMembers": "Члены команды", - "filter": { - "all": "Все", - "member": "Член" - }, - "inviteTeamMember": "Пригласить члена команды", - "inviteNewTeamMember": "Пригласить нового члена команды", - "inviteDescription": "Когда вы добавляете нового члена команды, он получит доступ ко всем мониторам.", - "email": "Эл. почта", - "selectRole": "Выберите роль", - "inviteLink": "Ссылка для приглашения", - "cancel": "Отмена", - "noMembers": "Нет членов команды с этой ролью", - "getToken": "Получить токен", - "emailToken": "Отправить токен по эл. почте", - "table": { - "name": "Имя", - "email": "Эл. почта", - "role": "Роль", - "created": "Создан" - } - }, - "monitorState": { - "paused": "приостановлен", - "resumed": "возобновлен", - "active": "активный" - }, - "menu": { - "uptime": "Аптайм", - "pagespeed": "Скорость страницы", - "infrastructure": "Инфраструктура", - "distributedUptime": "Распределенный Аптайм", - "incidents": "Инциденты", - "statusPages": "Страницы статуса", - "maintenance": "Обслуживание", - "integrations": "Интеграции", - "settings": "Настройки", - "support": "Поддержка", - "profile": "Профиль", - "password": "Пароль", - "team": "Команда", - "logOut": "Выйти", - "discussions": "Обсуждения", - "docs": "Документация", - "changelog": "История изменений" - }, - "navControls": "Управление", - "statusBreadCrumbsStatusPages": "Страницы статуса", - "statusBreadCrumbsDetails": "Подробности", - "uptimeCreateSelectURL": "Введите URL или IP для мониторинга (например, https://example.com/ или 192.168.1.100) и добавьте понятное отображаемое имя, которое будет показано на панели управления." -} \ No newline at end of file + "dontHaveAccount": "Нет аккаунта", + "doNotHaveAccount": "У вас нет учетной записи?", + "registerHere": "Зарегистрироваться здесь", + "email": "Почта", + "forgotPassword": "Забыли пароль", + "password": "Пароль", + "signUp": "Зарегистрироваться", + "submit": "Подтвердить", + "title": "Название", + "continue": "Продолжить", + "enterEmail": "Введите свой email", + "authLoginTitle": "Войти", + "authLoginEnterPassword": "Введите свой пароль", + "commonPassword": "Пароль", + "commonBack": "Назад", + "authForgotPasswordTitle": "Забыли пароль?", + "authForgotPasswordResetPassword": "Сбросить пароль", + "authForgotPasswordInstructions": "Не волнуйтесь, мы отправим вам инструкции по сбросу.", + "createPassword": "Создайте свой пароль", + "createAPassword": "Пароль", + "authRegisterAlreadyHaveAccount": "Уже есть аккаунт?", + "authRegisterLoginLink": "Войти", + "commonAppName": "Checkmate", + "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.", + "authLoginEnterEmail": "Введите свой email", + "authRegisterTitle": "Создать аккаунт", + "authRegisterStepOneTitle": "Создайте свой аккаут", + "authRegisterStepOneDescription": "Введите свои данные, чтобы начать", + "authRegisterStepTwoTitle": "Настройте свой профиль", + "authRegisterStepTwoDescription": "Расскажите нам о себе", + "authRegisterStepThreeTitle": "Почти готово!", + "authRegisterStepThreeDescription": "Проверьте свою информацию", + "authForgotPasswordDescription": "Не волнуйтесь, мы вышлем вам инструкции по сбросу настроек.", + "authForgotPasswordSendInstructions": "Отправить инструкции", + "authForgotPasswordBackTo": "Назад к", + "authCheckEmailTitle": "Проверьте свою почту", + "authCheckEmailDescription": "Мы отправили ссылку для сброса пароля", + "authCheckEmailResendEmail": "Отправить письмо повторно", + "authCheckEmailBackTo": "Назад к", + "goBackTo": "Назад к", + "authCheckEmailDidntReceiveEmail": "Не получили письмо?", + "authCheckEmailClickToResend": "Нажмите, чтобы отправить повторно", + "authSetNewPasswordTitle": "Установите новый пароль", + "authSetNewPasswordDescription": "Ваш новый пароль должен отличаться от ранее использованных паролей.", + "authSetNewPasswordNewPassword": "Новый пароль", + "authSetNewPasswordConfirmPassword": "Подтвердите пароль", + "confirmPassword": "Введите пароль еще раз для подтверждения", + "confirmNewPasswordPlaceholder": "Подтвердите ваш новый пароль", + "authSetNewPasswordResetPassword": "Сбросить пароль", + "authSetNewPasswordBackTo": "Назад к", + "authPasswordMustBeAtLeast": "Должно быть как минимум", + "authPasswordCharactersLong": "длиной 8 символов", + "authPasswordMustContainAtLeast": "Должен содержать как минимум", + "authPasswordSpecialCharacter": "один специальный символ", + "authPasswordOneNumber": "одно число", + "authPasswordUpperCharacter": "один верхний символ", + "authPasswordLowerCharacter": "один нижний символ", + "authPasswordConfirmAndPassword": "Подтвердите пароль и пароль", + "authPasswordMustMatch": "Пароли должны совпадать", + "authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать", + "authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу", + "authRegisterSignUpWithEmail": "Создать учетную запись суперадминистратора", + "authRegisterBySigningUp": "Создавая учетную запись, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.", + "authRegisterFirstName": "Имя", + "authRegisterLastName": "Фамилия", + "authRegisterEmail": "Эл. почта", + "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите ваш адрес электронной почты", + "authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты", + "bulkImport": { + "title": "Массовый импорт", + "selectFileTips": "Выберите CSV-файл для загрузки", + "selectFileDescription": "Вы можете скачать наш или пример", + "selectFile": "Выбрать файл", + "parsingFailed": "Ошибка анализа", + "uploadSuccess": "Мониторы успешно созданы!", + "validationFailed": "Ошибка проверки", + "noFileSelected": "Файл не выбран", + "fallbackPage": "Импортируйте файл для загрузки списка серверов" + }, + "distributedStatusHeaderText": "Охват реального времени и реального устройства", + "distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу", + "settingsGeneralSettings": "Общие настройки", + "settingsDisplayTimezone": "Отображать часовой пояс", + "settingsDisplayTimezoneDescription": "Выберите часовой пояс, используемый для отображения дат и времени в приложении.", + "settingsAppearance": "Внешний вид", + "settingsAppearanceDescription": "Переключение между светлым и темным режимом или изменение языка пользовательского интерфейса", + "settingsThemeMode": "Тема", + "settingsThemeModeLight": "Светлая", + "settingsThemeModeDark": "Тёмная", + "settingsLanguage": "Язык", + "settingsURLTitle": "Отображать IP/URL на странице статуса", + "settingsURLDescription": "Отображать IP-адрес или URL-адрес монитора на общедоступной странице статуса. Если отключено, будет отображаться только имя монитора для защиты конфиденциальной информации.", + "settingsURLSelectTitle": "Показать IP/URL на странице статуса", + "settingsURLEnabled": "Включено", + "settingURLDisabled": "Отключено", + "settingsDistributedUptime": "Distributed uptime", + "settingsDistributedUptimeDescription": "Включить/выключить distributed uptime monitoring.", + "settingsEnabled": "Включено", + "settingsDisabled": "Выключено", + "settingsHistoryAndMonitoring": "История мониторинга", + "settingsHistoryAndMonitoringDescription": "Определите, как долго вы хотите хранить исторические данные. Вы также можете очистить все существующие данные.", + "settingsTTLLabel": "Дни, за которыми вы хотите следить.", + "settingsTTLOptionalLabel": "0 для бесконечности", + "settingsClearAllStats": "Очистить всю статистику. Это необратимо.", + "settingsClearAllStatsButton": "Очистить всю статистику", + "settingsClearAllStatsDialogTitle": "Хотите очистить всю статистику?", + "settingsClearAllStatsDialogDescription": "После удаления история мониторинга и статистика не могут быть восстановлены.", + "settingsClearAllStatsDialogConfirm": "Да, очистить всю статистику", + "settingsClearAllStatsDialogCancel": "Отмена", + "settingsDemoMonitors": "Демо мониторы", + "settingsDemoMonitorsDescription": "Добавьте примеры мониторов для демонстрации.", + "settingsAddDemoMonitors": "Добавление демонстрационных мониторов", + "settingsAddDemoMonitorsButton": "Добавьте демонстрационные мониторы", + "settingsSystemReset": "Сброс системы", + "settingsSystemResetDescription": "Удалить все мониторы из вашей системы.", + "settingsRemoveAllMonitors": "Удаление всех мониторов", + "settingsRemoveAllMonitorsButton": "Удалить все мониторы", + "settingsRemoveAllMonitorsDialogTitle": "Хотите удалить все мониторы?", + "settingsRemoveAllMonitorsDialogConfirm": "Да, удалить все мониторы", + "settingsWallet": "Кошелёк", + "settingsWalletDescription": "Подключите свой кошелек здесь. Это необходимо для того, чтобы монитор Distributed Uptime мог подключиться к нескольким узлам по всему миру.", + "settingsEmail": "Настройки электронной почты", + "settingsEmailDescription": "Настройте параметры электронной почты", + "settingsEmailHost": "Хост электронной почты - имя хоста или IP-адрес SMTP-сервера", + "settingsEmailPort": "Порт электронной почты - порт для подключения", + "settingsEmailAddress": "Адрес электронной почты - используется для аутентификации", + "settingsEmailPassword": "Пароль электронной почты - пароль для аутентификации", + "settingsEmailUser": "Пользователь электронной почты - имя пользователя для аутентификации, переопределяет адрес электронной почты, если указан", + "settingsEmailFieldResetLabel": "Пароль установлен. Нажмите «Сбросить», чтобы изменить его.", + "settingsEmailConnectionHost": "Хост подключения электронной почты - имя хоста, используемое в приветствии HELO/EHLO", + "settingsTestEmail": "Отправить тестовое письмо", + "settingsTestEmailSuccess": "Тестовое письмо успешно отправлено", + "settingsTestEmailFailed": "Не удалось отправить тестовое письмо", + "settingsTestEmailFailedWithReason": "Не удалось отправить тестовое письмо: {{reason}}", + "settingsTestEmailUnknownError": "Неизвестная ошибка", + "settingsEmailRequiredFields": "Требуются хост и порт электронной почты", + "settingsAbout": "О", + "settingsDevelopedBy": "Developed by Bluewave Labs.", + "settingsSave": "Сохранить", + "commonSave": "Сохранить", + "commonSaving": "Сохранение...", + "settingsSuccessSaved": "Настройки успешно сохранены", + "settingsFailedToSave": "Не удалось сохранить настройки", + "settingsStatsCleared": "Статистика успешно очищена", + "settingsFailedToClearStats": "Не удалось очистить статистику", + "FirstName": "Имя", + "LastName": "Фамилия", + "YourPhoto": "Фото профиля", + "PhotoDescriptionText": "Это фото будет отображаться на странице вашего профиля.", + "EmailDescriptionText": "Ваш текущий email—его нельзя изменить.", + "DeleteAccountTitle": "Удалить аккаунт", + "DeleteAccountButton": "Удалить аккаунт", + "DeleteDescriptionText": "Это удалит аккаунт и все связанные данные с сервера. Это необратимо.", + "DeleteAccountWarning": "Удаление аккаунта означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.", + "DeleteWarningTitle": "Действительно удалить этот аккаунт?", + "settingsDemoMonitorsAdded": "Успешно добавлены демонстрационные мониторы", + "settingsFailedToAddDemoMonitors": "Не удалось добавить демонстрационные мониторы", + "settingsMonitorsDeleted": "Успешно удалены все мониторы", + "settingsFailedToDeleteMonitors": "Не удалось удалить все мониторы", + "backendUnreachable": "Ошибка подключения к серверу", + "backendUnreachableMessage": "Мы не можем подключиться к серверу. Пожалуйста, проверьте ваше интернет-соединение или проверьте конфигурацию развертывания, если проблема не устраняется.", + "backendUnreachableError": "Невозможно подключиться к серверу. Пожалуйста, повторите попытку позже.", + "retryConnection": "Повторить подключение", + "retryingConnection": "Подключение...", + "backendReconnected": "Успешно восстановлено подключение к серверу.", + "backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.", + "backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте ваше сетевое подключение.", + "starPromptTitle": "Star Checkmate", + "starPromptDescription": "Ознакомьтесь с последними релизами и помогите развить сообщество на GitHub", + "https": "HTTPS", + "http": "HTTP", + "monitor": "монитор", + "aboutus": "О Нас", + "now": "Сейчас", + "delete": "Удалить", + "configure": "Настроить", + "networkError": "Ошибка сети", + "responseTime": "Время ответа", + "ms": "мс", + "bar": "Bar", + "area": "Area", + "country": "СТРАНА", + "city": "ГОРОД", + "response": "ОТВЕТ", + "checkConnection": "Пожалуйста, проверьте ваше соединение", + "passwordreset": "Сброс пароля", + "authRegisterStepOnePersonalDetails": "Введите свои личные данные", + "authCheckEmailOpenEmailButton": "Откройте приложение почты", + "authNewPasswordConfirmed": "Ваш пароль успешно сброшен. Нажмите ниже, чтобы войти в систему магическим образом.", + "monitorStatusUp": "Монитор {name} ({url}) теперь включен и отвечает", + "monitorStatusDown": "Монитор {name} ({url}) ОТКЛЮЧЕН и не отвечает", + "webhookSendSuccess": "Уведомление Webhook успешно отправлено", + "webhookSendError": "Ошибка отправки уведомления webhook на {platform}", + "webhookUnsupportedPlatform": "Неподдерживаемая платформа: {platform}", + "distributedRightCategoryTitle": "Монитор", + "distributedStatusServerMonitors": "Серверные мониторы", + "distributedStatusServerMonitorsDescription": "Мониторинг состояния связанных серверов", + "distributedUptimeCreateSelectURL": "Здесь вы можете выбрать URL-адрес хоста, а также тип монитора.", + "distributedUptimeCreateChecks": "Проверки, которые необходимо выполнить", + "distributedUptimeCreateChecksDescription": "Вы всегда можете добавить или удалить проверки после добавления своего сайта.", + "distributedUptimeCreateIncidentNotification": "Уведомления об инцидентах", + "distributedUptimeCreateIncidentDescription": "В случае возникновения инцидента сообщите об этом пользователям.", + "distributedUptimeCreateAdvancedSettings": "Расширенные настройки", + "distributedUptimeDetailsNoMonitorHistory": "Для этого монитора пока нет истории проверок.", + "distributedUptimeDetailsFooterHeading": "Made with ❤️ by UpRock & Bluewave Labs", + "distributedUptimeDetailsFooterBuilt": "Built on", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "Distributed Uptime Monitoring powered by DePIN", + "distributedUptimeDetailsStatusHeaderUptime": "Аптайм:", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Последнее обновление", + "notifications": { + "enableNotifications": "Включить уведомления {{platform}}", + "testNotification": "Тестовое уведомление", + "addOrEditNotifications": "Добавить или изменить уведомления", + "slack": { + "label": "Slack", + "description": "Чтобы включить уведомления Slack, создайте приложение Slack и включите входящие вебхуки. После этого просто укажите URL вебхука здесь.", + "webhookLabel": "URL вебхука", + "webhookPlaceholder": "https://hooks.slack.com/services/..." + }, + "discord": { + "label": "Discord", + "description": "Чтобы отправить данные на канал Discord из Checkmate через уведомления Discord с использованием веб-хуков, вы можете использовать функцию входящих веб-хуков Discord.", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/..." + }, + "telegram": { + "label": "Telegram", + "description": "Чтобы включить уведомления Telegram, создайте бота Telegram с помощью BotFather, официального бота для создания и управления ботами Telegram. Затем получите токен API и идентификатор чата и запишите их здесь.", + "tokenLabel": "Ваш токен бота", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "ID Вашего Чата", + "chatIdPlaceholder": "-1001234567890" + }, + "webhook": { + "label": "Вебхуки", + "description": "Вы можете настроить пользовательский вебхук для получения уведомлений о возникновении инцидентов.", + "urlLabel": "URL вебхука", + "urlPlaceholder": "https://your-server.com/webhook" + }, + "testNotificationDevelop": "Тестовое уведомление 2", + "integrationButton": "" + }, + "testLocale": "testLocale", + "add": "Добавить", + "monitors": "мониторы", + "distributedUptimeStatusCreateStatusPage": "страница статуса", + "distributedUptimeStatusCreateStatusPageAccess": "Доступ", + "distributedUptimeStatusCreateStatusPageReady": "Если ваша страница статуса готова, вы можете отметить ее как опубликованную.", + "distributedUptimeStatusBasicInfoHeader": "Основная информация", + "distributedUptimeStatusBasicInfoDescription": "Определите название компании и поддомен, на который ссылается ваша страница статуса.", + "distributedUptimeStatusLogoHeader": "Логотип", + "distributedUptimeStatusLogoDescription": "Загрузите логотип для своей страницы статуса", + "distributedUptimeStatusLogoUploadButton": "Загрузить логотип", + "distributedUptimeStatusStandardMonitorsHeader": "Стандартные Мониторы", + "distributedUptimeStatusStandardMonitorsDescription": "Прикрепите стандартные мониторы к своей странице статуса.", + "distributedUptimeStatusCreateYour": "Создайте свой", + "distributedUptimeStatusEditYour": "Отредактируйте свой", + "distributedUptimeStatusPublishedLabel": "Опубликовано и доступно для общественности", + "distributedUptimeStatusCompanyNameLabel": "Название компании", + "distributedUptimeStatusPageAddressLabel": "Адрес вашей страницы статуса", + "distributedUptimeStatus30Days": "30 дней", + "distributedUptimeStatus60Days": "60 дней", + "distributedUptimeStatus90Days": "90 дней", + "distributedUptimeStatusPageNotSetUp": "Страница статуса не настроена.", + "distributedUptimeStatusContactAdmin": "Пожалуйста, свяжитесь с вашим администратором", + "distributedUptimeStatusPageNotPublic": "Эта страница статуса не является публичной.", + "distributedUptimeStatusPageDeleteDialog": "Вы хотите удалить эту страницу статуса?", + "distributedUptimeStatusPageDeleteConfirm": "Да, удалить страницу статуса", + "distributedUptimeStatusPageDeleteDescription": "После удаления ваша страница статуса не может быть восстановлена.", + "distributedUptimeStatusDevices": "Устройства", + "distributedUptimeStatusUpt": "UPT", + "distributedUptimeStatusUptBurned": "UPT Burned", + "distributedUptimeStatusUptLogo": "Upt Logo", + "incidentsTableNoIncidents": "Инцидентов не зафиксировано", + "incidentsTablePaginationLabel": "инциденты", + "incidentsTableMonitorName": "Имя Монитора", + "incidentsTableStatus": "Статус", + "incidentsTableDateTime": "Дата и Время", + "incidentsTableStatusCode": "Код Статуса", + "incidentsTableMessage": "Сообщение", + "incidentsOptionsHeader": "Инцидент для:", + "incidentsOptionsHeaderFilterBy": "Фильтровать по:", + "incidentsOptionsHeaderFilterAll": "Все", + "incidentsOptionsHeaderFilterDown": "Недоступно", + "incidentsOptionsHeaderFilterCannotResolve": "Невозможно решить", + "incidentsOptionsHeaderShow": "Показать:", + "incidentsOptionsHeaderLastHour": "Последний час", + "incidentsOptionsHeaderLastDay": "Последний день", + "incidentsOptionsHeaderLastWeek": "Последняя неделя", + "incidentsOptionsPlaceholderAllServers": "Все сервера", + "infrastructureCreateYour": "Создайте свой", + "infrastructureCreateGeneralSettingsDescription": "Здесь вы можете выбрать URL-адрес хоста, а также понятное имя и секретный ключ авторизации для подключения к агенту сервера.", + "infrastructureServerRequirement": "Сервер, который вы отслеживаете, должен быть запущен", + "infrastructureCustomizeAlerts": "Настройте оповещения", + "infrastructureAlertNotificationDescription": "Отправлять уведомления пользователям, когда пороговые значения превышают указанный процент.", + "infrastructureCreateMonitor": "Создать Монитор Инфраструктуры", + "infrastructureProtocol": "Протокол", + "infrastructureServerUrlLabel": "URL Сервера", + "infrastructureDisplayNameLabel": "Отображаемое имя", + "infrastructureAuthorizationSecretLabel": "Секрет авторизации", + "gb": "ГБ", + "mb": "МБ", + "mem": "Mem", + "memoryUsage": "Использование памяти", + "cpu": "CPU", + "cpuUsage": "Использование CPU", + "cpuTemperature": "Температура CPU", + "diskUsage": "Использование диска", + "used": "Использовал", + "total": "Всего", + "cores": "Ядра", + "frequency": "Частота", + "status": "Статус", + "cpuPhysical": "CPU (физический)", + "cpuLogical": "CPU (логический)", + "cpuFrequency": "Частота CPU", + "avgCpuTemperature": "Средняя температура CPU", + "memory": "Память", + "disk": "Диск", + "uptime": "Аптайм", + "os": "ОС", + "host": "Хост", + "actions": "Действия", + "integrations": "Интеграции", + "integrationsPrism": "Подключите Prism к вашему любимому сервису.", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "Подключитесь к Slack и просматривайте инциденты в канале", + "integrationsDiscord": "Discord", + "integrationsDiscordInfo": "Подключитесь к Discord и просматривайте инциденты прямо в канале", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "Отправляйте все инциденты в Zapier, и тогда вы сможете видеть их везде", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "incidentsPageTitle": "Инциденты", + "passwordPanel": { + "passwordChangedSuccess": "Ваш пароль был успешно изменен.", + "passwordInputIncorrect": "Ваш пароль введен неверно.", + "currentPassword": "Текущий пароль", + "enterCurrentPassword": "Введите ваш текущий пароль", + "newPassword": "Новый пароль", + "enterNewPassword": "Введите ваш новый пароль", + "confirmNewPassword": "Подтвердите новый пароль", + "passwordRequirements": "Новый пароль должен содержать не менее 8 символов и должен иметь как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ.", + "saving": "Сохранение..." + }, + "pageSpeedWarning": "Предупреждение: Вы не добавили ключ API Google PageSpeed. Без него монитор PageSpeed не будет работать.", + "pageSpeedLearnMoreLink": "Нажмите здесь, чтобы узнать", + "pageSpeedAddApiKey": "как добавить ваш ключ API.", + "pageSpeedApiKeyFieldTitle": "Ключ Google PageSpeed API", + "pageSpeedApiKeyFieldLabel": "Ключ PageSpeed API", + "pageSpeedApiKeyFieldDescription": "Введите свой ключ Google PageSpeed API, чтобы включить мониторинг скорости страниц. Нажмите «Сбросить», чтобы обновить ключ.", + "pageSpeedApiKeyFieldResetLabel": "Ключ API установлен. Нажмите «Сбросить», чтобы изменить его.", + "createNew": "Создать новый", + "greeting": { + "prepend": "Привет", + "append": "День прекрасен для новых достижений!", + "overview": "Вот обзор ваших мониторов {{type}}." + }, + "monitorStatus": { + "up": "работает", + "down": "не работает", + "paused": "приостановлен" + }, + "roles": { + "superAdmin": "Суперадминистратор", + "admin": "Администратор", + "teamMember": "Член команды", + "demoUser": "Демо-пользователь" + }, + "teamPanel": { + "teamMembers": "Члены команды", + "filter": { + "all": "Все", + "member": "Член" + }, + "inviteTeamMember": "Пригласить члена команды", + "inviteNewTeamMember": "Пригласить нового члена команды", + "inviteDescription": "Когда вы добавляете нового члена команды, он получит доступ ко всем мониторам.", + "email": "Эл. почта", + "selectRole": "Выберите роль", + "inviteLink": "Ссылка для приглашения", + "cancel": "Отмена", + "noMembers": "Нет членов команды с этой ролью", + "getToken": "Получить токен", + "emailToken": "Отправить токен по эл. почте", + "table": { + "name": "Имя", + "email": "Эл. почта", + "role": "Роль", + "created": "Создан" + } + }, + "monitorState": { + "paused": "приостановлен", + "resumed": "возобновлен", + "active": "активный" + }, + "menu": { + "uptime": "Аптайм", + "pagespeed": "Скорость страницы", + "infrastructure": "Инфраструктура", + "distributedUptime": "Распределенный Аптайм", + "incidents": "Инциденты", + "statusPages": "Страницы статуса", + "maintenance": "Обслуживание", + "integrations": "Интеграции", + "settings": "Настройки", + "support": "Поддержка", + "profile": "Профиль", + "password": "Пароль", + "team": "Команда", + "logOut": "Выйти", + "discussions": "Обсуждения", + "docs": "Документация", + "changelog": "История изменений" + }, + "navControls": "Управление", + "statusBreadCrumbsStatusPages": "Страницы статуса", + "statusBreadCrumbsDetails": "Подробности", + "uptimeCreateSelectURL": "Введите URL или IP для мониторинга (например, https://example.com/ или 192.168.1.100) и добавьте понятное отображаемое имя, которое будет показано на панели управления." +} diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index 6fc650ad3..e411b7e4a 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -1,536 +1,536 @@ { - "dontHaveAccount": "Hesabınız yok mu", - "doNotHaveAccount": "Hesabınız yok mu?", - "registerHere": "Buradan kayıt olun", - "email": "E-posta", - "forgotPassword": "Parolamı unuttum", - "password": "Parola", - "signUp": "Kayıt Ol", - "submit": "Gönder", - "title": "Başlık", - "continue": "Devam Et", - "enterEmail": "E-posta adresinizi girin", - "authLoginTitle": "Giriş Yap", - "authLoginEnterPassword": "Parolanızı girin", - "commonPassword": "Parola", - "commonBack": "Geri", - "authForgotPasswordTitle": "Parolanızı mı unuttunuz?", - "authForgotPasswordResetPassword": "Parola sıfırla", - "authForgotPasswordInstructions": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.", - "createPassword": "Parolanızı oluşturun", - "createAPassword": "Parola", - "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", - "authRegisterLoginLink": "Giriş Yap", - "commonAppName": "Checkmate", - "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.", - "authLoginEnterEmail": "E-posta adresinizi girin", - "authRegisterTitle": "Hesap oluştur", - "authRegisterStepOneTitle": "Hesabınızı oluşturun", - "authRegisterStepOneDescription": "Başlamak için bilgilerinizi girin", - "authRegisterStepTwoTitle": "Profilinizi ayarlayın", - "authRegisterStepTwoDescription": "Kendiniz hakkında daha fazla bilgi verin", - "authRegisterStepThreeTitle": "Neredeyse bitti!", - "authRegisterStepThreeDescription": "Bilgilerinizi gözden geçirin", - "authForgotPasswordDescription": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.", - "authForgotPasswordSendInstructions": "Talimatları gönder", - "authForgotPasswordBackTo": "Geri dön", - "authCheckEmailTitle": "E-postanızı kontrol edin", - "authCheckEmailDescription": "{{email}} adresine şifre sıfırlama bağlantısı gönderdik", - "authCheckEmailResendEmail": "E-postayı yeniden gönder", - "authCheckEmailBackTo": "Geri dön", - "goBackTo": "Geri dön", - "authCheckEmailDidntReceiveEmail": "E-posta almadınız mı?", - "authCheckEmailClickToResend": "Yeniden göndermek için tıklayın", - "authSetNewPasswordTitle": "Yeni şifre belirle", - "authSetNewPasswordDescription": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.", - "authSetNewPasswordNewPassword": "Yeni şifre", - "authSetNewPasswordConfirmPassword": "Parolayı onayla", - "confirmPassword": "Onaylamak için parolayı tekrar girin", - "confirmNewPasswordPlaceholder": "Yeni parolanızı onaylayın", - "authSetNewPasswordResetPassword": "Parola sıfırla", - "authSetNewPasswordBackTo": "Geri dön", - "authPasswordMustBeAtLeast": "En az", - "authPasswordCharactersLong": "8 karakter uzunluğunda olmalı", - "authPasswordMustContainAtLeast": "En az içermeli", - "authPasswordSpecialCharacter": "bir özel karakter", - "authPasswordOneNumber": "bir rakam", - "authPasswordUpperCharacter": "bir büyük harf", - "authPasswordLowerCharacter": "bir küçük harf", - "authPasswordConfirmAndPassword": "Onay şifresi ve şifre", - "authPasswordMustMatch": "Parolalar eşleşmelidir", - "authRegisterCreateAccount": "Hesap oluşturmak için devam et", - "authRegisterCreateSuperAdminAccount": "Super admin hesabınızı oluşturmak için devam edin", - "authRegisterSignUpWithEmail": "E-posta ile kayıt ol", - "authRegisterBySigningUp": "Kayıt olarak, aşağıdaki şartları kabul ediyorsunuz:", - "distributedStatusHeaderText": "Gerçek zamanlı, Gerçek cihazlar kapsamı", - "distributedStatusSubHeaderText": "Dünya çapında milyonlarca cihaz tarafından desteklenen sistem performansını küresel bölgeye, ülkeye veya şehre göre görüntüleyin", - "settingsGeneralSettings": "Genel ayarlar", - "settingsDisplayTimezone": "Görüntüleme saat dilimi", - "settingsDisplayTimezoneDescription": "Uygulama genelinde tarih ve saatlerin görüntülenmesi için kullanılacak saat dilimini seçin.", - "settingsAppearance": "Görünüm", - "settingsAppearanceDescription": "Açık ve koyu mod arasında geçiş yapın veya kullanıcı arayüzü dilini değiştirin", - "settingsThemeMode": "Tema", - "settingsThemeModeLight": "Açık", - "settingsThemeModeDark": "Koyu", - "settingsLanguage": "Dil", - "settingsURLTitle": "Durum Sayfasında IP/URL'yi Göster", - "settingsURLDescription": "Monitörün IP adresini veya URL'sini genel Durum sayfasında göster. Devre dışı bırakıldığında, hassas bilgileri korumak için yalnızca monitör adı gösterilecektir.", - "settingsURLSelectTitle": "Durum sayfasında IP/URL'yi göster", - "settingsURLEnabled": "Etkin", - "settingURLDisabled": "Devre Dışı", - "settingsDistributedUptime": "Dağıtılmış çalışma süresi", - "settingsDistributedUptimeDescription": "Dağıtılmış çalışma süresi izlemeyi etkinleştirin/devre dışı bırakın.", - "settingsEnabled": "Etkin", - "settingsDisabled": "Devre dışı", - "settingsHistoryAndMonitoring": "İzleme geçmişi", - "settingsHistoryAndMonitoringDescription": "Geçmiş verileri ne kadar süre saklamak istediğinizi tanımlayın. Ayrıca mevcut tüm verileri temizleyebilirsiniz.", - "settingsTTLLabel": "İzleme geçmişini saklamak istediğiniz gün sayısı.", - "settingsTTLOptionalLabel": "Sınırsız için 0", - "settingsClearAllStats": "Tüm istatistikleri temizle. Bu geri alınamaz.", - "settingsClearAllStatsButton": "Tüm istatistikleri temizle", - "settingsClearAllStatsDialogTitle": "Tüm istatistikleri temizlemek istiyor musunuz?", - "settingsClearAllStatsDialogDescription": "Kaldırıldıktan sonra, izleme geçmişi ve istatistikleri geri alınamaz.", - "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", - "settingsClearAllStatsDialogCancel": "İptal", - "settingsDemoMonitors": "Demo monitörler", - "settingsDemoMonitorsDescription": "Gösterim amaçlı örnek monitörler ekleyin.", - "settingsAddDemoMonitors": "Demo monitörler ekleniyor", - "settingsAddDemoMonitorsButton": "Demo monitörler ekle", - "settingsSystemReset": "Sistem sıfırlama", - "settingsSystemResetDescription": "Sisteminizden tüm monitörleri kaldırın.", - "settingsRemoveAllMonitors": "Tüm monitörler kaldırılıyor", - "settingsRemoveAllMonitorsButton": "Tüm monitörleri kaldır", - "settingsRemoveAllMonitorsDialogTitle": "Tüm monitörleri kaldırmak istiyor musunuz?", - "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri kaldır", - "settingsWallet": "Cüzdan", - "settingsWalletDescription": "Cüzdanınızı buradan bağlayın. Bu, Dağıtılmış Çalışma Süresi monitörünün küresel olarak birden çok düğüme bağlanması için gereklidir.", - "settingsTestEmail": "Test e-postası gönder", - "settingsTestEmailSuccess": "Test e-postası başarıyla gönderildi", - "settingsTestEmailFailed": "Test e-postası gönderilemedi", - "settingsTestEmailFailedWithReason": "Test e-postası gönderilemedi: {{reason}}", - "settingsTestEmailUnknownError": "Bilinmeyen hata", - "settingsEmail": "E-posta", - "settingsEmailDescription": "Sisteminiz için e-posta ayarlarını yapılandırın. Bu, bildirim ve uyarıları göndermek için kullanılır.", - "settingsEmailHost": "E-posta sunucusu - SMTP sunucusunun ana bilgisayar adı veya IP adresi", - "settingsEmailPort": "E-posta portu - Bağlanılacak port", - "settingsEmailUser": "E-posta kullanıcısı - Kimlik doğrulama için kullanıcı adı, belirtilirse e-posta adresini geçersiz kılar", - "settingsEmailAddress": "E-posta adresi - Kimlik doğrulama için kullanılır", - "settingsEmailPassword": "E-posta şifresi - Kimlik doğrulama için şifre", - "settingsEmailConnectionHost": "E-posta bağlantı sunucusu - HELO/EHLO selamlamasında kullanılacak ana bilgisayar adı", - "settingsEmailRequiredFields": "E-posta sunucusu ve port gereklidir", - "settingsAbout": "Hakkında", - "settingsDevelopedBy": "Bluewave Labs tarafından geliştirilmiştir.", - "settingsSave": "Kaydet", - "settingsSuccessSaved": "Ayarlar başarıyla kaydedildi", - "settingsFailedToSave": "Ayarlar kaydedilemedi", - "settingsStatsCleared": "İstatistikler başarıyla temizlendi", - "settingsFailedToClearStats": "İstatistikler temizlenemedi", - "settingsDemoMonitorsAdded": "Demo monitörler başarıyla eklendi", - "settingsFailedToAddDemoMonitors": "Demo monitörler eklenemedi", - "settingsMonitorsDeleted": "Tüm monitörler başarıyla silindi", - "settingsFailedToDeleteMonitors": "Monitörler silinemedi", - "backendUnreachable": "Sunucu Bağlantı Hatası", - "backendUnreachableMessage": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.", - "backendUnreachableError": "Sunucuya bağlanılamıyor. Lütfen daha sonra tekrar deneyin.", - "retryConnection": "Bağlantıyı Yeniden Dene", - "retryingConnection": "Bağlanıyor...", - "backendReconnected": "Sunucuya başarıyla yeniden bağlandı.", - "backendStillUnreachable": "Sunucu hala erişilemez durumda. Lütfen daha sonra tekrar deneyin.", - "backendConnectionError": "Sunucuya bağlanırken hata oluştu. Lütfen ağ bağlantınızı kontrol edin.", - "starPromptTitle": "Checkmate yıldızla değerlendirin", - "starPromptDescription": "En son sürümleri görün ve GitHub'daki topluluğun büyümesine yardımcı olun", - "https": "HTTPS", - "http": "HTTP", - "monitor": "monitör", - "aboutus": "Hakkımızda", - "now": "Şimdi", - "delete": "Sil", - "configure": "Yapılandır", - "networkError": "Ağ hatası", - "responseTime": "Yanıt süresi", - "ms": "ms", - "bar": "Çubuk", - "area": "Alan", - "country": "ÜLKE", - "city": "ŞEHİR", - "response": "YANIT", - "checkConnection": "Lütfen bağlantınızı kontrol edin", - "passwordreset": "Parola Sıfırlama", - "authRegisterStepOnePersonalDetails": "Kişisel bilgilerinizi girin", - "authCheckEmailOpenEmailButton": "Eposta uygulamasını aç", - "authNewPasswordConfirmed": "Parolanız başarıyla sıfırlandı. Otomatik olarak giriş yapmak için aşağıya tıklayın.", - "monitorStatusUp": "Monitör {name} ({url}) ayakta ve yanıt veriyor", - "monitorStatusDown": "Monitör {name} ({url}) yanıt vermiyor", - "webhookSendSuccess": "Web kanca bildirimi başarıyla gönderildi", - "webhookSendError": "Web kanca bildirimi bu platforma gönderilemedi: {platform}", - "webhookUnsupportedPlatform": "Desteklenmeyen platform: {platform}", - "distributedRightCategoryTitle": "Monitör", - "distributedStatusServerMonitors": "Sunucu monitörleri", - "distributedStatusServerMonitorsDescription": "İlgili sunucuların monitör durumları", - "distributedUptimeCreateSelectURL": "Burada sunucu adresini (URL) ve monitör türünü girebilirsiniz.", - "distributedUptimeCreateChecks": "Yapılacak kontroller", - "distributedUptimeCreateChecksDescription": "Adresi girdikten sonra kontrol ekleyebilir ya da çıkartabilirsiniz.", - "distributedUptimeCreateIncidentNotification": "Olay bildirimleri", - "distributedUptimeCreateIncidentDescription": "Bir olay olduğunda kullanıcıları bilgilendir.", - "distributedUptimeCreateAdvancedSettings": "Gelişmiş ayarlar", - "distributedUptimeDetailsNoMonitorHistory": "Bu monitör için henüz bir denetim günlüğü oluşturulmadı.", - "distributedUptimeDetailsFooterHeading": "UpRock & Bluewave Labs tarafından geliştirildi", - "distributedUptimeDetailsFooterBuilt": "Altyapı", - "distributedUptimeDetailsFooterSolana": "Solana", - "distributedUptimeDetailsMonitorHeader": "Depin Destekli Dağıtık Kesintisizlik İzleme", - "distributedUptimeDetailsStatusHeaderUptime": "Erişilebilirlik", - "distributedUptimeDetailsStatusHeaderLastUpdate": "Son güncelleme", - "notifications": { - "enableNotifications": "{{platform}} bildirimlerini etkinleştir", - "testNotification": "Bildirimi test et", - "addOrEditNotifications": "Bildirimleri ekle ya da düzenle", - "slack": { - "label": "Slack", - "description": "Slack bildirimlerini etkinleştirmek için bir Slack uygulaması oluşturun ve gelen web kancalarını etkinleştirin. Daha sonra, webhook URL’sini buraya girmeniz yeterlidir.\n\n\n\n\n\n", - "webhookLabel": "Web kanca URL:", - "webhookPlaceholder": "https://hooks.slack.com/services/...", - "webhookRequired": "" - }, - "discord": { - "label": "Discord", - "description": "Checkmate’ten Discord bildirimleri aracılığıyla bir Discord kanalına veri göndermek için Discord’un gelen web kancaları özelliğini kullanabilirsiniz.\n\n\n\n\n\n\n\n", - "webhookLabel": "Discord web kanca URL", - "webhookPlaceholder": "https://discord.com/api/webhooks/...", - "webhookRequired": "" - }, - "telegram": { - "label": "Telegram", - "description": "Telegram bildirimlerini etkinleştirmek için, Telegram botlarını oluşturup yönetmek için kullanılan resmi bot BotFather ile bir Telegram botu oluşturun. Daha sonra, API jetonunu (token) ve sohbet kimliğini (chat ID) alın ve buraya yazın.", - "tokenLabel": "Bot jetonu (token)", - "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", - "chatIdLabel": "Sohbet ID", - "chatIdPlaceholder": "-1001234567890", - "fieldsRequired": "" - }, - "webhook": { - "label": "Web kancaları", - "description": "Olaylar meydana geldiğinde bildirim almak için özel bir web kancası ayarlayabilirsiniz.", - "urlLabel": "Web kanca URL:", - "urlPlaceholder": "https://sunucu-adresiniz.com/webhook", - "urlRequired": "" - }, - "testNotificationDevelop": "Test bildirimi 2", - "integrationButton": "Bildirim Entegrasyonu", - "testSuccess": "", - "testFailed": "", - "unsupportedType": "", - "networkError": "" - }, - "testLocale": "TEST13 UPLOAD", - "add": "Ekle", - "monitors": "Monitörler", - "distributedUptimeStatusCreateStatusPage": "durum sayfası", - "distributedUptimeStatusCreateStatusPageAccess": "Erişim", - "distributedUptimeStatusCreateStatusPageReady": "Durum sayfanız hazırsa yayınlayabilirsiniz.", - "distributedUptimeStatusBasicInfoHeader": "Temel bilgiler", - "distributedUptimeStatusBasicInfoDescription": "", - "distributedUptimeStatusLogoHeader": "Logo", - "distributedUptimeStatusLogoDescription": "Durum sayfanız için bir logo yükleyin", - "distributedUptimeStatusLogoUploadButton": "Logo yükle", - "distributedUptimeStatusStandardMonitorsHeader": "Standart monitörler", - "distributedUptimeStatusStandardMonitorsDescription": "Durum sayfanıza standart monitörleri ekleyin.", - "distributedUptimeStatusCreateYour": "", - "distributedUptimeStatusEditYour": "", - "distributedUptimeStatusPublishedLabel": "Yayında ve herkes tarafından görülebilir", - "distributedUptimeStatusCompanyNameLabel": "Şirket adı", - "distributedUptimeStatusPageAddressLabel": "Durum sayfası adresi", - "distributedUptimeStatus30Days": "30 gün", - "distributedUptimeStatus60Days": "60 gün", - "distributedUptimeStatus90Days": "90 gün", - "distributedUptimeStatusPageNotSetUp": "Henüz bir durum sayfası oluşturulmadı.", - "distributedUptimeStatusContactAdmin": "Lütfen yöneticiniz ile görüşün", - "distributedUptimeStatusPageNotPublic": "Bu durum sayfası herkese açık değil", - "distributedUptimeStatusPageDeleteDialog": "Bu durum sayfasını silmek istiyor musunuz? ", - "distributedUptimeStatusPageDeleteConfirm": "Evet, durum sayfasını sil", - "distributedUptimeStatusPageDeleteDescription": "Silindiği zaman durum sayfalarını geri getiremezsiniz.", - "distributedUptimeStatusDevices": "Cihazlar", - "distributedUptimeStatusUpt": "UPT", - "distributedUptimeStatusUptBurned": "Yakılan UPT", - "distributedUptimeStatusUptLogo": "Upt Logo", - "incidentsTableNoIncidents": "Hiç olay kaydedilmedi", - "incidentsTablePaginationLabel": "olaylar", - "incidentsTableMonitorName": "Monitör adı", - "incidentsTableStatus": "Durum", - "incidentsTableDateTime": "Tarih ve saat", - "incidentsTableStatusCode": "Durum kodu", - "incidentsTableMessage": "Mesaj", - "incidentsOptionsHeader": "Servisler:", - "incidentsOptionsHeaderFilterBy": "Filtrele:", - "incidentsOptionsHeaderFilterAll": "Tümü", - "incidentsOptionsHeaderFilterDown": "Erişilemiyor", - "incidentsOptionsHeaderFilterCannotResolve": "Çözümlenemiyor", - "incidentsOptionsHeaderShow": "Göster:", - "incidentsOptionsHeaderLastHour": "Son saat", - "incidentsOptionsHeaderLastDay": "Son gün", - "incidentsOptionsHeaderLastWeek": "Son hafta", - "incidentsOptionsPlaceholderAllServers": "Tüm sunucular", - "infrastructureCreateYour": "", - "infrastructureCreateGeneralSettingsDescription": "", - "infrastructureServerRequirement": "", - "infrastructureCustomizeAlerts": "Alarmları özelleştir", - "infrastructureAlertNotificationDescription": "", - "infrastructureCreateMonitor": "Altyapı Monitörü oluştur", - "infrastructureProtocol": "Protokol", - "infrastructureServerUrlLabel": "Sunucu adresi", - "infrastructureDisplayNameLabel": "Görünen adı", - "infrastructureAuthorizationSecretLabel": "Kimlik denetimi parolası", - "gb": "GB", - "mb": "MB", - "mem": "Bellek", - "memoryUsage": "Bellek kullanımı", - "cpu": "CPU", - "cpuUsage": "CPU kullanımı", - "cpuTemperature": "CPU sıcaklığı", - "diskUsage": "Disk kullanımı", - "used": "Kullanılan", - "total": "Toplam", - "cores": "Çekirdek", - "frequency": "Frekans", - "status": "Durum", - "cpuPhysical": "CPU (fiziksel)", - "cpuLogical": "CPU (Mantıksal)", - "cpuFrequency": "CPU Frekansı", - "avgCpuTemperature": "Ortalama CPU Isısı", - "memory": "Bellek", - "disk": "Disk", - "uptime": "", - "os": "İşletim sistemi", - "host": "Makine", - "actions": "İşlemler", - "integrations": "Entegrasyonlar", - "integrationsPrism": "Prism'i favori servisinize bağlayın.", - "integrationsSlack": "Slack", - "integrationsSlackInfo": "", - "integrationsDiscord": "Discord", - "integrationsDiscordInfo": "", - "integrationsZapier": "Zapier", - "integrationsZapierInfo": "", - "commonSave": "Kaydet", - "commonSaving": "Kaydediliyor...", - "createYour": "", - "createMonitor": "Monitör oluştur", - "pause": "Beklet", - "resume": "Yeniden başlat", - "editing": "Düzenleniyor...", - "url": "URL", - "access": "Erişim", - "timezone": "Zaman dilimi", - "features": "Özellikler", - "administrator": "Yönetici misin?", - "loginHere": "Buradan giriş yap", - "displayName": "Görüntülenecek isim", - "urlMonitor": "Monitör edilecek URL", - "portToMonitor": "Monitör edilecek port", - "websiteMonitoring": "Web sitesi monitörü", - "websiteMonitoringDescription": "", - "pingMonitoring": "Ping monitörü", - "pingMonitoringDescription": "Sitenizin ayakta olup olmadığını denetleyin.", - "dockerContainerMonitoring": "Docker konteyner monitörü", - "dockerContainerMonitoringDescription": "Docker konteynerinizin ayakta olup olmadığını denetleyin.", - "portMonitoring": "Port monitörü", - "portMonitoringDescription": "Portunuzun açık olup olmadığını denetleyin.", - "createMaintenanceWindow": "Bakım aralığı oluşturun", - "createMaintenance": "Bakım oluştur", - "editMaintenance": "Bakımı düzenle", - "maintenanceWindowName": "Bakım aralığı adı", - "friendlyNameInput": "Görünen ad", - "friendlyNamePlaceholder": "__:__ saatinde __ dakika boyunca bakım var", - "maintenanceRepeat": "Bakım Tekrarı", - "maintenance": "bakım", - "duration": "Süre", - "addMonitors": "Monitör ekle", - "window": "pencere", - "cancel": "İptal", - "message": "Mesaj", - "low": "düşük", - "high": "yüksek", - "statusCode": "Durum kodu", - "date&Time": "", - "type": "", - "statusPageName": "", - "publicURL": "", - "repeat": "", - "edit": "", - "createA": "", - "remove": "", - "maintenanceWindowDescription": "", - "startTime": "Başlangıç saati", - "timeZoneInfo": "", - "monitorsToApply": "", - "nextWindow": "Sonraki pencere", - "notFoundButton": "", - "pageSpeedConfigureSettingsDescription": "", - "monitorDisplayName": "", - "whenNewIncident": "Yeni bir olay oluştuğunda,", - "notifySMS": "", - "notifyEmails": "", - "seperateEmails": "", - "checkFrequency": "Frekansı denetle", - "matchMethod": "", - "expectedValue": "Beklenen değer", - "deleteDialogTitle": "Gerçekten bu monitörü silmek istiyor musunuz?", - "deleteDialogDescription": "Bir kez silindiği zaman tekrar getiremezsiniz.", - "pageSpeedMonitor": "Sayfa Hızı Monitörü", - "shown": "", - "ago": "", - "companyName": "Firma adı", - "pageSpeedDetailsPerformanceReport": "", - "pageSpeedDetailsPerformanceReportCalculator": "Hesap makinesini gör", - "checkingEvery": "Denetleme sıklığı", - "statusPageCreateSettings": "Eğer durum sayfanız hazırsa, herkese açık yayınlayabilirsiniz", - "basicInformation": "Temel Bilgiler", - "statusPageCreateBasicInfoDescription": "", - "statusPageCreateSelectTimeZoneDescription": "", - "statusPageCreateAppearanceDescription": "", - "statusPageCreateSettingsCheckboxLabel": "Yayınlandı ve herkese açık", - "statusPageCreateBasicInfoStatusPageAddress": "Durum sayfası adresiniz", - "statusPageCreateTabsContent": "Durum sayfası sunucuları", - "statusPageCreateTabsContentDescription": "", - "statusPageCreateTabsContentFeaturesDescription": "Durum sayfasında daha fazla bilgi göster", - "showCharts": "Çizelgeleri göster", - "showUptimePercentage": "", - "removeLogo": "Logoyu sil", - "statusPageStatus": "Herkese açık bir durum sayfası henüz oluşturulmadı.", - "statusPageStatusContactAdmin": "Lütfen yöneticinizle iletişime geçin.", - "statusPageStatusNotPublic": "Durum sayfası herkese açık değil.", - "statusPageStatusNoPage": "Burada bir durum sayfası bulunmuyor.", - "statusPageStatusServiceStatus": "Servis durumu", - "deleteStatusPage": "Gerçekten bu durum sayfasını silmek istiyor musunuz?", - "deleteStatusPageConfirm": "Evet, durum sayfasını sil", - "deleteStatusPageDescription": "Silindikten sonra durum sayfasını geri getiremezsiniz.", - "uptimeCreate": "", - "uptimeCreateJsonPath": "", - "uptimeCreateJsonPathQuery": "", - "maintenanceTableActionMenuDialogTitle": "Gerçekten bu bakım aralığını silmek istiyor musunuz?", - "infrastructureEditYour": "", - "infrastructureEditMonitor": "", - "infrastructureMonitorCreated": "", - "infrastructureMonitorUpdated": "", - "errorInvalidTypeId": "", - "pageSpeedWarning": "Uyarı: Google PageSpeed API anahtarı eklemediniz. Bu olmadan, PageSpeed monitörü çalışmayacaktır.", - "pageSpeedLearnMoreLink": "Daha fazla bilgi için tıklayın", - "pageSpeedAddApiKey": "API anahtarınızı nasıl ekleyeceğinizi öğrenin.", - "pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı", - "pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı", - "pageSpeedApiKeyFieldDescription": "PageSpeed izlemeyi etkinleştirmek için Google PageSpeed API anahtarınızı girin. Anahtarı güncellemek için Sıfırla'ya tıklayın.", - "pageSpeedApiKeyFieldResetLabel": "API anahtarı ayarlandı. Değiştirmek için Sıfırla'ya tıklayın.", - "reset": "Sıfırla", - "invalidFileFormat": "", - "invalidFileSize": "", - "ClickUpload": "", - "DragandDrop": "", - "MaxSize": "", - "SupportedFormats": "", - "FirstName": "Ad", - "LastName": "Soyad", - "EmailDescriptionText": "Mevcut e-postanız—değiştirilemez.", - "YourPhoto": "Profil fotoğrafı", - "PhotoDescriptionText": "Bu fotoğraf profil sayfanızda görüntülenecektir.", - "save": "", - "DeleteAccountTitle": "Hesabı kaldır", - "DeleteAccountButton": "Hesabı kaldır", - "DeleteDescriptionText": "Bu, hesabı ve tüm ilişkili verileri sunucudan kaldıracaktır. Bu geri alınamaz.", - "DeleteAccountWarning": "Hesabınızı kaldırmak, tekrar oturum açamayacağınız ve tüm verilerinizin kaldırılacağı anlamına gelir. Bu geri alınamaz.", - "DeleteWarningTitle": "Bu hesabı gerçekten kaldırmak istiyor musunuz?", - "authRegisterFirstName": "Ad", - "authRegisterLastName": "Soyad", - "authRegisterEmail": "E-posta", - "authRegisterEmailRequired": "Devam etmek için lütfen e-posta adresinizi girin", - "authRegisterEmailInvalid": "Lütfen geçerli bir e-posta adresi girin", - "bulkImport": { - "title": "Toplu İçe Aktar", - "selectFileTips": "Yüklemek için CSV dosyası seçin", - "selectFileDescription": " veya örneğimizi indirebilirsiniz", - "selectFile": "Dosya Seç", - "parsingFailed": "Ayrıştırma başarısız oldu", - "uploadSuccess": "Monitörler başarıyla oluşturuldu!", - "validationFailed": "Doğrulama başarısız oldu", - "noFileSelected": "Dosya seçilmedi", - "fallbackPage": "Sunucuların listesini toplu olarak yüklemek için bir dosya içe aktarın" - }, - "createNew": "Yeni oluştur", - "greeting": { - "prepend": "Merhaba", - "append": "Öğleden sonra senin oyun alanın—hadi onu muhteşem yapalım!", - "overview": "İşte {{type}} monitörlerinizin genel görünümü." - }, - "monitorStatus": { - "up": "aktif", - "down": "devre dışı", - "paused": "duraklatıldı" - }, - "roles": { - "superAdmin": "Süper yönetici", - "admin": "Yönetici", - "teamMember": "Takım üyesi", - "demoUser": "Demo kullanıcı" - }, - "teamPanel": { - "teamMembers": "Takım üyeleri", - "filter": { - "all": "Tümü", - "member": "Üye" - }, - "inviteTeamMember": "Takım üyesi davet et", - "inviteNewTeamMember": "Yeni takım üyesi davet et", - "inviteDescription": "Yeni bir takım üyesi eklediğinizde, tüm monitörlere erişim hakkı alacaktır.", - "email": "E-posta", - "selectRole": "Rol seçin", - "inviteLink": "Davet bağlantısı", - "cancel": "İptal", - "noMembers": "Bu role sahip takım üyesi bulunmamaktadır", - "getToken": "Token al", - "emailToken": "Token e-posta ile gönder", - "table": { - "name": "Ad", - "email": "E-posta", - "role": "Rol", - "created": "Oluşturuldu" - } - }, - "monitorState": { - "paused": "duraklatıldı", - "resumed": "devam ettirildi", - "active": "aktif" - }, - "menu": { - "uptime": "Çalışma Süresi", - "pagespeed": "Sayfa Hızı", - "infrastructure": "Altyapı", - "distributedUptime": "Dağıtılmış Çalışma Süresi", - "incidents": "Olaylar", - "statusPages": "Durum Sayfaları", - "maintenance": "Bakım", - "integrations": "Entegrasyonlar", - "settings": "Ayarlar", - "support": "Destek", - "discussions": "Tartışmalar", - "docs": "Belgeler", - "changelog": "Değişiklik Günlüğü", - "profile": "Profil", - "password": "Şifre", - "team": "Takım", - "logOut": "Çıkış" - }, - "navControls": "Kontroller", - "statusBreadCrumbsStatusPages": "Durum Sayfaları", - "statusBreadCrumbsDetails": "Detaylar", - "incidentsPageTitle": "Olaylar", - "passwordPanel": { - "passwordChangedSuccess": "Şifreniz başarıyla değiştirildi.", - "passwordInputIncorrect": "Şifre girişiniz yanlış.", - "currentPassword": "Mevcut şifre", - "enterCurrentPassword": "Mevcut şifrenizi girin", - "newPassword": "Yeni şifre", - "enterNewPassword": "Yeni şifrenizi girin", - "confirmNewPassword": "Yeni şifreyi onaylayın", - "passwordRequirements": "Yeni şifre en az 8 karakter içermeli ve en az bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermelidir.", - "saving": "Kaydediliyor..." - }, - "uptimeCreateSelectURL": "İzlenecek URL veya IP adresini girin (örn. https://example.com/ veya 192.168.1.100) ve kontrol panelinde görünecek net bir görüntü adı ekleyin." -} \ No newline at end of file + "dontHaveAccount": "Hesabınız yok mu", + "doNotHaveAccount": "Hesabınız yok mu?", + "registerHere": "Buradan kayıt olun", + "email": "E-posta", + "forgotPassword": "Parolamı unuttum", + "password": "Parola", + "signUp": "Kayıt Ol", + "submit": "Gönder", + "title": "Başlık", + "continue": "Devam Et", + "enterEmail": "E-posta adresinizi girin", + "authLoginTitle": "Giriş Yap", + "authLoginEnterPassword": "Parolanızı girin", + "commonPassword": "Parola", + "commonBack": "Geri", + "authForgotPasswordTitle": "Parolanızı mı unuttunuz?", + "authForgotPasswordResetPassword": "Parola sıfırla", + "authForgotPasswordInstructions": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.", + "createPassword": "Parolanızı oluşturun", + "createAPassword": "Parola", + "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", + "authRegisterLoginLink": "Giriş Yap", + "commonAppName": "Checkmate", + "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.", + "authLoginEnterEmail": "E-posta adresinizi girin", + "authRegisterTitle": "Hesap oluştur", + "authRegisterStepOneTitle": "Hesabınızı oluşturun", + "authRegisterStepOneDescription": "Başlamak için bilgilerinizi girin", + "authRegisterStepTwoTitle": "Profilinizi ayarlayın", + "authRegisterStepTwoDescription": "Kendiniz hakkında daha fazla bilgi verin", + "authRegisterStepThreeTitle": "Neredeyse bitti!", + "authRegisterStepThreeDescription": "Bilgilerinizi gözden geçirin", + "authForgotPasswordDescription": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.", + "authForgotPasswordSendInstructions": "Talimatları gönder", + "authForgotPasswordBackTo": "Geri dön", + "authCheckEmailTitle": "E-postanızı kontrol edin", + "authCheckEmailDescription": "{{email}} adresine şifre sıfırlama bağlantısı gönderdik", + "authCheckEmailResendEmail": "E-postayı yeniden gönder", + "authCheckEmailBackTo": "Geri dön", + "goBackTo": "Geri dön", + "authCheckEmailDidntReceiveEmail": "E-posta almadınız mı?", + "authCheckEmailClickToResend": "Yeniden göndermek için tıklayın", + "authSetNewPasswordTitle": "Yeni şifre belirle", + "authSetNewPasswordDescription": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.", + "authSetNewPasswordNewPassword": "Yeni şifre", + "authSetNewPasswordConfirmPassword": "Parolayı onayla", + "confirmPassword": "Onaylamak için parolayı tekrar girin", + "confirmNewPasswordPlaceholder": "Yeni parolanızı onaylayın", + "authSetNewPasswordResetPassword": "Parola sıfırla", + "authSetNewPasswordBackTo": "Geri dön", + "authPasswordMustBeAtLeast": "En az", + "authPasswordCharactersLong": "8 karakter uzunluğunda olmalı", + "authPasswordMustContainAtLeast": "En az içermeli", + "authPasswordSpecialCharacter": "bir özel karakter", + "authPasswordOneNumber": "bir rakam", + "authPasswordUpperCharacter": "bir büyük harf", + "authPasswordLowerCharacter": "bir küçük harf", + "authPasswordConfirmAndPassword": "Onay şifresi ve şifre", + "authPasswordMustMatch": "Parolalar eşleşmelidir", + "authRegisterCreateAccount": "Hesap oluşturmak için devam et", + "authRegisterCreateSuperAdminAccount": "Super admin hesabınızı oluşturmak için devam edin", + "authRegisterSignUpWithEmail": "E-posta ile kayıt ol", + "authRegisterBySigningUp": "Kayıt olarak, aşağıdaki şartları kabul ediyorsunuz:", + "distributedStatusHeaderText": "Gerçek zamanlı, Gerçek cihazlar kapsamı", + "distributedStatusSubHeaderText": "Dünya çapında milyonlarca cihaz tarafından desteklenen sistem performansını küresel bölgeye, ülkeye veya şehre göre görüntüleyin", + "settingsGeneralSettings": "Genel ayarlar", + "settingsDisplayTimezone": "Görüntüleme saat dilimi", + "settingsDisplayTimezoneDescription": "Uygulama genelinde tarih ve saatlerin görüntülenmesi için kullanılacak saat dilimini seçin.", + "settingsAppearance": "Görünüm", + "settingsAppearanceDescription": "Açık ve koyu mod arasında geçiş yapın veya kullanıcı arayüzü dilini değiştirin", + "settingsThemeMode": "Tema", + "settingsThemeModeLight": "Açık", + "settingsThemeModeDark": "Koyu", + "settingsLanguage": "Dil", + "settingsURLTitle": "Durum Sayfasında IP/URL'yi Göster", + "settingsURLDescription": "Monitörün IP adresini veya URL'sini genel Durum sayfasında göster. Devre dışı bırakıldığında, hassas bilgileri korumak için yalnızca monitör adı gösterilecektir.", + "settingsURLSelectTitle": "Durum sayfasında IP/URL'yi göster", + "settingsURLEnabled": "Etkin", + "settingURLDisabled": "Devre Dışı", + "settingsDistributedUptime": "Dağıtılmış çalışma süresi", + "settingsDistributedUptimeDescription": "Dağıtılmış çalışma süresi izlemeyi etkinleştirin/devre dışı bırakın.", + "settingsEnabled": "Etkin", + "settingsDisabled": "Devre dışı", + "settingsHistoryAndMonitoring": "İzleme geçmişi", + "settingsHistoryAndMonitoringDescription": "Geçmiş verileri ne kadar süre saklamak istediğinizi tanımlayın. Ayrıca mevcut tüm verileri temizleyebilirsiniz.", + "settingsTTLLabel": "İzleme geçmişini saklamak istediğiniz gün sayısı.", + "settingsTTLOptionalLabel": "Sınırsız için 0", + "settingsClearAllStats": "Tüm istatistikleri temizle. Bu geri alınamaz.", + "settingsClearAllStatsButton": "Tüm istatistikleri temizle", + "settingsClearAllStatsDialogTitle": "Tüm istatistikleri temizlemek istiyor musunuz?", + "settingsClearAllStatsDialogDescription": "Kaldırıldıktan sonra, izleme geçmişi ve istatistikleri geri alınamaz.", + "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", + "settingsClearAllStatsDialogCancel": "İptal", + "settingsDemoMonitors": "Demo monitörler", + "settingsDemoMonitorsDescription": "Gösterim amaçlı örnek monitörler ekleyin.", + "settingsAddDemoMonitors": "Demo monitörler ekleniyor", + "settingsAddDemoMonitorsButton": "Demo monitörler ekle", + "settingsSystemReset": "Sistem sıfırlama", + "settingsSystemResetDescription": "Sisteminizden tüm monitörleri kaldırın.", + "settingsRemoveAllMonitors": "Tüm monitörler kaldırılıyor", + "settingsRemoveAllMonitorsButton": "Tüm monitörleri kaldır", + "settingsRemoveAllMonitorsDialogTitle": "Tüm monitörleri kaldırmak istiyor musunuz?", + "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri kaldır", + "settingsWallet": "Cüzdan", + "settingsWalletDescription": "Cüzdanınızı buradan bağlayın. Bu, Dağıtılmış Çalışma Süresi monitörünün küresel olarak birden çok düğüme bağlanması için gereklidir.", + "settingsTestEmail": "Test e-postası gönder", + "settingsTestEmailSuccess": "Test e-postası başarıyla gönderildi", + "settingsTestEmailFailed": "Test e-postası gönderilemedi", + "settingsTestEmailFailedWithReason": "Test e-postası gönderilemedi: {{reason}}", + "settingsTestEmailUnknownError": "Bilinmeyen hata", + "settingsEmail": "E-posta", + "settingsEmailDescription": "Sisteminiz için e-posta ayarlarını yapılandırın. Bu, bildirim ve uyarıları göndermek için kullanılır.", + "settingsEmailHost": "E-posta sunucusu - SMTP sunucusunun ana bilgisayar adı veya IP adresi", + "settingsEmailPort": "E-posta portu - Bağlanılacak port", + "settingsEmailUser": "E-posta kullanıcısı - Kimlik doğrulama için kullanıcı adı, belirtilirse e-posta adresini geçersiz kılar", + "settingsEmailAddress": "E-posta adresi - Kimlik doğrulama için kullanılır", + "settingsEmailPassword": "E-posta şifresi - Kimlik doğrulama için şifre", + "settingsEmailConnectionHost": "E-posta bağlantı sunucusu - HELO/EHLO selamlamasında kullanılacak ana bilgisayar adı", + "settingsEmailRequiredFields": "E-posta sunucusu ve port gereklidir", + "settingsAbout": "Hakkında", + "settingsDevelopedBy": "Bluewave Labs tarafından geliştirilmiştir.", + "settingsSave": "Kaydet", + "settingsSuccessSaved": "Ayarlar başarıyla kaydedildi", + "settingsFailedToSave": "Ayarlar kaydedilemedi", + "settingsStatsCleared": "İstatistikler başarıyla temizlendi", + "settingsFailedToClearStats": "İstatistikler temizlenemedi", + "settingsDemoMonitorsAdded": "Demo monitörler başarıyla eklendi", + "settingsFailedToAddDemoMonitors": "Demo monitörler eklenemedi", + "settingsMonitorsDeleted": "Tüm monitörler başarıyla silindi", + "settingsFailedToDeleteMonitors": "Monitörler silinemedi", + "backendUnreachable": "Sunucu Bağlantı Hatası", + "backendUnreachableMessage": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.", + "backendUnreachableError": "Sunucuya bağlanılamıyor. Lütfen daha sonra tekrar deneyin.", + "retryConnection": "Bağlantıyı Yeniden Dene", + "retryingConnection": "Bağlanıyor...", + "backendReconnected": "Sunucuya başarıyla yeniden bağlandı.", + "backendStillUnreachable": "Sunucu hala erişilemez durumda. Lütfen daha sonra tekrar deneyin.", + "backendConnectionError": "Sunucuya bağlanırken hata oluştu. Lütfen ağ bağlantınızı kontrol edin.", + "starPromptTitle": "Checkmate yıldızla değerlendirin", + "starPromptDescription": "En son sürümleri görün ve GitHub'daki topluluğun büyümesine yardımcı olun", + "https": "HTTPS", + "http": "HTTP", + "monitor": "monitör", + "aboutus": "Hakkımızda", + "now": "Şimdi", + "delete": "Sil", + "configure": "Yapılandır", + "networkError": "Ağ hatası", + "responseTime": "Yanıt süresi", + "ms": "ms", + "bar": "Çubuk", + "area": "Alan", + "country": "ÜLKE", + "city": "ŞEHİR", + "response": "YANIT", + "checkConnection": "Lütfen bağlantınızı kontrol edin", + "passwordreset": "Parola Sıfırlama", + "authRegisterStepOnePersonalDetails": "Kişisel bilgilerinizi girin", + "authCheckEmailOpenEmailButton": "Eposta uygulamasını aç", + "authNewPasswordConfirmed": "Parolanız başarıyla sıfırlandı. Otomatik olarak giriş yapmak için aşağıya tıklayın.", + "monitorStatusUp": "Monitör {name} ({url}) ayakta ve yanıt veriyor", + "monitorStatusDown": "Monitör {name} ({url}) yanıt vermiyor", + "webhookSendSuccess": "Web kanca bildirimi başarıyla gönderildi", + "webhookSendError": "Web kanca bildirimi bu platforma gönderilemedi: {platform}", + "webhookUnsupportedPlatform": "Desteklenmeyen platform: {platform}", + "distributedRightCategoryTitle": "Monitör", + "distributedStatusServerMonitors": "Sunucu monitörleri", + "distributedStatusServerMonitorsDescription": "İlgili sunucuların monitör durumları", + "distributedUptimeCreateSelectURL": "Burada sunucu adresini (URL) ve monitör türünü girebilirsiniz.", + "distributedUptimeCreateChecks": "Yapılacak kontroller", + "distributedUptimeCreateChecksDescription": "Adresi girdikten sonra kontrol ekleyebilir ya da çıkartabilirsiniz.", + "distributedUptimeCreateIncidentNotification": "Olay bildirimleri", + "distributedUptimeCreateIncidentDescription": "Bir olay olduğunda kullanıcıları bilgilendir.", + "distributedUptimeCreateAdvancedSettings": "Gelişmiş ayarlar", + "distributedUptimeDetailsNoMonitorHistory": "Bu monitör için henüz bir denetim günlüğü oluşturulmadı.", + "distributedUptimeDetailsFooterHeading": "UpRock & Bluewave Labs tarafından geliştirildi", + "distributedUptimeDetailsFooterBuilt": "Altyapı", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "Depin Destekli Dağıtık Kesintisizlik İzleme", + "distributedUptimeDetailsStatusHeaderUptime": "Erişilebilirlik", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Son güncelleme", + "notifications": { + "enableNotifications": "{{platform}} bildirimlerini etkinleştir", + "testNotification": "Bildirimi test et", + "addOrEditNotifications": "Bildirimleri ekle ya da düzenle", + "slack": { + "label": "Slack", + "description": "Slack bildirimlerini etkinleştirmek için bir Slack uygulaması oluşturun ve gelen web kancalarını etkinleştirin. Daha sonra, webhook URL’sini buraya girmeniz yeterlidir.\n\n\n\n\n\n", + "webhookLabel": "Web kanca URL:", + "webhookPlaceholder": "https://hooks.slack.com/services/...", + "webhookRequired": "" + }, + "discord": { + "label": "Discord", + "description": "Checkmate’ten Discord bildirimleri aracılığıyla bir Discord kanalına veri göndermek için Discord’un gelen web kancaları özelliğini kullanabilirsiniz.\n\n\n\n\n\n\n\n", + "webhookLabel": "Discord web kanca URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "" + }, + "telegram": { + "label": "Telegram", + "description": "Telegram bildirimlerini etkinleştirmek için, Telegram botlarını oluşturup yönetmek için kullanılan resmi bot BotFather ile bir Telegram botu oluşturun. Daha sonra, API jetonunu (token) ve sohbet kimliğini (chat ID) alın ve buraya yazın.", + "tokenLabel": "Bot jetonu (token)", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "Sohbet ID", + "chatIdPlaceholder": "-1001234567890", + "fieldsRequired": "" + }, + "webhook": { + "label": "Web kancaları", + "description": "Olaylar meydana geldiğinde bildirim almak için özel bir web kancası ayarlayabilirsiniz.", + "urlLabel": "Web kanca URL:", + "urlPlaceholder": "https://sunucu-adresiniz.com/webhook", + "urlRequired": "" + }, + "testNotificationDevelop": "Test bildirimi 2", + "integrationButton": "Bildirim Entegrasyonu", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "TEST13 UPLOAD", + "add": "Ekle", + "monitors": "Monitörler", + "distributedUptimeStatusCreateStatusPage": "durum sayfası", + "distributedUptimeStatusCreateStatusPageAccess": "Erişim", + "distributedUptimeStatusCreateStatusPageReady": "Durum sayfanız hazırsa yayınlayabilirsiniz.", + "distributedUptimeStatusBasicInfoHeader": "Temel bilgiler", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "Logo", + "distributedUptimeStatusLogoDescription": "Durum sayfanız için bir logo yükleyin", + "distributedUptimeStatusLogoUploadButton": "Logo yükle", + "distributedUptimeStatusStandardMonitorsHeader": "Standart monitörler", + "distributedUptimeStatusStandardMonitorsDescription": "Durum sayfanıza standart monitörleri ekleyin.", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "Yayında ve herkes tarafından görülebilir", + "distributedUptimeStatusCompanyNameLabel": "Şirket adı", + "distributedUptimeStatusPageAddressLabel": "Durum sayfası adresi", + "distributedUptimeStatus30Days": "30 gün", + "distributedUptimeStatus60Days": "60 gün", + "distributedUptimeStatus90Days": "90 gün", + "distributedUptimeStatusPageNotSetUp": "Henüz bir durum sayfası oluşturulmadı.", + "distributedUptimeStatusContactAdmin": "Lütfen yöneticiniz ile görüşün", + "distributedUptimeStatusPageNotPublic": "Bu durum sayfası herkese açık değil", + "distributedUptimeStatusPageDeleteDialog": "Bu durum sayfasını silmek istiyor musunuz? ", + "distributedUptimeStatusPageDeleteConfirm": "Evet, durum sayfasını sil", + "distributedUptimeStatusPageDeleteDescription": "Silindiği zaman durum sayfalarını geri getiremezsiniz.", + "distributedUptimeStatusDevices": "Cihazlar", + "distributedUptimeStatusUpt": "UPT", + "distributedUptimeStatusUptBurned": "Yakılan UPT", + "distributedUptimeStatusUptLogo": "Upt Logo", + "incidentsTableNoIncidents": "Hiç olay kaydedilmedi", + "incidentsTablePaginationLabel": "olaylar", + "incidentsTableMonitorName": "Monitör adı", + "incidentsTableStatus": "Durum", + "incidentsTableDateTime": "Tarih ve saat", + "incidentsTableStatusCode": "Durum kodu", + "incidentsTableMessage": "Mesaj", + "incidentsOptionsHeader": "Servisler:", + "incidentsOptionsHeaderFilterBy": "Filtrele:", + "incidentsOptionsHeaderFilterAll": "Tümü", + "incidentsOptionsHeaderFilterDown": "Erişilemiyor", + "incidentsOptionsHeaderFilterCannotResolve": "Çözümlenemiyor", + "incidentsOptionsHeaderShow": "Göster:", + "incidentsOptionsHeaderLastHour": "Son saat", + "incidentsOptionsHeaderLastDay": "Son gün", + "incidentsOptionsHeaderLastWeek": "Son hafta", + "incidentsOptionsPlaceholderAllServers": "Tüm sunucular", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "Alarmları özelleştir", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "Altyapı Monitörü oluştur", + "infrastructureProtocol": "Protokol", + "infrastructureServerUrlLabel": "Sunucu adresi", + "infrastructureDisplayNameLabel": "Görünen adı", + "infrastructureAuthorizationSecretLabel": "Kimlik denetimi parolası", + "gb": "GB", + "mb": "MB", + "mem": "Bellek", + "memoryUsage": "Bellek kullanımı", + "cpu": "CPU", + "cpuUsage": "CPU kullanımı", + "cpuTemperature": "CPU sıcaklığı", + "diskUsage": "Disk kullanımı", + "used": "Kullanılan", + "total": "Toplam", + "cores": "Çekirdek", + "frequency": "Frekans", + "status": "Durum", + "cpuPhysical": "CPU (fiziksel)", + "cpuLogical": "CPU (Mantıksal)", + "cpuFrequency": "CPU Frekansı", + "avgCpuTemperature": "Ortalama CPU Isısı", + "memory": "Bellek", + "disk": "Disk", + "uptime": "", + "os": "İşletim sistemi", + "host": "Makine", + "actions": "İşlemler", + "integrations": "Entegrasyonlar", + "integrationsPrism": "Prism'i favori servisinize bağlayın.", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "", + "integrationsDiscord": "Discord", + "integrationsDiscordInfo": "", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "", + "commonSave": "Kaydet", + "commonSaving": "Kaydediliyor...", + "createYour": "", + "createMonitor": "Monitör oluştur", + "pause": "Beklet", + "resume": "Yeniden başlat", + "editing": "Düzenleniyor...", + "url": "URL", + "access": "Erişim", + "timezone": "Zaman dilimi", + "features": "Özellikler", + "administrator": "Yönetici misin?", + "loginHere": "Buradan giriş yap", + "displayName": "Görüntülenecek isim", + "urlMonitor": "Monitör edilecek URL", + "portToMonitor": "Monitör edilecek port", + "websiteMonitoring": "Web sitesi monitörü", + "websiteMonitoringDescription": "", + "pingMonitoring": "Ping monitörü", + "pingMonitoringDescription": "Sitenizin ayakta olup olmadığını denetleyin.", + "dockerContainerMonitoring": "Docker konteyner monitörü", + "dockerContainerMonitoringDescription": "Docker konteynerinizin ayakta olup olmadığını denetleyin.", + "portMonitoring": "Port monitörü", + "portMonitoringDescription": "Portunuzun açık olup olmadığını denetleyin.", + "createMaintenanceWindow": "Bakım aralığı oluşturun", + "createMaintenance": "Bakım oluştur", + "editMaintenance": "Bakımı düzenle", + "maintenanceWindowName": "Bakım aralığı adı", + "friendlyNameInput": "Görünen ad", + "friendlyNamePlaceholder": "__:__ saatinde __ dakika boyunca bakım var", + "maintenanceRepeat": "Bakım Tekrarı", + "maintenance": "bakım", + "duration": "Süre", + "addMonitors": "Monitör ekle", + "window": "pencere", + "cancel": "İptal", + "message": "Mesaj", + "low": "düşük", + "high": "yüksek", + "statusCode": "Durum kodu", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "Başlangıç saati", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "Sonraki pencere", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "Yeni bir olay oluştuğunda,", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "Frekansı denetle", + "matchMethod": "", + "expectedValue": "Beklenen değer", + "deleteDialogTitle": "Gerçekten bu monitörü silmek istiyor musunuz?", + "deleteDialogDescription": "Bir kez silindiği zaman tekrar getiremezsiniz.", + "pageSpeedMonitor": "Sayfa Hızı Monitörü", + "shown": "", + "ago": "", + "companyName": "Firma adı", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "Hesap makinesini gör", + "checkingEvery": "Denetleme sıklığı", + "statusPageCreateSettings": "Eğer durum sayfanız hazırsa, herkese açık yayınlayabilirsiniz", + "basicInformation": "Temel Bilgiler", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "Yayınlandı ve herkese açık", + "statusPageCreateBasicInfoStatusPageAddress": "Durum sayfası adresiniz", + "statusPageCreateTabsContent": "Durum sayfası sunucuları", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "Durum sayfasında daha fazla bilgi göster", + "showCharts": "Çizelgeleri göster", + "showUptimePercentage": "", + "removeLogo": "Logoyu sil", + "statusPageStatus": "Herkese açık bir durum sayfası henüz oluşturulmadı.", + "statusPageStatusContactAdmin": "Lütfen yöneticinizle iletişime geçin.", + "statusPageStatusNotPublic": "Durum sayfası herkese açık değil.", + "statusPageStatusNoPage": "Burada bir durum sayfası bulunmuyor.", + "statusPageStatusServiceStatus": "Servis durumu", + "deleteStatusPage": "Gerçekten bu durum sayfasını silmek istiyor musunuz?", + "deleteStatusPageConfirm": "Evet, durum sayfasını sil", + "deleteStatusPageDescription": "Silindikten sonra durum sayfasını geri getiremezsiniz.", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "Gerçekten bu bakım aralığını silmek istiyor musunuz?", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "pageSpeedWarning": "Uyarı: Google PageSpeed API anahtarı eklemediniz. Bu olmadan, PageSpeed monitörü çalışmayacaktır.", + "pageSpeedLearnMoreLink": "Daha fazla bilgi için tıklayın", + "pageSpeedAddApiKey": "API anahtarınızı nasıl ekleyeceğinizi öğrenin.", + "pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı", + "pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı", + "pageSpeedApiKeyFieldDescription": "PageSpeed izlemeyi etkinleştirmek için Google PageSpeed API anahtarınızı girin. Anahtarı güncellemek için Sıfırla'ya tıklayın.", + "pageSpeedApiKeyFieldResetLabel": "API anahtarı ayarlandı. Değiştirmek için Sıfırla'ya tıklayın.", + "reset": "Sıfırla", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "Ad", + "LastName": "Soyad", + "EmailDescriptionText": "Mevcut e-postanız—değiştirilemez.", + "YourPhoto": "Profil fotoğrafı", + "PhotoDescriptionText": "Bu fotoğraf profil sayfanızda görüntülenecektir.", + "save": "", + "DeleteAccountTitle": "Hesabı kaldır", + "DeleteAccountButton": "Hesabı kaldır", + "DeleteDescriptionText": "Bu, hesabı ve tüm ilişkili verileri sunucudan kaldıracaktır. Bu geri alınamaz.", + "DeleteAccountWarning": "Hesabınızı kaldırmak, tekrar oturum açamayacağınız ve tüm verilerinizin kaldırılacağı anlamına gelir. Bu geri alınamaz.", + "DeleteWarningTitle": "Bu hesabı gerçekten kaldırmak istiyor musunuz?", + "authRegisterFirstName": "Ad", + "authRegisterLastName": "Soyad", + "authRegisterEmail": "E-posta", + "authRegisterEmailRequired": "Devam etmek için lütfen e-posta adresinizi girin", + "authRegisterEmailInvalid": "Lütfen geçerli bir e-posta adresi girin", + "bulkImport": { + "title": "Toplu İçe Aktar", + "selectFileTips": "Yüklemek için CSV dosyası seçin", + "selectFileDescription": " veya örneğimizi indirebilirsiniz", + "selectFile": "Dosya Seç", + "parsingFailed": "Ayrıştırma başarısız oldu", + "uploadSuccess": "Monitörler başarıyla oluşturuldu!", + "validationFailed": "Doğrulama başarısız oldu", + "noFileSelected": "Dosya seçilmedi", + "fallbackPage": "Sunucuların listesini toplu olarak yüklemek için bir dosya içe aktarın" + }, + "createNew": "Yeni oluştur", + "greeting": { + "prepend": "Merhaba", + "append": "Öğleden sonra senin oyun alanın—hadi onu muhteşem yapalım!", + "overview": "İşte {{type}} monitörlerinizin genel görünümü." + }, + "monitorStatus": { + "up": "aktif", + "down": "devre dışı", + "paused": "duraklatıldı" + }, + "roles": { + "superAdmin": "Süper yönetici", + "admin": "Yönetici", + "teamMember": "Takım üyesi", + "demoUser": "Demo kullanıcı" + }, + "teamPanel": { + "teamMembers": "Takım üyeleri", + "filter": { + "all": "Tümü", + "member": "Üye" + }, + "inviteTeamMember": "Takım üyesi davet et", + "inviteNewTeamMember": "Yeni takım üyesi davet et", + "inviteDescription": "Yeni bir takım üyesi eklediğinizde, tüm monitörlere erişim hakkı alacaktır.", + "email": "E-posta", + "selectRole": "Rol seçin", + "inviteLink": "Davet bağlantısı", + "cancel": "İptal", + "noMembers": "Bu role sahip takım üyesi bulunmamaktadır", + "getToken": "Token al", + "emailToken": "Token e-posta ile gönder", + "table": { + "name": "Ad", + "email": "E-posta", + "role": "Rol", + "created": "Oluşturuldu" + } + }, + "monitorState": { + "paused": "duraklatıldı", + "resumed": "devam ettirildi", + "active": "aktif" + }, + "menu": { + "uptime": "Çalışma Süresi", + "pagespeed": "Sayfa Hızı", + "infrastructure": "Altyapı", + "distributedUptime": "Dağıtılmış Çalışma Süresi", + "incidents": "Olaylar", + "statusPages": "Durum Sayfaları", + "maintenance": "Bakım", + "integrations": "Entegrasyonlar", + "settings": "Ayarlar", + "support": "Destek", + "discussions": "Tartışmalar", + "docs": "Belgeler", + "changelog": "Değişiklik Günlüğü", + "profile": "Profil", + "password": "Şifre", + "team": "Takım", + "logOut": "Çıkış" + }, + "navControls": "Kontroller", + "statusBreadCrumbsStatusPages": "Durum Sayfaları", + "statusBreadCrumbsDetails": "Detaylar", + "incidentsPageTitle": "Olaylar", + "passwordPanel": { + "passwordChangedSuccess": "Şifreniz başarıyla değiştirildi.", + "passwordInputIncorrect": "Şifre girişiniz yanlış.", + "currentPassword": "Mevcut şifre", + "enterCurrentPassword": "Mevcut şifrenizi girin", + "newPassword": "Yeni şifre", + "enterNewPassword": "Yeni şifrenizi girin", + "confirmNewPassword": "Yeni şifreyi onaylayın", + "passwordRequirements": "Yeni şifre en az 8 karakter içermeli ve en az bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermelidir.", + "saving": "Kaydediliyor..." + }, + "uptimeCreateSelectURL": "İzlenecek URL veya IP adresini girin (örn. https://example.com/ veya 192.168.1.100) ve kontrol panelinde görünecek net bir görüntü adı ekleyin." +} From a777777ac617bb3e49a781e9bc4a8142bb210771 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:14:40 -0700 Subject: [PATCH 04/14] add formatting to POEditor github action --- .github/workflows/poeditor-sync.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/poeditor-sync.yml b/.github/workflows/poeditor-sync.yml index 8446745bc..ad7502e9e 100644 --- a/.github/workflows/poeditor-sync.yml +++ b/.github/workflows/poeditor-sync.yml @@ -13,7 +13,6 @@ on: required: false default: "key_value_json" - permissions: contents: write pull-requests: write @@ -93,6 +92,12 @@ jobs: id: date run: echo "date=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT + - name: Format client code + run: | + cd client + npm ci + npm run format + - name: Create Pull Request uses: peter-evans/create-pull-request@v7 with: From deedc9eabde7020382072980f9e18063c218db36 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:18:05 -0700 Subject: [PATCH 05/14] update default languages --- .github/workflows/poeditor-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/poeditor-sync.yml b/.github/workflows/poeditor-sync.yml index ad7502e9e..83dac7f09 100644 --- a/.github/workflows/poeditor-sync.yml +++ b/.github/workflows/poeditor-sync.yml @@ -7,7 +7,7 @@ on: languages: description: "Languages to synchronize (comma separated, e.g.: tr,en,es)" required: false - default: "tr,en" + default: "ar,zh-tw,cs,en,fi,fr,de,pt-br,ru,es,tr" format: description: "Export format (key_value_json or json)" required: false From a12d733e0217ff99279d5502caabbeae29b8d1a8 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 27 May 2025 16:19:29 +0000 Subject: [PATCH 06/14] feat: translations updated from POEditor --- client/src/locales/ar.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/cs.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/de.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/es.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/fi.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/fr.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/gb.json | 105 ++++--- client/src/locales/pt-br.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/ru.json | 484 ++++++++++++++++------------- client/src/locales/tr.json | 423 ++++++++++++++------------ client/src/locales/zh-tw.json | 557 ++++++++++++++++++++++++++++++++++ 11 files changed, 4999 insertions(+), 469 deletions(-) create mode 100644 client/src/locales/ar.json create mode 100644 client/src/locales/cs.json create mode 100644 client/src/locales/de.json create mode 100644 client/src/locales/es.json create mode 100644 client/src/locales/fi.json create mode 100644 client/src/locales/fr.json create mode 100644 client/src/locales/pt-br.json create mode 100644 client/src/locales/zh-tw.json diff --git a/client/src/locales/ar.json b/client/src/locales/ar.json new file mode 100644 index 000000000..5dcb98d51 --- /dev/null +++ b/client/src/locales/ar.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "", + "email": "", + "forgotPassword": "", + "password": "", + "signUp": "", + "submit": "", + "title": "", + "continue": "", + "enterEmail": "", + "authLoginTitle": "", + "authLoginEnterPassword": "", + "commonPassword": "", + "commonBack": "", + "authForgotPasswordTitle": "", + "authForgotPasswordResetPassword": "", + "createPassword": "", + "createAPassword": "", + "authRegisterAlreadyHaveAccount": "", + "commonAppName": "", + "authLoginEnterEmail": "", + "authRegisterTitle": "", + "authRegisterStepOneTitle": "", + "authRegisterStepOneDescription": "", + "authRegisterStepTwoTitle": "", + "authRegisterStepTwoDescription": "", + "authRegisterStepThreeTitle": "", + "authRegisterStepThreeDescription": "", + "authForgotPasswordDescription": "", + "authForgotPasswordSendInstructions": "", + "authForgotPasswordBackTo": "", + "authCheckEmailTitle": "", + "authCheckEmailDescription": "", + "authCheckEmailResendEmail": "", + "authCheckEmailBackTo": "", + "goBackTo": "", + "authCheckEmailDidntReceiveEmail": "", + "authCheckEmailClickToResend": "", + "authSetNewPasswordTitle": "", + "authSetNewPasswordDescription": "", + "authSetNewPasswordNewPassword": "", + "authSetNewPasswordConfirmPassword": "", + "confirmPassword": "", + "authSetNewPasswordResetPassword": "", + "authSetNewPasswordBackTo": "", + "authPasswordMustBeAtLeast": "", + "authPasswordCharactersLong": "", + "authPasswordMustContainAtLeast": "", + "authPasswordSpecialCharacter": "", + "authPasswordOneNumber": "", + "authPasswordUpperCharacter": "", + "authPasswordLowerCharacter": "", + "authPasswordConfirmAndPassword": "", + "authPasswordMustMatch": "", + "authRegisterCreateAccount": "", + "authRegisterCreateSuperAdminAccount": "", + "authRegisterSignUpWithEmail": "", + "authRegisterBySigningUp": "", + "distributedStatusHeaderText": "", + "distributedStatusSubHeaderText": "", + "settingsGeneralSettings": "", + "settingsDisplayTimezone": "", + "settingsDisplayTimezoneDescription": "", + "settingsAppearance": "", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "", + "settingsDisabled": "", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/cs.json b/client/src/locales/cs.json new file mode 100644 index 000000000..330812453 --- /dev/null +++ b/client/src/locales/cs.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "", + "email": "E-mail", + "forgotPassword": "Zapomenuté heslo", + "password": "", + "signUp": "Registace", + "submit": "Odeslat", + "title": "", + "continue": "Pokračovat", + "enterEmail": "Zadejte svůj e-mail", + "authLoginTitle": "Přihlášení", + "authLoginEnterPassword": "Zadejte své heslo", + "commonPassword": "Heslo", + "commonBack": "Zpět", + "authForgotPasswordTitle": "Zapomněli jste heslo?", + "authForgotPasswordResetPassword": "Resetovat heslo", + "createPassword": "", + "createAPassword": "", + "authRegisterAlreadyHaveAccount": "Máte již účet?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Zadejte svůj e-mail", + "authRegisterTitle": "Vytvoření účtu", + "authRegisterStepOneTitle": "", + "authRegisterStepOneDescription": "Začněte tím, že zadáte své údaje", + "authRegisterStepTwoTitle": "", + "authRegisterStepTwoDescription": "Řekněte nám o sobě víc", + "authRegisterStepThreeTitle": "Téměř hotovo!", + "authRegisterStepThreeDescription": "Zkontrolujte své údaje", + "authForgotPasswordDescription": "Není se čeho obávat, zašleme vám instrukce k obnově.", + "authForgotPasswordSendInstructions": "", + "authForgotPasswordBackTo": "", + "authCheckEmailTitle": "", + "authCheckEmailDescription": "Odkaz pro obnovu hesla zašleme na", + "authCheckEmailResendEmail": "Znovu odeslat e-mail", + "authCheckEmailBackTo": "", + "goBackTo": "", + "authCheckEmailDidntReceiveEmail": "Neobdrželi jste e-mail?", + "authCheckEmailClickToResend": "Klepněte pro opětovné odeslání", + "authSetNewPasswordTitle": "Nastavení nového hesla", + "authSetNewPasswordDescription": "Nové heslo se musí lišit od těch, které jste použili dříve.", + "authSetNewPasswordNewPassword": "Nové heslo", + "authSetNewPasswordConfirmPassword": "", + "confirmPassword": "", + "authSetNewPasswordResetPassword": "Resetovat heslo", + "authSetNewPasswordBackTo": "", + "authPasswordMustBeAtLeast": "Musí být alespoň", + "authPasswordCharactersLong": "", + "authPasswordMustContainAtLeast": "", + "authPasswordSpecialCharacter": "", + "authPasswordOneNumber": "", + "authPasswordUpperCharacter": "", + "authPasswordLowerCharacter": "", + "authPasswordConfirmAndPassword": "", + "authPasswordMustMatch": "", + "authRegisterCreateAccount": "", + "authRegisterCreateSuperAdminAccount": "Začněte tím, že si vytvoříte účet superadministrátora", + "authRegisterSignUpWithEmail": "Registrovat přes e-mail", + "authRegisterBySigningUp": "Registrací souhlasíte s našimi", + "distributedStatusHeaderText": "", + "distributedStatusSubHeaderText": "", + "settingsGeneralSettings": "Obecná nastavení", + "settingsDisplayTimezone": "", + "settingsDisplayTimezoneDescription": "", + "settingsAppearance": "Vzhled", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "Jazyk", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "Zapnuto", + "settingsDisabled": "Vypnuto", + "settingsHistoryAndMonitoring": "Historie a monitorování", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "Vyvinuto společností Bluewave Labs.", + "settingsSave": "Uložit", + "settingsSuccessSaved": "Nastavení bylo úspěšně uloženo", + "settingsFailedToSave": "Nepodařilo se uložit nastavení", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "Zadejte své osobní údaje", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/de.json b/client/src/locales/de.json new file mode 100644 index 000000000..29a79c93c --- /dev/null +++ b/client/src/locales/de.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "Noch kein Konto", + "email": "E-Mail", + "forgotPassword": "Passwort vergessen", + "password": "passwort", + "signUp": "Registrieren", + "submit": "Absenden", + "title": "Titel", + "continue": "Weiter", + "enterEmail": "Geben Sie Ihre E-Mail-Adresse ein", + "authLoginTitle": "Anmelden", + "authLoginEnterPassword": "Geben Sie Ihr Passwort ein", + "commonPassword": "Passwort", + "commonBack": "Zurück", + "authForgotPasswordTitle": "Passwort vergessen?", + "authForgotPasswordResetPassword": "Passwort zurücksetzen", + "createPassword": "Erstelle dein Passwort", + "createAPassword": "Passwort", + "authRegisterAlreadyHaveAccount": "Hast du schon eine Account?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "", + "authRegisterTitle": "", + "authRegisterStepOneTitle": "", + "authRegisterStepOneDescription": "", + "authRegisterStepTwoTitle": "", + "authRegisterStepTwoDescription": "", + "authRegisterStepThreeTitle": "", + "authRegisterStepThreeDescription": "", + "authForgotPasswordDescription": "", + "authForgotPasswordSendInstructions": "", + "authForgotPasswordBackTo": "", + "authCheckEmailTitle": "", + "authCheckEmailDescription": "", + "authCheckEmailResendEmail": "", + "authCheckEmailBackTo": "", + "goBackTo": "", + "authCheckEmailDidntReceiveEmail": "", + "authCheckEmailClickToResend": "", + "authSetNewPasswordTitle": "", + "authSetNewPasswordDescription": "", + "authSetNewPasswordNewPassword": "", + "authSetNewPasswordConfirmPassword": "", + "confirmPassword": "", + "authSetNewPasswordResetPassword": "", + "authSetNewPasswordBackTo": "", + "authPasswordMustBeAtLeast": "", + "authPasswordCharactersLong": "", + "authPasswordMustContainAtLeast": "", + "authPasswordSpecialCharacter": "", + "authPasswordOneNumber": "", + "authPasswordUpperCharacter": "", + "authPasswordLowerCharacter": "", + "authPasswordConfirmAndPassword": "", + "authPasswordMustMatch": "", + "authRegisterCreateAccount": "", + "authRegisterCreateSuperAdminAccount": "", + "authRegisterSignUpWithEmail": "", + "authRegisterBySigningUp": "", + "distributedStatusHeaderText": "", + "distributedStatusSubHeaderText": "", + "settingsGeneralSettings": "", + "settingsDisplayTimezone": "", + "settingsDisplayTimezoneDescription": "", + "settingsAppearance": "", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "", + "settingsDisabled": "", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/es.json b/client/src/locales/es.json new file mode 100644 index 000000000..616ece47a --- /dev/null +++ b/client/src/locales/es.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "No tengo una cuenta", + "email": "Correo electronico", + "forgotPassword": "He olvidado mi contraseña", + "password": "Contraseña", + "signUp": "Registrarse", + "submit": "Enviar", + "title": "Titulo", + "continue": "Continuar", + "enterEmail": "Introduce tu email", + "authLoginTitle": "Inicio de session", + "authLoginEnterPassword": "Introduce tu contraseña", + "commonPassword": "Contraseña", + "commonBack": "Atras", + "authForgotPasswordTitle": "¿Has olvidado tu contraseña?", + "authForgotPasswordResetPassword": "Restablecer contraseña", + "createPassword": "Crear contraseña", + "createAPassword": "Contraseña", + "authRegisterAlreadyHaveAccount": "Ya tienes un cuenta?", + "commonAppName": "", + "authLoginEnterEmail": "Introduce tu correo electronico", + "authRegisterTitle": "Crear una cuenta", + "authRegisterStepOneTitle": "Crea tu cuenta", + "authRegisterStepOneDescription": "", + "authRegisterStepTwoTitle": "Configura tu perfil", + "authRegisterStepTwoDescription": "Cuentano mas sobre ti", + "authRegisterStepThreeTitle": "Ya casi estamos!", + "authRegisterStepThreeDescription": "Revisa tu informacion", + "authForgotPasswordDescription": "", + "authForgotPasswordSendInstructions": "Enviar instrucciones", + "authForgotPasswordBackTo": "Volver a", + "authCheckEmailTitle": "Comprueba tu correo", + "authCheckEmailDescription": "Hemos enviado un link para reiniciar la contraseña a", + "authCheckEmailResendEmail": "Reenviar correo", + "authCheckEmailBackTo": "Volver a", + "goBackTo": "Volver a", + "authCheckEmailDidntReceiveEmail": "No has recibido el correo electronico?", + "authCheckEmailClickToResend": "Presiona para reenviar", + "authSetNewPasswordTitle": "Configurar nueva contraseña", + "authSetNewPasswordDescription": "", + "authSetNewPasswordNewPassword": "Nueva contraseña", + "authSetNewPasswordConfirmPassword": "Confirmar contraseña", + "confirmPassword": "", + "authSetNewPasswordResetPassword": "Restablecer contraseña", + "authSetNewPasswordBackTo": "Volver a", + "authPasswordMustBeAtLeast": "", + "authPasswordCharactersLong": "8 caracteres de longitud", + "authPasswordMustContainAtLeast": "", + "authPasswordSpecialCharacter": "", + "authPasswordOneNumber": "un numero", + "authPasswordUpperCharacter": "", + "authPasswordLowerCharacter": "", + "authPasswordConfirmAndPassword": "", + "authPasswordMustMatch": "", + "authRegisterCreateAccount": "", + "authRegisterCreateSuperAdminAccount": "", + "authRegisterSignUpWithEmail": "", + "authRegisterBySigningUp": "", + "distributedStatusHeaderText": "", + "distributedStatusSubHeaderText": "", + "settingsGeneralSettings": "", + "settingsDisplayTimezone": "", + "settingsDisplayTimezoneDescription": "", + "settingsAppearance": "", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "", + "settingsDisabled": "", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/fi.json b/client/src/locales/fi.json new file mode 100644 index 000000000..c1543cc13 --- /dev/null +++ b/client/src/locales/fi.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "Ei tiliä", + "email": "Sähköposti", + "forgotPassword": "Unohtunut salasana", + "password": "Salasana", + "signUp": "Rekisteröidy", + "submit": "Lähetä", + "title": "Otsikko", + "continue": "Jatka", + "enterEmail": "Syötä sähköpostiosoitteesi", + "authLoginTitle": "Kirjaudu", + "authLoginEnterPassword": "Syötä salasanasi", + "commonPassword": "Salasana", + "commonBack": "Takaisin", + "authForgotPasswordTitle": "Unohditko salasanasi?", + "authForgotPasswordResetPassword": "Nollaa salasana", + "createPassword": "Luo salasanasi", + "createAPassword": "Salasana", + "authRegisterAlreadyHaveAccount": "Onko sinulla jo tili?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Syötä salasanasi", + "authRegisterTitle": "Luo tili", + "authRegisterStepOneTitle": "Luo tilisi", + "authRegisterStepOneDescription": "Kirjoita tietosi aloittaaksesi", + "authRegisterStepTwoTitle": "Määritä profiilisi", + "authRegisterStepTwoDescription": "Kerro meille lisää itsestäsi", + "authRegisterStepThreeTitle": "Melkein valmis!", + "authRegisterStepThreeDescription": "Tarkista tietosi", + "authForgotPasswordDescription": "Ei hätää, lähetämme sinulle salasanan nollausohjeet.", + "authForgotPasswordSendInstructions": "Lähetä ohjeet", + "authForgotPasswordBackTo": "Palaa", + "authCheckEmailTitle": "Tarkista sähköpostisi", + "authCheckEmailDescription": "Lähetimme salasanan nollauslinkin osoitteeseen", + "authCheckEmailResendEmail": "Lähetä sähköposti uudelleen", + "authCheckEmailBackTo": "Palaa", + "goBackTo": "Palaa edelliseen", + "authCheckEmailDidntReceiveEmail": "Etkö saanut sähköpostia?", + "authCheckEmailClickToResend": "Klikkaa lähettääksesi uudelleen", + "authSetNewPasswordTitle": "Aseta uusi salasana", + "authSetNewPasswordDescription": "Uuden salasanan pitää olla eri kuin aiemmin käyttämäsi.", + "authSetNewPasswordNewPassword": "Uusi salasana", + "authSetNewPasswordConfirmPassword": "Vahvista salasana", + "confirmPassword": "Syötä salasana uudelleen", + "authSetNewPasswordResetPassword": "Nollaa salasana", + "authSetNewPasswordBackTo": "Takaisin", + "authPasswordMustBeAtLeast": "Vähintään", + "authPasswordCharactersLong": "8 merkkiä pitkä", + "authPasswordMustContainAtLeast": "Tulee sisältää vähintään", + "authPasswordSpecialCharacter": "yksi erikoismerkki", + "authPasswordOneNumber": "yksi numero", + "authPasswordUpperCharacter": "yksi pieni kirjain", + "authPasswordLowerCharacter": "yksi iso kirjain", + "authPasswordConfirmAndPassword": "Vahvista salasana ja salasana", + "authPasswordMustMatch": "Salasanojen on oltava samat", + "authRegisterCreateAccount": "Luo tili aloittaaksesi", + "authRegisterCreateSuperAdminAccount": "Luo pääkäyttäjän tili aloittaaksesi", + "authRegisterSignUpWithEmail": "Luo pääkäyttäjän tili", + "authRegisterBySigningUp": "Luomalla tilin hyväksyt Käyttöehdot ja Tietosuojakäytännön.", + "distributedStatusHeaderText": "Reaaliaikainen kattavuus oikeilla laitteilla", + "distributedStatusSubHeaderText": "Miljoonien laitteiden voimin ympäri maailman näet järjestelmän suorituskyvyn maailman alueittain, maittain tai kaupungeittain", + "settingsGeneralSettings": "Yleiset asetukset", + "settingsDisplayTimezone": "Näytä aikavyöhyke", + "settingsDisplayTimezoneDescription": "Valitse sovelluksessa käytettävä aikavyöhyke päivämäärien ja aikojen näyttämiseen.", + "settingsAppearance": "Ulkonäkö", + "settingsAppearanceDescription": "Vaihda teema vaaleaksi tai tummaksi tai vaihda käyttöliittymän kieli", + "settingsThemeMode": "Teematila", + "settingsLanguage": "Kieli", + "settingsDistributedUptime": "Hajautettu käyttöaika", + "settingsDistributedUptimeDescription": "Ota käyttöön tai poista käytöstä hajautettu käyttöaikavalvonta.", + "settingsEnabled": "Käytössä", + "settingsDisabled": "Poistettu käytöstä", + "settingsHistoryAndMonitoring": "Valvonnan historia", + "settingsHistoryAndMonitoringDescription": "Määritä, kuinka pitkään haluat säilyttää historiallisia tietoja. Voit myös tyhjentää kaikki olemassa olevat tiedot.", + "settingsTTLLabel": "Kuinka monta päivää haluat säilyttää valvontahistorian.", + "settingsTTLOptionalLabel": "0 on ääretön", + "settingsClearAllStats": "Tyhjennä kaikki tilastot. Tämä on peruuttamaton.", + "settingsClearAllStatsButton": "Tyhjennä kaikki tilastot", + "settingsClearAllStatsDialogTitle": "Haluatko tyhjentää kaikki tilastot?", + "settingsClearAllStatsDialogDescription": "Kun valvontahistoria ja tilastot on poistettu, niitä ei voi palauttaa.", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "Lompakko", + "settingsWalletDescription": "", + "settingsAbout": "Tietoja", + "settingsDevelopedBy": "Kehittänyt Bluewave Labs.", + "settingsSave": "Tallenna", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "HTTPS", + "http": "HTTP", + "monitor": "Seurain", + "aboutus": "Tietoja meistä", + "now": "Nyt", + "delete": "Poista", + "configure": "Määritä", + "networkError": "Verkkovirhe", + "responseTime": "Vasteaika", + "ms": "ms", + "bar": "Palkki", + "area": "Alue", + "country": "MAA", + "city": "KAUPUNKI", + "response": "Vastaus", + "checkConnection": "Tarkista yhteytesi", + "passwordreset": "Salasanan nollaus", + "authRegisterStepOnePersonalDetails": "Syötä henkilökohtaiset tietosi", + "authCheckEmailOpenEmailButton": "Avaa sähköpostisovellus", + "authNewPasswordConfirmed": "Salasanasi on onnistuneesti nollattu. Klikkaa alta kirjautuaksesi taianomaisesti.", + "monitorStatusUp": "Valvontakohde {name} ({url}) on nyt toiminnassa ja vastaa", + "monitorStatusDown": "Valvontakohde {name} ({url}) ei ole toiminnassa, eikä vastaa", + "webhookSendSuccess": "Webhook-ilmoitus lähetettiin onnistuneesti", + "webhookSendError": "Virhe lähetettäessä webhook-ilmoitusta palveluun {platform}", + "webhookUnsupportedPlatform": "Ei tuettu palvelu: {platform}", + "distributedRightCategoryTitle": "Valvonta", + "distributedStatusServerMonitors": "Palvelin valvonta", + "distributedStatusServerMonitorsDescription": "Valvo palvelimien tilaa", + "distributedUptimeCreateSelectURL": "Tässä voit valita isäntäkohteen URL-osoitteen ja valvontatyypin.", + "distributedUptimeCreateChecks": "Suoritettavat tarkistukset", + "distributedUptimeCreateChecksDescription": "Voit aina lisätä tai poistaa tarkistuksia sivuston lisäämisen jälkeen.", + "distributedUptimeCreateIncidentNotification": "Häiriöilmoitukset", + "distributedUptimeCreateIncidentDescription": "Jos ilmenee häiriö, ilmoita käyttäjille.", + "distributedUptimeCreateAdvancedSettings": "Lisäasetukset", + "distributedUptimeDetailsNoMonitorHistory": "Tälle valvontakohteelle ei ole vielä tarkistushistoriaa.", + "distributedUptimeDetailsFooterHeading": "Tehty ❤️:lla UpRockin ja Bluewave Labsin toimesta", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Viimeksi päivitetty", + "notifications": { + "enableNotifications": "", + "testNotification": "Testi-ilmoitus", + "addOrEditNotifications": "Lisää tai muokkaa ilmoituksia", + "slack": { + "label": "Slack", + "description": "", + "webhookLabel": "Webhookin URL", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "Discord", + "description": "", + "webhookLabel": "Discord Webhookin URL-osoite", + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "" + }, + "telegram": { + "label": "Telegram", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "", + "chatIdPlaceholder": "-1001234567890", + "fieldsRequired": "" + }, + "webhook": { + "label": "Webhookit", + "description": "", + "urlLabel": "Webhookin URL", + "urlPlaceholder": "https://your-server.com/webhook", + "urlRequired": "" + }, + "testNotificationDevelop": "Testi-ilmoitus 2", + "integrationButton": "", + "testSuccess": "Testi ilmoituksen lähetys onnistui!", + "testFailed": "Testi ilmoituksen lähetys epäonnistui", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "Lisää", + "monitors": "Seuraimet", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "Logo", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "Yrityksen nimi", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "30 päivää", + "distributedUptimeStatus60Days": "60 päivää", + "distributedUptimeStatus90Days": "90 päivää", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "Ota yhteys järjestelmävalvojaasi", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "UPT logo", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "Tila", + "incidentsTableDateTime": "Päivämäärä ja aika", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "Viesti", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "Kaikki", + "incidentsOptionsHeaderFilterDown": "Alhaalla", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "Näytä:", + "incidentsOptionsHeaderLastHour": "Viime tunti", + "incidentsOptionsHeaderLastDay": "Viime päivä", + "incidentsOptionsHeaderLastWeek": "Viime viikko", + "incidentsOptionsPlaceholderAllServers": "Kaikki palvelimet", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "Palvelimen URL-osoite", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "Muistinkäyttö", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "Tila", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "Muisti", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "", + "commonSave": "Tallenna", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "Aikavyöhyke", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "Peruuttaa", + "message": "Viesti", + "low": "", + "high": "", + "statusCode": "Tilakoodi", + "date&Time": "Päivämäärä ja aika", + "type": "", + "statusPageName": "", + "publicURL": "Julkinen URL-osoite", + "repeat": "", + "edit": "Muokkaa", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "Ilmoita tekstiviestillä (tulossa pian)", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "sitten", + "companyName": "Yrityksen nimi", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "Poista logo", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "Muokkaa omaa", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "Päivitä", + "invalidFileFormat": "", + "invalidFileSize": "Tiedoston koko on liian suuri!", + "ClickUpload": "", + "DragandDrop": "raahaa ja pudota", + "MaxSize": "Enimmäiskoko", + "SupportedFormats": "Tuetut muodot", + "FirstName": "Etunimi", + "LastName": "Sukunimi", + "EmailDescriptionText": "Tämä on nykyinen sähköpostiosoitteesi — sitä ei voi vaihtaa.", + "YourPhoto": "Profiilikuva", + "PhotoDescriptionText": "", + "save": "Tallenna", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "Haluatko todella poistaa tämän tilin?", + "authRegisterFirstName": "Nimi", + "authRegisterLastName": "Sukunimi", + "authRegisterEmail": "Sähköpostiosoite", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "Valitse tiedosto", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "Ei valittua tiedostoa", + "fallbackPage": "" + }, + "welcomeBack": "Tervetuloa takaisin! Olet kirjautunut sisään.", + "authRegisterLoginLink": "Kirjaudu", + "validationNameRequired": "Kirjoita nimesi", + "validationNameTooLong": "Nimen tulee olla alle 50 merkkiä", + "validationNameInvalidCharacters": "Käytäthän vain kirjaimia, välilyöntejä, heittomerkkejä tai yhdysmerkkejä", + "settingsSystemReset": "Järjestelmän palautus", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "Poista tili", + "DeleteAccountButton": "Poista tili", + "authRegisterEmailInvalid": "Kirjoita kelvollinen sähköpostiosoite", + "publicLink": "Julkinen linkki", + "doNotHaveAccount": "Onko sinulla tili?", + "registerHere": "Rekisteröidy tästä", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "pageSpeedApiKeyFieldTitle": "Google PageSpeed API-avain", + "pageSpeedApiKeyFieldLabel": "PageSpeed API-avain", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "Palauta", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "Luo uusi", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "Ylös", + "down": "Alas", + "paused": "Tauko" + }, + "roles": { + "superAdmin": "Pääylläpitäjä", + "admin": "Ylläpitäjä", + "teamMember": "", + "demoUser": "Demokäyttäjä" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "Kaikki", + "member": "Jäsen" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "Sähköposti", + "selectRole": "Valitse rooli", + "inviteLink": "Kutsulinkki", + "cancel": "Peruuttaa", + "noMembers": "", + "getToken": "Hae tunniste", + "emailToken": "Sähköpostitunnus", + "table": { + "name": "Nimi", + "email": "Sähköposti", + "role": "Rooli", + "created": "Luotu" + } + }, + "monitorState": { + "paused": "Tauota", + "resumed": "Jatka", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "Infrastruktuuri", + "distributedUptime": "", + "incidents": "", + "statusPages": "Tilasivut", + "maintenance": "Huolto", + "integrations": "", + "settings": "Asetukset", + "support": "Tuki", + "discussions": "Keskustelut", + "docs": "Dokumentit", + "changelog": "Muutosloki", + "profile": "Profiili", + "password": "Salasana", + "team": "Tiimi", + "logOut": "Kirjaudu ulos" + }, + "settingsEmail": "Sähköpostiasetukset", + "settingsEmailDescription": "Määritä sähköpostiasetukset", + "settingsEmailHost": "", + "settingsEmailPort": "Sähköpostin portti - Portti johon yhdistetään", + "settingsEmailAddress": "Sähköpostiosoite - Käytetään tunnistautumiseen", + "settingsEmailPassword": "Sähköpostin salasana - Salasana tunnistautumiseen", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "Salasana on asetettu. Paina Palauta vaihtaaksesi sen.", + "state": "Tila", + "statusBreadCrumbsStatusPages": "Tilasivut", + "statusBreadCrumbsDetails": "Tiedot", + "authForgotPasswordInstructions": "Ei hätää, lähetämme sinulle ohjeet salasanan palauttamiseen.", + "settingsThemeModeLight": "Vaalea", + "settingsThemeModeDark": "Tumma", + "settingsClearAllStatsDialogCancel": "Peruuta", + "commonSaving": "Tallennetaan...", + "navControls": "Ohjaimet", + "incidentsPageTitle": "Häiriöt", + "passwordPanel": { + "passwordChangedSuccess": "Salasanasi vaihdettiin onnistuneesti.", + "passwordInputIncorrect": "", + "currentPassword": "Nykyinen salasana", + "enterCurrentPassword": "Kirjoita nykyinen salasanasi", + "newPassword": "Uusi salasana", + "enterNewPassword": "Kirjoita uusi salasana", + "confirmNewPassword": "Vahvista uusi salasana", + "passwordRequirements": "Uuden salasanan on oltava vähintään 8 merkkiä pitkä ja sen on sisältävä vähintään yksi iso kirjain, yksi pieni kirjain, yksi numero sekä yksi erikoismerkki.", + "saving": "Tallennetaan..." + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "Lähetä testi sähköposti", + "emailSent": "Sähköpostin lähetys onnistui", + "failedToSendEmail": "Sähköpostin lähetys epäonnistui", + "settingsTestEmail": "Lähetä testi sähköposti", + "settingsTestEmailSuccess": "Testisähköpostin lähetys onnistui", + "settingsTestEmailFailed": "Testisähköpostin lähetys epäonnistui", + "settingsTestEmailFailedWithReason": "Testisähköpostin lähetys epäonnistui: {{reason}}", + "settingsTestEmailUnknownError": "Tuntematon virhe", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "Valvonta on keskeytetty.", + "up": "Sivusi on ylhäällä.", + "down": "Sivusi on alhaalla.", + "pending": "Odottaa..." + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json new file mode 100644 index 000000000..68ac45f33 --- /dev/null +++ b/client/src/locales/fr.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "Vous n'avez pas de compte", + "email": "E-mail", + "forgotPassword": "Mot de passe oublié", + "password": "mot de passe", + "signUp": "S'inscrire", + "submit": "Envoyer", + "title": "Titre", + "continue": "Continuer", + "enterEmail": "Entrez votre adresse e-mail", + "authLoginTitle": "Se connecter", + "authLoginEnterPassword": "Entrez votre mot de passe", + "commonPassword": "Mot de passe", + "commonBack": "Retour", + "authForgotPasswordTitle": "Mot de passe oublié ?", + "authForgotPasswordResetPassword": "Réinitialiser le mot de passe", + "createPassword": "Créez votre mot de passe", + "createAPassword": "Créer un mot de passe", + "authRegisterAlreadyHaveAccount": "Vous avez un compte ?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Entrez votre e-mail", + "authRegisterTitle": "Créer un compte", + "authRegisterStepOneTitle": "Créez votre compte", + "authRegisterStepOneDescription": "Entrez vos informations pour commencer", + "authRegisterStepTwoTitle": "", + "authRegisterStepTwoDescription": "", + "authRegisterStepThreeTitle": "Presque fini !", + "authRegisterStepThreeDescription": "", + "authForgotPasswordDescription": "Pas d'inquiétude, nous allons vous envoyer des instructions de réinitialisation.", + "authForgotPasswordSendInstructions": "Envoyer les instructions", + "authForgotPasswordBackTo": "Retourner à", + "authCheckEmailTitle": "Vérifiez votre e-mail", + "authCheckEmailDescription": "Nous avons envoyé un lien de réinitialisation à", + "authCheckEmailResendEmail": "Renvoyer le mail", + "authCheckEmailBackTo": "Retourner à", + "goBackTo": "Retourner à", + "authCheckEmailDidntReceiveEmail": "Vous n'avez pas reçu l'e-mail ?", + "authCheckEmailClickToResend": "Cliquez pour renvoyer", + "authSetNewPasswordTitle": "Définir un nouveau mot de passe", + "authSetNewPasswordDescription": "Votre nouveau mot de passe doit être différent des anciens mots de passes utilisés.", + "authSetNewPasswordNewPassword": "Nouveau mot de passe", + "authSetNewPasswordConfirmPassword": "Confirmer le mot de passe", + "confirmPassword": "Confirmez votre mot de passe", + "authSetNewPasswordResetPassword": "Réinitialiser le mot de passe", + "authSetNewPasswordBackTo": "Retourner à", + "authPasswordMustBeAtLeast": "Doit faire au moins", + "authPasswordCharactersLong": "8 caractères", + "authPasswordMustContainAtLeast": "Doit contenir au moins", + "authPasswordSpecialCharacter": "un caractère spécial", + "authPasswordOneNumber": "un nombre", + "authPasswordUpperCharacter": "une lettre majuscule", + "authPasswordLowerCharacter": "une lettre minuscule", + "authPasswordConfirmAndPassword": "", + "authPasswordMustMatch": "doit correspondre", + "authRegisterCreateAccount": "Créez votre compte pour commencer", + "authRegisterCreateSuperAdminAccount": "Créez votre compte Super admin pour commencer", + "authRegisterSignUpWithEmail": "S'inscrire avec E-mail", + "authRegisterBySigningUp": "En vous inscrivant, vous acceptez nos", + "distributedStatusHeaderText": "", + "distributedStatusSubHeaderText": "", + "settingsGeneralSettings": "Paramètres généraux", + "settingsDisplayTimezone": "Fuseau horaire d'affichage", + "settingsDisplayTimezoneDescription": "Le fuseau horaire du tableau de bord que vous affichez publiquement.", + "settingsAppearance": "Apparence", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "Langue", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "Activé", + "settingsDisabled": "Désactivé", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/gb.json b/client/src/locales/gb.json index 4bd71e9c6..08e3511a7 100644 --- a/client/src/locales/gb.json +++ b/client/src/locales/gb.json @@ -1,7 +1,5 @@ { "dontHaveAccount": "Don't have account", - "doNotHaveAccount": "Do not have an account?", - "registerHere": "Register here", "email": "E-mail", "forgotPassword": "Forgot Password", "password": "Password", @@ -16,13 +14,10 @@ "commonBack": "Back", "authForgotPasswordTitle": "Forgot password?", "authForgotPasswordResetPassword": "Reset password", - "authForgotPasswordInstructions": "No worries, we'll send you reset instructions.", "createPassword": "Create your password", "createAPassword": "Password", "authRegisterAlreadyHaveAccount": "Already have an account?", - "authRegisterLoginLink": "Log In", "commonAppName": "Checkmate", - "welcomeBack": "Welcome back! You're successfully logged in.", "authLoginEnterEmail": "Enter your email", "authRegisterTitle": "Create an account", "authRegisterStepOneTitle": "Create your account", @@ -57,9 +52,6 @@ "authPasswordLowerCharacter": "one lower character", "authPasswordConfirmAndPassword": "Confirm password and password", "authPasswordMustMatch": "Passwords must match", - "validationNameRequired": "Please enter your name", - "validationNameTooLong": "Name should be less than 50 characters", - "validationNameInvalidCharacters": "Please use only letters, spaces, apostrophes, or hyphens", "authRegisterCreateAccount": "Create your account to get started", "authRegisterCreateSuperAdminAccount": "Create your super admin account to get started", "authRegisterSignUpWithEmail": "Create super admin account", @@ -72,14 +64,7 @@ "settingsAppearance": "Appearance", "settingsAppearanceDescription": "Switch between light and dark mode, or change user interface language", "settingsThemeMode": "Theme Mode", - "settingsThemeModeLight": "Light", - "settingsThemeModeDark": "Dark", "settingsLanguage": "Language", - "settingsURLTitle": "Monitor IP/URL on Status Page", - "settingsURLDescription": "Display the IP address or URL of monitor on the public Status page. If it's disabled, only the monitor name will be shown to protect sensitive information.", - "settingsURLSelectTitle": "Display IP/URL on status page", - "settingsURLEnabled": "Enabled", - "settingURLDisabled": "Disabled", "settingsDistributedUptime": "Distributed uptime", "settingsDistributedUptimeDescription": "Enable/disable distributed uptime monitoring.", "settingsEnabled": "Enabled", @@ -93,13 +78,10 @@ "settingsClearAllStatsDialogTitle": "Do you want to clear all stats?", "settingsClearAllStatsDialogDescription": "Once removed, the monitoring history and stats cannot be retrieved.", "settingsClearAllStatsDialogConfirm": "Yes, clear all stats", - "settingsClearAllStatsDialogCancel": "Cancel", "settingsDemoMonitors": "Demo monitors", "settingsDemoMonitorsDescription": "Add sample monitors for demonstration purposes.", "settingsAddDemoMonitors": "Adding demo monitors", "settingsAddDemoMonitorsButton": "Add demo monitors", - "settingsSystemReset": "System reset", - "settingsSystemResetDescription": "Remove all monitors from your system.", "settingsRemoveAllMonitors": "Removing all monitors", "settingsRemoveAllMonitorsButton": "Remove all monitors", "settingsRemoveAllMonitorsDialogTitle": "Do you want to remove all monitors?", @@ -117,36 +99,12 @@ "settingsFailedToAddDemoMonitors": "Failed to add demo monitors", "settingsMonitorsDeleted": "Successfully deleted all monitors", "settingsFailedToDeleteMonitors": "Failed to delete all monitors", - "settingsEmail": "Email", - "settingsEmailDescription": "Configure the email settings for your system. This is used to send notifications and alerts.", - "settingsEmailHost": "Email host - Hostname or IP address of the SMTP server", - "settingsEmailPort": "Email port - Port to connect to", - "settingsEmailUser": "Email user - Username for authentication, overrides email address if specified", - "settingsEmailAddress": "Email address - Used for authentication", - "settingsEmailPassword": "Email password - Password for authentication", - "settingsEmailConnectionHost": "Email connection host - Hostname to use in the HELO/EHLO greeting", - "settingsTestEmail": "Send test e-mail", - "settingsTestEmailSuccess": "Test email sent successfully", - "settingsTestEmailFailed": "Failed to send test email", - "settingsTestEmailFailedWithReason": "Failed to send test email: {{reason}}", - "settingsTestEmailUnknownError": "Unknown error", - "settingsEmailRequiredFields": "Email host and port are required", - "settingsEmailFieldResetLabel": "Password is set. Click Reset to change it.", - "backendUnreachable": "Server Connection Error", - "backendUnreachableMessage": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.", - "backendUnreachableError": "Cannot connect to the server. Please try again later.", - "retryConnection": "Retry connection", - "retryingConnection": "Connecting...", - "backendReconnected": "Successfully reconnected to the server.", - "backendStillUnreachable": "Server is still unreachable. Please try again later.", - "backendConnectionError": "Error connecting to the server. Please check your network connection.", "starPromptTitle": "Star Checkmate", "starPromptDescription": "See the latest releases and help grow the community on GitHub", "https": "HTTPS", "http": "HTTP", "monitor": "monitor", "aboutus": "About Us", - "state": "State", "now": "Now", "delete": "Delete", "configure": "Configure", @@ -315,7 +273,6 @@ "integrationsZapier": "Zapier", "integrationsZapierInfo": "Send all incidents to Zapier, and then see them everywhere", "commonSave": "Save", - "commonSaving": "Saving...", "createYour": "Create your", "createMonitor": "Create monitor", "pause": "Pause", @@ -404,8 +361,6 @@ "statusPageStatusNotPublic": "This status page is not public.", "statusPageStatusNoPage": "There's no status page here.", "statusPageStatusServiceStatus": "Service status", - "statusBreadCrumbsStatusPages": "Status Pages", - "statusBreadCrumbsDetails": "Details", "deleteStatusPage": "Do you want to delete this status page?", "deleteStatusPageConfirm": "Yes, delete status page", "deleteStatusPageDescription": "Once deleted, your status page cannot be retrieved.", @@ -433,14 +388,9 @@ "FirstName": "First name", "LastName": "Last name", "EmailDescriptionText": "This is your current email address — it cannot be changed.", - "ignoreTLSError": "Ignore TLS/SSL error", - "tlsErrorIgnored": "TLS/SSL errors ignored", - "ignoreTLSErrorDescription": "Ignore TLS/SSL errors and continue checking the website's availability", "YourPhoto": "Profile photo", "PhotoDescriptionText": "This photo will be displayed in your profile page.", "save": "Save", - "DeleteAccountTitle": "Remove account", - "DeleteAccountButton": "Remove account", "DeleteDescriptionText": "This will remove the account and all associated data from the server. This isn't reversible.", "DeleteAccountWarning": "Removing your account means you won't be able to sign in again and all your data will be removed. This isn't reversible.", "DeleteWarningTitle": "Really remove this account?", @@ -448,7 +398,6 @@ "authRegisterLastName": "Surname", "authRegisterEmail": "Email", "authRegisterEmailRequired": "To continue, please enter your email address", - "authRegisterEmailInvalid": "Please enter a valid email address", "bulkImport": { "title": "Bulk Import", "selectFileTips": "Select CSV file to upload", @@ -460,14 +409,36 @@ "noFileSelected": "No file selected", "fallbackPage": "Import a file to upload a list of servers in bulk" }, + "welcomeBack": "Welcome back! You're successfully logged in.", + "authRegisterLoginLink": "Log In", + "validationNameRequired": "Please enter your name", + "validationNameTooLong": "Name should be less than 50 characters", + "validationNameInvalidCharacters": "Please use only letters, spaces, apostrophes, or hyphens", + "settingsSystemReset": "System reset", + "settingsSystemResetDescription": "Remove all monitors from your system.", + "DeleteAccountTitle": "Remove account", + "DeleteAccountButton": "Remove account", + "authRegisterEmailInvalid": "Please enter a valid email address", "publicLink": "Public link", + "doNotHaveAccount": "Do not have an account?", + "registerHere": "Register here", + "backendUnreachable": "Server Connection Error", + "backendUnreachableMessage": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.", + "backendUnreachableError": "Cannot connect to the server. Please try again later.", + "retryConnection": "Retry connection", + "retryingConnection": "Connecting...", + "backendReconnected": "Successfully reconnected to the server.", + "backendStillUnreachable": "Server is still unreachable. Please try again later.", + "backendConnectionError": "Error connecting to the server. Please check your network connection.", "maskedPageSpeedKeyPlaceholder": "*************************************", "pageSpeedApiKeyFieldTitle": "Google PageSpeed API key", "pageSpeedApiKeyFieldLabel": "PageSpeed API key", "pageSpeedApiKeyFieldDescription": "Enter your Google PageSpeed API key to enable pagespeed monitoring. Click Reset to update the key.", "pageSpeedApiKeyFieldResetLabel": "API key is set. Click Reset to change it.", - "reset": "Reset", + "ignoreTLSError": "Ignore TLS/SSL error", + "tlsErrorIgnored": "TLS/SSL errors ignored", + "ignoreTLSErrorDescription": "Ignore TLS/SSL errors and continue checking the website's availability", "createNew": "Create new", "greeting": { "prepend": "Hey there", @@ -532,6 +503,22 @@ "team": "Team", "logOut": "Log out" }, + "settingsEmail": "Email", + "settingsEmailDescription": "Configure the email settings for your system. This is used to send notifications and alerts.", + "settingsEmailHost": "Email host - Hostname or IP address of the SMTP server", + "settingsEmailPort": "Email port - Port to connect to", + "settingsEmailAddress": "Email address - Used for authentication", + "settingsEmailPassword": "Email password - Password for authentication", + "settingsEmailUser": "Email user - Username for authentication, overrides email address if specified", + "settingsEmailFieldResetLabel": "Password is set. Click Reset to change it.", + "state": "State", + "statusBreadCrumbsStatusPages": "Status Pages", + "statusBreadCrumbsDetails": "Details", + "authForgotPasswordInstructions": "No worries, we'll send you reset instructions.", + "settingsThemeModeLight": "Light", + "settingsThemeModeDark": "Dark", + "settingsClearAllStatsDialogCancel": "Cancel", + "commonSaving": "Saving...", "navControls": "Controls", "incidentsPageTitle": "Incidents", "passwordPanel": { @@ -546,13 +533,25 @@ "saving": "Saving..." }, "uptimeCreateSelectURL": "Enter the URL or IP to monitor (e.g., https://example.com/ or 192.168.1.100) and add a clear display name that appears on the dashboard.", + "settingsEmailConnectionHost": "Email connection host - Hostname to use in the HELO/EHLO greeting", "sendTestEmail": "Send test email", "emailSent": "Email sent successfully", "failedToSendEmail": "Failed to send email", + "settingsTestEmail": "Send test e-mail", + "settingsTestEmailSuccess": "Test email sent successfully", + "settingsTestEmailFailed": "Failed to send test email", + "settingsTestEmailFailedWithReason": "Failed to send test email: {{reason}}", + "settingsTestEmailUnknownError": "Unknown error", + "settingsEmailRequiredFields": "Email host and port are required", "statusMsg": { "paused": "Monitoring is paused.", "up": "Your site is up.", "down": "Your site is down.", "pending": "Pending..." - } + }, + "settingsURLTitle": "Monitor IP/URL on Status Page", + "settingsURLDescription": "Display the IP address or URL of monitor on the public Status page. If it's disabled, only the monitor name will be shown to protect sensitive information.", + "settingsURLSelectTitle": "Display IP/URL on status page", + "settingsURLEnabled": "Enabled", + "settingURLDisabled": "Disabled" } diff --git a/client/src/locales/pt-br.json b/client/src/locales/pt-br.json new file mode 100644 index 000000000..5e7810cde --- /dev/null +++ b/client/src/locales/pt-br.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "Não tenho conta", + "email": "E-mail", + "forgotPassword": "Esqueci a senha", + "password": "Senha", + "signUp": "Inscreva-se", + "submit": "Enviar", + "title": "Título", + "continue": "Continuar", + "enterEmail": "Insira seu e-mail", + "authLoginTitle": "Login", + "authLoginEnterPassword": "Digite sua senha", + "commonPassword": "Senha", + "commonBack": "Voltar", + "authForgotPasswordTitle": "Esqueceu a senha?", + "authForgotPasswordResetPassword": "Redefinir a senha", + "createPassword": "Criar sua senha", + "createAPassword": "Senha", + "authRegisterAlreadyHaveAccount": "Já possui uma conta?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Insira seu e-mail", + "authRegisterTitle": "Criar uma conta", + "authRegisterStepOneTitle": "Crie sua conta", + "authRegisterStepOneDescription": "Insira seus dados para começar", + "authRegisterStepTwoTitle": "Configure seu perfil", + "authRegisterStepTwoDescription": "Conte-nos mais sobre você", + "authRegisterStepThreeTitle": "Quase pronto!", + "authRegisterStepThreeDescription": "Revise suas informações", + "authForgotPasswordDescription": "Não se preocupe, enviaremos instruções de redefinição.", + "authForgotPasswordSendInstructions": "Enviar instruções", + "authForgotPasswordBackTo": "Voltar para", + "authCheckEmailTitle": "Verifique seu e-mail", + "authCheckEmailDescription": "Enviamos um link para redefinir a senha para", + "authCheckEmailResendEmail": "Reenviar e-mail", + "authCheckEmailBackTo": "Voltar para", + "goBackTo": "Volte para", + "authCheckEmailDidntReceiveEmail": "Não recebeu o e-mail?", + "authCheckEmailClickToResend": "Clique para reenviar", + "authSetNewPasswordTitle": "Definir nova senha", + "authSetNewPasswordDescription": "Sua nova senha deve ser diferente das senhas usadas anteriormente.", + "authSetNewPasswordNewPassword": "Nova senha", + "authSetNewPasswordConfirmPassword": "Confirme sua senha", + "confirmPassword": "Digite a senha novamente para confirmar", + "authSetNewPasswordResetPassword": "Redefinir senha", + "authSetNewPasswordBackTo": "Voltar para", + "authPasswordMustBeAtLeast": "Deve ser pelo menos", + "authPasswordCharactersLong": "8 caracteres de comprimento", + "authPasswordMustContainAtLeast": "Deve conter pelo menos", + "authPasswordSpecialCharacter": "um caractere especial", + "authPasswordOneNumber": "um número", + "authPasswordUpperCharacter": "um caractere maiúsculo", + "authPasswordLowerCharacter": "um caractere minúsculo", + "authPasswordConfirmAndPassword": "Confirme a senha", + "authPasswordMustMatch": "As senhas devem corresponder", + "authRegisterCreateAccount": "Crie sua conta para começar", + "authRegisterCreateSuperAdminAccount": "Crie sua conta de super admin para começar", + "authRegisterSignUpWithEmail": "Criar conta de super admin", + "authRegisterBySigningUp": "Ao criar uma conta, você concorda com nossos Termos de Serviço e Política de Privacidade.", + "distributedStatusHeaderText": "Cobertura em tempo real e em dispositivos reais", + "distributedStatusSubHeaderText": "Impulsionado por milhões de dispositivos em todo o mundo, visualize o desempenho do sistema por região global, país ou cidade", + "settingsGeneralSettings": "Configurações gerais", + "settingsDisplayTimezone": "Fuso horário", + "settingsDisplayTimezoneDescription": "Selecione o fuso horário usado para exibir datas e horas em todo o aplicativo.", + "settingsAppearance": "Aparência", + "settingsAppearanceDescription": "Alterne entre o modo claro e escuro ou altere o idioma da interface do usuário", + "settingsThemeMode": "Tema", + "settingsLanguage": "Linguagem", + "settingsDistributedUptime": "Disponibilidade distribuída", + "settingsDistributedUptimeDescription": "Habilitar/desabilitar o monitoramento de tempo de disponibilidade distribuído.", + "settingsEnabled": "Habilitado", + "settingsDisabled": "Desabilitado", + "settingsHistoryAndMonitoring": "Histórico de monitoramento", + "settingsHistoryAndMonitoringDescription": "Defina por quanto tempo você deseja manter os dados de histórico. Você também pode limpar todos os dados existentes.", + "settingsTTLLabel": "Os dias em que você deseja manter os dados de histórico.", + "settingsTTLOptionalLabel": "0 para infinito", + "settingsClearAllStats": "Limpe todas as estatísticas. Isso é irreversível.", + "settingsClearAllStatsButton": "Limpar todas as estatísticas", + "settingsClearAllStatsDialogTitle": "Você quer limpar todas as estatísticas?", + "settingsClearAllStatsDialogDescription": "Uma vez limpo, o histórico de monitoramento e as estatísticas não podem ser recuperados.", + "settingsClearAllStatsDialogConfirm": "Sim, limpar todas as estatísticas", + "settingsDemoMonitors": "Monitores de demonstração", + "settingsDemoMonitorsDescription": "Adicione monitores de genéricos para fins de demonstração.", + "settingsAddDemoMonitors": "Adicionando monitores de demonstração", + "settingsAddDemoMonitorsButton": "Adicionar monitores de demonstração", + "settingsRemoveAllMonitors": "Removendo todos os monitores", + "settingsRemoveAllMonitorsButton": "Remover todos os monitores", + "settingsRemoveAllMonitorsDialogTitle": "Você deseja remover todos os monitores?", + "settingsRemoveAllMonitorsDialogConfirm": "Sim, remova todos os monitores", + "settingsWallet": "Carteira", + "settingsWalletDescription": "Conecte sua carteira aqui. Isso é necessário para que o Distributed Uptime Monitor se conecte a vários nós globalmente.", + "settingsAbout": "Sobre", + "settingsDevelopedBy": "Desenvolvido pela Bluewave Labs.", + "settingsSave": "Salvar", + "settingsSuccessSaved": "Configurações salvas com sucesso", + "settingsFailedToSave": "Falha ao salvar as configurações", + "settingsStatsCleared": "Estatísticas limpas com sucesso", + "settingsFailedToClearStats": "Falha ao limpar estatísticas", + "settingsDemoMonitorsAdded": "Monitores de demonstração adicionados com sucesso", + "settingsFailedToAddDemoMonitors": "Falha ao adicionar monitores de demonstração", + "settingsMonitorsDeleted": "Todos os monitores foram excluídos com sucesso", + "settingsFailedToDeleteMonitors": "Falha ao excluir todos os monitores", + "starPromptTitle": "Star Checkmate", + "starPromptDescription": "Veja os últimos lançamentos e ajude a expandir a comunidade no GitHub", + "https": "HTTPS", + "http": "HTTP", + "monitor": "monitor", + "aboutus": "Sobre nós", + "now": "Agora", + "delete": "Deletar", + "configure": "Configurar", + "networkError": "Erro de rede", + "responseTime": "Tempo de resposta", + "ms": "ms", + "bar": "Bar", + "area": "Área", + "country": "PAÍS", + "city": "CIDADE", + "response": "RESPOSTA", + "checkConnection": "Verifique sua conexão", + "passwordreset": "Redefinição de senha", + "authRegisterStepOnePersonalDetails": "Insira seus dados pessoais", + "authCheckEmailOpenEmailButton": "Abra o aplicativo de e-mail", + "authNewPasswordConfirmed": "Sua senha foi redefinida com sucesso. Clique abaixo para fazer login magicamente.", + "monitorStatusUp": "O monitor {name} ({url}) agora está ATIVO e respondendo", + "monitorStatusDown": "O monitor {name} ({url}) está INATIVO e não está respondendo", + "webhookSendSuccess": "Notificação de webhook enviada com sucesso", + "webhookSendError": "Erro ao enviar notificação de webhook para {platform}", + "webhookUnsupportedPlatform": "Plataforma não suportada: {platform}", + "distributedRightCategoryTitle": "Monitor", + "distributedStatusServerMonitors": "Monitores de servidor", + "distributedStatusServerMonitorsDescription": "Monitorar o status dos servidores relacionados", + "distributedUptimeCreateSelectURL": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", + "distributedUptimeCreateChecks": "Verificações para realizar", + "distributedUptimeCreateChecksDescription": "Você sempre pode adicionar ou remover verificações depois de adicionar seu site.", + "distributedUptimeCreateIncidentNotification": "Notificações de incidentes", + "distributedUptimeCreateIncidentDescription": "Quando ocorrer um incidente, notifique os usuários.", + "distributedUptimeCreateAdvancedSettings": "Configurações avançadas", + "distributedUptimeDetailsNoMonitorHistory": "Ainda não há histórico de verificações para este monitor.", + "distributedUptimeDetailsFooterHeading": "Feito com ❤️ por UpRock e Bluewave Labs", + "distributedUptimeDetailsFooterBuilt": "Construído com", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "Monitoramento de Uptime distribuído com tecnologia DePIN", + "distributedUptimeDetailsStatusHeaderUptime": "Uptime:", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Última atualização", + "notifications": { + "enableNotifications": "Habilitar notificações da {{platform}}", + "testNotification": "Notificação de teste", + "addOrEditNotifications": "Adicionar ou editar notificações", + "slack": { + "label": "Slack", + "description": "Para habilitar as notificações do Slack, crie um aplicativo Slack e habilite os webhooks de entrada. Depois disso, basta fornecer a URL do webhook aqui.", + "webhookLabel": "Webhook URL", + "webhookPlaceholder": "https://hooks.slack.com/services/...", + "webhookRequired": "A URL do webhook do Slack é necessária" + }, + "discord": { + "label": "Discord", + "description": "Para enviar dados para um canal do Discord a partir do Checkmate por meio de notificações do Discord usando webhooks, você pode usar o recurso de Webhooks de entrada do Discord.", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "A URL do webhook do Discord é necessária" + }, + "telegram": { + "label": "Telegram", + "description": "Para habilitar as notificações do Telegram, crie um bot do Telegram usando o BotFather, um bot oficial para criar e gerenciar bots do Telegram. Em seguida, obtenha o token da API e o ID do chat e os coloque aqui.", + "tokenLabel": "Seu token de bot", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "Seu ID de bate-papo", + "chatIdPlaceholder": "-1001234567890", + "fieldsRequired": "O token do Telegram e o ID do chat são necessários" + }, + "webhook": { + "label": "Webhooks", + "description": "Você pode configurar um webhook personalizado para receber notificações quando ocorrerem incidentes.", + "urlLabel": "Webhook URL", + "urlPlaceholder": "https://seu-servidor.com/webhook", + "urlRequired": "URL do webhook é necessária" + }, + "testNotificationDevelop": "Notificação de teste 2", + "integrationButton": "Integração de notificação", + "testSuccess": "Notificação de teste enviada com sucesso!", + "testFailed": "Falha ao enviar notificação de teste", + "unsupportedType": "Tipo de notificação não suportado", + "networkError": "Ocorreu um erro de rede" + }, + "testLocale": "testLocale", + "add": "Adicionar", + "monitors": "monitores", + "distributedUptimeStatusCreateStatusPage": "Pagina de status", + "distributedUptimeStatusCreateStatusPageAccess": "Acesso", + "distributedUptimeStatusCreateStatusPageReady": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", + "distributedUptimeStatusBasicInfoHeader": "Informação básica", + "distributedUptimeStatusBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", + "distributedUptimeStatusLogoHeader": "Logo", + "distributedUptimeStatusLogoDescription": "Carregue um logo para sua página de status", + "distributedUptimeStatusLogoUploadButton": "Upload logo", + "distributedUptimeStatusStandardMonitorsHeader": "Monitores padrão", + "distributedUptimeStatusStandardMonitorsDescription": "Anexe monitores padrão à sua página de status.", + "distributedUptimeStatusCreateYour": "Crie o seu", + "distributedUptimeStatusEditYour": "Edite seu", + "distributedUptimeStatusPublishedLabel": "Publicado e visível ao público", + "distributedUptimeStatusCompanyNameLabel": "Nome da empresa", + "distributedUptimeStatusPageAddressLabel": "Endereço da sua página de status", + "distributedUptimeStatus30Days": "30 dias", + "distributedUptimeStatus60Days": "60 dias", + "distributedUptimeStatus90Days": "90 dias", + "distributedUptimeStatusPageNotSetUp": "Uma página de status não está configurada.", + "distributedUptimeStatusContactAdmin": "Entre em contato com seu administrador", + "distributedUptimeStatusPageNotPublic": "Esta página de status não é pública.", + "distributedUptimeStatusPageDeleteDialog": "Você quer excluir esta página de status?", + "distributedUptimeStatusPageDeleteConfirm": "Sim, excluir página de status", + "distributedUptimeStatusPageDeleteDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", + "distributedUptimeStatusDevices": "Dispositivos", + "distributedUptimeStatusUpt": "UPT", + "distributedUptimeStatusUptBurned": "UPT queimado", + "distributedUptimeStatusUptLogo": "Logo UPT", + "incidentsTableNoIncidents": "Nenhum incidente registrado", + "incidentsTablePaginationLabel": "incidentes", + "incidentsTableMonitorName": "Nome do monitor", + "incidentsTableStatus": "Status", + "incidentsTableDateTime": "Data & Hora", + "incidentsTableStatusCode": "Código de status", + "incidentsTableMessage": "Mensagem", + "incidentsOptionsHeader": "Incidentes para:", + "incidentsOptionsHeaderFilterBy": "Filtrar por:", + "incidentsOptionsHeaderFilterAll": "Todos", + "incidentsOptionsHeaderFilterDown": "Inativos", + "incidentsOptionsHeaderFilterCannotResolve": "Não é possível resolver", + "incidentsOptionsHeaderShow": "Mostrar:", + "incidentsOptionsHeaderLastHour": "Última hora", + "incidentsOptionsHeaderLastDay": "Último dia", + "incidentsOptionsHeaderLastWeek": "Ultima semana", + "incidentsOptionsPlaceholderAllServers": "Todos os servidores", + "infrastructureCreateYour": "Crie o seu", + "infrastructureCreateGeneralSettingsDescription": "Aqui você pode inserir a URL do host, juntamente com o nome de exibição e o API secret de autorização para se conectar ao agente do servidor.", + "infrastructureServerRequirement": "O servidor que você quer monitorar deve estar executando o", + "infrastructureCustomizeAlerts": "Personalize alertas", + "infrastructureAlertNotificationDescription": "Envie uma notificação ao(s) usuário(s) quando os limites excederem uma porcentagem especificada.", + "infrastructureCreateMonitor": "Criar monitor de infraestrutura", + "infrastructureProtocol": "Protocolo", + "infrastructureServerUrlLabel": "URL do servidor", + "infrastructureDisplayNameLabel": "Nome de exibição", + "infrastructureAuthorizationSecretLabel": "API Secret", + "gb": "GB", + "mb": "MB", + "mem": "Mem", + "memoryUsage": "Uso de memória", + "cpu": "CPU", + "cpuUsage": "Uso da CPU", + "cpuTemperature": "Temperatura da CPU", + "diskUsage": "Uso de disco", + "used": "Usado", + "total": "Total", + "cores": "Núcleos", + "frequency": "Frequência", + "status": "Status", + "cpuPhysical": "CPU (Física)", + "cpuLogical": "CPU (Lógica)", + "cpuFrequency": "Frequência da CPU", + "avgCpuTemperature": "Temperatura média da CPU", + "memory": "Memória", + "disk": "Disco", + "uptime": "Uptime", + "os": "OS", + "host": "Host", + "actions": "Ações", + "integrations": "Integrações", + "integrationsPrism": "Conecte o Prism ao seu serviço favorito.", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "Conecte-se com o Slack e veja incidentes em um canal", + "integrationsDiscord": "Discord", + "integrationsDiscordInfo": "Conecte-se com o Discord e visualize incidentes diretamente em um canal", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "Envie todos os incidentes para o Zapier e veja-os em todos os lugares", + "commonSave": "Salvar", + "createYour": "Crie o seu", + "createMonitor": "Criar monitor", + "pause": "Pausar", + "resume": "Resumir", + "editing": "Editando...", + "url": "URL", + "access": "Acesso", + "timezone": "Fuso horário", + "features": "Recursos", + "administrator": "Administrador?", + "loginHere": "Login aqui", + "displayName": "Nome de exibição", + "urlMonitor": "URL do monitor", + "portToMonitor": "Porta do monitor", + "websiteMonitoring": "Monitoramento de sites", + "websiteMonitoringDescription": "Use HTTP(s) para monitorar seu site ou API endpoint.", + "pingMonitoring": "Monitoramento de ping", + "pingMonitoringDescription": "Verifique se o seu servidor está disponível ou não.", + "dockerContainerMonitoring": "Monitoramento de contêiner Docker", + "dockerContainerMonitoringDescription": "Verifique se o seu contêiner Docker está em execução ou não.", + "portMonitoring": "Monitoramento de porta", + "portMonitoringDescription": "Verifique se sua porta está aberta ou não.", + "createMaintenanceWindow": "Criar janela de manutenção", + "createMaintenance": "Criar manutenção", + "editMaintenance": "Editar manutenção", + "maintenanceWindowName": "Nome da janela de manutenção", + "friendlyNameInput": "Nome amigável", + "friendlyNamePlaceholder": "Manutenção em __ : __ por ___ minutos", + "maintenanceRepeat": "Repetição de manutenção", + "maintenance": "manutenção", + "duration": "Duração", + "addMonitors": "Adicionar monitores", + "window": "janela", + "cancel": "Cancelar", + "message": "Mensagem", + "low": "baixo", + "high": "alto", + "statusCode": "Código de status", + "date&Time": "Data & Hora", + "type": "Tipo", + "statusPageName": "Nome da página de status", + "publicURL": "URL publica", + "repeat": "Repetir", + "edit": "Editar", + "createA": "Crie um", + "remove": "Remover", + "maintenanceWindowDescription": "Seus pings não serão enviados durante esse período", + "startTime": "Hora de início", + "timeZoneInfo": "Todas as datas e horários estão no fuso horário GMT+0.", + "monitorsToApply": "Monitores para aplicar a janela de manutenção", + "nextWindow": "Próxima janela", + "notFoundButton": "Vá para o painel principal", + "pageSpeedConfigureSettingsDescription": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", + "monitorDisplayName": "Nome de exibição do monitor", + "whenNewIncident": "Quando há um novo incidente,", + "notifySMS": "Notificar via SMS (em breve)", + "notifyEmails": "Também notificar por e-mail para vários endereços (em breve)", + "seperateEmails": "Você pode separar vários e-mails com uma vírgula", + "checkFrequency": "Verifique a frequência", + "matchMethod": "Método de correspondência", + "expectedValue": "Valor esperado", + "deleteDialogTitle": "Você realmente deseja excluir este monitor?", + "deleteDialogDescription": "Uma vez excluído, este monitor não poderá ser recuperado.", + "pageSpeedMonitor": "Monitor PageSpeed", + "shown": "Mostrado", + "ago": "atrás", + "companyName": "Nome da empresa", + "pageSpeedDetailsPerformanceReport": "Os valores são estimados e podem variar.", + "pageSpeedDetailsPerformanceReportCalculator": "Veja calculadora", + "checkingEvery": "Verificando a cada", + "statusPageCreateSettings": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", + "basicInformation": "Informações Básicas", + "statusPageCreateBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", + "statusPageCreateSelectTimeZoneDescription": "Selecione o fuso horário em que será exibido na sua página de status.", + "statusPageCreateAppearanceDescription": "Defina a aparência padrão da sua página de status pública.", + "statusPageCreateSettingsCheckboxLabel": "Publicado e visível ao público", + "statusPageCreateBasicInfoStatusPageAddress": "Endereço da sua página de status", + "statusPageCreateTabsContent": "Servidores de páginas de status", + "statusPageCreateTabsContentDescription": "Você pode adicionar quantos monitores quiser à sua página de status. Você também pode reordená-los para uma melhor experiência de visualização.", + "statusPageCreateTabsContentFeaturesDescription": "Mostrar mais detalhes na página de status", + "showCharts": "Mostrar gráficos", + "showUptimePercentage": "Mostrar porcentagem de Uptime", + "removeLogo": "Remover logo", + "statusPageStatus": "Uma página de status pública não está configurada.", + "statusPageStatusContactAdmin": "Entre em contato com seu administrador", + "statusPageStatusNotPublic": "Esta página de status não é pública.", + "statusPageStatusNoPage": "Não há página de status aqui.", + "statusPageStatusServiceStatus": "Status do serviço", + "deleteStatusPage": "Você quer excluir esta página de status?", + "deleteStatusPageConfirm": "Sim, excluir página de status", + "deleteStatusPageDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", + "uptimeCreate": "O valor esperado é usado para corresponder ao resultado da resposta, e a correspondência determina o status.", + "uptimeCreateJsonPath": "Esta expressão será avaliada em relação aos dados JSON de resposta e o resultado será usado para corresponder ao valor esperado. Veja", + "uptimeCreateJsonPathQuery": "para documentação de linguagem de consulta.", + "maintenanceTableActionMenuDialogTitle": "Você realmente deseja remover esta janela de manutenção?", + "infrastructureEditYour": "Edite seu", + "infrastructureEditMonitor": "Salvar Monitor de Infraestrutura", + "infrastructureMonitorCreated": "Monitor de infraestrutura criado com sucesso!", + "infrastructureMonitorUpdated": "Monitor de infraestrutura atualizado com sucesso!", + "errorInvalidTypeId": "Tipo de notificação fornecido inválido", + "errorInvalidFieldId": "ID do campo fornecido inválido", + "inviteNoTokenFound": "Nenhum token de convite encontrado", + "pageSpeedWarning": "Aviso: você ainda não adicionou uma chave de API do Google PageSpeed. Sem ela, o monitor PageSpeed ​​não funcionará.", + "pageSpeedLearnMoreLink": "Clique aqui", + "pageSpeedAddApiKey": "para adicionar sua chave de API.", + "update": "Atualizar", + "invalidFileFormat": "Formato de arquivo não suportado!", + "invalidFileSize": "O tamanho do arquivo é muito grande!", + "ClickUpload": "Clique para enviar", + "DragandDrop": "arraste e solte", + "MaxSize": "Tamanho Máximo", + "SupportedFormats": "Formatos suportados", + "FirstName": "Nome", + "LastName": "Sobrenome", + "EmailDescriptionText": "Este é seu endereço de e-mail atual — ele não pode ser alterado.", + "YourPhoto": "Foto de perfil", + "PhotoDescriptionText": "Esta foto será exibida na sua página de perfil.", + "save": "Salvar", + "DeleteDescriptionText": "Isso removerá a conta e todos os dados associados do servidor. Essa ação não é reversível.", + "DeleteAccountWarning": "Remover sua conta significa que você não poderá fazer login novamente e todos os seus dados serão removidos. Isso não é reversível.", + "DeleteWarningTitle": "Deseja realmente remover esta conta?", + "authRegisterFirstName": "Nome", + "authRegisterLastName": "Sobrenome", + "authRegisterEmail": "E-mail", + "authRegisterEmailRequired": "Para continuar, insira seu endereço de e-mail", + "bulkImport": { + "title": "Bulk Import", + "selectFileTips": "Selecione o arquivo CSV para enviar", + "selectFileDescription": "Você pode baixar nosso ou amostra", + "selectFile": "Selecione o arquivo", + "parsingFailed": "Falha na análise", + "uploadSuccess": "Monitores criados com sucesso!", + "validationFailed": "Falha na validação", + "noFileSelected": "Nenhum arquivo selecionado", + "fallbackPage": "Importe um arquivo para enviar uma lista de servidores em massa" + }, + "welcomeBack": "Bem-vindo de volta! Você fez login com sucesso.", + "authRegisterLoginLink": "Login", + "validationNameRequired": "Por favor digite seu nome", + "validationNameTooLong": "O nome deve ter menos de 50 caracteres", + "validationNameInvalidCharacters": "Por favor, use apenas letras, espaços, apóstrofos ou hifens", + "settingsSystemReset": "Resetar sistema", + "settingsSystemResetDescription": "Remova todos os monitores do seu sistema.", + "DeleteAccountTitle": "Remover conta", + "DeleteAccountButton": "Remover conta", + "authRegisterEmailInvalid": "Por favor, insira um endereço de e-mail válido", + "publicLink": "Link publico", + "doNotHaveAccount": "Ainda não tem uma conta?", + "registerHere": "Registre-se aqui", + "backendUnreachable": "Erro de conexão com o servidor", + "backendUnreachableMessage": "Não conseguimos conectar ao servidor. Verifique sua conexão com a internet ou sua configuração de implantação se o problema persistir.", + "backendUnreachableError": "Não foi possível conectar ao servidor. Tente novamente mais tarde.", + "retryConnection": "Reconectar", + "retryingConnection": "Conectando...", + "backendReconnected": "Reconectado ao servidor com sucesso.", + "backendStillUnreachable": "O servidor ainda está inacessível. Tente novamente mais tarde.", + "backendConnectionError": "Erro ao conectar ao servidor. Verifique sua conexão de internet.", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "pageSpeedApiKeyFieldTitle": "Google PageSpeed API key", + "pageSpeedApiKeyFieldLabel": "PageSpeed API key", + "pageSpeedApiKeyFieldDescription": "Insira sua chave da API do Google PageSpeed ​​para ativar o monitoramento de velocidade de página. Clique em Resetar para atualizar a chave.", + "pageSpeedApiKeyFieldResetLabel": "A chave de API está definida. Clique em Resetar para alterá-la.", + "reset": "Resetar", + "ignoreTLSError": "Ignorar erro TLS/SSL", + "tlsErrorIgnored": "Erros TLS/SSL ignorados", + "ignoreTLSErrorDescription": "Ignore os erros de TLS/SSL e continue verificando a disponibilidade do site", + "createNew": "Criar novo", + "greeting": { + "prepend": "Ei", + "append": "A tarde é seu playground — vamos torná-la épica!", + "overview": "Aqui está uma visão geral dos seus monitores {{type}}." + }, + "monitorStatus": { + "up": "Online", + "down": "Offline", + "paused": "pausado" + }, + "roles": { + "superAdmin": "Super Admin", + "admin": "Admin", + "teamMember": "Membro da equipe", + "demoUser": "Usuário demo" + }, + "teamPanel": { + "teamMembers": "Membros da equipe", + "filter": { + "all": "Todos", + "member": "Membro" + }, + "inviteTeamMember": "Convidar um membro da equipe", + "inviteNewTeamMember": "Convidar novo membro da equipe", + "inviteDescription": "Ao adicionar um novo membro da equipe, ele terá acesso a todos os monitores.", + "email": "E-mail", + "selectRole": "Selecione a cargo", + "inviteLink": "Link de convite", + "cancel": "Cancelar", + "noMembers": "Não há membros da equipe com este cargo", + "getToken": "Obter token", + "emailToken": "Token de e-mail", + "table": { + "name": "Nome", + "email": "E-mail", + "role": "Cargo", + "created": "Criado" + } + }, + "monitorState": { + "paused": "Pausado", + "resumed": "Retomado", + "active": "Ativo" + }, + "menu": { + "uptime": "Uptime", + "pagespeed": "Pagespeed", + "infrastructure": "Infraestrutura", + "distributedUptime": "Uptime distribuído", + "incidents": "Incidentes", + "statusPages": "Pagina de status", + "maintenance": "Manutenção", + "integrations": "Integrações", + "settings": "Configurações", + "support": "Suporte", + "discussions": "Discussões", + "docs": "Docs", + "changelog": "Changelog", + "profile": "Perfil", + "password": "Senha", + "team": "Equipe", + "logOut": "Sair" + }, + "settingsEmail": "E-mail", + "settingsEmailDescription": "Configurações de e-mail do seu sistema. Elas são usadas para enviar notificações e alertas.", + "settingsEmailHost": "Host de e-mail - Nome do host ou endereço IP do servidor SMTP", + "settingsEmailPort": "Porta de e-mail - Porta para conectar", + "settingsEmailAddress": "Endereço de e-mail - Usado para autenticação", + "settingsEmailPassword": "Senha de e-mail - Senha para autenticação", + "settingsEmailUser": "Usuário de e-mail - Nome de usuário para autenticação, substitui o endereço de e-mail, se especificado", + "settingsEmailFieldResetLabel": "A senha foi definida. Clique em Redefinir para alterá-la.", + "state": "Estado", + "statusBreadCrumbsStatusPages": "Pagina de status", + "statusBreadCrumbsDetails": "Detalhes", + "authForgotPasswordInstructions": "Não se preocupe, enviaremos instruções de redefinição.", + "settingsThemeModeLight": "Claro", + "settingsThemeModeDark": "Escuro", + "settingsClearAllStatsDialogCancel": "Cancelar", + "commonSaving": "Salvando...", + "navControls": "Controles", + "incidentsPageTitle": "Incidentes", + "passwordPanel": { + "passwordChangedSuccess": "Sua senha foi alterada com sucesso.", + "passwordInputIncorrect": "Sua senha digitada está incorreta.", + "currentPassword": "Senha atual", + "enterCurrentPassword": "Digite sua senha atual", + "newPassword": "Nova Senha", + "enterNewPassword": "Digite sua nova senha", + "confirmNewPassword": "Confirme a nova senha", + "passwordRequirements": "A nova senha deve conter pelo menos 8 caracteres e deve ter pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial.", + "saving": "Salvando..." + }, + "uptimeCreateSelectURL": "Insira a URL ou IP a ser monitorado (por exemplo, https://example.com/ ou 192.168.1.100) e adicione um nome de exibição que irá aparecer no painel.", + "settingsEmailConnectionHost": "Host de conexão de e-mail - Nome do host a ser usado na saudação HELO/EHLO", + "sendTestEmail": "Enviar e-mail de teste", + "emailSent": "E-mail enviado com sucesso", + "failedToSendEmail": "Falha ao enviar e-mail", + "settingsTestEmail": "Enviar e-mail de teste", + "settingsTestEmailSuccess": "E-mail de teste enviado com sucesso", + "settingsTestEmailFailed": "Falha ao enviar e-mail de teste", + "settingsTestEmailFailedWithReason": "Falha ao enviar e-mail de teste: {{reason}}", + "settingsTestEmailUnknownError": "Erro desconhecido", + "settingsEmailRequiredFields": "O host e a porta do e-mail são obrigatórios", + "statusMsg": { + "paused": "O monitoramento está pausado.", + "up": "Seu site está no ar.", + "down": "Seu site está fora do ar.", + "pending": "Pendente..." + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index c2321f4ab..60627c23f 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -1,10 +1,8 @@ { "dontHaveAccount": "Нет аккаунта", - "doNotHaveAccount": "У вас нет учетной записи?", - "registerHere": "Зарегистрироваться здесь", "email": "Почта", "forgotPassword": "Забыли пароль", - "password": "Пароль", + "password": "пароль", "signUp": "Зарегистрироваться", "submit": "Подтвердить", "title": "Название", @@ -16,13 +14,10 @@ "commonBack": "Назад", "authForgotPasswordTitle": "Забыли пароль?", "authForgotPasswordResetPassword": "Сбросить пароль", - "authForgotPasswordInstructions": "Не волнуйтесь, мы отправим вам инструкции по сбросу.", "createPassword": "Создайте свой пароль", - "createAPassword": "Пароль", + "createAPassword": "Создайте пароль", "authRegisterAlreadyHaveAccount": "Уже есть аккаунт?", - "authRegisterLoginLink": "Войти", "commonAppName": "Checkmate", - "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.", "authLoginEnterEmail": "Введите свой email", "authRegisterTitle": "Создать аккаунт", "authRegisterStepOneTitle": "Создайте свой аккаут", @@ -45,8 +40,7 @@ "authSetNewPasswordDescription": "Ваш новый пароль должен отличаться от ранее использованных паролей.", "authSetNewPasswordNewPassword": "Новый пароль", "authSetNewPasswordConfirmPassword": "Подтвердите пароль", - "confirmPassword": "Введите пароль еще раз для подтверждения", - "confirmNewPasswordPlaceholder": "Подтвердите ваш новый пароль", + "confirmPassword": "Подтвердите ваш пароль", "authSetNewPasswordResetPassword": "Сбросить пароль", "authSetNewPasswordBackTo": "Назад к", "authPasswordMustBeAtLeast": "Должно быть как минимум", @@ -57,115 +51,54 @@ "authPasswordUpperCharacter": "один верхний символ", "authPasswordLowerCharacter": "один нижний символ", "authPasswordConfirmAndPassword": "Подтвердите пароль и пароль", - "authPasswordMustMatch": "Пароли должны совпадать", + "authPasswordMustMatch": "должен совпадать", "authRegisterCreateAccount": "Создайте свою учетную запись, чтобы начать", "authRegisterCreateSuperAdminAccount": "Создайте учетную запись суперадминистратора, чтобы начать работу", - "authRegisterSignUpWithEmail": "Создать учетную запись суперадминистратора", - "authRegisterBySigningUp": "Создавая учетную запись, вы соглашаетесь с нашими Условиями использования и Политикой конфиденциальности.", - "authRegisterFirstName": "Имя", - "authRegisterLastName": "Фамилия", - "authRegisterEmail": "Эл. почта", - "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите ваш адрес электронной почты", - "authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты", - "bulkImport": { - "title": "Массовый импорт", - "selectFileTips": "Выберите CSV-файл для загрузки", - "selectFileDescription": "Вы можете скачать наш или пример", - "selectFile": "Выбрать файл", - "parsingFailed": "Ошибка анализа", - "uploadSuccess": "Мониторы успешно созданы!", - "validationFailed": "Ошибка проверки", - "noFileSelected": "Файл не выбран", - "fallbackPage": "Импортируйте файл для загрузки списка серверов" - }, + "authRegisterSignUpWithEmail": "Зарегистрироваться по электронной почте", + "authRegisterBySigningUp": "Регистрируясь, вы соглашаетесь с нашими", "distributedStatusHeaderText": "Охват реального времени и реального устройства", "distributedStatusSubHeaderText": "Работает на миллионах устройств по всему миру, просматривайте производительность системы по глобальному региону, стране или городу", "settingsGeneralSettings": "Общие настройки", "settingsDisplayTimezone": "Отображать часовой пояс", - "settingsDisplayTimezoneDescription": "Выберите часовой пояс, используемый для отображения дат и времени в приложении.", + "settingsDisplayTimezoneDescription": "Часовой пояс панели мониторинга, которую вы публично отображаете.", "settingsAppearance": "Внешний вид", "settingsAppearanceDescription": "Переключение между светлым и темным режимом или изменение языка пользовательского интерфейса", "settingsThemeMode": "Тема", - "settingsThemeModeLight": "Светлая", - "settingsThemeModeDark": "Тёмная", "settingsLanguage": "Язык", - "settingsURLTitle": "Отображать IP/URL на странице статуса", - "settingsURLDescription": "Отображать IP-адрес или URL-адрес монитора на общедоступной странице статуса. Если отключено, будет отображаться только имя монитора для защиты конфиденциальной информации.", - "settingsURLSelectTitle": "Показать IP/URL на странице статуса", - "settingsURLEnabled": "Включено", - "settingURLDisabled": "Отключено", "settingsDistributedUptime": "Distributed uptime", "settingsDistributedUptimeDescription": "Включить/выключить distributed uptime monitoring.", "settingsEnabled": "Включено", "settingsDisabled": "Выключено", - "settingsHistoryAndMonitoring": "История мониторинга", - "settingsHistoryAndMonitoringDescription": "Определите, как долго вы хотите хранить исторические данные. Вы также можете очистить все существующие данные.", + "settingsHistoryAndMonitoring": "История и мониторинг", + "settingsHistoryAndMonitoringDescription": "Определите здесь, как долго вы хотите хранить данные. Вы также можете удалить все прошлые данные.", "settingsTTLLabel": "Дни, за которыми вы хотите следить.", "settingsTTLOptionalLabel": "0 для бесконечности", "settingsClearAllStats": "Очистить всю статистику. Это необратимо.", "settingsClearAllStatsButton": "Очистить всю статистику", "settingsClearAllStatsDialogTitle": "Хотите очистить всю статистику?", - "settingsClearAllStatsDialogDescription": "После удаления история мониторинга и статистика не могут быть восстановлены.", + "settingsClearAllStatsDialogDescription": "После удаления ваши мониторы не могут быть восстановлены.", "settingsClearAllStatsDialogConfirm": "Да, очистить всю статистику", - "settingsClearAllStatsDialogCancel": "Отмена", "settingsDemoMonitors": "Демо мониторы", - "settingsDemoMonitorsDescription": "Добавьте примеры мониторов для демонстрации.", - "settingsAddDemoMonitors": "Добавление демонстрационных мониторов", + "settingsDemoMonitorsDescription": "Здесь вы можете добавлять и удалять демонстрационные мониторы.", + "settingsAddDemoMonitors": "Добавьте демонстрационные мониторы", "settingsAddDemoMonitorsButton": "Добавьте демонстрационные мониторы", - "settingsSystemReset": "Сброс системы", - "settingsSystemResetDescription": "Удалить все мониторы из вашей системы.", - "settingsRemoveAllMonitors": "Удаление всех мониторов", - "settingsRemoveAllMonitorsButton": "Удалить все мониторы", + "settingsRemoveAllMonitors": "Удалить все демонстрационные мониторы", + "settingsRemoveAllMonitorsButton": "Удалить все демонстрационные мониторы", "settingsRemoveAllMonitorsDialogTitle": "Хотите удалить все мониторы?", - "settingsRemoveAllMonitorsDialogConfirm": "Да, удалить все мониторы", + "settingsRemoveAllMonitorsDialogConfirm": "Да, очистить все мониторы", "settingsWallet": "Кошелёк", "settingsWalletDescription": "Подключите свой кошелек здесь. Это необходимо для того, чтобы монитор Distributed Uptime мог подключиться к нескольким узлам по всему миру.", - "settingsEmail": "Настройки электронной почты", - "settingsEmailDescription": "Настройте параметры электронной почты", - "settingsEmailHost": "Хост электронной почты - имя хоста или IP-адрес SMTP-сервера", - "settingsEmailPort": "Порт электронной почты - порт для подключения", - "settingsEmailAddress": "Адрес электронной почты - используется для аутентификации", - "settingsEmailPassword": "Пароль электронной почты - пароль для аутентификации", - "settingsEmailUser": "Пользователь электронной почты - имя пользователя для аутентификации, переопределяет адрес электронной почты, если указан", - "settingsEmailFieldResetLabel": "Пароль установлен. Нажмите «Сбросить», чтобы изменить его.", - "settingsEmailConnectionHost": "Хост подключения электронной почты - имя хоста, используемое в приветствии HELO/EHLO", - "settingsTestEmail": "Отправить тестовое письмо", - "settingsTestEmailSuccess": "Тестовое письмо успешно отправлено", - "settingsTestEmailFailed": "Не удалось отправить тестовое письмо", - "settingsTestEmailFailedWithReason": "Не удалось отправить тестовое письмо: {{reason}}", - "settingsTestEmailUnknownError": "Неизвестная ошибка", - "settingsEmailRequiredFields": "Требуются хост и порт электронной почты", "settingsAbout": "О", "settingsDevelopedBy": "Developed by Bluewave Labs.", "settingsSave": "Сохранить", - "commonSave": "Сохранить", - "commonSaving": "Сохранение...", "settingsSuccessSaved": "Настройки успешно сохранены", "settingsFailedToSave": "Не удалось сохранить настройки", "settingsStatsCleared": "Статистика успешно очищена", "settingsFailedToClearStats": "Не удалось очистить статистику", - "FirstName": "Имя", - "LastName": "Фамилия", - "YourPhoto": "Фото профиля", - "PhotoDescriptionText": "Это фото будет отображаться на странице вашего профиля.", - "EmailDescriptionText": "Ваш текущий email—его нельзя изменить.", - "DeleteAccountTitle": "Удалить аккаунт", - "DeleteAccountButton": "Удалить аккаунт", - "DeleteDescriptionText": "Это удалит аккаунт и все связанные данные с сервера. Это необратимо.", - "DeleteAccountWarning": "Удаление аккаунта означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.", - "DeleteWarningTitle": "Действительно удалить этот аккаунт?", "settingsDemoMonitorsAdded": "Успешно добавлены демонстрационные мониторы", "settingsFailedToAddDemoMonitors": "Не удалось добавить демонстрационные мониторы", "settingsMonitorsDeleted": "Успешно удалены все мониторы", "settingsFailedToDeleteMonitors": "Не удалось удалить все мониторы", - "backendUnreachable": "Ошибка подключения к серверу", - "backendUnreachableMessage": "Мы не можем подключиться к серверу. Пожалуйста, проверьте ваше интернет-соединение или проверьте конфигурацию развертывания, если проблема не устраняется.", - "backendUnreachableError": "Невозможно подключиться к серверу. Пожалуйста, повторите попытку позже.", - "retryConnection": "Повторить подключение", - "retryingConnection": "Подключение...", - "backendReconnected": "Успешно восстановлено подключение к серверу.", - "backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.", - "backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте ваше сетевое подключение.", "starPromptTitle": "Star Checkmate", "starPromptDescription": "Ознакомьтесь с последними релизами и помогите развить сообщество на GitHub", "https": "HTTPS", @@ -176,7 +109,7 @@ "delete": "Удалить", "configure": "Настроить", "networkError": "Ошибка сети", - "responseTime": "Время ответа", + "responseTime": "Время ответа:", "ms": "мс", "bar": "Bar", "area": "Area", @@ -217,13 +150,15 @@ "label": "Slack", "description": "Чтобы включить уведомления Slack, создайте приложение Slack и включите входящие вебхуки. После этого просто укажите URL вебхука здесь.", "webhookLabel": "URL вебхука", - "webhookPlaceholder": "https://hooks.slack.com/services/..." + "webhookPlaceholder": "https://hooks.slack.com/services/...", + "webhookRequired": "Требуется URL-адрес Slack webhook" }, "discord": { "label": "Discord", "description": "Чтобы отправить данные на канал Discord из Checkmate через уведомления Discord с использованием веб-хуков, вы можете использовать функцию входящих веб-хуков Discord.", "webhookLabel": "Discord Webhook URL", - "webhookPlaceholder": "https://discord.com/api/webhooks/..." + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "Требуется URL-адрес веб-сайта Discord webhook" }, "telegram": { "label": "Telegram", @@ -231,16 +166,22 @@ "tokenLabel": "Ваш токен бота", "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", "chatIdLabel": "ID Вашего Чата", - "chatIdPlaceholder": "-1001234567890" + "chatIdPlaceholder": "-1001234567890", + "fieldsRequired": "Требуется токен Telegram и ID чата" }, "webhook": { "label": "Вебхуки", "description": "Вы можете настроить пользовательский вебхук для получения уведомлений о возникновении инцидентов.", "urlLabel": "URL вебхука", - "urlPlaceholder": "https://your-server.com/webhook" + "urlPlaceholder": "https://your-server.com/webhook", + "urlRequired": "Требуется URL-адрес webhook" }, "testNotificationDevelop": "Тестовое уведомление 2", - "integrationButton": "" + "integrationButton": "Интеграция уведомлений", + "testSuccess": "Уведомление о тестировании отправлено успешно!", + "testFailed": "Не удалось отправить тестовое уведомление", + "unsupportedType": "Неподдерживаемый тип уведомления", + "networkError": "Произошла сетевая ошибка" }, "testLocale": "testLocale", "add": "Добавить", @@ -331,123 +272,189 @@ "integrationsDiscordInfo": "Подключитесь к Discord и просматривайте инциденты прямо в канале", "integrationsZapier": "Zapier", "integrationsZapierInfo": "Отправляйте все инциденты в Zapier, и тогда вы сможете видеть их везде", - "createYour": "", - "createMonitor": "", - "pause": "", - "resume": "", - "editing": "", - "url": "", - "access": "", - "timezone": "", - "features": "", - "administrator": "", - "loginHere": "", - "displayName": "", - "urlMonitor": "", - "portToMonitor": "", - "websiteMonitoring": "", - "websiteMonitoringDescription": "", - "pingMonitoring": "", - "pingMonitoringDescription": "", - "dockerContainerMonitoring": "", - "window": "", - "cancel": "", - "message": "", - "low": "", - "high": "", - "statusCode": "", - "date&Time": "", - "type": "", - "statusPageName": "", - "publicURL": "", - "repeat": "", - "edit": "", - "createA": "", - "remove": "", - "maintenanceWindowDescription": "", - "startTime": "", - "timeZoneInfo": "", - "monitorsToApply": "", - "nextWindow": "", - "notFoundButton": "", - "pageSpeedConfigureSettingsDescription": "", - "monitorDisplayName": "", - "whenNewIncident": "", - "notifySMS": "", - "notifyEmails": "", - "seperateEmails": "", - "checkFrequency": "", - "matchMethod": "", - "expectedValue": "", - "deleteDialogTitle": "", - "deleteDialogDescription": "", - "pageSpeedMonitor": "", - "shown": "", - "ago": "", - "companyName": "", - "pageSpeedDetailsPerformanceReport": "", - "pageSpeedDetailsPerformanceReportCalculator": "", - "checkingEvery": "", - "statusPageCreateSettings": "", - "basicInformation": "", - "statusPageCreateBasicInfoDescription": "", - "statusPageCreateSelectTimeZoneDescription": "", - "statusPageCreateAppearanceDescription": "", - "statusPageCreateSettingsCheckboxLabel": "", - "statusPageCreateBasicInfoStatusPageAddress": "", - "statusPageCreateTabsContent": "", - "statusPageCreateTabsContentDescription": "", - "statusPageCreateTabsContentFeaturesDescription": "", - "showCharts": "", - "showUptimePercentage": "", - "removeLogo": "", - "statusPageStatus": "", - "statusPageStatusContactAdmin": "", - "statusPageStatusNotPublic": "", - "statusPageStatusNoPage": "", - "statusPageStatusServiceStatus": "", - "deleteStatusPage": "", - "deleteStatusPageConfirm": "", - "deleteStatusPageDescription": "", - "uptimeCreate": "", - "uptimeCreateJsonPath": "", - "uptimeCreateJsonPathQuery": "", - "maintenanceTableActionMenuDialogTitle": "", - "incidentsPageTitle": "Инциденты", - "passwordPanel": { - "passwordChangedSuccess": "Ваш пароль был успешно изменен.", - "passwordInputIncorrect": "Ваш пароль введен неверно.", - "currentPassword": "Текущий пароль", - "enterCurrentPassword": "Введите ваш текущий пароль", - "newPassword": "Новый пароль", - "enterNewPassword": "Введите ваш новый пароль", - "confirmNewPassword": "Подтвердите новый пароль", - "passwordRequirements": "Новый пароль должен содержать не менее 8 символов и должен иметь как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ.", - "saving": "Сохранение..." + "commonSave": "Сохранить", + "createYour": "Создать свой", + "createMonitor": "Создать монитор", + "pause": "Пауза", + "resume": "Продолжить", + "editing": "Редактирование...", + "url": "URL", + "access": "Доступ", + "timezone": "Часовой пояс", + "features": "Функции", + "administrator": "Администратор?", + "loginHere": "Войти здесь", + "displayName": "Отображаемое имя", + "urlMonitor": "URL для монитора", + "portToMonitor": "Порт для монитора", + "websiteMonitoring": "Мониторинг сайта", + "websiteMonitoringDescription": "Используйте HTTP(s) для вашего веб-сайта или API-endpoint.", + "pingMonitoring": "Ping мониторинг", + "pingMonitoringDescription": "Проверьте, доступен ли ваш сервер.", + "dockerContainerMonitoring": "Мониторинг Docker-контейнера", + "dockerContainerMonitoringDescription": "Проверьте, запущен ли ваш Docker-контейнер.", + "portMonitoring": "Мониторинг портов", + "portMonitoringDescription": "Проверьте, открыт ли ваш порт.", + "createMaintenanceWindow": "Создать окно техобслуживания", + "createMaintenance": "Создание техобслуживания", + "editMaintenance": "Редактировать техобслуживание", + "maintenanceWindowName": "Название окна техобслуживания", + "friendlyNameInput": "Дружественное имя", + "friendlyNamePlaceholder": "Техническое обслуживание в __ : __ в течение ___ минут", + "maintenanceRepeat": "Повторное техническое обслуживание", + "maintenance": "техобслуживание", + "duration": "Продолжительность", + "addMonitors": "Добавить мониторы", + "window": "окно", + "cancel": "Отмена", + "message": "Сообщение", + "low": "низкий", + "high": "высокий", + "statusCode": "Код статуса", + "date&Time": "Дата и Время", + "type": "Тип", + "statusPageName": "Имя страница статуса", + "publicURL": "Публичный URL", + "repeat": "Повторить", + "edit": "Редактировать", + "createA": "Создать", + "remove": "Удалить", + "maintenanceWindowDescription": "Ваши запросы не будут отправляться в этот период времени.", + "startTime": "Время начала", + "timeZoneInfo": "Все даты и время указаны в часовом поясе GMT+0.", + "monitorsToApply": "Мониторы, к которым применяется окно техобслуживания", + "nextWindow": "Следующее окно", + "notFoundButton": "Перейти на главную панель управления", + "pageSpeedConfigureSettingsDescription": "Здесь вы можете выбрать URL-адрес хоста, а также тип монитора.", + "monitorDisplayName": "Отображаемое имя монитора", + "whenNewIncident": "Когда происходит новый инцидент,", + "notifySMS": "Уведомить по SMS (скоро)", + "notifyEmails": "Также уведомлять по электронной почте на несколько адресов (скоро)", + "seperateEmails": "Вы можете разделить несколько адресов электронной почты запятой.", + "checkFrequency": "Проверить частоту", + "matchMethod": "Метод сопоставления", + "expectedValue": "Ожидаемое значение", + "deleteDialogTitle": "Вы действительно хотите удалить этот монитор?", + "deleteDialogDescription": "После удаления этот монитор не может быть восстановлен.", + "pageSpeedMonitor": "PageSpeed ​​монитор", + "shown": "Показано", + "ago": "назад", + "companyName": "Название компании", + "pageSpeedDetailsPerformanceReport": "Значения являются приблизительными и могут отличаться.", + "pageSpeedDetailsPerformanceReportCalculator": "Посмотреть калькулятор", + "checkingEvery": "Проверка каждого", + "statusPageCreateSettings": "Если ваша страница статуса готова, вы можете отметить ее как опубликованную.", + "basicInformation": "Основная информация", + "statusPageCreateBasicInfoDescription": "Определите название компании и поддомен, на который ссылается ваша страница статуса.", + "statusPageCreateSelectTimeZoneDescription": "Выберите часовой пояс, в котором будет отображаться ваша страница статуса.", + "statusPageCreateAppearanceDescription": "Определите внешний вид и содержание вашей публичной страницы статуса по умолчанию.", + "statusPageCreateSettingsCheckboxLabel": "Опубликовано и доступно для общественности", + "statusPageCreateBasicInfoStatusPageAddress": "Адрес вашей страницы статуса", + "statusPageCreateTabsContent": "Серверы страниц состояния", + "statusPageCreateTabsContentDescription": "Вы можете добавить любое количество серверов, которые вы отслеживаете, на свою страницу статуса. Вы также можете изменить их порядок для лучшего просмотра.", + "statusPageCreateTabsContentFeaturesDescription": "Показать больше подробностей на странице статуса", + "showCharts": "Показать графики", + "showUptimePercentage": "Показать процент работоспособности", + "removeLogo": "Удалить логотип", + "statusPageStatus": "Публичная страница статуса не создана.", + "statusPageStatusContactAdmin": "Пожалуйста, свяжитесь с вашим администратором.", + "statusPageStatusNotPublic": "Эта страница статуса не является публичной.", + "statusPageStatusNoPage": "Здесь нет страницы статуса.", + "statusPageStatusServiceStatus": "Статус услуги", + "deleteStatusPage": "Вы хотите удалить эту страницу статуса?", + "deleteStatusPageConfirm": "Да, удалить страницу статуса", + "deleteStatusPageDescription": "После удаления ваша страница статуса не может быть восстановлена.", + "uptimeCreate": "Ожидаемое значение используется для сопоставления с результатом ответа, и совпадение определяет статус.", + "uptimeCreateJsonPath": "Это выражение будет оценено по данным ответа JSON, а результат будет использован для сопоставления с ожидаемым значением. См.", + "uptimeCreateJsonPathQuery": "для документации по языку запросов.", + "maintenanceTableActionMenuDialogTitle": "Вы действительно хотите удалить это окно обслуживания?", + "infrastructureEditYour": "Отредактируйте свой", + "infrastructureEditMonitor": "Сохранить Монитор Инфраструктуры", + "infrastructureMonitorCreated": "Монитор инфраструктуры успешно создан!", + "infrastructureMonitorUpdated": "Монитор инфраструктуры успешно обновлен!", + "errorInvalidTypeId": "Указанный неверный тип уведомления", + "errorInvalidFieldId": "Указан неверный идентификатор поля", + "inviteNoTokenFound": "Токен приглашения не найден", + "pageSpeedWarning": "Внимание: Вы еще не добавили API-ключ Google PageSpeed. Без него PageSpeed монитор не будет работать.", + "pageSpeedLearnMoreLink": "Нажми здесь", + "pageSpeedAddApiKey": "чтобы добавить свой API-ключ.", + "update": "Обновить", + "invalidFileFormat": "Неподдерживаемый формат файла!", + "invalidFileSize": "Размер файла слишком велик!", + "ClickUpload": "Нажмите, чтобы загрузить", + "DragandDrop": "drag and drop", + "MaxSize": "Максимальный размер", + "SupportedFormats": "Поддерживаемые форматы", + "FirstName": "Имя", + "LastName": "Фамилия", + "EmailDescriptionText": "Это ваш текущий адрес электронной почты — он не может быть изменен.", + "YourPhoto": "Фотография профиля", + "PhotoDescriptionText": "Эта фотография будет отображена на странице вашего профиля.", + "save": "Сохранить", + "DeleteDescriptionText": "Это приведет к удалению учетной записи и всех связанных с ней данных с сервера. Это необратимо.", + "DeleteAccountWarning": "Удаление вашей учетной записи означает, что вы не сможете снова войти в систему, и все ваши данные будут удалены. Это необратимо.", + "DeleteWarningTitle": "Действительно удаляете эту учетную запись?", + "authRegisterFirstName": "Имя", + "authRegisterLastName": "Фамилия", + "authRegisterEmail": "Email", + "authRegisterEmailRequired": "Чтобы продолжить, пожалуйста, введите свой адрес электронной почты", + "bulkImport": { + "title": "Массовый импорт", + "selectFileTips": "Выберите CSV-файл для загрузки", + "selectFileDescription": "Вы можете скачать наш или образец", + "selectFile": "Выберите файл", + "parsingFailed": "Не удалось выполнить синтаксический анализ", + "uploadSuccess": "Мониторы успешно созданы!", + "validationFailed": "Не удалось выполнить проверку", + "noFileSelected": "Файл не выбран", + "fallbackPage": "Импортируйте файл для массовой загрузки списка серверов" }, - "pageSpeedWarning": "Предупреждение: Вы не добавили ключ API Google PageSpeed. Без него монитор PageSpeed не будет работать.", - "pageSpeedLearnMoreLink": "Нажмите здесь, чтобы узнать", - "pageSpeedAddApiKey": "как добавить ваш ключ API.", - "pageSpeedApiKeyFieldTitle": "Ключ Google PageSpeed API", - "pageSpeedApiKeyFieldLabel": "Ключ PageSpeed API", - "pageSpeedApiKeyFieldDescription": "Введите свой ключ Google PageSpeed API, чтобы включить мониторинг скорости страниц. Нажмите «Сбросить», чтобы обновить ключ.", - "pageSpeedApiKeyFieldResetLabel": "Ключ API установлен. Нажмите «Сбросить», чтобы изменить его.", - "createNew": "Создать новый", + "welcomeBack": "Добро пожаловать обратно! Вы успешно вошли в систему.", + "authRegisterLoginLink": "Войти", + "validationNameRequired": "Пожалуйста, введите свое имя", + "validationNameTooLong": "Длина имени не должна превышать 50 символов", + "validationNameInvalidCharacters": "Пожалуйста, используйте только буквы, пробелы, апострофы или дефисы", + "settingsSystemReset": "Сброс системы", + "settingsSystemResetDescription": "Удалите все мониторы из вашей системы.", + "DeleteAccountTitle": "Удалить аккаунт", + "DeleteAccountButton": "Удалить аккаунт", + "authRegisterEmailInvalid": "Пожалуйста, введите действительный адрес электронной почты", + "publicLink": "Публичная ссылка", + "doNotHaveAccount": "У вас нет учетной записи?", + "registerHere": "Зарегистрируйтесь здесь", + "backendUnreachable": "Ошибка подключения к серверу", + "backendUnreachableMessage": "Нам не удается подключиться к серверу. Пожалуйста, проверьте подключение к Интернету или конфигурацию вашего развертывания, если проблема не устранена.", + "backendUnreachableError": "Не удается подключиться к серверу. Пожалуйста, повторите попытку позже.", + "retryConnection": "Повторите попытку подключения", + "retryingConnection": "Подключение...", + "backendReconnected": "Успешно подключен к серверу.", + "backendStillUnreachable": "Сервер по-прежнему недоступен. Пожалуйста, повторите попытку позже.", + "backendConnectionError": "Ошибка подключения к серверу. Пожалуйста, проверьте свое сетевое подключение.", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "pageSpeedApiKeyFieldTitle": "Ключ API Google PageSpeed", + "pageSpeedApiKeyFieldLabel": "Ключ API PageSpeed", + "pageSpeedApiKeyFieldDescription": "Введите свой API-ключ Google PageSpeed, чтобы включить мониторинг скорости страницы. Нажмите \"Сброс\", чтобы обновить ключ.", + "pageSpeedApiKeyFieldResetLabel": "Установлен ключ API. Нажмите \"Сброс\", чтобы изменить его.", + "reset": "Сброс", + "ignoreTLSError": "Игнорировать ошибку TLS/SSL", + "tlsErrorIgnored": "Ошибки TLS/SSL игнорируются", + "ignoreTLSErrorDescription": "Игнорируйте ошибки TLS/SSL и продолжайте проверять доступность веб-сайта", + "createNew": "Создавать новые", "greeting": { - "prepend": "Привет", - "append": "День прекрасен для новых достижений!", + "prepend": "Эй там", + "append": "Вторая половина дня — это ваша игровая площадка - давайте сделаем ее эпичной!", "overview": "Вот обзор ваших мониторов {{type}}." }, "monitorStatus": { - "up": "работает", - "down": "не работает", - "paused": "приостановлен" + "up": "доступен", + "down": "недоступен", + "paused": "остановлен" }, "roles": { - "superAdmin": "Суперадминистратор", - "admin": "Администратор", + "superAdmin": "Главный админ", + "admin": "Админ", "teamMember": "Член команды", - "demoUser": "Демо-пользователь" + "demoUser": "Демо пользователь" }, "teamPanel": { "teamMembers": "Члены команды", @@ -456,30 +463,30 @@ "member": "Член" }, "inviteTeamMember": "Пригласить члена команды", - "inviteNewTeamMember": "Пригласить нового члена команды", - "inviteDescription": "Когда вы добавляете нового члена команды, он получит доступ ко всем мониторам.", - "email": "Эл. почта", + "inviteNewTeamMember": "Пригласите нового члена команды", + "inviteDescription": "Когда вы добавите нового члена команды, он получит доступ ко всем мониторам.", + "email": "Email", "selectRole": "Выберите роль", "inviteLink": "Ссылка для приглашения", - "cancel": "Отмена", - "noMembers": "Нет членов команды с этой ролью", + "cancel": "Отменить", + "noMembers": "В команде нет членов с такой ролью", "getToken": "Получить токен", - "emailToken": "Отправить токен по эл. почте", + "emailToken": "E-mail токен", "table": { "name": "Имя", - "email": "Эл. почта", + "email": "Email", "role": "Роль", - "created": "Создан" + "created": "Создано" } }, "monitorState": { - "paused": "приостановлен", - "resumed": "возобновлен", - "active": "активный" + "paused": "Остановлено", + "resumed": "Продолжено", + "active": "Активно" }, "menu": { "uptime": "Аптайм", - "pagespeed": "Скорость страницы", + "pagespeed": "Pagespeed", "infrastructure": "Инфраструктура", "distributedUptime": "Распределенный Аптайм", "incidents": "Инциденты", @@ -488,16 +495,63 @@ "integrations": "Интеграции", "settings": "Настройки", "support": "Поддержка", + "discussions": "Обсуждения", + "docs": "Документация", + "changelog": "Журнал изменений", "profile": "Профиль", "password": "Пароль", "team": "Команда", - "logOut": "Выйти", - "discussions": "Обсуждения", - "docs": "Документация", - "changelog": "История изменений" + "logOut": "Выйти" }, - "navControls": "Управление", + "settingsEmail": "Настройки Email", + "settingsEmailDescription": "Настройка параметров email", + "settingsEmailHost": "Email host", + "settingsEmailPort": "Email port", + "settingsEmailAddress": "Email address", + "settingsEmailPassword": "Email пароль", + "settingsEmailUser": "Email пользователь", + "settingsEmailFieldResetLabel": "Пароль установлен. Нажмите \"Сброс\", чтобы изменить его.", + "state": "Состояние", "statusBreadCrumbsStatusPages": "Страницы статуса", "statusBreadCrumbsDetails": "Подробности", - "uptimeCreateSelectURL": "Введите URL или IP для мониторинга (например, https://example.com/ или 192.168.1.100) и добавьте понятное отображаемое имя, которое будет показано на панели управления." + "authForgotPasswordInstructions": "Не беспокойтесь, мы вышлем вам инструкции по сбросу настроек.", + "settingsThemeModeLight": "Светлая", + "settingsThemeModeDark": "Тёмная", + "settingsClearAllStatsDialogCancel": "Отменить", + "commonSaving": "Сохранение...", + "navControls": "Управления", + "incidentsPageTitle": "Инциденты", + "passwordPanel": { + "passwordChangedSuccess": "Ваш пароль был успешно изменен.", + "passwordInputIncorrect": "Ваш пароль был введен неверно.", + "currentPassword": "Current пароль", + "enterCurrentPassword": "Введите свой текущий пароль", + "newPassword": "Новый пароль", + "enterNewPassword": "Введите свой новый пароль", + "confirmNewPassword": "Подтвердите новый пароль", + "passwordRequirements": "Новый пароль должен содержать не менее 8 символов и содержать как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ.", + "saving": "Сохранение..." + }, + "uptimeCreateSelectURL": "Введите URL-адрес или IP-адрес для отслеживания (например, https://example.com/ или 192.168.1.100) и добавьте понятное отображаемое имя, которое будет отображаться на панели мониторинга.", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" } diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index e411b7e4a..91626478e 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -1,7 +1,5 @@ { "dontHaveAccount": "Hesabınız yok mu", - "doNotHaveAccount": "Hesabınız yok mu?", - "registerHere": "Buradan kayıt olun", "email": "E-posta", "forgotPassword": "Parolamı unuttum", "password": "Parola", @@ -16,13 +14,10 @@ "commonBack": "Geri", "authForgotPasswordTitle": "Parolanızı mı unuttunuz?", "authForgotPasswordResetPassword": "Parola sıfırla", - "authForgotPasswordInstructions": "Endişelenmeyin, size sıfırlama talimatlarını göndereceğiz.", "createPassword": "Parolanızı oluşturun", - "createAPassword": "Parola", + "createAPassword": "Bir parola oluşturun", "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", - "authRegisterLoginLink": "Giriş Yap", "commonAppName": "Checkmate", - "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.", "authLoginEnterEmail": "E-posta adresinizi girin", "authRegisterTitle": "Hesap oluştur", "authRegisterStepOneTitle": "Hesabınızı oluşturun", @@ -45,8 +40,7 @@ "authSetNewPasswordDescription": "Yeni şifreniz daha önce kullanılan şifrelerden farklı olmalıdır.", "authSetNewPasswordNewPassword": "Yeni şifre", "authSetNewPasswordConfirmPassword": "Parolayı onayla", - "confirmPassword": "Onaylamak için parolayı tekrar girin", - "confirmNewPasswordPlaceholder": "Yeni parolanızı onaylayın", + "confirmPassword": "Parolanızı onaylayın", "authSetNewPasswordResetPassword": "Parola sıfırla", "authSetNewPasswordBackTo": "Geri dön", "authPasswordMustBeAtLeast": "En az", @@ -57,7 +51,7 @@ "authPasswordUpperCharacter": "bir büyük harf", "authPasswordLowerCharacter": "bir küçük harf", "authPasswordConfirmAndPassword": "Onay şifresi ve şifre", - "authPasswordMustMatch": "Parolalar eşleşmelidir", + "authPasswordMustMatch": "eşleşmelidir", "authRegisterCreateAccount": "Hesap oluşturmak için devam et", "authRegisterCreateSuperAdminAccount": "Super admin hesabınızı oluşturmak için devam edin", "authRegisterSignUpWithEmail": "E-posta ile kayıt ol", @@ -66,58 +60,34 @@ "distributedStatusSubHeaderText": "Dünya çapında milyonlarca cihaz tarafından desteklenen sistem performansını küresel bölgeye, ülkeye veya şehre göre görüntüleyin", "settingsGeneralSettings": "Genel ayarlar", "settingsDisplayTimezone": "Görüntüleme saat dilimi", - "settingsDisplayTimezoneDescription": "Uygulama genelinde tarih ve saatlerin görüntülenmesi için kullanılacak saat dilimini seçin.", + "settingsDisplayTimezoneDescription": "Herkese açık olarak görüntülediğiniz kontrol panelinin saat dilimi.", "settingsAppearance": "Görünüm", "settingsAppearanceDescription": "Açık ve koyu mod arasında geçiş yapın veya kullanıcı arayüzü dilini değiştirin", "settingsThemeMode": "Tema", - "settingsThemeModeLight": "Açık", - "settingsThemeModeDark": "Koyu", "settingsLanguage": "Dil", - "settingsURLTitle": "Durum Sayfasında IP/URL'yi Göster", - "settingsURLDescription": "Monitörün IP adresini veya URL'sini genel Durum sayfasında göster. Devre dışı bırakıldığında, hassas bilgileri korumak için yalnızca monitör adı gösterilecektir.", - "settingsURLSelectTitle": "Durum sayfasında IP/URL'yi göster", - "settingsURLEnabled": "Etkin", - "settingURLDisabled": "Devre Dışı", "settingsDistributedUptime": "Dağıtılmış çalışma süresi", "settingsDistributedUptimeDescription": "Dağıtılmış çalışma süresi izlemeyi etkinleştirin/devre dışı bırakın.", "settingsEnabled": "Etkin", "settingsDisabled": "Devre dışı", - "settingsHistoryAndMonitoring": "İzleme geçmişi", - "settingsHistoryAndMonitoringDescription": "Geçmiş verileri ne kadar süre saklamak istediğinizi tanımlayın. Ayrıca mevcut tüm verileri temizleyebilirsiniz.", + "settingsHistoryAndMonitoring": "Geçmiş ve izleme", + "settingsHistoryAndMonitoringDescription": "Verileri ne kadar süreyle saklamak istediğinizi burada tanımlayın. Ayrıca tüm geçmiş verileri kaldırabilirsiniz.", "settingsTTLLabel": "İzleme geçmişini saklamak istediğiniz gün sayısı.", "settingsTTLOptionalLabel": "Sınırsız için 0", "settingsClearAllStats": "Tüm istatistikleri temizle. Bu geri alınamaz.", "settingsClearAllStatsButton": "Tüm istatistikleri temizle", "settingsClearAllStatsDialogTitle": "Tüm istatistikleri temizlemek istiyor musunuz?", - "settingsClearAllStatsDialogDescription": "Kaldırıldıktan sonra, izleme geçmişi ve istatistikleri geri alınamaz.", + "settingsClearAllStatsDialogDescription": "Silindikten sonra, monitörleriniz geri alınamaz.", "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", - "settingsClearAllStatsDialogCancel": "İptal", "settingsDemoMonitors": "Demo monitörler", - "settingsDemoMonitorsDescription": "Gösterim amaçlı örnek monitörler ekleyin.", - "settingsAddDemoMonitors": "Demo monitörler ekleniyor", + "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", + "settingsAddDemoMonitors": "Demo monitörler ekle", "settingsAddDemoMonitorsButton": "Demo monitörler ekle", - "settingsSystemReset": "Sistem sıfırlama", - "settingsSystemResetDescription": "Sisteminizden tüm monitörleri kaldırın.", - "settingsRemoveAllMonitors": "Tüm monitörler kaldırılıyor", + "settingsRemoveAllMonitors": "Tüm monitörleri kaldır", "settingsRemoveAllMonitorsButton": "Tüm monitörleri kaldır", "settingsRemoveAllMonitorsDialogTitle": "Tüm monitörleri kaldırmak istiyor musunuz?", - "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri kaldır", + "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri temizle", "settingsWallet": "Cüzdan", "settingsWalletDescription": "Cüzdanınızı buradan bağlayın. Bu, Dağıtılmış Çalışma Süresi monitörünün küresel olarak birden çok düğüme bağlanması için gereklidir.", - "settingsTestEmail": "Test e-postası gönder", - "settingsTestEmailSuccess": "Test e-postası başarıyla gönderildi", - "settingsTestEmailFailed": "Test e-postası gönderilemedi", - "settingsTestEmailFailedWithReason": "Test e-postası gönderilemedi: {{reason}}", - "settingsTestEmailUnknownError": "Bilinmeyen hata", - "settingsEmail": "E-posta", - "settingsEmailDescription": "Sisteminiz için e-posta ayarlarını yapılandırın. Bu, bildirim ve uyarıları göndermek için kullanılır.", - "settingsEmailHost": "E-posta sunucusu - SMTP sunucusunun ana bilgisayar adı veya IP adresi", - "settingsEmailPort": "E-posta portu - Bağlanılacak port", - "settingsEmailUser": "E-posta kullanıcısı - Kimlik doğrulama için kullanıcı adı, belirtilirse e-posta adresini geçersiz kılar", - "settingsEmailAddress": "E-posta adresi - Kimlik doğrulama için kullanılır", - "settingsEmailPassword": "E-posta şifresi - Kimlik doğrulama için şifre", - "settingsEmailConnectionHost": "E-posta bağlantı sunucusu - HELO/EHLO selamlamasında kullanılacak ana bilgisayar adı", - "settingsEmailRequiredFields": "E-posta sunucusu ve port gereklidir", "settingsAbout": "Hakkında", "settingsDevelopedBy": "Bluewave Labs tarafından geliştirilmiştir.", "settingsSave": "Kaydet", @@ -129,14 +99,6 @@ "settingsFailedToAddDemoMonitors": "Demo monitörler eklenemedi", "settingsMonitorsDeleted": "Tüm monitörler başarıyla silindi", "settingsFailedToDeleteMonitors": "Monitörler silinemedi", - "backendUnreachable": "Sunucu Bağlantı Hatası", - "backendUnreachableMessage": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.", - "backendUnreachableError": "Sunucuya bağlanılamıyor. Lütfen daha sonra tekrar deneyin.", - "retryConnection": "Bağlantıyı Yeniden Dene", - "retryingConnection": "Bağlanıyor...", - "backendReconnected": "Sunucuya başarıyla yeniden bağlandı.", - "backendStillUnreachable": "Sunucu hala erişilemez durumda. Lütfen daha sonra tekrar deneyin.", - "backendConnectionError": "Sunucuya bağlanırken hata oluştu. Lütfen ağ bağlantınızı kontrol edin.", "starPromptTitle": "Checkmate yıldızla değerlendirin", "starPromptDescription": "En son sürümleri görün ve GitHub'daki topluluğun büyümesine yardımcı olun", "https": "HTTPS", @@ -147,7 +109,7 @@ "delete": "Sil", "configure": "Yapılandır", "networkError": "Ağ hatası", - "responseTime": "Yanıt süresi", + "responseTime": "Yanıt süresi:", "ms": "ms", "bar": "Çubuk", "area": "Alan", @@ -189,14 +151,14 @@ "description": "Slack bildirimlerini etkinleştirmek için bir Slack uygulaması oluşturun ve gelen web kancalarını etkinleştirin. Daha sonra, webhook URL’sini buraya girmeniz yeterlidir.\n\n\n\n\n\n", "webhookLabel": "Web kanca URL:", "webhookPlaceholder": "https://hooks.slack.com/services/...", - "webhookRequired": "" + "webhookRequired": "Slack webhook URL'si gereklidir" }, "discord": { "label": "Discord", "description": "Checkmate’ten Discord bildirimleri aracılığıyla bir Discord kanalına veri göndermek için Discord’un gelen web kancaları özelliğini kullanabilirsiniz.\n\n\n\n\n\n\n\n", "webhookLabel": "Discord web kanca URL", "webhookPlaceholder": "https://discord.com/api/webhooks/...", - "webhookRequired": "" + "webhookRequired": "Discord webhook URL'si gerekli" }, "telegram": { "label": "Telegram", @@ -205,21 +167,21 @@ "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", "chatIdLabel": "Sohbet ID", "chatIdPlaceholder": "-1001234567890", - "fieldsRequired": "" + "fieldsRequired": "Telegram token ve sohbet kimliği gereklidir" }, "webhook": { "label": "Web kancaları", "description": "Olaylar meydana geldiğinde bildirim almak için özel bir web kancası ayarlayabilirsiniz.", "urlLabel": "Web kanca URL:", "urlPlaceholder": "https://sunucu-adresiniz.com/webhook", - "urlRequired": "" + "urlRequired": "Webhook URL'si gerekli" }, "testNotificationDevelop": "Test bildirimi 2", "integrationButton": "Bildirim Entegrasyonu", - "testSuccess": "", - "testFailed": "", - "unsupportedType": "", - "networkError": "" + "testSuccess": "Test bildirimi başarıyla gönderildi", + "testFailed": "Test bildirimi gönderilemedi", + "unsupportedType": "Desteklenmeyen bildirim türü", + "networkError": "Ağ hatası oluştu" }, "testLocale": "TEST13 UPLOAD", "add": "Ekle", @@ -228,14 +190,14 @@ "distributedUptimeStatusCreateStatusPageAccess": "Erişim", "distributedUptimeStatusCreateStatusPageReady": "Durum sayfanız hazırsa yayınlayabilirsiniz.", "distributedUptimeStatusBasicInfoHeader": "Temel bilgiler", - "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusBasicInfoDescription": "Şirket adınızı ve durum sayfanızın işaret ettiği alt alan adını tanımlayın.", "distributedUptimeStatusLogoHeader": "Logo", "distributedUptimeStatusLogoDescription": "Durum sayfanız için bir logo yükleyin", "distributedUptimeStatusLogoUploadButton": "Logo yükle", "distributedUptimeStatusStandardMonitorsHeader": "Standart monitörler", "distributedUptimeStatusStandardMonitorsDescription": "Durum sayfanıza standart monitörleri ekleyin.", - "distributedUptimeStatusCreateYour": "", - "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusCreateYour": "Oluştur:", + "distributedUptimeStatusEditYour": "Düzenle:", "distributedUptimeStatusPublishedLabel": "Yayında ve herkes tarafından görülebilir", "distributedUptimeStatusCompanyNameLabel": "Şirket adı", "distributedUptimeStatusPageAddressLabel": "Durum sayfası adresi", @@ -269,11 +231,11 @@ "incidentsOptionsHeaderLastDay": "Son gün", "incidentsOptionsHeaderLastWeek": "Son hafta", "incidentsOptionsPlaceholderAllServers": "Tüm sunucular", - "infrastructureCreateYour": "", - "infrastructureCreateGeneralSettingsDescription": "", - "infrastructureServerRequirement": "", + "infrastructureCreateYour": "Oluştur:", + "infrastructureCreateGeneralSettingsDescription": "Burada, sunucu aracısına bağlanmak için kolay ad ve yetkilendirme sırrıyla birlikte ana bilgisayarın URL'sini seçebilirsiniz.", + "infrastructureServerRequirement": "İzlediğiniz sunucunun şu şekilde çalışması gerekir:", "infrastructureCustomizeAlerts": "Alarmları özelleştir", - "infrastructureAlertNotificationDescription": "", + "infrastructureAlertNotificationDescription": "Eşikler belirtilen bir yüzdeyi aştığında kullanıcıya bildirim gönder.", "infrastructureCreateMonitor": "Altyapı Monitörü oluştur", "infrastructureProtocol": "Protokol", "infrastructureServerUrlLabel": "Sunucu adresi", @@ -298,21 +260,20 @@ "avgCpuTemperature": "Ortalama CPU Isısı", "memory": "Bellek", "disk": "Disk", - "uptime": "", + "uptime": "Çalışma süresi", "os": "İşletim sistemi", "host": "Makine", "actions": "İşlemler", "integrations": "Entegrasyonlar", "integrationsPrism": "Prism'i favori servisinize bağlayın.", "integrationsSlack": "Slack", - "integrationsSlackInfo": "", + "integrationsSlackInfo": "Slack'e bağlanın ve bir kanaldaki olayları görün", "integrationsDiscord": "Discord", - "integrationsDiscordInfo": "", + "integrationsDiscordInfo": "Discord'a bağlanın ve olayları doğrudan bir kanalda görüntüleyin", "integrationsZapier": "Zapier", - "integrationsZapierInfo": "", + "integrationsZapierInfo": "Tüm olayları Zapier'a gönderin ve sonra her yerde görün", "commonSave": "Kaydet", - "commonSaving": "Kaydediliyor...", - "createYour": "", + "createYour": "Senin yarat", "createMonitor": "Monitör oluştur", "pause": "Beklet", "resume": "Yeniden başlat", @@ -327,7 +288,7 @@ "urlMonitor": "Monitör edilecek URL", "portToMonitor": "Monitör edilecek port", "websiteMonitoring": "Web sitesi monitörü", - "websiteMonitoringDescription": "", + "websiteMonitoringDescription": "Web sitenizi veya API uç noktanızı izlemek için HTTP(s) kullanın.", "pingMonitoring": "Ping monitörü", "pingMonitoringDescription": "Sitenizin ayakta olup olmadığını denetleyin.", "dockerContainerMonitoring": "Docker konteyner monitörü", @@ -350,50 +311,50 @@ "low": "düşük", "high": "yüksek", "statusCode": "Durum kodu", - "date&Time": "", - "type": "", - "statusPageName": "", - "publicURL": "", - "repeat": "", - "edit": "", - "createA": "", - "remove": "", - "maintenanceWindowDescription": "", + "date&Time": "Tarih & saat", + "type": "Tür", + "statusPageName": "Durum sayfası adı", + "publicURL": "Genel URL", + "repeat": "Tekrarla", + "edit": "Düzenle", + "createA": "Bir tane oluştur", + "remove": "Kaldırmak", + "maintenanceWindowDescription": "Bu zaman diliminde pingleriniz gönderilmeyecek", "startTime": "Başlangıç saati", - "timeZoneInfo": "", - "monitorsToApply": "", + "timeZoneInfo": "Tüm tarihler ve saatler GMT+0 zaman dilimindedir.", + "monitorsToApply": "Bakım penceresini uygulamak için monitörler", "nextWindow": "Sonraki pencere", - "notFoundButton": "", - "pageSpeedConfigureSettingsDescription": "", - "monitorDisplayName": "", + "notFoundButton": "Ana panoya git", + "pageSpeedConfigureSettingsDescription": "Burada, monitör tipiyle birlikte sunucunun URL'sini seçebilirsiniz.", + "monitorDisplayName": "Monitör görüntüleme adı", "whenNewIncident": "Yeni bir olay oluştuğunda,", - "notifySMS": "", - "notifyEmails": "", - "seperateEmails": "", + "notifySMS": "SMS ile bildir (yakında)", + "notifyEmails": "Ayrıca birden fazla eposta adresine bildirim gönderebilirsiniz (yakında geliyor)", + "seperateEmails": "Birden fazla epostayı virgülle ayırabilirsiniz", "checkFrequency": "Frekansı denetle", - "matchMethod": "", + "matchMethod": "Eşleşme yöntemi", "expectedValue": "Beklenen değer", "deleteDialogTitle": "Gerçekten bu monitörü silmek istiyor musunuz?", "deleteDialogDescription": "Bir kez silindiği zaman tekrar getiremezsiniz.", "pageSpeedMonitor": "Sayfa Hızı Monitörü", - "shown": "", - "ago": "", + "shown": "Gösteriliyor: ", + "ago": "önce", "companyName": "Firma adı", - "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReport": "Değerler yaklaşıktır ve değişebilir", "pageSpeedDetailsPerformanceReportCalculator": "Hesap makinesini gör", "checkingEvery": "Denetleme sıklığı", "statusPageCreateSettings": "Eğer durum sayfanız hazırsa, herkese açık yayınlayabilirsiniz", "basicInformation": "Temel Bilgiler", - "statusPageCreateBasicInfoDescription": "", - "statusPageCreateSelectTimeZoneDescription": "", - "statusPageCreateAppearanceDescription": "", + "statusPageCreateBasicInfoDescription": "Şirket adınızı ve durum sayfanızın işaret ettiği alt alan adını tanımlayın.", + "statusPageCreateSelectTimeZoneDescription": "Durum sayfanızın hangi zaman diliminde görüntüleneceğini seçin.", + "statusPageCreateAppearanceDescription": "Genel durum sayfanızın varsayılan görünümünü ve hissini tanımlayın.", "statusPageCreateSettingsCheckboxLabel": "Yayınlandı ve herkese açık", "statusPageCreateBasicInfoStatusPageAddress": "Durum sayfası adresiniz", "statusPageCreateTabsContent": "Durum sayfası sunucuları", - "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentDescription": "İzlediğiniz herhangi bir sayıda sunucuyu durum sayfanıza ekleyebilirsiniz. Ayrıca en iyi görüntüleme deneyimi için bunları yeniden sıralayabilirsiniz.", "statusPageCreateTabsContentFeaturesDescription": "Durum sayfasında daha fazla bilgi göster", "showCharts": "Çizelgeleri göster", - "showUptimePercentage": "", + "showUptimePercentage": "Çalışma süresi yüzdesini göster", "removeLogo": "Logoyu sil", "statusPageStatus": "Herkese açık bir durum sayfası henüz oluşturulmadı.", "statusPageStatusContactAdmin": "Lütfen yöneticinizle iletişime geçin.", @@ -403,134 +364,194 @@ "deleteStatusPage": "Gerçekten bu durum sayfasını silmek istiyor musunuz?", "deleteStatusPageConfirm": "Evet, durum sayfasını sil", "deleteStatusPageDescription": "Silindikten sonra durum sayfasını geri getiremezsiniz.", - "uptimeCreate": "", - "uptimeCreateJsonPath": "", - "uptimeCreateJsonPathQuery": "", + "uptimeCreate": "Beklenen değer, yanıt sonucuyla eşleştirilir ve bu eşleşme durumu belirler.", + "uptimeCreateJsonPath": "Bu ifade, yanıt JSON verisi üzerinde değerlendirilir, ortaya çıkan sonuç beklenen değerle karşılaştırılır. Bkz:", + "uptimeCreateJsonPathQuery": "Sorgu dili dokümantasyonu için.", "maintenanceTableActionMenuDialogTitle": "Gerçekten bu bakım aralığını silmek istiyor musunuz?", - "infrastructureEditYour": "", - "infrastructureEditMonitor": "", - "infrastructureMonitorCreated": "", - "infrastructureMonitorUpdated": "", - "errorInvalidTypeId": "", - "pageSpeedWarning": "Uyarı: Google PageSpeed API anahtarı eklemediniz. Bu olmadan, PageSpeed monitörü çalışmayacaktır.", - "pageSpeedLearnMoreLink": "Daha fazla bilgi için tıklayın", - "pageSpeedAddApiKey": "API anahtarınızı nasıl ekleyeceğinizi öğrenin.", - "pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı", - "pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı", - "pageSpeedApiKeyFieldDescription": "PageSpeed izlemeyi etkinleştirmek için Google PageSpeed API anahtarınızı girin. Anahtarı güncellemek için Sıfırla'ya tıklayın.", - "pageSpeedApiKeyFieldResetLabel": "API anahtarı ayarlandı. Değiştirmek için Sıfırla'ya tıklayın.", - "reset": "Sıfırla", - "invalidFileFormat": "", - "invalidFileSize": "", - "ClickUpload": "", - "DragandDrop": "", - "MaxSize": "", - "SupportedFormats": "", - "FirstName": "Ad", - "LastName": "Soyad", - "EmailDescriptionText": "Mevcut e-postanız—değiştirilemez.", + "infrastructureEditYour": "Düzenle", + "infrastructureEditMonitor": "Altyapı İzlemeyi Kaydet", + "infrastructureMonitorCreated": "Altyapı izleyicisi başarıyla oluşturuldu!", + "infrastructureMonitorUpdated": "Altyapı izleyicisi başarıyla güncellendi!", + "errorInvalidTypeId": "Geçersiz bildirim türü sağlandı", + "errorInvalidFieldId": "Geçersiz alan kimliği sağlandı", + "inviteNoTokenFound": "Davet belirteci bulunamadı", + "pageSpeedWarning": "Uyarı: Henüz bir Google PageSpeed API anahtarı eklemediniz. Bu olmadan PageSpeed izleyicisi çalışmayacaktır.", + "pageSpeedLearnMoreLink": "Buraya tıklayın", + "pageSpeedAddApiKey": "(API anahtarınızı eklemek için)", + "update": "Güncelleme", + "invalidFileFormat": "Desteklenmeyen dosya biçimi!", + "invalidFileSize": "Dosya boyutu çok büyük!", + "ClickUpload": "Yüklemek için tıklayın", + "DragandDrop": "sürükle ve bırak", + "MaxSize": "Azami Boyut", + "SupportedFormats": "Desteklenen formatlar", + "FirstName": "İsim", + "LastName": "Soyisim", + "EmailDescriptionText": "Geçerli epostanız - bu eposta değiştirilemez.", "YourPhoto": "Profil fotoğrafı", - "PhotoDescriptionText": "Bu fotoğraf profil sayfanızda görüntülenecektir.", - "save": "", - "DeleteAccountTitle": "Hesabı kaldır", - "DeleteAccountButton": "Hesabı kaldır", - "DeleteDescriptionText": "Bu, hesabı ve tüm ilişkili verileri sunucudan kaldıracaktır. Bu geri alınamaz.", - "DeleteAccountWarning": "Hesabınızı kaldırmak, tekrar oturum açamayacağınız ve tüm verilerinizin kaldırılacağı anlamına gelir. Bu geri alınamaz.", - "DeleteWarningTitle": "Bu hesabı gerçekten kaldırmak istiyor musunuz?", - "authRegisterFirstName": "Ad", - "authRegisterLastName": "Soyad", + "PhotoDescriptionText": "Bu fotoğrafınız profil sayfasında görüntülenecektir.", + "save": "Kaydet", + "DeleteDescriptionText": "Bu, hesabı ve ilişkili tüm verileri sunucudan kaldıracaktır. Bu geri alınamaz.", + "DeleteAccountWarning": "Hesabınızı kaldırmanız, tekrar oturum açamayacağınız ve tüm verilerinizin silineceği anlamına gelir. Bu geri alınamaz.", + "DeleteWarningTitle": "Gerçekten bu hesabı silmek istiyor musunuz?", + "authRegisterFirstName": "İsim", + "authRegisterLastName": "Soyisim", "authRegisterEmail": "E-posta", "authRegisterEmailRequired": "Devam etmek için lütfen e-posta adresinizi girin", - "authRegisterEmailInvalid": "Lütfen geçerli bir e-posta adresi girin", "bulkImport": { - "title": "Toplu İçe Aktar", - "selectFileTips": "Yüklemek için CSV dosyası seçin", + "title": "Toplu içeri alma", + "selectFileTips": "Yüklenecek CSV dosyasını seçin", "selectFileDescription": " veya örneğimizi indirebilirsiniz", - "selectFile": "Dosya Seç", + "selectFile": "Dosyayı seçin", "parsingFailed": "Ayrıştırma başarısız oldu", - "uploadSuccess": "Monitörler başarıyla oluşturuldu!", + "uploadSuccess": "Monitör başarıyla oluşturuldu!", "validationFailed": "Doğrulama başarısız oldu", - "noFileSelected": "Dosya seçilmedi", - "fallbackPage": "Sunucuların listesini toplu olarak yüklemek için bir dosya içe aktarın" + "noFileSelected": "Hiçbir dosya seçilmedi", + "fallbackPage": "Toplu olarak sunucu listesini yüklemek için bir dosyayı içe aktarın" }, - "createNew": "Yeni oluştur", + "welcomeBack": "Tekrar hoş geldiniz! Başarıyla giriş yaptınız.", + "authRegisterLoginLink": "Giriş yap", + "validationNameRequired": "Lütfen adınızı girin", + "validationNameTooLong": "İsim 50 karakterden az olmalıdır", + "validationNameInvalidCharacters": "Lütfen sadece harfler, boşluk, tırnak ve çizgi kullanın", + "settingsSystemReset": "Sistem sıfırla", + "settingsSystemResetDescription": "Sistemdeki tüm monitörleri silin", + "DeleteAccountTitle": "Hesabı sil", + "DeleteAccountButton": "Hesabı sil", + "authRegisterEmailInvalid": "Lütfen geçerli bir eposta hesabı girin", + "publicLink": "Herkese açık bağlantı", + "doNotHaveAccount": "Bir hesabınız yok mu?", + "registerHere": "Buradan kayıt olun", + "backendUnreachable": "Sunucu bağlantı hatası", + "backendUnreachableMessage": "Sunucuya bağlanamıyoruz. Lütfen internet bağlantınızı kontrol edin veya sorun devam ederse dağıtım yapılandırmanızı doğrulayın.", + "backendUnreachableError": "Sunucuya bağlanılamıyor. Lütfen daha sonra tekrar deneyin.", + "retryConnection": "Bağlantıyı yeniden deneyin", + "retryingConnection": "Bağlanıyor...", + "backendReconnected": "Sunucuya başarıyla yeniden bağlanıldı.", + "backendStillUnreachable": "Sunucuya hala ulaşılamıyor. Lütfen daha sonra tekrar deneyin.", + "backendConnectionError": "Sunucuya bağlanırken hata oluştu. Lütfen ağ bağlantınızı kontrol edin.", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "pageSpeedApiKeyFieldTitle": "Google PageSpeed API anahtarı", + "pageSpeedApiKeyFieldLabel": "PageSpeed API anahtarı", + "pageSpeedApiKeyFieldDescription": "Sayfa hızı izlemeyi etkinleştirmek için Google PageSpeed API anahtarınızı girin. Anahtarı güncellemek için Sıfırla'ya tıklayın.", + "pageSpeedApiKeyFieldResetLabel": "API anahtarı ayarlandı. Değiştirmek için Sıfırla'ya tıklayın.", + "reset": "Sıfırla", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", "greeting": { - "prepend": "Merhaba", - "append": "Öğleden sonra senin oyun alanın—hadi onu muhteşem yapalım!", - "overview": "İşte {{type}} monitörlerinizin genel görünümü." + "prepend": "", + "append": "", + "overview": "" }, "monitorStatus": { - "up": "aktif", - "down": "devre dışı", - "paused": "duraklatıldı" + "up": "", + "down": "", + "paused": "" }, "roles": { - "superAdmin": "Süper yönetici", - "admin": "Yönetici", - "teamMember": "Takım üyesi", - "demoUser": "Demo kullanıcı" + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" }, "teamPanel": { - "teamMembers": "Takım üyeleri", + "teamMembers": "", "filter": { - "all": "Tümü", - "member": "Üye" + "all": "", + "member": "" }, - "inviteTeamMember": "Takım üyesi davet et", - "inviteNewTeamMember": "Yeni takım üyesi davet et", - "inviteDescription": "Yeni bir takım üyesi eklediğinizde, tüm monitörlere erişim hakkı alacaktır.", - "email": "E-posta", - "selectRole": "Rol seçin", - "inviteLink": "Davet bağlantısı", - "cancel": "İptal", - "noMembers": "Bu role sahip takım üyesi bulunmamaktadır", - "getToken": "Token al", - "emailToken": "Token e-posta ile gönder", + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", "table": { - "name": "Ad", - "email": "E-posta", - "role": "Rol", - "created": "Oluşturuldu" + "name": "", + "email": "", + "role": "", + "created": "" } }, "monitorState": { - "paused": "duraklatıldı", - "resumed": "devam ettirildi", - "active": "aktif" + "paused": "", + "resumed": "", + "active": "" }, "menu": { - "uptime": "Çalışma Süresi", - "pagespeed": "Sayfa Hızı", - "infrastructure": "Altyapı", - "distributedUptime": "Dağıtılmış Çalışma Süresi", - "incidents": "Olaylar", - "statusPages": "Durum Sayfaları", - "maintenance": "Bakım", - "integrations": "Entegrasyonlar", - "settings": "Ayarlar", - "support": "Destek", - "discussions": "Tartışmalar", - "docs": "Belgeler", - "changelog": "Değişiklik Günlüğü", - "profile": "Profil", - "password": "Şifre", - "team": "Takım", - "logOut": "Çıkış" + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" }, - "navControls": "Kontroller", - "statusBreadCrumbsStatusPages": "Durum Sayfaları", - "statusBreadCrumbsDetails": "Detaylar", - "incidentsPageTitle": "Olaylar", + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", "passwordPanel": { - "passwordChangedSuccess": "Şifreniz başarıyla değiştirildi.", - "passwordInputIncorrect": "Şifre girişiniz yanlış.", - "currentPassword": "Mevcut şifre", - "enterCurrentPassword": "Mevcut şifrenizi girin", - "newPassword": "Yeni şifre", - "enterNewPassword": "Yeni şifrenizi girin", - "confirmNewPassword": "Yeni şifreyi onaylayın", - "passwordRequirements": "Yeni şifre en az 8 karakter içermeli ve en az bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermelidir.", - "saving": "Kaydediliyor..." + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" }, - "uptimeCreateSelectURL": "İzlenecek URL veya IP adresini girin (örn. https://example.com/ veya 192.168.1.100) ve kontrol panelinde görünecek net bir görüntü adı ekleyin." + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" } diff --git a/client/src/locales/zh-tw.json b/client/src/locales/zh-tw.json new file mode 100644 index 000000000..8a34a6835 --- /dev/null +++ b/client/src/locales/zh-tw.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "沒有帳號", + "email": "E-mail", + "forgotPassword": "忘記密碼", + "password": "密碼", + "signUp": "註冊", + "submit": "", + "title": "", + "continue": "繼續", + "enterEmail": "輸入您的 E-mail", + "authLoginTitle": "登入", + "authLoginEnterPassword": "輸入您的密碼", + "commonPassword": "密碼", + "commonBack": "回去", + "authForgotPasswordTitle": "忘記密碼?", + "authForgotPasswordResetPassword": "", + "createPassword": "", + "createAPassword": "", + "authRegisterAlreadyHaveAccount": "已經有帳號嗎?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "輸入您的 E-mail", + "authRegisterTitle": "建立帳號", + "authRegisterStepOneTitle": "建立您的帳號", + "authRegisterStepOneDescription": "清輸入您的個人檔案", + "authRegisterStepTwoTitle": "設定您的個人檔案", + "authRegisterStepTwoDescription": "請分享更多關於您的資訊", + "authRegisterStepThreeTitle": "快完成了!", + "authRegisterStepThreeDescription": "請確認您的資訊", + "authForgotPasswordDescription": "別擔心,我們會發送重設說明給您。", + "authForgotPasswordSendInstructions": "將說明發送至", + "authForgotPasswordBackTo": "回去", + "authCheckEmailTitle": "請查看您的電子郵件", + "authCheckEmailDescription": "我們已將密碼重設連結發送至", + "authCheckEmailResendEmail": "重新發送 E-mail", + "authCheckEmailBackTo": "回去", + "goBackTo": "回去", + "authCheckEmailDidntReceiveEmail": "沒有受到 E-mail?", + "authCheckEmailClickToResend": "點擊", + "authSetNewPasswordTitle": "設定新密碼", + "authSetNewPasswordDescription": "您的新密碼必須與之前使用過的密碼不同。", + "authSetNewPasswordNewPassword": "新密碼", + "authSetNewPasswordConfirmPassword": "確認密碼", + "confirmPassword": "確認您的密碼", + "authSetNewPasswordResetPassword": "重設密碼", + "authSetNewPasswordBackTo": "回去", + "authPasswordMustBeAtLeast": "必須至少", + "authPasswordCharactersLong": "8 個字符長", + "authPasswordMustContainAtLeast": "必須至少包含", + "authPasswordSpecialCharacter": "一個特殊字符", + "authPasswordOneNumber": "一個數字", + "authPasswordUpperCharacter": "一個大寫字母", + "authPasswordLowerCharacter": "一個小寫字母", + "authPasswordConfirmAndPassword": "確認密碼", + "authPasswordMustMatch": "必須相符", + "authRegisterCreateAccount": "建立您的帳號開始使用", + "authRegisterCreateSuperAdminAccount": "建立您的超級管理員帳號開始使用", + "authRegisterSignUpWithEmail": "用 E-mail 註冊", + "authRegisterBySigningUp": "註冊即表示您同意我們的", + "distributedStatusHeaderText": "實時、真實設備覆蓋", + "distributedStatusSubHeaderText": "由全球數百萬個設備提供支持,您可以按全球區域、國家或城市查看系統效能", + "settingsGeneralSettings": "一般設定", + "settingsDisplayTimezone": "顯示時區", + "settingsDisplayTimezoneDescription": "您公開顯示的儀表板的時區。", + "settingsAppearance": "外觀", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "", + "settingsDisabled": "", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} From 530bea6f45eff425f7be59401dc642f00caff4ff Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:21:37 -0700 Subject: [PATCH 07/14] remove version --- docker/dist-arm/docker-compose.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker/dist-arm/docker-compose.yaml b/docker/dist-arm/docker-compose.yaml index 274853278..f66640f71 100644 --- a/docker/dist-arm/docker-compose.yaml +++ b/docker/dist-arm/docker-compose.yaml @@ -1,5 +1,3 @@ -version: "3.8" - services: server: image: ghcr.io/bluewave-labs/checkmate:backend-dist-mono-multiarch From 2758e5f050ca55d661e6e2d479d1a30020006664 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:26:15 -0700 Subject: [PATCH 08/14] remove showURL validation --- server/validation/joi.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/validation/joi.js b/server/validation/joi.js index 47560fb5b..1f4b1c35c 100755 --- a/server/validation/joi.js +++ b/server/validation/joi.js @@ -427,7 +427,7 @@ const updateAppSettingsBodyValidation = joi.object({ checkTTL: joi.number().allow(""), pagespeedApiKey: joi.string().allow(""), language: joi.string().allow(""), - showURL: joi.bool().required(), + // showURL: joi.bool().required(), systemEmailHost: joi.string().allow(""), systemEmailPort: joi.number().allow(""), systemEmailAddress: joi.string().allow(""), From 9b2a9f5731e6c95b32c0f4679fde6558cc5fb3ea Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:46:07 -0700 Subject: [PATCH 09/14] normalize language codes --- .github/scripts/download-translations.js | 67 ++++++++++++++++-------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/.github/scripts/download-translations.js b/.github/scripts/download-translations.js index 918be97d3..d444aeb8e 100644 --- a/.github/scripts/download-translations.js +++ b/.github/scripts/download-translations.js @@ -1,45 +1,60 @@ -import axios from 'axios'; -import fs from 'fs-extra'; -import path from 'path'; -import { URLSearchParams } from 'url'; +import axios from "axios"; +import fs from "fs-extra"; +import path from "path"; +import { URLSearchParams } from "url"; // POEditor API information const API_TOKEN = process.env.POEDITOR_API; const PROJECT_ID = process.env.POEDITOR_PROJECT_ID; -const LANGUAGES = (process.env.LANGUAGES || 'tr,en').split(','); -const EXPORT_FORMAT = process.env.EXPORT_FORMAT || 'key_value_json'; +const LANGUAGES = (process.env.LANGUAGES || "tr,en").split(","); +const EXPORT_FORMAT = process.env.EXPORT_FORMAT || "key_value_json"; // POEditor API endpoint -const API_URL = 'https://api.poeditor.com/v2'; +const API_URL = "https://api.poeditor.com/v2"; + +function normalizeLanguageCode(language) { + if (language.includes("-")) { + const [base, region] = language.split("-"); + return `${base}-${region.toUpperCase()}`; + } + return language; +} // Function to download translations async function downloadTranslations() { try { - console.log('Downloading translations from POEditor...'); + console.log("Downloading translations from POEditor..."); console.log(`Using export format: ${EXPORT_FORMAT}`); for (const language of LANGUAGES) { console.log(`Downloading translations for ${language} language...`); // Get export URL from POEditor - const exportResponse = await axios.post(`${API_URL}/projects/export`, + const exportResponse = await axios.post( + `${API_URL}/projects/export`, new URLSearchParams({ api_token: API_TOKEN, id: PROJECT_ID, language: language, - type: EXPORT_FORMAT + type: EXPORT_FORMAT, }) ); - if (exportResponse.data.response.status !== 'success') { - throw new Error(`Failed to get export URL for ${language} language: ${JSON.stringify(exportResponse.data)}`); + if (exportResponse.data.response.status !== "success") { + throw new Error( + `Failed to get export URL for ${language} language: ${JSON.stringify( + exportResponse.data + )}` + ); } const fileUrl = exportResponse.data.result.url; console.log(`Export URL obtained for ${language}`); // Download translation file - const downloadResponse = await axios.get(fileUrl, { responseType: 'json' }); + const downloadResponse = await axios.get(fileUrl, { + responseType: "json", + }); const translations = downloadResponse.data; console.log(`Downloaded translations for ${language}`); @@ -48,9 +63,11 @@ async function downloadTranslations() { // If data is in array format, convert it to key-value format if (Array.isArray(translations)) { - console.log(`Converting array format to key-value format for ${language}`); + console.log( + `Converting array format to key-value format for ${language}` + ); formattedTranslations = {}; - translations.forEach(item => { + translations.forEach((item) => { if (item.term && item.definition) { formattedTranslations[item.term] = item.definition; } @@ -58,16 +75,20 @@ async function downloadTranslations() { } // Determine the output filename based on language - const filename = language === 'en' ? 'gb.json' : `${language}.json`; - const outputPath = path.join(process.cwd(), 'temp', filename); + const normalizedLanguage = normalizeLanguageCode(language); + const filename = + normalizedLanguage === "en" ? "gb.json" : `${normalizedLanguage}.json`; + const outputPath = path.join(process.cwd(), "temp", filename); await fs.writeJson(outputPath, formattedTranslations, { spaces: 2 }); - console.log(`Translations for ${language} language successfully downloaded and saved as: ${filename}`); + console.log( + `Translations for ${language} language successfully downloaded and saved as: ${filename}` + ); } - console.log('All translations successfully downloaded!'); + console.log("All translations successfully downloaded!"); } catch (error) { - console.error('An error occurred while downloading translations:', error); + console.error("An error occurred while downloading translations:", error); process.exit(1); } } @@ -76,15 +97,15 @@ async function downloadTranslations() { async function main() { try { // Clean temp folder - await fs.emptyDir(path.join(process.cwd(), 'temp')); + await fs.emptyDir(path.join(process.cwd(), "temp")); // Download translations await downloadTranslations(); } catch (error) { - console.error('An error occurred during the process:', error); + console.error("An error occurred during the process:", error); process.exit(1); } } // Run script -main(); \ No newline at end of file +main(); From 73cad941b0ced49fdd33c0734ae5d92fe2fb8526 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 27 May 2025 16:48:15 +0000 Subject: [PATCH 10/14] feat: translations updated from POEditor --- client/src/locales/pt-BR.json | 557 ++++++++++++++++++++++++++++++++++ client/src/locales/zh-TW.json | 557 ++++++++++++++++++++++++++++++++++ 2 files changed, 1114 insertions(+) create mode 100644 client/src/locales/pt-BR.json create mode 100644 client/src/locales/zh-TW.json diff --git a/client/src/locales/pt-BR.json b/client/src/locales/pt-BR.json new file mode 100644 index 000000000..5e7810cde --- /dev/null +++ b/client/src/locales/pt-BR.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "Não tenho conta", + "email": "E-mail", + "forgotPassword": "Esqueci a senha", + "password": "Senha", + "signUp": "Inscreva-se", + "submit": "Enviar", + "title": "Título", + "continue": "Continuar", + "enterEmail": "Insira seu e-mail", + "authLoginTitle": "Login", + "authLoginEnterPassword": "Digite sua senha", + "commonPassword": "Senha", + "commonBack": "Voltar", + "authForgotPasswordTitle": "Esqueceu a senha?", + "authForgotPasswordResetPassword": "Redefinir a senha", + "createPassword": "Criar sua senha", + "createAPassword": "Senha", + "authRegisterAlreadyHaveAccount": "Já possui uma conta?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Insira seu e-mail", + "authRegisterTitle": "Criar uma conta", + "authRegisterStepOneTitle": "Crie sua conta", + "authRegisterStepOneDescription": "Insira seus dados para começar", + "authRegisterStepTwoTitle": "Configure seu perfil", + "authRegisterStepTwoDescription": "Conte-nos mais sobre você", + "authRegisterStepThreeTitle": "Quase pronto!", + "authRegisterStepThreeDescription": "Revise suas informações", + "authForgotPasswordDescription": "Não se preocupe, enviaremos instruções de redefinição.", + "authForgotPasswordSendInstructions": "Enviar instruções", + "authForgotPasswordBackTo": "Voltar para", + "authCheckEmailTitle": "Verifique seu e-mail", + "authCheckEmailDescription": "Enviamos um link para redefinir a senha para", + "authCheckEmailResendEmail": "Reenviar e-mail", + "authCheckEmailBackTo": "Voltar para", + "goBackTo": "Volte para", + "authCheckEmailDidntReceiveEmail": "Não recebeu o e-mail?", + "authCheckEmailClickToResend": "Clique para reenviar", + "authSetNewPasswordTitle": "Definir nova senha", + "authSetNewPasswordDescription": "Sua nova senha deve ser diferente das senhas usadas anteriormente.", + "authSetNewPasswordNewPassword": "Nova senha", + "authSetNewPasswordConfirmPassword": "Confirme sua senha", + "confirmPassword": "Digite a senha novamente para confirmar", + "authSetNewPasswordResetPassword": "Redefinir senha", + "authSetNewPasswordBackTo": "Voltar para", + "authPasswordMustBeAtLeast": "Deve ser pelo menos", + "authPasswordCharactersLong": "8 caracteres de comprimento", + "authPasswordMustContainAtLeast": "Deve conter pelo menos", + "authPasswordSpecialCharacter": "um caractere especial", + "authPasswordOneNumber": "um número", + "authPasswordUpperCharacter": "um caractere maiúsculo", + "authPasswordLowerCharacter": "um caractere minúsculo", + "authPasswordConfirmAndPassword": "Confirme a senha", + "authPasswordMustMatch": "As senhas devem corresponder", + "authRegisterCreateAccount": "Crie sua conta para começar", + "authRegisterCreateSuperAdminAccount": "Crie sua conta de super admin para começar", + "authRegisterSignUpWithEmail": "Criar conta de super admin", + "authRegisterBySigningUp": "Ao criar uma conta, você concorda com nossos Termos de Serviço e Política de Privacidade.", + "distributedStatusHeaderText": "Cobertura em tempo real e em dispositivos reais", + "distributedStatusSubHeaderText": "Impulsionado por milhões de dispositivos em todo o mundo, visualize o desempenho do sistema por região global, país ou cidade", + "settingsGeneralSettings": "Configurações gerais", + "settingsDisplayTimezone": "Fuso horário", + "settingsDisplayTimezoneDescription": "Selecione o fuso horário usado para exibir datas e horas em todo o aplicativo.", + "settingsAppearance": "Aparência", + "settingsAppearanceDescription": "Alterne entre o modo claro e escuro ou altere o idioma da interface do usuário", + "settingsThemeMode": "Tema", + "settingsLanguage": "Linguagem", + "settingsDistributedUptime": "Disponibilidade distribuída", + "settingsDistributedUptimeDescription": "Habilitar/desabilitar o monitoramento de tempo de disponibilidade distribuído.", + "settingsEnabled": "Habilitado", + "settingsDisabled": "Desabilitado", + "settingsHistoryAndMonitoring": "Histórico de monitoramento", + "settingsHistoryAndMonitoringDescription": "Defina por quanto tempo você deseja manter os dados de histórico. Você também pode limpar todos os dados existentes.", + "settingsTTLLabel": "Os dias em que você deseja manter os dados de histórico.", + "settingsTTLOptionalLabel": "0 para infinito", + "settingsClearAllStats": "Limpe todas as estatísticas. Isso é irreversível.", + "settingsClearAllStatsButton": "Limpar todas as estatísticas", + "settingsClearAllStatsDialogTitle": "Você quer limpar todas as estatísticas?", + "settingsClearAllStatsDialogDescription": "Uma vez limpo, o histórico de monitoramento e as estatísticas não podem ser recuperados.", + "settingsClearAllStatsDialogConfirm": "Sim, limpar todas as estatísticas", + "settingsDemoMonitors": "Monitores de demonstração", + "settingsDemoMonitorsDescription": "Adicione monitores de genéricos para fins de demonstração.", + "settingsAddDemoMonitors": "Adicionando monitores de demonstração", + "settingsAddDemoMonitorsButton": "Adicionar monitores de demonstração", + "settingsRemoveAllMonitors": "Removendo todos os monitores", + "settingsRemoveAllMonitorsButton": "Remover todos os monitores", + "settingsRemoveAllMonitorsDialogTitle": "Você deseja remover todos os monitores?", + "settingsRemoveAllMonitorsDialogConfirm": "Sim, remova todos os monitores", + "settingsWallet": "Carteira", + "settingsWalletDescription": "Conecte sua carteira aqui. Isso é necessário para que o Distributed Uptime Monitor se conecte a vários nós globalmente.", + "settingsAbout": "Sobre", + "settingsDevelopedBy": "Desenvolvido pela Bluewave Labs.", + "settingsSave": "Salvar", + "settingsSuccessSaved": "Configurações salvas com sucesso", + "settingsFailedToSave": "Falha ao salvar as configurações", + "settingsStatsCleared": "Estatísticas limpas com sucesso", + "settingsFailedToClearStats": "Falha ao limpar estatísticas", + "settingsDemoMonitorsAdded": "Monitores de demonstração adicionados com sucesso", + "settingsFailedToAddDemoMonitors": "Falha ao adicionar monitores de demonstração", + "settingsMonitorsDeleted": "Todos os monitores foram excluídos com sucesso", + "settingsFailedToDeleteMonitors": "Falha ao excluir todos os monitores", + "starPromptTitle": "Star Checkmate", + "starPromptDescription": "Veja os últimos lançamentos e ajude a expandir a comunidade no GitHub", + "https": "HTTPS", + "http": "HTTP", + "monitor": "monitor", + "aboutus": "Sobre nós", + "now": "Agora", + "delete": "Deletar", + "configure": "Configurar", + "networkError": "Erro de rede", + "responseTime": "Tempo de resposta", + "ms": "ms", + "bar": "Bar", + "area": "Área", + "country": "PAÍS", + "city": "CIDADE", + "response": "RESPOSTA", + "checkConnection": "Verifique sua conexão", + "passwordreset": "Redefinição de senha", + "authRegisterStepOnePersonalDetails": "Insira seus dados pessoais", + "authCheckEmailOpenEmailButton": "Abra o aplicativo de e-mail", + "authNewPasswordConfirmed": "Sua senha foi redefinida com sucesso. Clique abaixo para fazer login magicamente.", + "monitorStatusUp": "O monitor {name} ({url}) agora está ATIVO e respondendo", + "monitorStatusDown": "O monitor {name} ({url}) está INATIVO e não está respondendo", + "webhookSendSuccess": "Notificação de webhook enviada com sucesso", + "webhookSendError": "Erro ao enviar notificação de webhook para {platform}", + "webhookUnsupportedPlatform": "Plataforma não suportada: {platform}", + "distributedRightCategoryTitle": "Monitor", + "distributedStatusServerMonitors": "Monitores de servidor", + "distributedStatusServerMonitorsDescription": "Monitorar o status dos servidores relacionados", + "distributedUptimeCreateSelectURL": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", + "distributedUptimeCreateChecks": "Verificações para realizar", + "distributedUptimeCreateChecksDescription": "Você sempre pode adicionar ou remover verificações depois de adicionar seu site.", + "distributedUptimeCreateIncidentNotification": "Notificações de incidentes", + "distributedUptimeCreateIncidentDescription": "Quando ocorrer um incidente, notifique os usuários.", + "distributedUptimeCreateAdvancedSettings": "Configurações avançadas", + "distributedUptimeDetailsNoMonitorHistory": "Ainda não há histórico de verificações para este monitor.", + "distributedUptimeDetailsFooterHeading": "Feito com ❤️ por UpRock e Bluewave Labs", + "distributedUptimeDetailsFooterBuilt": "Construído com", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "Monitoramento de Uptime distribuído com tecnologia DePIN", + "distributedUptimeDetailsStatusHeaderUptime": "Uptime:", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Última atualização", + "notifications": { + "enableNotifications": "Habilitar notificações da {{platform}}", + "testNotification": "Notificação de teste", + "addOrEditNotifications": "Adicionar ou editar notificações", + "slack": { + "label": "Slack", + "description": "Para habilitar as notificações do Slack, crie um aplicativo Slack e habilite os webhooks de entrada. Depois disso, basta fornecer a URL do webhook aqui.", + "webhookLabel": "Webhook URL", + "webhookPlaceholder": "https://hooks.slack.com/services/...", + "webhookRequired": "A URL do webhook do Slack é necessária" + }, + "discord": { + "label": "Discord", + "description": "Para enviar dados para um canal do Discord a partir do Checkmate por meio de notificações do Discord usando webhooks, você pode usar o recurso de Webhooks de entrada do Discord.", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/...", + "webhookRequired": "A URL do webhook do Discord é necessária" + }, + "telegram": { + "label": "Telegram", + "description": "Para habilitar as notificações do Telegram, crie um bot do Telegram usando o BotFather, um bot oficial para criar e gerenciar bots do Telegram. Em seguida, obtenha o token da API e o ID do chat e os coloque aqui.", + "tokenLabel": "Seu token de bot", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "Seu ID de bate-papo", + "chatIdPlaceholder": "-1001234567890", + "fieldsRequired": "O token do Telegram e o ID do chat são necessários" + }, + "webhook": { + "label": "Webhooks", + "description": "Você pode configurar um webhook personalizado para receber notificações quando ocorrerem incidentes.", + "urlLabel": "Webhook URL", + "urlPlaceholder": "https://seu-servidor.com/webhook", + "urlRequired": "URL do webhook é necessária" + }, + "testNotificationDevelop": "Notificação de teste 2", + "integrationButton": "Integração de notificação", + "testSuccess": "Notificação de teste enviada com sucesso!", + "testFailed": "Falha ao enviar notificação de teste", + "unsupportedType": "Tipo de notificação não suportado", + "networkError": "Ocorreu um erro de rede" + }, + "testLocale": "testLocale", + "add": "Adicionar", + "monitors": "monitores", + "distributedUptimeStatusCreateStatusPage": "Pagina de status", + "distributedUptimeStatusCreateStatusPageAccess": "Acesso", + "distributedUptimeStatusCreateStatusPageReady": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", + "distributedUptimeStatusBasicInfoHeader": "Informação básica", + "distributedUptimeStatusBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", + "distributedUptimeStatusLogoHeader": "Logo", + "distributedUptimeStatusLogoDescription": "Carregue um logo para sua página de status", + "distributedUptimeStatusLogoUploadButton": "Upload logo", + "distributedUptimeStatusStandardMonitorsHeader": "Monitores padrão", + "distributedUptimeStatusStandardMonitorsDescription": "Anexe monitores padrão à sua página de status.", + "distributedUptimeStatusCreateYour": "Crie o seu", + "distributedUptimeStatusEditYour": "Edite seu", + "distributedUptimeStatusPublishedLabel": "Publicado e visível ao público", + "distributedUptimeStatusCompanyNameLabel": "Nome da empresa", + "distributedUptimeStatusPageAddressLabel": "Endereço da sua página de status", + "distributedUptimeStatus30Days": "30 dias", + "distributedUptimeStatus60Days": "60 dias", + "distributedUptimeStatus90Days": "90 dias", + "distributedUptimeStatusPageNotSetUp": "Uma página de status não está configurada.", + "distributedUptimeStatusContactAdmin": "Entre em contato com seu administrador", + "distributedUptimeStatusPageNotPublic": "Esta página de status não é pública.", + "distributedUptimeStatusPageDeleteDialog": "Você quer excluir esta página de status?", + "distributedUptimeStatusPageDeleteConfirm": "Sim, excluir página de status", + "distributedUptimeStatusPageDeleteDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", + "distributedUptimeStatusDevices": "Dispositivos", + "distributedUptimeStatusUpt": "UPT", + "distributedUptimeStatusUptBurned": "UPT queimado", + "distributedUptimeStatusUptLogo": "Logo UPT", + "incidentsTableNoIncidents": "Nenhum incidente registrado", + "incidentsTablePaginationLabel": "incidentes", + "incidentsTableMonitorName": "Nome do monitor", + "incidentsTableStatus": "Status", + "incidentsTableDateTime": "Data & Hora", + "incidentsTableStatusCode": "Código de status", + "incidentsTableMessage": "Mensagem", + "incidentsOptionsHeader": "Incidentes para:", + "incidentsOptionsHeaderFilterBy": "Filtrar por:", + "incidentsOptionsHeaderFilterAll": "Todos", + "incidentsOptionsHeaderFilterDown": "Inativos", + "incidentsOptionsHeaderFilterCannotResolve": "Não é possível resolver", + "incidentsOptionsHeaderShow": "Mostrar:", + "incidentsOptionsHeaderLastHour": "Última hora", + "incidentsOptionsHeaderLastDay": "Último dia", + "incidentsOptionsHeaderLastWeek": "Ultima semana", + "incidentsOptionsPlaceholderAllServers": "Todos os servidores", + "infrastructureCreateYour": "Crie o seu", + "infrastructureCreateGeneralSettingsDescription": "Aqui você pode inserir a URL do host, juntamente com o nome de exibição e o API secret de autorização para se conectar ao agente do servidor.", + "infrastructureServerRequirement": "O servidor que você quer monitorar deve estar executando o", + "infrastructureCustomizeAlerts": "Personalize alertas", + "infrastructureAlertNotificationDescription": "Envie uma notificação ao(s) usuário(s) quando os limites excederem uma porcentagem especificada.", + "infrastructureCreateMonitor": "Criar monitor de infraestrutura", + "infrastructureProtocol": "Protocolo", + "infrastructureServerUrlLabel": "URL do servidor", + "infrastructureDisplayNameLabel": "Nome de exibição", + "infrastructureAuthorizationSecretLabel": "API Secret", + "gb": "GB", + "mb": "MB", + "mem": "Mem", + "memoryUsage": "Uso de memória", + "cpu": "CPU", + "cpuUsage": "Uso da CPU", + "cpuTemperature": "Temperatura da CPU", + "diskUsage": "Uso de disco", + "used": "Usado", + "total": "Total", + "cores": "Núcleos", + "frequency": "Frequência", + "status": "Status", + "cpuPhysical": "CPU (Física)", + "cpuLogical": "CPU (Lógica)", + "cpuFrequency": "Frequência da CPU", + "avgCpuTemperature": "Temperatura média da CPU", + "memory": "Memória", + "disk": "Disco", + "uptime": "Uptime", + "os": "OS", + "host": "Host", + "actions": "Ações", + "integrations": "Integrações", + "integrationsPrism": "Conecte o Prism ao seu serviço favorito.", + "integrationsSlack": "Slack", + "integrationsSlackInfo": "Conecte-se com o Slack e veja incidentes em um canal", + "integrationsDiscord": "Discord", + "integrationsDiscordInfo": "Conecte-se com o Discord e visualize incidentes diretamente em um canal", + "integrationsZapier": "Zapier", + "integrationsZapierInfo": "Envie todos os incidentes para o Zapier e veja-os em todos os lugares", + "commonSave": "Salvar", + "createYour": "Crie o seu", + "createMonitor": "Criar monitor", + "pause": "Pausar", + "resume": "Resumir", + "editing": "Editando...", + "url": "URL", + "access": "Acesso", + "timezone": "Fuso horário", + "features": "Recursos", + "administrator": "Administrador?", + "loginHere": "Login aqui", + "displayName": "Nome de exibição", + "urlMonitor": "URL do monitor", + "portToMonitor": "Porta do monitor", + "websiteMonitoring": "Monitoramento de sites", + "websiteMonitoringDescription": "Use HTTP(s) para monitorar seu site ou API endpoint.", + "pingMonitoring": "Monitoramento de ping", + "pingMonitoringDescription": "Verifique se o seu servidor está disponível ou não.", + "dockerContainerMonitoring": "Monitoramento de contêiner Docker", + "dockerContainerMonitoringDescription": "Verifique se o seu contêiner Docker está em execução ou não.", + "portMonitoring": "Monitoramento de porta", + "portMonitoringDescription": "Verifique se sua porta está aberta ou não.", + "createMaintenanceWindow": "Criar janela de manutenção", + "createMaintenance": "Criar manutenção", + "editMaintenance": "Editar manutenção", + "maintenanceWindowName": "Nome da janela de manutenção", + "friendlyNameInput": "Nome amigável", + "friendlyNamePlaceholder": "Manutenção em __ : __ por ___ minutos", + "maintenanceRepeat": "Repetição de manutenção", + "maintenance": "manutenção", + "duration": "Duração", + "addMonitors": "Adicionar monitores", + "window": "janela", + "cancel": "Cancelar", + "message": "Mensagem", + "low": "baixo", + "high": "alto", + "statusCode": "Código de status", + "date&Time": "Data & Hora", + "type": "Tipo", + "statusPageName": "Nome da página de status", + "publicURL": "URL publica", + "repeat": "Repetir", + "edit": "Editar", + "createA": "Crie um", + "remove": "Remover", + "maintenanceWindowDescription": "Seus pings não serão enviados durante esse período", + "startTime": "Hora de início", + "timeZoneInfo": "Todas as datas e horários estão no fuso horário GMT+0.", + "monitorsToApply": "Monitores para aplicar a janela de manutenção", + "nextWindow": "Próxima janela", + "notFoundButton": "Vá para o painel principal", + "pageSpeedConfigureSettingsDescription": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", + "monitorDisplayName": "Nome de exibição do monitor", + "whenNewIncident": "Quando há um novo incidente,", + "notifySMS": "Notificar via SMS (em breve)", + "notifyEmails": "Também notificar por e-mail para vários endereços (em breve)", + "seperateEmails": "Você pode separar vários e-mails com uma vírgula", + "checkFrequency": "Verifique a frequência", + "matchMethod": "Método de correspondência", + "expectedValue": "Valor esperado", + "deleteDialogTitle": "Você realmente deseja excluir este monitor?", + "deleteDialogDescription": "Uma vez excluído, este monitor não poderá ser recuperado.", + "pageSpeedMonitor": "Monitor PageSpeed", + "shown": "Mostrado", + "ago": "atrás", + "companyName": "Nome da empresa", + "pageSpeedDetailsPerformanceReport": "Os valores são estimados e podem variar.", + "pageSpeedDetailsPerformanceReportCalculator": "Veja calculadora", + "checkingEvery": "Verificando a cada", + "statusPageCreateSettings": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", + "basicInformation": "Informações Básicas", + "statusPageCreateBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", + "statusPageCreateSelectTimeZoneDescription": "Selecione o fuso horário em que será exibido na sua página de status.", + "statusPageCreateAppearanceDescription": "Defina a aparência padrão da sua página de status pública.", + "statusPageCreateSettingsCheckboxLabel": "Publicado e visível ao público", + "statusPageCreateBasicInfoStatusPageAddress": "Endereço da sua página de status", + "statusPageCreateTabsContent": "Servidores de páginas de status", + "statusPageCreateTabsContentDescription": "Você pode adicionar quantos monitores quiser à sua página de status. Você também pode reordená-los para uma melhor experiência de visualização.", + "statusPageCreateTabsContentFeaturesDescription": "Mostrar mais detalhes na página de status", + "showCharts": "Mostrar gráficos", + "showUptimePercentage": "Mostrar porcentagem de Uptime", + "removeLogo": "Remover logo", + "statusPageStatus": "Uma página de status pública não está configurada.", + "statusPageStatusContactAdmin": "Entre em contato com seu administrador", + "statusPageStatusNotPublic": "Esta página de status não é pública.", + "statusPageStatusNoPage": "Não há página de status aqui.", + "statusPageStatusServiceStatus": "Status do serviço", + "deleteStatusPage": "Você quer excluir esta página de status?", + "deleteStatusPageConfirm": "Sim, excluir página de status", + "deleteStatusPageDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", + "uptimeCreate": "O valor esperado é usado para corresponder ao resultado da resposta, e a correspondência determina o status.", + "uptimeCreateJsonPath": "Esta expressão será avaliada em relação aos dados JSON de resposta e o resultado será usado para corresponder ao valor esperado. Veja", + "uptimeCreateJsonPathQuery": "para documentação de linguagem de consulta.", + "maintenanceTableActionMenuDialogTitle": "Você realmente deseja remover esta janela de manutenção?", + "infrastructureEditYour": "Edite seu", + "infrastructureEditMonitor": "Salvar Monitor de Infraestrutura", + "infrastructureMonitorCreated": "Monitor de infraestrutura criado com sucesso!", + "infrastructureMonitorUpdated": "Monitor de infraestrutura atualizado com sucesso!", + "errorInvalidTypeId": "Tipo de notificação fornecido inválido", + "errorInvalidFieldId": "ID do campo fornecido inválido", + "inviteNoTokenFound": "Nenhum token de convite encontrado", + "pageSpeedWarning": "Aviso: você ainda não adicionou uma chave de API do Google PageSpeed. Sem ela, o monitor PageSpeed ​​não funcionará.", + "pageSpeedLearnMoreLink": "Clique aqui", + "pageSpeedAddApiKey": "para adicionar sua chave de API.", + "update": "Atualizar", + "invalidFileFormat": "Formato de arquivo não suportado!", + "invalidFileSize": "O tamanho do arquivo é muito grande!", + "ClickUpload": "Clique para enviar", + "DragandDrop": "arraste e solte", + "MaxSize": "Tamanho Máximo", + "SupportedFormats": "Formatos suportados", + "FirstName": "Nome", + "LastName": "Sobrenome", + "EmailDescriptionText": "Este é seu endereço de e-mail atual — ele não pode ser alterado.", + "YourPhoto": "Foto de perfil", + "PhotoDescriptionText": "Esta foto será exibida na sua página de perfil.", + "save": "Salvar", + "DeleteDescriptionText": "Isso removerá a conta e todos os dados associados do servidor. Essa ação não é reversível.", + "DeleteAccountWarning": "Remover sua conta significa que você não poderá fazer login novamente e todos os seus dados serão removidos. Isso não é reversível.", + "DeleteWarningTitle": "Deseja realmente remover esta conta?", + "authRegisterFirstName": "Nome", + "authRegisterLastName": "Sobrenome", + "authRegisterEmail": "E-mail", + "authRegisterEmailRequired": "Para continuar, insira seu endereço de e-mail", + "bulkImport": { + "title": "Bulk Import", + "selectFileTips": "Selecione o arquivo CSV para enviar", + "selectFileDescription": "Você pode baixar nosso ou amostra", + "selectFile": "Selecione o arquivo", + "parsingFailed": "Falha na análise", + "uploadSuccess": "Monitores criados com sucesso!", + "validationFailed": "Falha na validação", + "noFileSelected": "Nenhum arquivo selecionado", + "fallbackPage": "Importe um arquivo para enviar uma lista de servidores em massa" + }, + "welcomeBack": "Bem-vindo de volta! Você fez login com sucesso.", + "authRegisterLoginLink": "Login", + "validationNameRequired": "Por favor digite seu nome", + "validationNameTooLong": "O nome deve ter menos de 50 caracteres", + "validationNameInvalidCharacters": "Por favor, use apenas letras, espaços, apóstrofos ou hifens", + "settingsSystemReset": "Resetar sistema", + "settingsSystemResetDescription": "Remova todos os monitores do seu sistema.", + "DeleteAccountTitle": "Remover conta", + "DeleteAccountButton": "Remover conta", + "authRegisterEmailInvalid": "Por favor, insira um endereço de e-mail válido", + "publicLink": "Link publico", + "doNotHaveAccount": "Ainda não tem uma conta?", + "registerHere": "Registre-se aqui", + "backendUnreachable": "Erro de conexão com o servidor", + "backendUnreachableMessage": "Não conseguimos conectar ao servidor. Verifique sua conexão com a internet ou sua configuração de implantação se o problema persistir.", + "backendUnreachableError": "Não foi possível conectar ao servidor. Tente novamente mais tarde.", + "retryConnection": "Reconectar", + "retryingConnection": "Conectando...", + "backendReconnected": "Reconectado ao servidor com sucesso.", + "backendStillUnreachable": "O servidor ainda está inacessível. Tente novamente mais tarde.", + "backendConnectionError": "Erro ao conectar ao servidor. Verifique sua conexão de internet.", + "maskedPageSpeedKeyPlaceholder": "*************************************", + "pageSpeedApiKeyFieldTitle": "Google PageSpeed API key", + "pageSpeedApiKeyFieldLabel": "PageSpeed API key", + "pageSpeedApiKeyFieldDescription": "Insira sua chave da API do Google PageSpeed ​​para ativar o monitoramento de velocidade de página. Clique em Resetar para atualizar a chave.", + "pageSpeedApiKeyFieldResetLabel": "A chave de API está definida. Clique em Resetar para alterá-la.", + "reset": "Resetar", + "ignoreTLSError": "Ignorar erro TLS/SSL", + "tlsErrorIgnored": "Erros TLS/SSL ignorados", + "ignoreTLSErrorDescription": "Ignore os erros de TLS/SSL e continue verificando a disponibilidade do site", + "createNew": "Criar novo", + "greeting": { + "prepend": "Ei", + "append": "A tarde é seu playground — vamos torná-la épica!", + "overview": "Aqui está uma visão geral dos seus monitores {{type}}." + }, + "monitorStatus": { + "up": "Online", + "down": "Offline", + "paused": "pausado" + }, + "roles": { + "superAdmin": "Super Admin", + "admin": "Admin", + "teamMember": "Membro da equipe", + "demoUser": "Usuário demo" + }, + "teamPanel": { + "teamMembers": "Membros da equipe", + "filter": { + "all": "Todos", + "member": "Membro" + }, + "inviteTeamMember": "Convidar um membro da equipe", + "inviteNewTeamMember": "Convidar novo membro da equipe", + "inviteDescription": "Ao adicionar um novo membro da equipe, ele terá acesso a todos os monitores.", + "email": "E-mail", + "selectRole": "Selecione a cargo", + "inviteLink": "Link de convite", + "cancel": "Cancelar", + "noMembers": "Não há membros da equipe com este cargo", + "getToken": "Obter token", + "emailToken": "Token de e-mail", + "table": { + "name": "Nome", + "email": "E-mail", + "role": "Cargo", + "created": "Criado" + } + }, + "monitorState": { + "paused": "Pausado", + "resumed": "Retomado", + "active": "Ativo" + }, + "menu": { + "uptime": "Uptime", + "pagespeed": "Pagespeed", + "infrastructure": "Infraestrutura", + "distributedUptime": "Uptime distribuído", + "incidents": "Incidentes", + "statusPages": "Pagina de status", + "maintenance": "Manutenção", + "integrations": "Integrações", + "settings": "Configurações", + "support": "Suporte", + "discussions": "Discussões", + "docs": "Docs", + "changelog": "Changelog", + "profile": "Perfil", + "password": "Senha", + "team": "Equipe", + "logOut": "Sair" + }, + "settingsEmail": "E-mail", + "settingsEmailDescription": "Configurações de e-mail do seu sistema. Elas são usadas para enviar notificações e alertas.", + "settingsEmailHost": "Host de e-mail - Nome do host ou endereço IP do servidor SMTP", + "settingsEmailPort": "Porta de e-mail - Porta para conectar", + "settingsEmailAddress": "Endereço de e-mail - Usado para autenticação", + "settingsEmailPassword": "Senha de e-mail - Senha para autenticação", + "settingsEmailUser": "Usuário de e-mail - Nome de usuário para autenticação, substitui o endereço de e-mail, se especificado", + "settingsEmailFieldResetLabel": "A senha foi definida. Clique em Redefinir para alterá-la.", + "state": "Estado", + "statusBreadCrumbsStatusPages": "Pagina de status", + "statusBreadCrumbsDetails": "Detalhes", + "authForgotPasswordInstructions": "Não se preocupe, enviaremos instruções de redefinição.", + "settingsThemeModeLight": "Claro", + "settingsThemeModeDark": "Escuro", + "settingsClearAllStatsDialogCancel": "Cancelar", + "commonSaving": "Salvando...", + "navControls": "Controles", + "incidentsPageTitle": "Incidentes", + "passwordPanel": { + "passwordChangedSuccess": "Sua senha foi alterada com sucesso.", + "passwordInputIncorrect": "Sua senha digitada está incorreta.", + "currentPassword": "Senha atual", + "enterCurrentPassword": "Digite sua senha atual", + "newPassword": "Nova Senha", + "enterNewPassword": "Digite sua nova senha", + "confirmNewPassword": "Confirme a nova senha", + "passwordRequirements": "A nova senha deve conter pelo menos 8 caracteres e deve ter pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial.", + "saving": "Salvando..." + }, + "uptimeCreateSelectURL": "Insira a URL ou IP a ser monitorado (por exemplo, https://example.com/ ou 192.168.1.100) e adicione um nome de exibição que irá aparecer no painel.", + "settingsEmailConnectionHost": "Host de conexão de e-mail - Nome do host a ser usado na saudação HELO/EHLO", + "sendTestEmail": "Enviar e-mail de teste", + "emailSent": "E-mail enviado com sucesso", + "failedToSendEmail": "Falha ao enviar e-mail", + "settingsTestEmail": "Enviar e-mail de teste", + "settingsTestEmailSuccess": "E-mail de teste enviado com sucesso", + "settingsTestEmailFailed": "Falha ao enviar e-mail de teste", + "settingsTestEmailFailedWithReason": "Falha ao enviar e-mail de teste: {{reason}}", + "settingsTestEmailUnknownError": "Erro desconhecido", + "settingsEmailRequiredFields": "O host e a porta do e-mail são obrigatórios", + "statusMsg": { + "paused": "O monitoramento está pausado.", + "up": "Seu site está no ar.", + "down": "Seu site está fora do ar.", + "pending": "Pendente..." + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} diff --git a/client/src/locales/zh-TW.json b/client/src/locales/zh-TW.json new file mode 100644 index 000000000..8a34a6835 --- /dev/null +++ b/client/src/locales/zh-TW.json @@ -0,0 +1,557 @@ +{ + "dontHaveAccount": "沒有帳號", + "email": "E-mail", + "forgotPassword": "忘記密碼", + "password": "密碼", + "signUp": "註冊", + "submit": "", + "title": "", + "continue": "繼續", + "enterEmail": "輸入您的 E-mail", + "authLoginTitle": "登入", + "authLoginEnterPassword": "輸入您的密碼", + "commonPassword": "密碼", + "commonBack": "回去", + "authForgotPasswordTitle": "忘記密碼?", + "authForgotPasswordResetPassword": "", + "createPassword": "", + "createAPassword": "", + "authRegisterAlreadyHaveAccount": "已經有帳號嗎?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "輸入您的 E-mail", + "authRegisterTitle": "建立帳號", + "authRegisterStepOneTitle": "建立您的帳號", + "authRegisterStepOneDescription": "清輸入您的個人檔案", + "authRegisterStepTwoTitle": "設定您的個人檔案", + "authRegisterStepTwoDescription": "請分享更多關於您的資訊", + "authRegisterStepThreeTitle": "快完成了!", + "authRegisterStepThreeDescription": "請確認您的資訊", + "authForgotPasswordDescription": "別擔心,我們會發送重設說明給您。", + "authForgotPasswordSendInstructions": "將說明發送至", + "authForgotPasswordBackTo": "回去", + "authCheckEmailTitle": "請查看您的電子郵件", + "authCheckEmailDescription": "我們已將密碼重設連結發送至", + "authCheckEmailResendEmail": "重新發送 E-mail", + "authCheckEmailBackTo": "回去", + "goBackTo": "回去", + "authCheckEmailDidntReceiveEmail": "沒有受到 E-mail?", + "authCheckEmailClickToResend": "點擊", + "authSetNewPasswordTitle": "設定新密碼", + "authSetNewPasswordDescription": "您的新密碼必須與之前使用過的密碼不同。", + "authSetNewPasswordNewPassword": "新密碼", + "authSetNewPasswordConfirmPassword": "確認密碼", + "confirmPassword": "確認您的密碼", + "authSetNewPasswordResetPassword": "重設密碼", + "authSetNewPasswordBackTo": "回去", + "authPasswordMustBeAtLeast": "必須至少", + "authPasswordCharactersLong": "8 個字符長", + "authPasswordMustContainAtLeast": "必須至少包含", + "authPasswordSpecialCharacter": "一個特殊字符", + "authPasswordOneNumber": "一個數字", + "authPasswordUpperCharacter": "一個大寫字母", + "authPasswordLowerCharacter": "一個小寫字母", + "authPasswordConfirmAndPassword": "確認密碼", + "authPasswordMustMatch": "必須相符", + "authRegisterCreateAccount": "建立您的帳號開始使用", + "authRegisterCreateSuperAdminAccount": "建立您的超級管理員帳號開始使用", + "authRegisterSignUpWithEmail": "用 E-mail 註冊", + "authRegisterBySigningUp": "註冊即表示您同意我們的", + "distributedStatusHeaderText": "實時、真實設備覆蓋", + "distributedStatusSubHeaderText": "由全球數百萬個設備提供支持,您可以按全球區域、國家或城市查看系統效能", + "settingsGeneralSettings": "一般設定", + "settingsDisplayTimezone": "顯示時區", + "settingsDisplayTimezoneDescription": "您公開顯示的儀表板的時區。", + "settingsAppearance": "外觀", + "settingsAppearanceDescription": "", + "settingsThemeMode": "", + "settingsLanguage": "", + "settingsDistributedUptime": "", + "settingsDistributedUptimeDescription": "", + "settingsEnabled": "", + "settingsDisabled": "", + "settingsHistoryAndMonitoring": "", + "settingsHistoryAndMonitoringDescription": "", + "settingsTTLLabel": "", + "settingsTTLOptionalLabel": "", + "settingsClearAllStats": "", + "settingsClearAllStatsButton": "", + "settingsClearAllStatsDialogTitle": "", + "settingsClearAllStatsDialogDescription": "", + "settingsClearAllStatsDialogConfirm": "", + "settingsDemoMonitors": "", + "settingsDemoMonitorsDescription": "", + "settingsAddDemoMonitors": "", + "settingsAddDemoMonitorsButton": "", + "settingsRemoveAllMonitors": "", + "settingsRemoveAllMonitorsButton": "", + "settingsRemoveAllMonitorsDialogTitle": "", + "settingsRemoveAllMonitorsDialogConfirm": "", + "settingsWallet": "", + "settingsWalletDescription": "", + "settingsAbout": "", + "settingsDevelopedBy": "", + "settingsSave": "", + "settingsSuccessSaved": "", + "settingsFailedToSave": "", + "settingsStatsCleared": "", + "settingsFailedToClearStats": "", + "settingsDemoMonitorsAdded": "", + "settingsFailedToAddDemoMonitors": "", + "settingsMonitorsDeleted": "", + "settingsFailedToDeleteMonitors": "", + "starPromptTitle": "", + "starPromptDescription": "", + "https": "", + "http": "", + "monitor": "", + "aboutus": "", + "now": "", + "delete": "", + "configure": "", + "networkError": "", + "responseTime": "", + "ms": "", + "bar": "", + "area": "", + "country": "", + "city": "", + "response": "", + "checkConnection": "", + "passwordreset": "", + "authRegisterStepOnePersonalDetails": "", + "authCheckEmailOpenEmailButton": "", + "authNewPasswordConfirmed": "", + "monitorStatusUp": "", + "monitorStatusDown": "", + "webhookSendSuccess": "", + "webhookSendError": "", + "webhookUnsupportedPlatform": "", + "distributedRightCategoryTitle": "", + "distributedStatusServerMonitors": "", + "distributedStatusServerMonitorsDescription": "", + "distributedUptimeCreateSelectURL": "", + "distributedUptimeCreateChecks": "", + "distributedUptimeCreateChecksDescription": "", + "distributedUptimeCreateIncidentNotification": "", + "distributedUptimeCreateIncidentDescription": "", + "distributedUptimeCreateAdvancedSettings": "", + "distributedUptimeDetailsNoMonitorHistory": "", + "distributedUptimeDetailsFooterHeading": "", + "distributedUptimeDetailsFooterBuilt": "", + "distributedUptimeDetailsFooterSolana": "", + "distributedUptimeDetailsMonitorHeader": "", + "distributedUptimeDetailsStatusHeaderUptime": "", + "distributedUptimeDetailsStatusHeaderLastUpdate": "", + "notifications": { + "enableNotifications": "", + "testNotification": "", + "addOrEditNotifications": "", + "slack": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "", + "webhookRequired": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "", + "fieldsRequired": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "", + "urlRequired": "" + }, + "testNotificationDevelop": "", + "integrationButton": "", + "testSuccess": "", + "testFailed": "", + "unsupportedType": "", + "networkError": "" + }, + "testLocale": "", + "add": "", + "monitors": "", + "distributedUptimeStatusCreateStatusPage": "", + "distributedUptimeStatusCreateStatusPageAccess": "", + "distributedUptimeStatusCreateStatusPageReady": "", + "distributedUptimeStatusBasicInfoHeader": "", + "distributedUptimeStatusBasicInfoDescription": "", + "distributedUptimeStatusLogoHeader": "", + "distributedUptimeStatusLogoDescription": "", + "distributedUptimeStatusLogoUploadButton": "", + "distributedUptimeStatusStandardMonitorsHeader": "", + "distributedUptimeStatusStandardMonitorsDescription": "", + "distributedUptimeStatusCreateYour": "", + "distributedUptimeStatusEditYour": "", + "distributedUptimeStatusPublishedLabel": "", + "distributedUptimeStatusCompanyNameLabel": "", + "distributedUptimeStatusPageAddressLabel": "", + "distributedUptimeStatus30Days": "", + "distributedUptimeStatus60Days": "", + "distributedUptimeStatus90Days": "", + "distributedUptimeStatusPageNotSetUp": "", + "distributedUptimeStatusContactAdmin": "", + "distributedUptimeStatusPageNotPublic": "", + "distributedUptimeStatusPageDeleteDialog": "", + "distributedUptimeStatusPageDeleteConfirm": "", + "distributedUptimeStatusPageDeleteDescription": "", + "distributedUptimeStatusDevices": "", + "distributedUptimeStatusUpt": "", + "distributedUptimeStatusUptBurned": "", + "distributedUptimeStatusUptLogo": "", + "incidentsTableNoIncidents": "", + "incidentsTablePaginationLabel": "", + "incidentsTableMonitorName": "", + "incidentsTableStatus": "", + "incidentsTableDateTime": "", + "incidentsTableStatusCode": "", + "incidentsTableMessage": "", + "incidentsOptionsHeader": "", + "incidentsOptionsHeaderFilterBy": "", + "incidentsOptionsHeaderFilterAll": "", + "incidentsOptionsHeaderFilterDown": "", + "incidentsOptionsHeaderFilterCannotResolve": "", + "incidentsOptionsHeaderShow": "", + "incidentsOptionsHeaderLastHour": "", + "incidentsOptionsHeaderLastDay": "", + "incidentsOptionsHeaderLastWeek": "", + "incidentsOptionsPlaceholderAllServers": "", + "infrastructureCreateYour": "", + "infrastructureCreateGeneralSettingsDescription": "", + "infrastructureServerRequirement": "", + "infrastructureCustomizeAlerts": "", + "infrastructureAlertNotificationDescription": "", + "infrastructureCreateMonitor": "", + "infrastructureProtocol": "", + "infrastructureServerUrlLabel": "", + "infrastructureDisplayNameLabel": "", + "infrastructureAuthorizationSecretLabel": "", + "gb": "", + "mb": "", + "mem": "", + "memoryUsage": "", + "cpu": "", + "cpuUsage": "", + "cpuTemperature": "", + "diskUsage": "", + "used": "", + "total": "", + "cores": "", + "frequency": "", + "status": "", + "cpuPhysical": "", + "cpuLogical": "", + "cpuFrequency": "", + "avgCpuTemperature": "", + "memory": "", + "disk": "", + "uptime": "", + "os": "", + "host": "", + "actions": "", + "integrations": "", + "integrationsPrism": "", + "integrationsSlack": "", + "integrationsSlackInfo": "", + "integrationsDiscord": "", + "integrationsDiscordInfo": "", + "integrationsZapier": "", + "integrationsZapierInfo": "", + "commonSave": "", + "createYour": "", + "createMonitor": "", + "pause": "", + "resume": "", + "editing": "", + "url": "", + "access": "", + "timezone": "", + "features": "", + "administrator": "", + "loginHere": "", + "displayName": "", + "urlMonitor": "", + "portToMonitor": "", + "websiteMonitoring": "", + "websiteMonitoringDescription": "", + "pingMonitoring": "", + "pingMonitoringDescription": "", + "dockerContainerMonitoring": "", + "dockerContainerMonitoringDescription": "", + "portMonitoring": "", + "portMonitoringDescription": "", + "createMaintenanceWindow": "", + "createMaintenance": "", + "editMaintenance": "", + "maintenanceWindowName": "", + "friendlyNameInput": "", + "friendlyNamePlaceholder": "", + "maintenanceRepeat": "", + "maintenance": "", + "duration": "", + "addMonitors": "", + "window": "", + "cancel": "", + "message": "", + "low": "", + "high": "", + "statusCode": "", + "date&Time": "", + "type": "", + "statusPageName": "", + "publicURL": "", + "repeat": "", + "edit": "", + "createA": "", + "remove": "", + "maintenanceWindowDescription": "", + "startTime": "", + "timeZoneInfo": "", + "monitorsToApply": "", + "nextWindow": "", + "notFoundButton": "", + "pageSpeedConfigureSettingsDescription": "", + "monitorDisplayName": "", + "whenNewIncident": "", + "notifySMS": "", + "notifyEmails": "", + "seperateEmails": "", + "checkFrequency": "", + "matchMethod": "", + "expectedValue": "", + "deleteDialogTitle": "", + "deleteDialogDescription": "", + "pageSpeedMonitor": "", + "shown": "", + "ago": "", + "companyName": "", + "pageSpeedDetailsPerformanceReport": "", + "pageSpeedDetailsPerformanceReportCalculator": "", + "checkingEvery": "", + "statusPageCreateSettings": "", + "basicInformation": "", + "statusPageCreateBasicInfoDescription": "", + "statusPageCreateSelectTimeZoneDescription": "", + "statusPageCreateAppearanceDescription": "", + "statusPageCreateSettingsCheckboxLabel": "", + "statusPageCreateBasicInfoStatusPageAddress": "", + "statusPageCreateTabsContent": "", + "statusPageCreateTabsContentDescription": "", + "statusPageCreateTabsContentFeaturesDescription": "", + "showCharts": "", + "showUptimePercentage": "", + "removeLogo": "", + "statusPageStatus": "", + "statusPageStatusContactAdmin": "", + "statusPageStatusNotPublic": "", + "statusPageStatusNoPage": "", + "statusPageStatusServiceStatus": "", + "deleteStatusPage": "", + "deleteStatusPageConfirm": "", + "deleteStatusPageDescription": "", + "uptimeCreate": "", + "uptimeCreateJsonPath": "", + "uptimeCreateJsonPathQuery": "", + "maintenanceTableActionMenuDialogTitle": "", + "infrastructureEditYour": "", + "infrastructureEditMonitor": "", + "infrastructureMonitorCreated": "", + "infrastructureMonitorUpdated": "", + "errorInvalidTypeId": "", + "errorInvalidFieldId": "", + "inviteNoTokenFound": "", + "pageSpeedWarning": "", + "pageSpeedLearnMoreLink": "", + "pageSpeedAddApiKey": "", + "update": "", + "invalidFileFormat": "", + "invalidFileSize": "", + "ClickUpload": "", + "DragandDrop": "", + "MaxSize": "", + "SupportedFormats": "", + "FirstName": "", + "LastName": "", + "EmailDescriptionText": "", + "YourPhoto": "", + "PhotoDescriptionText": "", + "save": "", + "DeleteDescriptionText": "", + "DeleteAccountWarning": "", + "DeleteWarningTitle": "", + "authRegisterFirstName": "", + "authRegisterLastName": "", + "authRegisterEmail": "", + "authRegisterEmailRequired": "", + "bulkImport": { + "title": "", + "selectFileTips": "", + "selectFileDescription": "", + "selectFile": "", + "parsingFailed": "", + "uploadSuccess": "", + "validationFailed": "", + "noFileSelected": "", + "fallbackPage": "" + }, + "welcomeBack": "", + "authRegisterLoginLink": "", + "validationNameRequired": "", + "validationNameTooLong": "", + "validationNameInvalidCharacters": "", + "settingsSystemReset": "", + "settingsSystemResetDescription": "", + "DeleteAccountTitle": "", + "DeleteAccountButton": "", + "authRegisterEmailInvalid": "", + "publicLink": "", + "doNotHaveAccount": "", + "registerHere": "", + "backendUnreachable": "", + "backendUnreachableMessage": "", + "backendUnreachableError": "", + "retryConnection": "", + "retryingConnection": "", + "backendReconnected": "", + "backendStillUnreachable": "", + "backendConnectionError": "", + "maskedPageSpeedKeyPlaceholder": "", + "pageSpeedApiKeyFieldTitle": "", + "pageSpeedApiKeyFieldLabel": "", + "pageSpeedApiKeyFieldDescription": "", + "pageSpeedApiKeyFieldResetLabel": "", + "reset": "", + "ignoreTLSError": "", + "tlsErrorIgnored": "", + "ignoreTLSErrorDescription": "", + "createNew": "", + "greeting": { + "prepend": "", + "append": "", + "overview": "" + }, + "monitorStatus": { + "up": "", + "down": "", + "paused": "" + }, + "roles": { + "superAdmin": "", + "admin": "", + "teamMember": "", + "demoUser": "" + }, + "teamPanel": { + "teamMembers": "", + "filter": { + "all": "", + "member": "" + }, + "inviteTeamMember": "", + "inviteNewTeamMember": "", + "inviteDescription": "", + "email": "", + "selectRole": "", + "inviteLink": "", + "cancel": "", + "noMembers": "", + "getToken": "", + "emailToken": "", + "table": { + "name": "", + "email": "", + "role": "", + "created": "" + } + }, + "monitorState": { + "paused": "", + "resumed": "", + "active": "" + }, + "menu": { + "uptime": "", + "pagespeed": "", + "infrastructure": "", + "distributedUptime": "", + "incidents": "", + "statusPages": "", + "maintenance": "", + "integrations": "", + "settings": "", + "support": "", + "discussions": "", + "docs": "", + "changelog": "", + "profile": "", + "password": "", + "team": "", + "logOut": "" + }, + "settingsEmail": "", + "settingsEmailDescription": "", + "settingsEmailHost": "", + "settingsEmailPort": "", + "settingsEmailAddress": "", + "settingsEmailPassword": "", + "settingsEmailUser": "", + "settingsEmailFieldResetLabel": "", + "state": "", + "statusBreadCrumbsStatusPages": "", + "statusBreadCrumbsDetails": "", + "authForgotPasswordInstructions": "", + "settingsThemeModeLight": "", + "settingsThemeModeDark": "", + "settingsClearAllStatsDialogCancel": "", + "commonSaving": "", + "navControls": "", + "incidentsPageTitle": "", + "passwordPanel": { + "passwordChangedSuccess": "", + "passwordInputIncorrect": "", + "currentPassword": "", + "enterCurrentPassword": "", + "newPassword": "", + "enterNewPassword": "", + "confirmNewPassword": "", + "passwordRequirements": "", + "saving": "" + }, + "uptimeCreateSelectURL": "", + "settingsEmailConnectionHost": "", + "sendTestEmail": "", + "emailSent": "", + "failedToSendEmail": "", + "settingsTestEmail": "", + "settingsTestEmailSuccess": "", + "settingsTestEmailFailed": "", + "settingsTestEmailFailedWithReason": "", + "settingsTestEmailUnknownError": "", + "settingsEmailRequiredFields": "", + "statusMsg": { + "paused": "", + "up": "", + "down": "", + "pending": "" + }, + "settingsURLTitle": "", + "settingsURLDescription": "", + "settingsURLSelectTitle": "", + "settingsURLEnabled": "", + "settingURLDisabled": "" +} From f25e54eefefa6edf532e5a213251c73ab6ef7955 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 09:49:15 -0700 Subject: [PATCH 11/14] remove files --- client/src/locales/pt-br.json | 557 ---------------------------------- client/src/locales/zh-tw.json | 557 ---------------------------------- 2 files changed, 1114 deletions(-) delete mode 100644 client/src/locales/pt-br.json delete mode 100644 client/src/locales/zh-tw.json diff --git a/client/src/locales/pt-br.json b/client/src/locales/pt-br.json deleted file mode 100644 index 5e7810cde..000000000 --- a/client/src/locales/pt-br.json +++ /dev/null @@ -1,557 +0,0 @@ -{ - "dontHaveAccount": "Não tenho conta", - "email": "E-mail", - "forgotPassword": "Esqueci a senha", - "password": "Senha", - "signUp": "Inscreva-se", - "submit": "Enviar", - "title": "Título", - "continue": "Continuar", - "enterEmail": "Insira seu e-mail", - "authLoginTitle": "Login", - "authLoginEnterPassword": "Digite sua senha", - "commonPassword": "Senha", - "commonBack": "Voltar", - "authForgotPasswordTitle": "Esqueceu a senha?", - "authForgotPasswordResetPassword": "Redefinir a senha", - "createPassword": "Criar sua senha", - "createAPassword": "Senha", - "authRegisterAlreadyHaveAccount": "Já possui uma conta?", - "commonAppName": "Checkmate", - "authLoginEnterEmail": "Insira seu e-mail", - "authRegisterTitle": "Criar uma conta", - "authRegisterStepOneTitle": "Crie sua conta", - "authRegisterStepOneDescription": "Insira seus dados para começar", - "authRegisterStepTwoTitle": "Configure seu perfil", - "authRegisterStepTwoDescription": "Conte-nos mais sobre você", - "authRegisterStepThreeTitle": "Quase pronto!", - "authRegisterStepThreeDescription": "Revise suas informações", - "authForgotPasswordDescription": "Não se preocupe, enviaremos instruções de redefinição.", - "authForgotPasswordSendInstructions": "Enviar instruções", - "authForgotPasswordBackTo": "Voltar para", - "authCheckEmailTitle": "Verifique seu e-mail", - "authCheckEmailDescription": "Enviamos um link para redefinir a senha para", - "authCheckEmailResendEmail": "Reenviar e-mail", - "authCheckEmailBackTo": "Voltar para", - "goBackTo": "Volte para", - "authCheckEmailDidntReceiveEmail": "Não recebeu o e-mail?", - "authCheckEmailClickToResend": "Clique para reenviar", - "authSetNewPasswordTitle": "Definir nova senha", - "authSetNewPasswordDescription": "Sua nova senha deve ser diferente das senhas usadas anteriormente.", - "authSetNewPasswordNewPassword": "Nova senha", - "authSetNewPasswordConfirmPassword": "Confirme sua senha", - "confirmPassword": "Digite a senha novamente para confirmar", - "authSetNewPasswordResetPassword": "Redefinir senha", - "authSetNewPasswordBackTo": "Voltar para", - "authPasswordMustBeAtLeast": "Deve ser pelo menos", - "authPasswordCharactersLong": "8 caracteres de comprimento", - "authPasswordMustContainAtLeast": "Deve conter pelo menos", - "authPasswordSpecialCharacter": "um caractere especial", - "authPasswordOneNumber": "um número", - "authPasswordUpperCharacter": "um caractere maiúsculo", - "authPasswordLowerCharacter": "um caractere minúsculo", - "authPasswordConfirmAndPassword": "Confirme a senha", - "authPasswordMustMatch": "As senhas devem corresponder", - "authRegisterCreateAccount": "Crie sua conta para começar", - "authRegisterCreateSuperAdminAccount": "Crie sua conta de super admin para começar", - "authRegisterSignUpWithEmail": "Criar conta de super admin", - "authRegisterBySigningUp": "Ao criar uma conta, você concorda com nossos Termos de Serviço e Política de Privacidade.", - "distributedStatusHeaderText": "Cobertura em tempo real e em dispositivos reais", - "distributedStatusSubHeaderText": "Impulsionado por milhões de dispositivos em todo o mundo, visualize o desempenho do sistema por região global, país ou cidade", - "settingsGeneralSettings": "Configurações gerais", - "settingsDisplayTimezone": "Fuso horário", - "settingsDisplayTimezoneDescription": "Selecione o fuso horário usado para exibir datas e horas em todo o aplicativo.", - "settingsAppearance": "Aparência", - "settingsAppearanceDescription": "Alterne entre o modo claro e escuro ou altere o idioma da interface do usuário", - "settingsThemeMode": "Tema", - "settingsLanguage": "Linguagem", - "settingsDistributedUptime": "Disponibilidade distribuída", - "settingsDistributedUptimeDescription": "Habilitar/desabilitar o monitoramento de tempo de disponibilidade distribuído.", - "settingsEnabled": "Habilitado", - "settingsDisabled": "Desabilitado", - "settingsHistoryAndMonitoring": "Histórico de monitoramento", - "settingsHistoryAndMonitoringDescription": "Defina por quanto tempo você deseja manter os dados de histórico. Você também pode limpar todos os dados existentes.", - "settingsTTLLabel": "Os dias em que você deseja manter os dados de histórico.", - "settingsTTLOptionalLabel": "0 para infinito", - "settingsClearAllStats": "Limpe todas as estatísticas. Isso é irreversível.", - "settingsClearAllStatsButton": "Limpar todas as estatísticas", - "settingsClearAllStatsDialogTitle": "Você quer limpar todas as estatísticas?", - "settingsClearAllStatsDialogDescription": "Uma vez limpo, o histórico de monitoramento e as estatísticas não podem ser recuperados.", - "settingsClearAllStatsDialogConfirm": "Sim, limpar todas as estatísticas", - "settingsDemoMonitors": "Monitores de demonstração", - "settingsDemoMonitorsDescription": "Adicione monitores de genéricos para fins de demonstração.", - "settingsAddDemoMonitors": "Adicionando monitores de demonstração", - "settingsAddDemoMonitorsButton": "Adicionar monitores de demonstração", - "settingsRemoveAllMonitors": "Removendo todos os monitores", - "settingsRemoveAllMonitorsButton": "Remover todos os monitores", - "settingsRemoveAllMonitorsDialogTitle": "Você deseja remover todos os monitores?", - "settingsRemoveAllMonitorsDialogConfirm": "Sim, remova todos os monitores", - "settingsWallet": "Carteira", - "settingsWalletDescription": "Conecte sua carteira aqui. Isso é necessário para que o Distributed Uptime Monitor se conecte a vários nós globalmente.", - "settingsAbout": "Sobre", - "settingsDevelopedBy": "Desenvolvido pela Bluewave Labs.", - "settingsSave": "Salvar", - "settingsSuccessSaved": "Configurações salvas com sucesso", - "settingsFailedToSave": "Falha ao salvar as configurações", - "settingsStatsCleared": "Estatísticas limpas com sucesso", - "settingsFailedToClearStats": "Falha ao limpar estatísticas", - "settingsDemoMonitorsAdded": "Monitores de demonstração adicionados com sucesso", - "settingsFailedToAddDemoMonitors": "Falha ao adicionar monitores de demonstração", - "settingsMonitorsDeleted": "Todos os monitores foram excluídos com sucesso", - "settingsFailedToDeleteMonitors": "Falha ao excluir todos os monitores", - "starPromptTitle": "Star Checkmate", - "starPromptDescription": "Veja os últimos lançamentos e ajude a expandir a comunidade no GitHub", - "https": "HTTPS", - "http": "HTTP", - "monitor": "monitor", - "aboutus": "Sobre nós", - "now": "Agora", - "delete": "Deletar", - "configure": "Configurar", - "networkError": "Erro de rede", - "responseTime": "Tempo de resposta", - "ms": "ms", - "bar": "Bar", - "area": "Área", - "country": "PAÍS", - "city": "CIDADE", - "response": "RESPOSTA", - "checkConnection": "Verifique sua conexão", - "passwordreset": "Redefinição de senha", - "authRegisterStepOnePersonalDetails": "Insira seus dados pessoais", - "authCheckEmailOpenEmailButton": "Abra o aplicativo de e-mail", - "authNewPasswordConfirmed": "Sua senha foi redefinida com sucesso. Clique abaixo para fazer login magicamente.", - "monitorStatusUp": "O monitor {name} ({url}) agora está ATIVO e respondendo", - "monitorStatusDown": "O monitor {name} ({url}) está INATIVO e não está respondendo", - "webhookSendSuccess": "Notificação de webhook enviada com sucesso", - "webhookSendError": "Erro ao enviar notificação de webhook para {platform}", - "webhookUnsupportedPlatform": "Plataforma não suportada: {platform}", - "distributedRightCategoryTitle": "Monitor", - "distributedStatusServerMonitors": "Monitores de servidor", - "distributedStatusServerMonitorsDescription": "Monitorar o status dos servidores relacionados", - "distributedUptimeCreateSelectURL": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", - "distributedUptimeCreateChecks": "Verificações para realizar", - "distributedUptimeCreateChecksDescription": "Você sempre pode adicionar ou remover verificações depois de adicionar seu site.", - "distributedUptimeCreateIncidentNotification": "Notificações de incidentes", - "distributedUptimeCreateIncidentDescription": "Quando ocorrer um incidente, notifique os usuários.", - "distributedUptimeCreateAdvancedSettings": "Configurações avançadas", - "distributedUptimeDetailsNoMonitorHistory": "Ainda não há histórico de verificações para este monitor.", - "distributedUptimeDetailsFooterHeading": "Feito com ❤️ por UpRock e Bluewave Labs", - "distributedUptimeDetailsFooterBuilt": "Construído com", - "distributedUptimeDetailsFooterSolana": "Solana", - "distributedUptimeDetailsMonitorHeader": "Monitoramento de Uptime distribuído com tecnologia DePIN", - "distributedUptimeDetailsStatusHeaderUptime": "Uptime:", - "distributedUptimeDetailsStatusHeaderLastUpdate": "Última atualização", - "notifications": { - "enableNotifications": "Habilitar notificações da {{platform}}", - "testNotification": "Notificação de teste", - "addOrEditNotifications": "Adicionar ou editar notificações", - "slack": { - "label": "Slack", - "description": "Para habilitar as notificações do Slack, crie um aplicativo Slack e habilite os webhooks de entrada. Depois disso, basta fornecer a URL do webhook aqui.", - "webhookLabel": "Webhook URL", - "webhookPlaceholder": "https://hooks.slack.com/services/...", - "webhookRequired": "A URL do webhook do Slack é necessária" - }, - "discord": { - "label": "Discord", - "description": "Para enviar dados para um canal do Discord a partir do Checkmate por meio de notificações do Discord usando webhooks, você pode usar o recurso de Webhooks de entrada do Discord.", - "webhookLabel": "Discord Webhook URL", - "webhookPlaceholder": "https://discord.com/api/webhooks/...", - "webhookRequired": "A URL do webhook do Discord é necessária" - }, - "telegram": { - "label": "Telegram", - "description": "Para habilitar as notificações do Telegram, crie um bot do Telegram usando o BotFather, um bot oficial para criar e gerenciar bots do Telegram. Em seguida, obtenha o token da API e o ID do chat e os coloque aqui.", - "tokenLabel": "Seu token de bot", - "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", - "chatIdLabel": "Seu ID de bate-papo", - "chatIdPlaceholder": "-1001234567890", - "fieldsRequired": "O token do Telegram e o ID do chat são necessários" - }, - "webhook": { - "label": "Webhooks", - "description": "Você pode configurar um webhook personalizado para receber notificações quando ocorrerem incidentes.", - "urlLabel": "Webhook URL", - "urlPlaceholder": "https://seu-servidor.com/webhook", - "urlRequired": "URL do webhook é necessária" - }, - "testNotificationDevelop": "Notificação de teste 2", - "integrationButton": "Integração de notificação", - "testSuccess": "Notificação de teste enviada com sucesso!", - "testFailed": "Falha ao enviar notificação de teste", - "unsupportedType": "Tipo de notificação não suportado", - "networkError": "Ocorreu um erro de rede" - }, - "testLocale": "testLocale", - "add": "Adicionar", - "monitors": "monitores", - "distributedUptimeStatusCreateStatusPage": "Pagina de status", - "distributedUptimeStatusCreateStatusPageAccess": "Acesso", - "distributedUptimeStatusCreateStatusPageReady": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", - "distributedUptimeStatusBasicInfoHeader": "Informação básica", - "distributedUptimeStatusBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", - "distributedUptimeStatusLogoHeader": "Logo", - "distributedUptimeStatusLogoDescription": "Carregue um logo para sua página de status", - "distributedUptimeStatusLogoUploadButton": "Upload logo", - "distributedUptimeStatusStandardMonitorsHeader": "Monitores padrão", - "distributedUptimeStatusStandardMonitorsDescription": "Anexe monitores padrão à sua página de status.", - "distributedUptimeStatusCreateYour": "Crie o seu", - "distributedUptimeStatusEditYour": "Edite seu", - "distributedUptimeStatusPublishedLabel": "Publicado e visível ao público", - "distributedUptimeStatusCompanyNameLabel": "Nome da empresa", - "distributedUptimeStatusPageAddressLabel": "Endereço da sua página de status", - "distributedUptimeStatus30Days": "30 dias", - "distributedUptimeStatus60Days": "60 dias", - "distributedUptimeStatus90Days": "90 dias", - "distributedUptimeStatusPageNotSetUp": "Uma página de status não está configurada.", - "distributedUptimeStatusContactAdmin": "Entre em contato com seu administrador", - "distributedUptimeStatusPageNotPublic": "Esta página de status não é pública.", - "distributedUptimeStatusPageDeleteDialog": "Você quer excluir esta página de status?", - "distributedUptimeStatusPageDeleteConfirm": "Sim, excluir página de status", - "distributedUptimeStatusPageDeleteDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", - "distributedUptimeStatusDevices": "Dispositivos", - "distributedUptimeStatusUpt": "UPT", - "distributedUptimeStatusUptBurned": "UPT queimado", - "distributedUptimeStatusUptLogo": "Logo UPT", - "incidentsTableNoIncidents": "Nenhum incidente registrado", - "incidentsTablePaginationLabel": "incidentes", - "incidentsTableMonitorName": "Nome do monitor", - "incidentsTableStatus": "Status", - "incidentsTableDateTime": "Data & Hora", - "incidentsTableStatusCode": "Código de status", - "incidentsTableMessage": "Mensagem", - "incidentsOptionsHeader": "Incidentes para:", - "incidentsOptionsHeaderFilterBy": "Filtrar por:", - "incidentsOptionsHeaderFilterAll": "Todos", - "incidentsOptionsHeaderFilterDown": "Inativos", - "incidentsOptionsHeaderFilterCannotResolve": "Não é possível resolver", - "incidentsOptionsHeaderShow": "Mostrar:", - "incidentsOptionsHeaderLastHour": "Última hora", - "incidentsOptionsHeaderLastDay": "Último dia", - "incidentsOptionsHeaderLastWeek": "Ultima semana", - "incidentsOptionsPlaceholderAllServers": "Todos os servidores", - "infrastructureCreateYour": "Crie o seu", - "infrastructureCreateGeneralSettingsDescription": "Aqui você pode inserir a URL do host, juntamente com o nome de exibição e o API secret de autorização para se conectar ao agente do servidor.", - "infrastructureServerRequirement": "O servidor que você quer monitorar deve estar executando o", - "infrastructureCustomizeAlerts": "Personalize alertas", - "infrastructureAlertNotificationDescription": "Envie uma notificação ao(s) usuário(s) quando os limites excederem uma porcentagem especificada.", - "infrastructureCreateMonitor": "Criar monitor de infraestrutura", - "infrastructureProtocol": "Protocolo", - "infrastructureServerUrlLabel": "URL do servidor", - "infrastructureDisplayNameLabel": "Nome de exibição", - "infrastructureAuthorizationSecretLabel": "API Secret", - "gb": "GB", - "mb": "MB", - "mem": "Mem", - "memoryUsage": "Uso de memória", - "cpu": "CPU", - "cpuUsage": "Uso da CPU", - "cpuTemperature": "Temperatura da CPU", - "diskUsage": "Uso de disco", - "used": "Usado", - "total": "Total", - "cores": "Núcleos", - "frequency": "Frequência", - "status": "Status", - "cpuPhysical": "CPU (Física)", - "cpuLogical": "CPU (Lógica)", - "cpuFrequency": "Frequência da CPU", - "avgCpuTemperature": "Temperatura média da CPU", - "memory": "Memória", - "disk": "Disco", - "uptime": "Uptime", - "os": "OS", - "host": "Host", - "actions": "Ações", - "integrations": "Integrações", - "integrationsPrism": "Conecte o Prism ao seu serviço favorito.", - "integrationsSlack": "Slack", - "integrationsSlackInfo": "Conecte-se com o Slack e veja incidentes em um canal", - "integrationsDiscord": "Discord", - "integrationsDiscordInfo": "Conecte-se com o Discord e visualize incidentes diretamente em um canal", - "integrationsZapier": "Zapier", - "integrationsZapierInfo": "Envie todos os incidentes para o Zapier e veja-os em todos os lugares", - "commonSave": "Salvar", - "createYour": "Crie o seu", - "createMonitor": "Criar monitor", - "pause": "Pausar", - "resume": "Resumir", - "editing": "Editando...", - "url": "URL", - "access": "Acesso", - "timezone": "Fuso horário", - "features": "Recursos", - "administrator": "Administrador?", - "loginHere": "Login aqui", - "displayName": "Nome de exibição", - "urlMonitor": "URL do monitor", - "portToMonitor": "Porta do monitor", - "websiteMonitoring": "Monitoramento de sites", - "websiteMonitoringDescription": "Use HTTP(s) para monitorar seu site ou API endpoint.", - "pingMonitoring": "Monitoramento de ping", - "pingMonitoringDescription": "Verifique se o seu servidor está disponível ou não.", - "dockerContainerMonitoring": "Monitoramento de contêiner Docker", - "dockerContainerMonitoringDescription": "Verifique se o seu contêiner Docker está em execução ou não.", - "portMonitoring": "Monitoramento de porta", - "portMonitoringDescription": "Verifique se sua porta está aberta ou não.", - "createMaintenanceWindow": "Criar janela de manutenção", - "createMaintenance": "Criar manutenção", - "editMaintenance": "Editar manutenção", - "maintenanceWindowName": "Nome da janela de manutenção", - "friendlyNameInput": "Nome amigável", - "friendlyNamePlaceholder": "Manutenção em __ : __ por ___ minutos", - "maintenanceRepeat": "Repetição de manutenção", - "maintenance": "manutenção", - "duration": "Duração", - "addMonitors": "Adicionar monitores", - "window": "janela", - "cancel": "Cancelar", - "message": "Mensagem", - "low": "baixo", - "high": "alto", - "statusCode": "Código de status", - "date&Time": "Data & Hora", - "type": "Tipo", - "statusPageName": "Nome da página de status", - "publicURL": "URL publica", - "repeat": "Repetir", - "edit": "Editar", - "createA": "Crie um", - "remove": "Remover", - "maintenanceWindowDescription": "Seus pings não serão enviados durante esse período", - "startTime": "Hora de início", - "timeZoneInfo": "Todas as datas e horários estão no fuso horário GMT+0.", - "monitorsToApply": "Monitores para aplicar a janela de manutenção", - "nextWindow": "Próxima janela", - "notFoundButton": "Vá para o painel principal", - "pageSpeedConfigureSettingsDescription": "Aqui você pode selecionar a URL do host, juntamente com o tipo de monitor.", - "monitorDisplayName": "Nome de exibição do monitor", - "whenNewIncident": "Quando há um novo incidente,", - "notifySMS": "Notificar via SMS (em breve)", - "notifyEmails": "Também notificar por e-mail para vários endereços (em breve)", - "seperateEmails": "Você pode separar vários e-mails com uma vírgula", - "checkFrequency": "Verifique a frequência", - "matchMethod": "Método de correspondência", - "expectedValue": "Valor esperado", - "deleteDialogTitle": "Você realmente deseja excluir este monitor?", - "deleteDialogDescription": "Uma vez excluído, este monitor não poderá ser recuperado.", - "pageSpeedMonitor": "Monitor PageSpeed", - "shown": "Mostrado", - "ago": "atrás", - "companyName": "Nome da empresa", - "pageSpeedDetailsPerformanceReport": "Os valores são estimados e podem variar.", - "pageSpeedDetailsPerformanceReportCalculator": "Veja calculadora", - "checkingEvery": "Verificando a cada", - "statusPageCreateSettings": "Se sua página de status estiver pronta, você pode marcá-la como publicada.", - "basicInformation": "Informações Básicas", - "statusPageCreateBasicInfoDescription": "Defina o nome da empresa e o subdomínio para o qual sua página de status aponta.", - "statusPageCreateSelectTimeZoneDescription": "Selecione o fuso horário em que será exibido na sua página de status.", - "statusPageCreateAppearanceDescription": "Defina a aparência padrão da sua página de status pública.", - "statusPageCreateSettingsCheckboxLabel": "Publicado e visível ao público", - "statusPageCreateBasicInfoStatusPageAddress": "Endereço da sua página de status", - "statusPageCreateTabsContent": "Servidores de páginas de status", - "statusPageCreateTabsContentDescription": "Você pode adicionar quantos monitores quiser à sua página de status. Você também pode reordená-los para uma melhor experiência de visualização.", - "statusPageCreateTabsContentFeaturesDescription": "Mostrar mais detalhes na página de status", - "showCharts": "Mostrar gráficos", - "showUptimePercentage": "Mostrar porcentagem de Uptime", - "removeLogo": "Remover logo", - "statusPageStatus": "Uma página de status pública não está configurada.", - "statusPageStatusContactAdmin": "Entre em contato com seu administrador", - "statusPageStatusNotPublic": "Esta página de status não é pública.", - "statusPageStatusNoPage": "Não há página de status aqui.", - "statusPageStatusServiceStatus": "Status do serviço", - "deleteStatusPage": "Você quer excluir esta página de status?", - "deleteStatusPageConfirm": "Sim, excluir página de status", - "deleteStatusPageDescription": "Uma vez excluída, sua página de status não poderá ser recuperada.", - "uptimeCreate": "O valor esperado é usado para corresponder ao resultado da resposta, e a correspondência determina o status.", - "uptimeCreateJsonPath": "Esta expressão será avaliada em relação aos dados JSON de resposta e o resultado será usado para corresponder ao valor esperado. Veja", - "uptimeCreateJsonPathQuery": "para documentação de linguagem de consulta.", - "maintenanceTableActionMenuDialogTitle": "Você realmente deseja remover esta janela de manutenção?", - "infrastructureEditYour": "Edite seu", - "infrastructureEditMonitor": "Salvar Monitor de Infraestrutura", - "infrastructureMonitorCreated": "Monitor de infraestrutura criado com sucesso!", - "infrastructureMonitorUpdated": "Monitor de infraestrutura atualizado com sucesso!", - "errorInvalidTypeId": "Tipo de notificação fornecido inválido", - "errorInvalidFieldId": "ID do campo fornecido inválido", - "inviteNoTokenFound": "Nenhum token de convite encontrado", - "pageSpeedWarning": "Aviso: você ainda não adicionou uma chave de API do Google PageSpeed. Sem ela, o monitor PageSpeed ​​não funcionará.", - "pageSpeedLearnMoreLink": "Clique aqui", - "pageSpeedAddApiKey": "para adicionar sua chave de API.", - "update": "Atualizar", - "invalidFileFormat": "Formato de arquivo não suportado!", - "invalidFileSize": "O tamanho do arquivo é muito grande!", - "ClickUpload": "Clique para enviar", - "DragandDrop": "arraste e solte", - "MaxSize": "Tamanho Máximo", - "SupportedFormats": "Formatos suportados", - "FirstName": "Nome", - "LastName": "Sobrenome", - "EmailDescriptionText": "Este é seu endereço de e-mail atual — ele não pode ser alterado.", - "YourPhoto": "Foto de perfil", - "PhotoDescriptionText": "Esta foto será exibida na sua página de perfil.", - "save": "Salvar", - "DeleteDescriptionText": "Isso removerá a conta e todos os dados associados do servidor. Essa ação não é reversível.", - "DeleteAccountWarning": "Remover sua conta significa que você não poderá fazer login novamente e todos os seus dados serão removidos. Isso não é reversível.", - "DeleteWarningTitle": "Deseja realmente remover esta conta?", - "authRegisterFirstName": "Nome", - "authRegisterLastName": "Sobrenome", - "authRegisterEmail": "E-mail", - "authRegisterEmailRequired": "Para continuar, insira seu endereço de e-mail", - "bulkImport": { - "title": "Bulk Import", - "selectFileTips": "Selecione o arquivo CSV para enviar", - "selectFileDescription": "Você pode baixar nosso ou amostra", - "selectFile": "Selecione o arquivo", - "parsingFailed": "Falha na análise", - "uploadSuccess": "Monitores criados com sucesso!", - "validationFailed": "Falha na validação", - "noFileSelected": "Nenhum arquivo selecionado", - "fallbackPage": "Importe um arquivo para enviar uma lista de servidores em massa" - }, - "welcomeBack": "Bem-vindo de volta! Você fez login com sucesso.", - "authRegisterLoginLink": "Login", - "validationNameRequired": "Por favor digite seu nome", - "validationNameTooLong": "O nome deve ter menos de 50 caracteres", - "validationNameInvalidCharacters": "Por favor, use apenas letras, espaços, apóstrofos ou hifens", - "settingsSystemReset": "Resetar sistema", - "settingsSystemResetDescription": "Remova todos os monitores do seu sistema.", - "DeleteAccountTitle": "Remover conta", - "DeleteAccountButton": "Remover conta", - "authRegisterEmailInvalid": "Por favor, insira um endereço de e-mail válido", - "publicLink": "Link publico", - "doNotHaveAccount": "Ainda não tem uma conta?", - "registerHere": "Registre-se aqui", - "backendUnreachable": "Erro de conexão com o servidor", - "backendUnreachableMessage": "Não conseguimos conectar ao servidor. Verifique sua conexão com a internet ou sua configuração de implantação se o problema persistir.", - "backendUnreachableError": "Não foi possível conectar ao servidor. Tente novamente mais tarde.", - "retryConnection": "Reconectar", - "retryingConnection": "Conectando...", - "backendReconnected": "Reconectado ao servidor com sucesso.", - "backendStillUnreachable": "O servidor ainda está inacessível. Tente novamente mais tarde.", - "backendConnectionError": "Erro ao conectar ao servidor. Verifique sua conexão de internet.", - "maskedPageSpeedKeyPlaceholder": "*************************************", - "pageSpeedApiKeyFieldTitle": "Google PageSpeed API key", - "pageSpeedApiKeyFieldLabel": "PageSpeed API key", - "pageSpeedApiKeyFieldDescription": "Insira sua chave da API do Google PageSpeed ​​para ativar o monitoramento de velocidade de página. Clique em Resetar para atualizar a chave.", - "pageSpeedApiKeyFieldResetLabel": "A chave de API está definida. Clique em Resetar para alterá-la.", - "reset": "Resetar", - "ignoreTLSError": "Ignorar erro TLS/SSL", - "tlsErrorIgnored": "Erros TLS/SSL ignorados", - "ignoreTLSErrorDescription": "Ignore os erros de TLS/SSL e continue verificando a disponibilidade do site", - "createNew": "Criar novo", - "greeting": { - "prepend": "Ei", - "append": "A tarde é seu playground — vamos torná-la épica!", - "overview": "Aqui está uma visão geral dos seus monitores {{type}}." - }, - "monitorStatus": { - "up": "Online", - "down": "Offline", - "paused": "pausado" - }, - "roles": { - "superAdmin": "Super Admin", - "admin": "Admin", - "teamMember": "Membro da equipe", - "demoUser": "Usuário demo" - }, - "teamPanel": { - "teamMembers": "Membros da equipe", - "filter": { - "all": "Todos", - "member": "Membro" - }, - "inviteTeamMember": "Convidar um membro da equipe", - "inviteNewTeamMember": "Convidar novo membro da equipe", - "inviteDescription": "Ao adicionar um novo membro da equipe, ele terá acesso a todos os monitores.", - "email": "E-mail", - "selectRole": "Selecione a cargo", - "inviteLink": "Link de convite", - "cancel": "Cancelar", - "noMembers": "Não há membros da equipe com este cargo", - "getToken": "Obter token", - "emailToken": "Token de e-mail", - "table": { - "name": "Nome", - "email": "E-mail", - "role": "Cargo", - "created": "Criado" - } - }, - "monitorState": { - "paused": "Pausado", - "resumed": "Retomado", - "active": "Ativo" - }, - "menu": { - "uptime": "Uptime", - "pagespeed": "Pagespeed", - "infrastructure": "Infraestrutura", - "distributedUptime": "Uptime distribuído", - "incidents": "Incidentes", - "statusPages": "Pagina de status", - "maintenance": "Manutenção", - "integrations": "Integrações", - "settings": "Configurações", - "support": "Suporte", - "discussions": "Discussões", - "docs": "Docs", - "changelog": "Changelog", - "profile": "Perfil", - "password": "Senha", - "team": "Equipe", - "logOut": "Sair" - }, - "settingsEmail": "E-mail", - "settingsEmailDescription": "Configurações de e-mail do seu sistema. Elas são usadas para enviar notificações e alertas.", - "settingsEmailHost": "Host de e-mail - Nome do host ou endereço IP do servidor SMTP", - "settingsEmailPort": "Porta de e-mail - Porta para conectar", - "settingsEmailAddress": "Endereço de e-mail - Usado para autenticação", - "settingsEmailPassword": "Senha de e-mail - Senha para autenticação", - "settingsEmailUser": "Usuário de e-mail - Nome de usuário para autenticação, substitui o endereço de e-mail, se especificado", - "settingsEmailFieldResetLabel": "A senha foi definida. Clique em Redefinir para alterá-la.", - "state": "Estado", - "statusBreadCrumbsStatusPages": "Pagina de status", - "statusBreadCrumbsDetails": "Detalhes", - "authForgotPasswordInstructions": "Não se preocupe, enviaremos instruções de redefinição.", - "settingsThemeModeLight": "Claro", - "settingsThemeModeDark": "Escuro", - "settingsClearAllStatsDialogCancel": "Cancelar", - "commonSaving": "Salvando...", - "navControls": "Controles", - "incidentsPageTitle": "Incidentes", - "passwordPanel": { - "passwordChangedSuccess": "Sua senha foi alterada com sucesso.", - "passwordInputIncorrect": "Sua senha digitada está incorreta.", - "currentPassword": "Senha atual", - "enterCurrentPassword": "Digite sua senha atual", - "newPassword": "Nova Senha", - "enterNewPassword": "Digite sua nova senha", - "confirmNewPassword": "Confirme a nova senha", - "passwordRequirements": "A nova senha deve conter pelo menos 8 caracteres e deve ter pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial.", - "saving": "Salvando..." - }, - "uptimeCreateSelectURL": "Insira a URL ou IP a ser monitorado (por exemplo, https://example.com/ ou 192.168.1.100) e adicione um nome de exibição que irá aparecer no painel.", - "settingsEmailConnectionHost": "Host de conexão de e-mail - Nome do host a ser usado na saudação HELO/EHLO", - "sendTestEmail": "Enviar e-mail de teste", - "emailSent": "E-mail enviado com sucesso", - "failedToSendEmail": "Falha ao enviar e-mail", - "settingsTestEmail": "Enviar e-mail de teste", - "settingsTestEmailSuccess": "E-mail de teste enviado com sucesso", - "settingsTestEmailFailed": "Falha ao enviar e-mail de teste", - "settingsTestEmailFailedWithReason": "Falha ao enviar e-mail de teste: {{reason}}", - "settingsTestEmailUnknownError": "Erro desconhecido", - "settingsEmailRequiredFields": "O host e a porta do e-mail são obrigatórios", - "statusMsg": { - "paused": "O monitoramento está pausado.", - "up": "Seu site está no ar.", - "down": "Seu site está fora do ar.", - "pending": "Pendente..." - }, - "settingsURLTitle": "", - "settingsURLDescription": "", - "settingsURLSelectTitle": "", - "settingsURLEnabled": "", - "settingURLDisabled": "" -} diff --git a/client/src/locales/zh-tw.json b/client/src/locales/zh-tw.json deleted file mode 100644 index 8a34a6835..000000000 --- a/client/src/locales/zh-tw.json +++ /dev/null @@ -1,557 +0,0 @@ -{ - "dontHaveAccount": "沒有帳號", - "email": "E-mail", - "forgotPassword": "忘記密碼", - "password": "密碼", - "signUp": "註冊", - "submit": "", - "title": "", - "continue": "繼續", - "enterEmail": "輸入您的 E-mail", - "authLoginTitle": "登入", - "authLoginEnterPassword": "輸入您的密碼", - "commonPassword": "密碼", - "commonBack": "回去", - "authForgotPasswordTitle": "忘記密碼?", - "authForgotPasswordResetPassword": "", - "createPassword": "", - "createAPassword": "", - "authRegisterAlreadyHaveAccount": "已經有帳號嗎?", - "commonAppName": "Checkmate", - "authLoginEnterEmail": "輸入您的 E-mail", - "authRegisterTitle": "建立帳號", - "authRegisterStepOneTitle": "建立您的帳號", - "authRegisterStepOneDescription": "清輸入您的個人檔案", - "authRegisterStepTwoTitle": "設定您的個人檔案", - "authRegisterStepTwoDescription": "請分享更多關於您的資訊", - "authRegisterStepThreeTitle": "快完成了!", - "authRegisterStepThreeDescription": "請確認您的資訊", - "authForgotPasswordDescription": "別擔心,我們會發送重設說明給您。", - "authForgotPasswordSendInstructions": "將說明發送至", - "authForgotPasswordBackTo": "回去", - "authCheckEmailTitle": "請查看您的電子郵件", - "authCheckEmailDescription": "我們已將密碼重設連結發送至", - "authCheckEmailResendEmail": "重新發送 E-mail", - "authCheckEmailBackTo": "回去", - "goBackTo": "回去", - "authCheckEmailDidntReceiveEmail": "沒有受到 E-mail?", - "authCheckEmailClickToResend": "點擊", - "authSetNewPasswordTitle": "設定新密碼", - "authSetNewPasswordDescription": "您的新密碼必須與之前使用過的密碼不同。", - "authSetNewPasswordNewPassword": "新密碼", - "authSetNewPasswordConfirmPassword": "確認密碼", - "confirmPassword": "確認您的密碼", - "authSetNewPasswordResetPassword": "重設密碼", - "authSetNewPasswordBackTo": "回去", - "authPasswordMustBeAtLeast": "必須至少", - "authPasswordCharactersLong": "8 個字符長", - "authPasswordMustContainAtLeast": "必須至少包含", - "authPasswordSpecialCharacter": "一個特殊字符", - "authPasswordOneNumber": "一個數字", - "authPasswordUpperCharacter": "一個大寫字母", - "authPasswordLowerCharacter": "一個小寫字母", - "authPasswordConfirmAndPassword": "確認密碼", - "authPasswordMustMatch": "必須相符", - "authRegisterCreateAccount": "建立您的帳號開始使用", - "authRegisterCreateSuperAdminAccount": "建立您的超級管理員帳號開始使用", - "authRegisterSignUpWithEmail": "用 E-mail 註冊", - "authRegisterBySigningUp": "註冊即表示您同意我們的", - "distributedStatusHeaderText": "實時、真實設備覆蓋", - "distributedStatusSubHeaderText": "由全球數百萬個設備提供支持,您可以按全球區域、國家或城市查看系統效能", - "settingsGeneralSettings": "一般設定", - "settingsDisplayTimezone": "顯示時區", - "settingsDisplayTimezoneDescription": "您公開顯示的儀表板的時區。", - "settingsAppearance": "外觀", - "settingsAppearanceDescription": "", - "settingsThemeMode": "", - "settingsLanguage": "", - "settingsDistributedUptime": "", - "settingsDistributedUptimeDescription": "", - "settingsEnabled": "", - "settingsDisabled": "", - "settingsHistoryAndMonitoring": "", - "settingsHistoryAndMonitoringDescription": "", - "settingsTTLLabel": "", - "settingsTTLOptionalLabel": "", - "settingsClearAllStats": "", - "settingsClearAllStatsButton": "", - "settingsClearAllStatsDialogTitle": "", - "settingsClearAllStatsDialogDescription": "", - "settingsClearAllStatsDialogConfirm": "", - "settingsDemoMonitors": "", - "settingsDemoMonitorsDescription": "", - "settingsAddDemoMonitors": "", - "settingsAddDemoMonitorsButton": "", - "settingsRemoveAllMonitors": "", - "settingsRemoveAllMonitorsButton": "", - "settingsRemoveAllMonitorsDialogTitle": "", - "settingsRemoveAllMonitorsDialogConfirm": "", - "settingsWallet": "", - "settingsWalletDescription": "", - "settingsAbout": "", - "settingsDevelopedBy": "", - "settingsSave": "", - "settingsSuccessSaved": "", - "settingsFailedToSave": "", - "settingsStatsCleared": "", - "settingsFailedToClearStats": "", - "settingsDemoMonitorsAdded": "", - "settingsFailedToAddDemoMonitors": "", - "settingsMonitorsDeleted": "", - "settingsFailedToDeleteMonitors": "", - "starPromptTitle": "", - "starPromptDescription": "", - "https": "", - "http": "", - "monitor": "", - "aboutus": "", - "now": "", - "delete": "", - "configure": "", - "networkError": "", - "responseTime": "", - "ms": "", - "bar": "", - "area": "", - "country": "", - "city": "", - "response": "", - "checkConnection": "", - "passwordreset": "", - "authRegisterStepOnePersonalDetails": "", - "authCheckEmailOpenEmailButton": "", - "authNewPasswordConfirmed": "", - "monitorStatusUp": "", - "monitorStatusDown": "", - "webhookSendSuccess": "", - "webhookSendError": "", - "webhookUnsupportedPlatform": "", - "distributedRightCategoryTitle": "", - "distributedStatusServerMonitors": "", - "distributedStatusServerMonitorsDescription": "", - "distributedUptimeCreateSelectURL": "", - "distributedUptimeCreateChecks": "", - "distributedUptimeCreateChecksDescription": "", - "distributedUptimeCreateIncidentNotification": "", - "distributedUptimeCreateIncidentDescription": "", - "distributedUptimeCreateAdvancedSettings": "", - "distributedUptimeDetailsNoMonitorHistory": "", - "distributedUptimeDetailsFooterHeading": "", - "distributedUptimeDetailsFooterBuilt": "", - "distributedUptimeDetailsFooterSolana": "", - "distributedUptimeDetailsMonitorHeader": "", - "distributedUptimeDetailsStatusHeaderUptime": "", - "distributedUptimeDetailsStatusHeaderLastUpdate": "", - "notifications": { - "enableNotifications": "", - "testNotification": "", - "addOrEditNotifications": "", - "slack": { - "label": "", - "description": "", - "webhookLabel": "", - "webhookPlaceholder": "", - "webhookRequired": "" - }, - "discord": { - "label": "", - "description": "", - "webhookLabel": "", - "webhookPlaceholder": "", - "webhookRequired": "" - }, - "telegram": { - "label": "", - "description": "", - "tokenLabel": "", - "tokenPlaceholder": "", - "chatIdLabel": "", - "chatIdPlaceholder": "", - "fieldsRequired": "" - }, - "webhook": { - "label": "", - "description": "", - "urlLabel": "", - "urlPlaceholder": "", - "urlRequired": "" - }, - "testNotificationDevelop": "", - "integrationButton": "", - "testSuccess": "", - "testFailed": "", - "unsupportedType": "", - "networkError": "" - }, - "testLocale": "", - "add": "", - "monitors": "", - "distributedUptimeStatusCreateStatusPage": "", - "distributedUptimeStatusCreateStatusPageAccess": "", - "distributedUptimeStatusCreateStatusPageReady": "", - "distributedUptimeStatusBasicInfoHeader": "", - "distributedUptimeStatusBasicInfoDescription": "", - "distributedUptimeStatusLogoHeader": "", - "distributedUptimeStatusLogoDescription": "", - "distributedUptimeStatusLogoUploadButton": "", - "distributedUptimeStatusStandardMonitorsHeader": "", - "distributedUptimeStatusStandardMonitorsDescription": "", - "distributedUptimeStatusCreateYour": "", - "distributedUptimeStatusEditYour": "", - "distributedUptimeStatusPublishedLabel": "", - "distributedUptimeStatusCompanyNameLabel": "", - "distributedUptimeStatusPageAddressLabel": "", - "distributedUptimeStatus30Days": "", - "distributedUptimeStatus60Days": "", - "distributedUptimeStatus90Days": "", - "distributedUptimeStatusPageNotSetUp": "", - "distributedUptimeStatusContactAdmin": "", - "distributedUptimeStatusPageNotPublic": "", - "distributedUptimeStatusPageDeleteDialog": "", - "distributedUptimeStatusPageDeleteConfirm": "", - "distributedUptimeStatusPageDeleteDescription": "", - "distributedUptimeStatusDevices": "", - "distributedUptimeStatusUpt": "", - "distributedUptimeStatusUptBurned": "", - "distributedUptimeStatusUptLogo": "", - "incidentsTableNoIncidents": "", - "incidentsTablePaginationLabel": "", - "incidentsTableMonitorName": "", - "incidentsTableStatus": "", - "incidentsTableDateTime": "", - "incidentsTableStatusCode": "", - "incidentsTableMessage": "", - "incidentsOptionsHeader": "", - "incidentsOptionsHeaderFilterBy": "", - "incidentsOptionsHeaderFilterAll": "", - "incidentsOptionsHeaderFilterDown": "", - "incidentsOptionsHeaderFilterCannotResolve": "", - "incidentsOptionsHeaderShow": "", - "incidentsOptionsHeaderLastHour": "", - "incidentsOptionsHeaderLastDay": "", - "incidentsOptionsHeaderLastWeek": "", - "incidentsOptionsPlaceholderAllServers": "", - "infrastructureCreateYour": "", - "infrastructureCreateGeneralSettingsDescription": "", - "infrastructureServerRequirement": "", - "infrastructureCustomizeAlerts": "", - "infrastructureAlertNotificationDescription": "", - "infrastructureCreateMonitor": "", - "infrastructureProtocol": "", - "infrastructureServerUrlLabel": "", - "infrastructureDisplayNameLabel": "", - "infrastructureAuthorizationSecretLabel": "", - "gb": "", - "mb": "", - "mem": "", - "memoryUsage": "", - "cpu": "", - "cpuUsage": "", - "cpuTemperature": "", - "diskUsage": "", - "used": "", - "total": "", - "cores": "", - "frequency": "", - "status": "", - "cpuPhysical": "", - "cpuLogical": "", - "cpuFrequency": "", - "avgCpuTemperature": "", - "memory": "", - "disk": "", - "uptime": "", - "os": "", - "host": "", - "actions": "", - "integrations": "", - "integrationsPrism": "", - "integrationsSlack": "", - "integrationsSlackInfo": "", - "integrationsDiscord": "", - "integrationsDiscordInfo": "", - "integrationsZapier": "", - "integrationsZapierInfo": "", - "commonSave": "", - "createYour": "", - "createMonitor": "", - "pause": "", - "resume": "", - "editing": "", - "url": "", - "access": "", - "timezone": "", - "features": "", - "administrator": "", - "loginHere": "", - "displayName": "", - "urlMonitor": "", - "portToMonitor": "", - "websiteMonitoring": "", - "websiteMonitoringDescription": "", - "pingMonitoring": "", - "pingMonitoringDescription": "", - "dockerContainerMonitoring": "", - "dockerContainerMonitoringDescription": "", - "portMonitoring": "", - "portMonitoringDescription": "", - "createMaintenanceWindow": "", - "createMaintenance": "", - "editMaintenance": "", - "maintenanceWindowName": "", - "friendlyNameInput": "", - "friendlyNamePlaceholder": "", - "maintenanceRepeat": "", - "maintenance": "", - "duration": "", - "addMonitors": "", - "window": "", - "cancel": "", - "message": "", - "low": "", - "high": "", - "statusCode": "", - "date&Time": "", - "type": "", - "statusPageName": "", - "publicURL": "", - "repeat": "", - "edit": "", - "createA": "", - "remove": "", - "maintenanceWindowDescription": "", - "startTime": "", - "timeZoneInfo": "", - "monitorsToApply": "", - "nextWindow": "", - "notFoundButton": "", - "pageSpeedConfigureSettingsDescription": "", - "monitorDisplayName": "", - "whenNewIncident": "", - "notifySMS": "", - "notifyEmails": "", - "seperateEmails": "", - "checkFrequency": "", - "matchMethod": "", - "expectedValue": "", - "deleteDialogTitle": "", - "deleteDialogDescription": "", - "pageSpeedMonitor": "", - "shown": "", - "ago": "", - "companyName": "", - "pageSpeedDetailsPerformanceReport": "", - "pageSpeedDetailsPerformanceReportCalculator": "", - "checkingEvery": "", - "statusPageCreateSettings": "", - "basicInformation": "", - "statusPageCreateBasicInfoDescription": "", - "statusPageCreateSelectTimeZoneDescription": "", - "statusPageCreateAppearanceDescription": "", - "statusPageCreateSettingsCheckboxLabel": "", - "statusPageCreateBasicInfoStatusPageAddress": "", - "statusPageCreateTabsContent": "", - "statusPageCreateTabsContentDescription": "", - "statusPageCreateTabsContentFeaturesDescription": "", - "showCharts": "", - "showUptimePercentage": "", - "removeLogo": "", - "statusPageStatus": "", - "statusPageStatusContactAdmin": "", - "statusPageStatusNotPublic": "", - "statusPageStatusNoPage": "", - "statusPageStatusServiceStatus": "", - "deleteStatusPage": "", - "deleteStatusPageConfirm": "", - "deleteStatusPageDescription": "", - "uptimeCreate": "", - "uptimeCreateJsonPath": "", - "uptimeCreateJsonPathQuery": "", - "maintenanceTableActionMenuDialogTitle": "", - "infrastructureEditYour": "", - "infrastructureEditMonitor": "", - "infrastructureMonitorCreated": "", - "infrastructureMonitorUpdated": "", - "errorInvalidTypeId": "", - "errorInvalidFieldId": "", - "inviteNoTokenFound": "", - "pageSpeedWarning": "", - "pageSpeedLearnMoreLink": "", - "pageSpeedAddApiKey": "", - "update": "", - "invalidFileFormat": "", - "invalidFileSize": "", - "ClickUpload": "", - "DragandDrop": "", - "MaxSize": "", - "SupportedFormats": "", - "FirstName": "", - "LastName": "", - "EmailDescriptionText": "", - "YourPhoto": "", - "PhotoDescriptionText": "", - "save": "", - "DeleteDescriptionText": "", - "DeleteAccountWarning": "", - "DeleteWarningTitle": "", - "authRegisterFirstName": "", - "authRegisterLastName": "", - "authRegisterEmail": "", - "authRegisterEmailRequired": "", - "bulkImport": { - "title": "", - "selectFileTips": "", - "selectFileDescription": "", - "selectFile": "", - "parsingFailed": "", - "uploadSuccess": "", - "validationFailed": "", - "noFileSelected": "", - "fallbackPage": "" - }, - "welcomeBack": "", - "authRegisterLoginLink": "", - "validationNameRequired": "", - "validationNameTooLong": "", - "validationNameInvalidCharacters": "", - "settingsSystemReset": "", - "settingsSystemResetDescription": "", - "DeleteAccountTitle": "", - "DeleteAccountButton": "", - "authRegisterEmailInvalid": "", - "publicLink": "", - "doNotHaveAccount": "", - "registerHere": "", - "backendUnreachable": "", - "backendUnreachableMessage": "", - "backendUnreachableError": "", - "retryConnection": "", - "retryingConnection": "", - "backendReconnected": "", - "backendStillUnreachable": "", - "backendConnectionError": "", - "maskedPageSpeedKeyPlaceholder": "", - "pageSpeedApiKeyFieldTitle": "", - "pageSpeedApiKeyFieldLabel": "", - "pageSpeedApiKeyFieldDescription": "", - "pageSpeedApiKeyFieldResetLabel": "", - "reset": "", - "ignoreTLSError": "", - "tlsErrorIgnored": "", - "ignoreTLSErrorDescription": "", - "createNew": "", - "greeting": { - "prepend": "", - "append": "", - "overview": "" - }, - "monitorStatus": { - "up": "", - "down": "", - "paused": "" - }, - "roles": { - "superAdmin": "", - "admin": "", - "teamMember": "", - "demoUser": "" - }, - "teamPanel": { - "teamMembers": "", - "filter": { - "all": "", - "member": "" - }, - "inviteTeamMember": "", - "inviteNewTeamMember": "", - "inviteDescription": "", - "email": "", - "selectRole": "", - "inviteLink": "", - "cancel": "", - "noMembers": "", - "getToken": "", - "emailToken": "", - "table": { - "name": "", - "email": "", - "role": "", - "created": "" - } - }, - "monitorState": { - "paused": "", - "resumed": "", - "active": "" - }, - "menu": { - "uptime": "", - "pagespeed": "", - "infrastructure": "", - "distributedUptime": "", - "incidents": "", - "statusPages": "", - "maintenance": "", - "integrations": "", - "settings": "", - "support": "", - "discussions": "", - "docs": "", - "changelog": "", - "profile": "", - "password": "", - "team": "", - "logOut": "" - }, - "settingsEmail": "", - "settingsEmailDescription": "", - "settingsEmailHost": "", - "settingsEmailPort": "", - "settingsEmailAddress": "", - "settingsEmailPassword": "", - "settingsEmailUser": "", - "settingsEmailFieldResetLabel": "", - "state": "", - "statusBreadCrumbsStatusPages": "", - "statusBreadCrumbsDetails": "", - "authForgotPasswordInstructions": "", - "settingsThemeModeLight": "", - "settingsThemeModeDark": "", - "settingsClearAllStatsDialogCancel": "", - "commonSaving": "", - "navControls": "", - "incidentsPageTitle": "", - "passwordPanel": { - "passwordChangedSuccess": "", - "passwordInputIncorrect": "", - "currentPassword": "", - "enterCurrentPassword": "", - "newPassword": "", - "enterNewPassword": "", - "confirmNewPassword": "", - "passwordRequirements": "", - "saving": "" - }, - "uptimeCreateSelectURL": "", - "settingsEmailConnectionHost": "", - "sendTestEmail": "", - "emailSent": "", - "failedToSendEmail": "", - "settingsTestEmail": "", - "settingsTestEmailSuccess": "", - "settingsTestEmailFailed": "", - "settingsTestEmailFailedWithReason": "", - "settingsTestEmailUnknownError": "", - "settingsEmailRequiredFields": "", - "statusMsg": { - "paused": "", - "up": "", - "down": "", - "pending": "" - }, - "settingsURLTitle": "", - "settingsURLDescription": "", - "settingsURLSelectTitle": "", - "settingsURLEnabled": "", - "settingURLDisabled": "" -} From 5254dc1984787e935691fd0191bff59d977230f3 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 May 2025 10:01:10 -0700 Subject: [PATCH 12/14] revert gb to en, add language specific flag fixes --- client/src/Components/LanguageSelector.jsx | 13 ++++++++++++- client/src/Utils/i18n.js | 2 +- client/src/locales/{gb.json => en.json} | 0 3 files changed, 13 insertions(+), 2 deletions(-) rename client/src/locales/{gb.json => en.json} (100%) diff --git a/client/src/Components/LanguageSelector.jsx b/client/src/Components/LanguageSelector.jsx index 70c41e640..1552bde82 100644 --- a/client/src/Components/LanguageSelector.jsx +++ b/client/src/Components/LanguageSelector.jsx @@ -77,7 +77,18 @@ const LanguageSelector = () => { }} > {languages.map((lang) => { - const flag = lang ? `fi fi-${lang}` : null; + let parsedLang = lang === "en" ? "gb" : lang; + + // Fix for Czech + if (parsedLang === "cs") { + parsedLang = "cz"; + } + if (parsedLang.includes("-")) { + parsedLang = parsedLang.split("-")[1].toLowerCase(); + console.log("parsedLang", parsedLang); + } + + const flag = parsedLang ? `fi fi-${parsedLang}` : null; return ( Date: Tue, 27 May 2025 10:09:12 -0700 Subject: [PATCH 13/14] remove style overrides, update script --- .github/scripts/download-translations.js | 3 +- client/src/Components/LanguageSelector.jsx | 80 +--------------------- 2 files changed, 4 insertions(+), 79 deletions(-) diff --git a/.github/scripts/download-translations.js b/.github/scripts/download-translations.js index d444aeb8e..8f35be0de 100644 --- a/.github/scripts/download-translations.js +++ b/.github/scripts/download-translations.js @@ -76,8 +76,7 @@ async function downloadTranslations() { // Determine the output filename based on language const normalizedLanguage = normalizeLanguageCode(language); - const filename = - normalizedLanguage === "en" ? "gb.json" : `${normalizedLanguage}.json`; + const filename = `${normalizedLanguage}.json`; const outputPath = path.join(process.cwd(), "temp", filename); await fs.writeJson(outputPath, formattedTranslations, { spaces: 2 }); diff --git a/client/src/Components/LanguageSelector.jsx b/client/src/Components/LanguageSelector.jsx index 1552bde82..66faf78ac 100644 --- a/client/src/Components/LanguageSelector.jsx +++ b/client/src/Components/LanguageSelector.jsx @@ -21,60 +21,7 @@ const LanguageSelector = () => { value={language} onChange={handleChange} size="small" - sx={{ - height: 28, - width: 64, - backgroundColor: theme.palette.primary.main, - color: theme.palette.primary.contrastText, - borderRadius: theme.shape.borderRadius, - fontSize: 10, - "& .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.primary.lowContrast, - borderRadius: theme.shape.borderRadius, - }, - "&:hover .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.primary.lowContrast, - }, - "&.Mui-focused .MuiOutlinedInput-notchedOutline": { - borderColor: theme.palette.primary.lowContrast, - }, - "& .MuiSvgIcon-root": { - color: theme.palette.primary.contrastText, - width: 16, - height: 16, - right: 4, - top: "calc(50% - 8px)", - }, - "& .MuiSelect-select": { - padding: "2px 20px 2px 8px", - display: "flex", - alignItems: "center", - fontSize: 10, - }, - }} - MenuProps={{ - PaperProps: { - sx: { - backgroundColor: theme.palette.primary.main, - borderRadius: theme.shape.borderRadius, - marginTop: 1, - width: 64, - "& .MuiMenuItem-root": { - padding: "2px 8px", - minHeight: 28, - fontSize: 10, - }, - }, - }, - anchorOrigin: { - vertical: "bottom", - horizontal: "left", - }, - transformOrigin: { - vertical: "top", - horizontal: "left", - }, - }} + sx={{ minWidth: 80 }} > {languages.map((lang) => { let parsedLang = lang === "en" ? "gb" : lang; @@ -94,45 +41,24 @@ const LanguageSelector = () => { {flag && } {lang} From 7cfdad3563e6b4b3a95fb78726d4e2eb1a1248ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20=C5=9Ei=C5=9Fmano=C4=9Flu?= Date: Wed, 28 May 2025 16:33:30 +0300 Subject: [PATCH 14/14] fix: correct link format for contributor mertssmnoglu in README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mert Şişmanoğlu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9cbd32881..d276af81f 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ If you have any questions, suggestions or comments, please use our [Discord chan ## 🤝 Contributing -We are [Alex](http://github.com/ajhollid) (team lead), [Vishnu](http://github.com/vishnusn77), [Mohadeseh](http://github.com/mohicody), [Gorkem](http://github.com/gorkem-bwl/), [Owaise](http://github.com/Owaiseimdad), [Aryaman](https://github.com/Br0wnHammer) and [Mert](https://github/com/mertssmnoglu) helping individuals and businesses monitor their infra and servers. +We are [Alex](http://github.com/ajhollid) (team lead), [Vishnu](http://github.com/vishnusn77), [Mohadeseh](http://github.com/mohicody), [Gorkem](http://github.com/gorkem-bwl/), [Owaise](http://github.com/Owaiseimdad), [Aryaman](https://github.com/Br0wnHammer) and [Mert](https://github.com/mertssmnoglu) helping individuals and businesses monitor their infra and servers. We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 5800+ stars and attracted 70+ contributors from around the globe.