From 5466d38496c3067f8f092b4259ed98dd358c9bd5 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 01:44:00 +0530 Subject: [PATCH 01/30] FIX-1930 have made initial changes in order to proceed with rebuidling. --- .../Components/ConfigRow/index.jsx | 34 +++++++++++++ .../Components/MonitorsConfig/index.jsx | 49 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx create mode 100644 src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx diff --git a/src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx b/src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx new file mode 100644 index 000000000..93709ef1e --- /dev/null +++ b/src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx @@ -0,0 +1,34 @@ +import { Box, Stack, Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@emotion/react"; +import ConfigBox from "../../../../../Components/ConfigBox"; + +const ConfigRow = ({ title, description, children }) => { + const theme = useTheme(); + + return ( + + + + {title} + + {description && ( + + {description} + + )} + + + {children} + + + ); +}; + +ConfigRow.propTypes = { + title: PropTypes.string.isRequired, + description: PropTypes.string, + children: PropTypes.node +}; + +export default ConfigRow; \ No newline at end of file diff --git a/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx new file mode 100644 index 000000000..f8955a873 --- /dev/null +++ b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx @@ -0,0 +1,49 @@ +import PropTypes from "prop-types"; +import ConfigRow from "../ConfigRow"; +import Search from "../../../../../Components/Inputs/Search"; +import { useState } from "react"; + +const MonitorsConfig = ({ + monitors, + selectedMonitors, + error, + isEditMode, + onSelectMonitors, + secondaryLabelText, +}) => { + const [search, setSearch] = useState(""); + const handleSearch = (value) => { + setSearch(value); + }; + + return ( + + + + ); +}; + +MonitorsConfig.propTypes = { + monitors: PropTypes.array.isRequired, + selectedMonitors: PropTypes.array.isRequired, + error: PropTypes.string, + isEditMode: PropTypes.bool.isRequired, + onSelectMonitors: PropTypes.func.isRequired, + secondaryLabelText: PropTypes.string, +}; + +export default MonitorsConfig; From e881c72ec925723644772bb7fce57d69f743b541 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 02:09:18 +0530 Subject: [PATCH 02/30] FIX-1930 change the text in order to make sure there is clarity. --- .../CreateMaintenance/Components/MonitorsConfig/index.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx index f8955a873..532e48f8d 100644 --- a/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx +++ b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx @@ -9,7 +9,7 @@ const MonitorsConfig = ({ error, isEditMode, onSelectMonitors, - secondaryLabelText, + secondaryLabel, }) => { const [search, setSearch] = useState(""); const handleSearch = (value) => { @@ -25,7 +25,7 @@ const MonitorsConfig = ({ isAdorned={false} options={monitors || []} filteredBy="name" - secondaryLabel={secondaryLabelText} + secondaryLabel={secondaryLabel} inputValue={search} value={selectedMonitors} handleInputChange={handleSearch} @@ -43,7 +43,7 @@ MonitorsConfig.propTypes = { error: PropTypes.string, isEditMode: PropTypes.bool.isRequired, onSelectMonitors: PropTypes.func.isRequired, - secondaryLabelText: PropTypes.string, + secondaryLabel: PropTypes.string, }; export default MonitorsConfig; From 5825151b28700360fc7901c70eee02a96d067124 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 14:46:53 +0530 Subject: [PATCH 03/30] fixed the check for the type or label key in the options send in search component. --- src/Components/Inputs/Search/index.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Components/Inputs/Search/index.jsx b/src/Components/Inputs/Search/index.jsx index 647af874a..9e08a0dc2 100644 --- a/src/Components/Inputs/Search/index.jsx +++ b/src/Components/Inputs/Search/index.jsx @@ -167,7 +167,10 @@ const Search = ({ : {} } > - {option[filteredBy] + (secondaryLabel ? ` (${option[secondaryLabel]})` : "")} + {option[filteredBy] + + (secondaryLabel && option[secondaryLabel] + ? ` (${option[secondaryLabel]})` + : "")} ); }} From e2187368b1c75baf570d279caf40d4c143302b0c Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 17:32:21 +0530 Subject: [PATCH 04/30] FIX-1936 made initial changes in popup in order to fix the UI of popups. --- src/Components/Dialog/index.jsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Components/Dialog/index.jsx b/src/Components/Dialog/index.jsx index 3cf7001ce..5ca932d8c 100644 --- a/src/Components/Dialog/index.jsx +++ b/src/Components/Dialog/index.jsx @@ -29,9 +29,13 @@ const Dialog = ({ justifyContent="flex-end" > From fa3c7ee891179a7c4f650f86040c93ca283aabc0 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 17:41:10 +0530 Subject: [PATCH 05/30] FIXed the calendar disable number color in order to suite both light and blue color. --- src/Pages/Maintenance/CreateMaintenance/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Pages/Maintenance/CreateMaintenance/index.jsx b/src/Pages/Maintenance/CreateMaintenance/index.jsx index abc31361a..80dfffbd8 100644 --- a/src/Pages/Maintenance/CreateMaintenance/index.jsx +++ b/src/Pages/Maintenance/CreateMaintenance/index.jsx @@ -409,7 +409,7 @@ const CreateMaintenance = () => { backgroundColor: theme.palette.accent.light, // Hover background }, "&.Mui-disabled": { - color: theme.palette.primary.ContrastTextTertiary, // Disabled day color + color: theme.palette.secondary.main, // Disabled day color }, }, "& .MuiDayCalendar-weekDayLabel": { From 141df20f44ed84fb7943c4a09752f7aec692556b Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Sat, 15 Mar 2025 12:28:32 -0400 Subject: [PATCH 06/30] Remove CLI from the roadmap for now --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5505f72fe..b9b349410 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,6 @@ If you have any questions, suggestions or comments, please use our [Discord chan - 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 -- Command line interface (CLI) (**in progress**) https://github.com/bluewave-labs/Checkmate/issues/1558 - JSON query monitoring https://github.com/bluewave-labs/Checkmate/issues/1573 - Tagging/grouping monitors https://github.com/bluewave-labs/Checkmate/issues/1546 - More configuration options From e0e2cec386464de1f210efc39b727733326ddc1f Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 22:31:15 +0530 Subject: [PATCH 07/30] Moved the evaluation in start of the render option execution. --- src/Components/Inputs/Search/index.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Components/Inputs/Search/index.jsx b/src/Components/Inputs/Search/index.jsx index 9e08a0dc2..a3b75161c 100644 --- a/src/Components/Inputs/Search/index.jsx +++ b/src/Components/Inputs/Search/index.jsx @@ -154,6 +154,7 @@ const Search = ({ }} renderOption={(props, option) => { const { key, ...optionProps } = props; + const hasSecondaryLabel = secondaryLabel && option[secondaryLabel] !== undefined; return ( {option[filteredBy] + - (secondaryLabel && option[secondaryLabel] - ? ` (${option[secondaryLabel]})` - : "")} + (hasSecondaryLabel ? ` (${option[secondaryLabel]})` : "")} ); }} From d8f534217ff06b04ad9307f0543ae44a5a2f7979 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Sat, 15 Mar 2025 13:12:35 -0400 Subject: [PATCH 08/30] Add contributors --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b9b349410..6d197cc08 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,9 @@ If you have any questions, suggestions or comments, please use our [Discord chan ## 🤝 Contributing -We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 4.4K+ stars and attracted 50+ contributors from around the globe. +We are [@ajhollid](http://github.com/ajhollid) (team lead), [@vishnusn77](http://github.com/vishnusn77), [@mohicody](http://github.com/mohicody), [@gorkem-bwl](http://github.com/gorkem-bwl/) and [@Owaiseimdad](http://github.com/Owaiseimdad), 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 4.6K+ stars and attracted 60 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 45a3ea2da0ac56ed8d51cf760844ad2e63d9680d Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 15 Mar 2025 23:26:10 +0530 Subject: [PATCH 09/30] Refactored and moved the config row component to main conponents folders to be reused. --- .../Components/ConfigRow/index.jsx | 21 ++++++++++++++--- .../Components/MonitorsConfig/index.jsx | 23 +++++++++++++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) rename src/{Pages/Maintenance/CreateMaintenance => }/Components/ConfigRow/index.jsx (57%) diff --git a/src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx b/src/Components/ConfigRow/index.jsx similarity index 57% rename from src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx rename to src/Components/ConfigRow/index.jsx index 93709ef1e..c19d9ac5a 100644 --- a/src/Pages/Maintenance/CreateMaintenance/Components/ConfigRow/index.jsx +++ b/src/Components/ConfigRow/index.jsx @@ -1,7 +1,22 @@ import { Box, Stack, Typography } from "@mui/material"; import PropTypes from "prop-types"; import { useTheme } from "@emotion/react"; -import ConfigBox from "../../../../../Components/ConfigBox"; +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 ( + * + *
Left content (Title + Description)
+ *
Right content (Children)
+ *
+ * ); + */ const ConfigRow = ({ title, description, children }) => { const theme = useTheme(); @@ -28,7 +43,7 @@ const ConfigRow = ({ title, description, children }) => { ConfigRow.propTypes = { title: PropTypes.string.isRequired, description: PropTypes.string, - children: PropTypes.node + children: PropTypes.node, }; -export default ConfigRow; \ No newline at end of file +export default ConfigRow; diff --git a/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx index 532e48f8d..e792734ff 100644 --- a/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx +++ b/src/Pages/Maintenance/CreateMaintenance/Components/MonitorsConfig/index.jsx @@ -1,7 +1,23 @@ import PropTypes from "prop-types"; -import ConfigRow from "../ConfigRow"; import Search from "../../../../../Components/Inputs/Search"; import { useState } from "react"; +import ConfigRow from "../../../../../Components/ConfigRow"; + +/** + * MonitorsConfig is a component that allows users to select and apply a maintenance window to a list of monitors. + * It provides a search input to filter monitors and select multiple options. The selected monitors are passed + * to the parent via the `onSelectMonitors` callback. + * + * + * @component + * + * @param {Array} props.monitors - List of available monitors that can be selected. + * @param {Array} props.selectedMonitors - List of monitors currently selected for applying the maintenance window. + * @param {string} [props.error] - Optional error message that will be displayed if there's an error in monitor selection. + * @param {boolean} props.isEditMode - A boolean flag indicating if the component is in edit mode (disabled search/input when true). + * @param {Function} props.onSelectMonitors - Callback function that is invoked when monitors are selected or deselected. + * @param {string} [props.secondaryLabel] - Optional label or description that provides additional context for the monitor search. + */ const MonitorsConfig = ({ monitors, @@ -17,7 +33,10 @@ const MonitorsConfig = ({ }; return ( - + Date: Sun, 16 Mar 2025 13:01:22 +0300 Subject: [PATCH 10/30] Open pull request for translations (#1939) * fix: open pull request for translations * fix: permission update * fix: permission update * fix: permission update * fix: permission update --- .github/scripts/download-translations.js | 7 +++-- .github/workflows/poeditor-sync.yml | 40 +++++++++++++++++++----- src/locales/tr.json | 2 +- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/.github/scripts/download-translations.js b/.github/scripts/download-translations.js index 62f63a6a0..918be97d3 100644 --- a/.github/scripts/download-translations.js +++ b/.github/scripts/download-translations.js @@ -57,11 +57,12 @@ async function downloadTranslations() { }); } - // Save file - const outputPath = path.join(process.cwd(), 'temp', `${language}.json`); + // Determine the output filename based on language + const filename = language === 'en' ? 'gb.json' : `${language}.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: ${outputPath}`); + console.log(`Translations for ${language} language successfully downloaded and saved as: ${filename}`); } console.log('All translations successfully downloaded!'); diff --git a/.github/workflows/poeditor-sync.yml b/.github/workflows/poeditor-sync.yml index 1f1194e3e..b26d47a39 100644 --- a/.github/workflows/poeditor-sync.yml +++ b/.github/workflows/poeditor-sync.yml @@ -17,15 +17,24 @@ on: schedule: - cron: "0 0 * * *" +permissions: + contents: write + pull-requests: write + jobs: sync-translations: runs-on: ubuntu-latest + permissions: + contents: write + issues: write + pull-requests: write steps: - name: Checkout code uses: actions/checkout@v3 with: token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v3 @@ -83,10 +92,27 @@ jobs: cp -r temp/* src/locales/ echo "Translation files copied to src/locales/" - - name: Commit changes - run: | - git config --local user.email "github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git add src/locales/*.json - git diff --staged --quiet || git commit -m "Translations updated from POEditor" - git push + - name: Get current date + id: date + run: echo "date=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "feat: translations updated from POEditor" + title: "🌐 Updated Translations from POEditor" + body: | + This PR contains the latest translations from POEditor. + + 📅 Update Date: ${{ steps.date.outputs.date }} + 🔄 Updated Languages: ${{ github.event.inputs.languages || 'tr,en' }} + + ⚠️ Please review the translations and approve the PR if everything looks correct. + branch: translation-update-${{ github.run_number }} + delete-branch: true + base: develop + add-paths: | + src/locales/*.json + committer: GitHub Action + author: GitHub Action diff --git a/src/locales/tr.json b/src/locales/tr.json index f008db6fa..6f56a8246 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -175,5 +175,5 @@ }, "testNotificationDevelop": "" }, - "testLocale": "TEST4 UPLOAD" + "testLocale": "TEST5 UPLOAD" } \ No newline at end of file From 4dbf6d2fc48a66ac26fe5402df1d642c568db2b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Mar 2025 13:05:17 +0300 Subject: [PATCH 11/30] feat: translations updated from POEditor (#1941) Co-authored-by: GitHub Action --- src/locales/gb.json | 443 ++++++++++++++++++-------------------------- src/locales/tr.json | 356 +++++++++++++++++------------------ 2 files changed, 355 insertions(+), 444 deletions(-) diff --git a/src/locales/gb.json b/src/locales/gb.json index e8ba56ffc..662478270 100644 --- a/src/locales/gb.json +++ b/src/locales/gb.json @@ -1,268 +1,179 @@ { - "dontHaveAccount": "Don't have account", - "and": "and", - "https": "HTTPS", - "http": "HTTP", - "add": "Add", - "monitor": "monitor", - "monitors": "monitors", - "aboutus": "About Us", - "email": "E-mail", - "forgotPassword": "Forgot Password", - "password": "password", - "signUp": "Sign Up", - "submit": "Submit", - "title": "Title", - "continue": "Continue", - "now": "Now", - "delete": "Delete", - "configure": "Configure", - "networkError": "Network error", - "responseTime": "Response time:", - "ms": "ms", - "bar": "Bar", - "area": "Area", - "country": "COUNTRY", - "city": "CITY", - "response": "RESPONSE", - "checkConnection": "Please check your connection", - "enterEmail": "Enter your email", - "authLoginTitle": "Log In", - "authLoginEnterPassword": "Enter your password", - "commonPassword": "Password", - "createPassword": "Create your password", - "createAPassword": "Create a password", - "commonBack": "Back", - "authForgotPasswordTitle": "Forgot password?", - "authForgotPasswordResetPassword": "Reset password", - "passwordreset": "Password Reset", - "authRegisterAlreadyHaveAccount": "Already have an account?", - "commonAppName": "Checkmate", - "authLoginEnterEmail": "Enter your email", - "authRegisterTitle": "Create an account", - "authRegisterTerms": "Terms of Service", - "authRegisterPrivacy": "Privacy Policy.", - "authRegisterStepOneTitle": "Create your account", - "authRegisterStepOnePersonalDetails": "Enter your personal details", - "authRegisterStepOneDescription": "Enter your details to get started", - "authRegisterStepTwoTitle": "Set up your profile", - "authRegisterStepTwoDescription": "Tell us more about yourself", - "authRegisterStepThreeTitle": "Almost done!", - "authRegisterStepThreeDescription": "Review your information", - "authForgotPasswordDescription": "No worries, we'll send you reset instructions.", - "authForgotPasswordSendInstructions": "Send instructions", - "authForgotPasswordBackTo": "Back to", - "authCheckEmailTitle": "Check your email", - "authCheckEmailDescription": "We sent a password reset link to", - "authCheckEmailResendEmail": "Resend email", - "authCheckEmailBackTo": "Back to", - "authCheckEmailOpenEmailButton": "Open email app", - "goBackTo": "Go back to", - "authCheckEmailDidntReceiveEmail": "Didn't receive the email?", - "authCheckEmailClickToResend": "Click to resend", - "authSetNewPasswordTitle": "Set new password", - "authSetNewPasswordDescription": "Your new password must be different from previously used passwords.", - "authSetNewPasswordNewPassword": "New password", - "authSetNewPasswordConfirmPassword": "Confirm password", - "confirmPassword": "Confirm your password", - "authSetNewPasswordResetPassword": "Reset password", - "authNewPasswordConfirmed": "Your password has been successfully reset. Click below to log in magically.", - "authSetNewPasswordBackTo": "Back to", - "authPasswordMustBeAtLeast": "Must be at least", - "authPasswordCharactersLong": "8 characters long", - "authPasswordMustContainAtLeast": "Must contain at least", - "authPasswordSpecialCharacter": "one special character", - "authPasswordOneNumber": "one number", - "authPasswordUpperCharacter": "one upper character", - "authPasswordLowerCharacter": "one lower character", - "authPasswordConfirmAndPassword": "Confirm password and password", - "authPasswordMustMatch": "must match", - "authRegisterCreateAccount": "Create your account to get started", - "authRegisterCreateSuperAdminAccount": "Create your Super admin account to get started", - "authRegisterSignUpWithEmail": "Sign up with Email", - "authRegisterBySigningUp": "By signing up, you agree to our", - "monitorStatusUp": "Monitor {name} ({url}) is now UP and responding", - "monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding", - "webhookSendSuccess": "Webhook notification sent successfully", - "webhookSendError": "Error sending webhook notification to {platform}", - "webhookUnsupportedPlatform": "Unsupported platform: {platform}", - "distributedStatusHeaderText": "Real-time, real-device coverage", - "distributedStatusSubHeaderText": "Powered by millions devices worldwide, view a system performance by global region, country or city", - "distributedRightCategoryTitle": "Monitor", - "distributedStatusServerMonitors": "Server Monitors", - "distributedStatusServerMonitorsDescription": "Monitor status of related servers", - "distributedUptimeCreateSelectURL": "Here you can select the URL of the host, together with the type of monitor.", - "distributedUptimeCreateChecks": "Checks to perform", - "distributedUptimeCreateChecksDescription": "You can always add or remove checks after adding your site.", - "distributedUptimeCreateIncidentNotification": "Incident notifications", - "distributedUptimeCreateIncidentDescription": "When there is an incident, notify users.", - "distributedUptimeCreateAdvancedSettings": "Advanced settings", - "distributedUptimeDetailsNoMonitorHistory": "There is no check history for this monitor yet.", - "distributedUptimeDetailsFooterHeading": "Made with ❤️ by UpRock & Bluewave Labs", - "distributedUptimeDetailsFooterBuilt": "Built on", - "distributedUptimeDetailsFooterSolana": "Solana", - "distributedUptimeDetailsMonitorHeader": "Distributed Uptime Monitoring powered by DePIN", - "distributedUptimeDetailsStatusHeaderUptime": "Uptime:", - "distributedUptimeDetailsStatusHeaderLastUpdate": "Last updated", - "distributedUptimeStatusCreateStatusPage": "status page", - "distributedUptimeStatusCreateStatusPageAccess": "Access", - "distributedUptimeStatusCreateStatusPageReady": "If your status page is ready, you can mark it as published.", - "distributedUptimeStatusBasicInfoHeader": "Basic Information", - "distributedUptimeStatusBasicInfoDescription": "Define company name and the subdomain that your status page points to.", - "distributedUptimeStatusLogoHeader": "Logo", - "distributedUptimeStatusLogoDescription": "Upload a logo for your status page", - "distributedUptimeStatusLogoUploadButton": "Upload logo", - "distributedUptimeStatusStandardMonitorsHeader": "Standard Monitors", - "distributedUptimeStatusStandardMonitorsDescription": "Attach standard monitors to your status page.", - "distributedUptimeStatusCreateYour": "Create your", - "distributedUptimeStatusEditYour": "Edit your", - "distributedUptimeStatusPublishedLabel": "Published and visible to the public", - "distributedUptimeStatusCompanyNameLabel": "Company name", - "distributedUptimeStatusPageAddressLabel": "Your status page address", - "distributedUptimeStatus30Days": "30 days", - "distributedUptimeStatus60Days": "60 days", - "distributedUptimeStatus90Days": "90 days", - "distributedUptimeStatusPageNotSetUp": "A status page is not set up.", - "distributedUptimeStatusContactAdmin": "Please contact your administrator", - "distributedUptimeStatusPageNotPublic": "This status page is not public.", - "distributedUptimeStatusPageDeleteDialog": "Do you want to delete this status page?", - "distributedUptimeStatusPageDeleteConfirm": "Yes, delete status page", - "distributedUptimeStatusPageDeleteDescription": "Once deleted, your status page cannot be retrieved.", - "distributedUptimeStatusDevices": "Devices", - "distributedUptimeStatusUpt": "UPT", - "distributedUptimeStatusUptBurned": "UPT Burned", - "distributedUptimeStatusUptLogo": "Upt Logo", - "incidentsTableNoIncidents": "No incidents recorded", - "incidentsTablePaginationLabel": "incidents", - "incidentsTableMonitorName": "Monitor Name", - "incidentsTableStatus": "Status", - "incidentsTableDateTime": "Date & Time", - "incidentsTableStatusCode": "Status Code", - "incidentsTableMessage": "Message", - "incidentsOptionsHeader": "Incidents for:", - "incidentsOptionsHeaderFilterBy": "Filter by:", - "incidentsOptionsHeaderFilterAll": "All", - "incidentsOptionsHeaderFilterDown": "Down", - "incidentsOptionsHeaderFilterCannotResolve": "Cannot resolve", - "incidentsOptionsHeaderShow": "Show:", - "incidentsOptionsHeaderLastHour": "Last hour", - "incidentsOptionsHeaderLastDay": "Last day", - "incidentsOptionsHeaderLastWeek": "Last week", - "incidentsOptionsPlaceholderAllServers": "All servers", - "infrastructureCreateYour": "Create your", - "infrastructureCreateGeneralSettingsDescription": "Here you can select the URL of the host, together with the friendly name and authorization secret to connect to the server agent.", - "infrastructureServerRequirement": "The server you are monitoring must be running the", - "infrastructureCustomizeAlerts": "Customize alerts", - "infrastructureAlertNotificationDescription": "Send a notification to user(s) when thresholds exceed a specified percentage.", - "infrastructureCreateMonitor": "Create Infrastructure Monitor", - "infrastructureProtocol": "Protocol", - "infrastructureServerUrlLabel": "Server URL", - "infrastructureDisplayNameLabel": "Display name", - "infrastructureAuthorizationSecretLabel": "Authorization secret", - "gb": "GB", - "mb": "MB", - "mem": "Mem", - "memoryUsage": "Memory usage", - "cpu": "CPU", - "cpuUsage": "CPU usage", - "cpuTemperature": "CPU Temperature", - "diskUsage": "Disk Usage", - "used": "Used", - "total": "Total", - "cores": "Cores", - "frequency": "Frequency", - "status": "Status", - "cpuPhysical": "CPU (Physical)", - "cpuLogical": "CPU (Logical)", - "cpuFrequency": "CPU Frequency", - "avgCpuTemperature": "Average CPU Temperature", - "memory": "Memory", - "disk": "Disk", - "uptime": "Uptime", - "os": "OS", - "host": "Host", - "actions": "Actions", - "integrations": "Integrations", - "integrationsPrism": "Connect Prism to your favorite service.", - "integrationsSlack": "Slack", - "integrationsSlackInfo": "Connect with Slack and see incidents in a channel", - "integrationsDiscord": "Discord", - "integrationsDiscordInfo": "Connect with Discord and view incidents directly in a channel", - "integrationsZapier": "Zapier", - "integrationsZapierInfo": "Send all incidents to Zapier, and then see them everywhere", - - "settingsGeneralSettings": "General settings", - "settingsDisplayTimezone": "Display timezone", - "settingsDisplayTimezoneDescription": "The timezone of the dashboard you publicly display.", - "settingsAppearance": "Appearance", - "settingsAppearanceDescription": "Switch between light and dark mode, or change user interface language", - "settingsThemeMode": "Theme Mode", - "settingsLanguage": "Language", - "settingsDistributedUptime": "Distributed uptime", - "settingsDistributedUptimeDescription": "Enable/disable distributed uptime monitoring.", - "settingsEnabled": "Enabled", - "settingsDisabled": "Disabled", - "settingsHistoryAndMonitoring": "History and monitoring", - "settingsHistoryAndMonitoringDescription": "Define here for how long you want to keep the data. You can also remove all past data.", - "settingsTTLLabel": "The days you want to keep monitoring history.", - "settingsTTLOptionalLabel": "0 for infinite", - "settingsClearAllStats": "Clear all stats. This is irreversible.", - "settingsClearAllStatsButton": "Clear all stats", - "settingsClearAllStatsDialogTitle": "Do you want to clear all stats?", - "settingsClearAllStatsDialogDescription": "Once deleted, your monitors cannot be retrieved.", - "settingsClearAllStatsDialogConfirm": "Yes, clear all stats", - "settingsDemoMonitors": "Demo monitors", - "settingsDemoMonitorsDescription": "Here you can add and remove demo monitors.", - "settingsAddDemoMonitors": "Add demo monitors", - "settingsAddDemoMonitorsButton": "Add demo monitors", - "settingsRemoveAllMonitors": "Remove all monitors", - "settingsRemoveAllMonitorsButton": "Remove all monitors", - "settingsRemoveAllMonitorsDialogTitle": "Do you want to remove all monitors?", - "settingsRemoveAllMonitorsDialogConfirm": "Yes, clear all monitors", - "settingsWallet": "Wallet", - "settingsWalletDescription": "Connect your wallet here. This is required for the Distributed Uptime monitor to connect to multiple nodes globally.", - "settingsAbout": "About", - "settingsDevelopedBy": "Developed by Bluewave Labs.", - "settingsSave": "Save", - "settingsSuccessSaved": "Settings saved successfully", - "settingsFailedToSave": "Failed to save settings", - "settingsStatsCleared": "Stats cleared successfully", - "settingsFailedToClearStats": "Failed to clear stats", - "settingsDemoMonitorsAdded": "Successfully added demo monitors", - "settingsFailedToAddDemoMonitors": "Failed to add demo monitors", - "settingsMonitorsDeleted": "Successfully deleted all monitors", - "settingsFailedToDeleteMonitors": "Failed to delete all monitors", - "starPromptTitle": "Star Checkmate", - "starPromptDescription": "See the latest releases and help grow the community on GitHub", - "notifications": { - "enableNotifications": "Enable {{platform}} notifications", - "testNotification": "Test notification", - "addOrEditNotifications": "Add or edit notifications", - "slack": { - "label": "Slack", - "description": "To enable Slack notifications, create a Slack app and enable incoming webhooks. After that, simply provide the webhook URL here.", - "webhookLabel": "Webhook URL", - "webhookPlaceholder": "https://hooks.slack.com/services/..." - }, - "discord": { - "label": "Discord", - "description": "To send data to a Discord channel from Checkmate via Discord notifications using webhooks, you can use Discord's incoming Webhooks feature.", - "webhookLabel": "Discord Webhook URL", - "webhookPlaceholder": "https://discord.com/api/webhooks/..." - }, - "telegram": { - "label": "Telegram", - "description": "To enable Telegram notifications, create a Telegram bot using BotFather, an official bot for creating and managing Telegram bots. Then, get the API token and chat ID and write them down here.", - "tokenLabel": "Your bot token", - "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", - "chatIdLabel": "Your Chat ID", - "chatIdPlaceholder": "-1001234567890" - }, - "webhook": { - "label": "Webhooks", - "description": "You can set up a custom webhook to receive notifications when incidents occur.", - "urlLabel": "Webhook URL", - "urlPlaceholder": "https://your-server.com/webhook" - } - } + "dontHaveAccount": "Don't have account", + "email": "E-mail", + "forgotPassword": "Forgot Password", + "password": "password", + "signUp": "Sign up", + "submit": "Submit", + "title": "Title", + "continue": "Continue", + "enterEmail": "Enter your email", + "authLoginTitle": "Log In", + "authLoginEnterPassword": "Enter your password", + "commonPassword": "Password", + "commonBack": "Back", + "authForgotPasswordTitle": "Forgot password?", + "authForgotPasswordResetPassword": "Reset password", + "createPassword": "Create your password", + "createAPassword": "Create a password", + "authRegisterAlreadyHaveAccount": "Already have an account?", + "commonAppName": "Checkmate", + "authLoginEnterEmail": "Enter your email", + "authRegisterTitle": "Create an account", + "authRegisterStepOneTitle": "Create your account", + "authRegisterStepOneDescription": "Enter your details to get started", + "authRegisterStepTwoTitle": "Set up your profile", + "authRegisterStepTwoDescription": "Tell us more about yourself", + "authRegisterStepThreeTitle": "Almost done!", + "authRegisterStepThreeDescription": "Review your information", + "authForgotPasswordDescription": "No worries, we'll send you reset instructions.", + "authForgotPasswordSendInstructions": "Send instructions", + "authForgotPasswordBackTo": "Back to", + "authCheckEmailTitle": "Check your email", + "authCheckEmailDescription": "We sent a password reset link to", + "authCheckEmailResendEmail": "Resend email", + "authCheckEmailBackTo": "Back to", + "goBackTo": "Go back to", + "authCheckEmailDidntReceiveEmail": "Didn't receive the email?", + "authCheckEmailClickToResend": "Click to resend", + "authSetNewPasswordTitle": "Set new password", + "authSetNewPasswordDescription": "Your new password must be different from previously used passwords.", + "authSetNewPasswordNewPassword": "New password", + "authSetNewPasswordConfirmPassword": "Confirm password", + "confirmPassword": "Confirm your password", + "authSetNewPasswordResetPassword": "Reset password", + "authSetNewPasswordBackTo": "Back to", + "authPasswordMustBeAtLeast": "Must be at least", + "authPasswordCharactersLong": "8 characters long", + "authPasswordMustContainAtLeast": "Must contain at least", + "authPasswordSpecialCharacter": "one special character", + "authPasswordOneNumber": "one number", + "authPasswordUpperCharacter": "one upper character", + "authPasswordLowerCharacter": "one lower character", + "authPasswordConfirmAndPassword": "Confirm password and password", + "authPasswordMustMatch": "must match", + "authRegisterCreateAccount": "Create your account to get started", + "authRegisterCreateSuperAdminAccount": "Create your Super admin account to get started", + "authRegisterSignUpWithEmail": "Sign up with Email", + "authRegisterBySigningUp": "By signing up, you agree to our", + "distributedStatusHeaderText": "Real-time, real-device coverage", + "distributedStatusSubHeaderText": "Powered by millions devices worldwide, view a system performance by global region, country or city", + "settingsGeneralSettings": "General settings", + "settingsDisplayTimezone": "Display timezone", + "settingsDisplayTimezoneDescription": "The timezone of the dashboard you publicly display.", + "settingsAppearance": "Appearance", + "settingsAppearanceDescription": "Switch between light and dark mode, or change user interface language", + "settingsThemeMode": "Theme Mode", + "settingsLanguage": "Language", + "settingsDistributedUptime": "Distributed uptime", + "settingsDistributedUptimeDescription": "Enable/disable distributed uptime monitoring.", + "settingsEnabled": "Enabled", + "settingsDisabled": "Disabled", + "settingsHistoryAndMonitoring": "History and monitoring", + "settingsHistoryAndMonitoringDescription": "Define here for how long you want to keep the data. You can also remove all past data.", + "settingsTTLLabel": "The days you want to keep monitoring history.", + "settingsTTLOptionalLabel": "0 for infinite", + "settingsClearAllStats": "Clear all stats. This is irreversible.", + "settingsClearAllStatsButton": "Clear all stats", + "settingsClearAllStatsDialogTitle": "Do you want to clear all stats?", + "settingsClearAllStatsDialogDescription": "Once deleted, your monitors cannot be retrieved.", + "settingsClearAllStatsDialogConfirm": "Yes, clear all stats", + "settingsDemoMonitors": "Demo monitors", + "settingsDemoMonitorsDescription": "Here you can add and remove demo monitors.", + "settingsAddDemoMonitors": "Add demo monitors", + "settingsAddDemoMonitorsButton": "Add demo monitors", + "settingsRemoveAllMonitors": "Remove all monitors", + "settingsRemoveAllMonitorsButton": "Remove all monitors", + "settingsRemoveAllMonitorsDialogTitle": "Do you want to remove all monitors?", + "settingsRemoveAllMonitorsDialogConfirm": "Yes, clear all monitors", + "settingsWallet": "Wallet", + "settingsWalletDescription": "Connect your wallet here. This is required for the Distributed Uptime monitor to connect to multiple nodes globally.", + "settingsAbout": "About", + "settingsDevelopedBy": "Developed by Bluewave Labs.", + "settingsSave": "Save", + "settingsSuccessSaved": "Settings saved successfully", + "settingsFailedToSave": "Failed to save settings", + "settingsStatsCleared": "Stats cleared successfully", + "settingsFailedToClearStats": "Failed to clear stats", + "settingsDemoMonitorsAdded": "Successfully added demo monitors", + "settingsFailedToAddDemoMonitors": "Failed to add demo monitors", + "settingsMonitorsDeleted": "Successfully deleted all monitors", + "settingsFailedToDeleteMonitors": "Failed to delete all monitors", + "starPromptTitle": "Star Checkmate", + "starPromptDescription": "See the latest releases and help grow the community on GitHub", + "https": "HTTPS", + "http": "HTTP", + "monitor": "monitor", + "aboutus": "About Us", + "signUP": "Sign Up", + "now": "Now", + "delete": "Delete", + "configure": "Configure", + "networkError": "Network error", + "responseTime": "Response time:", + "ms": "ms", + "bar": "Bar", + "area": "Area", + "country": "COUNTRY", + "city": "CITY", + "response": "RESPONSE", + "checkConnection": "Please check your connection", + "passwordreset": "Password Reset", + "authRegisterStepOnePersonalDetails": "Enter your personal details", + "authCheckEmailOpenEmailButton": "Open email app", + "authNewPasswordConfirmed": "Your password has been successfully reset. Click below to log in magically.", + "monitorStatusUp": "Monitor {name} ({url}) is now UP and responding", + "monitorStatusDown": "Monitor {name} ({url}) is DOWN and not responding", + "webhookSendSuccess": "Webhook notification sent successfully", + "webhookSendError": "Error sending webhook notification to {platform}", + "webhookUnsupportedPlatform": "Unsupported platform: {platform}", + "distributedRightCategoryTitle": "Monitor", + "distributedStatusServerMonitors": "Server Monitors", + "distributedStatusServerMonitorsDescription": "Monitor status of related servers", + "distributedUptimeCreateSelectURL": "Here you can select the URL of the host, together with the type of monitor.", + "distributedUptimeCreateChecks": "Checks to perform", + "distributedUptimeCreateChecksDescription": "You can always add or remove checks after adding your site.", + "distributedUptimeCreateIncidentNotification": "Incident notifications", + "distributedUptimeCreateIncidentDescription": "When there is an incident, notify users.", + "distributedUptimeCreateAdvancedSettings": "Advanced settings", + "distributedUptimeDetailsNoMonitorHistory": "There is no check history for this monitor yet.", + "distributedUptimeDetailsFooterHeading": "Made with ❤️ by UpRock & Bluewave Labs", + "distributedUptimeDetailsFooterBuilt": "Built on", + "distributedUptimeDetailsFooterSolana": "Solana", + "distributedUptimeDetailsMonitorHeader": "Distributed Uptime Monitoring powered by DePIN", + "distributedUptimeDetailsStatusHeaderUptime": "Uptime:", + "distributedUptimeDetailsStatusHeaderLastUpdate": "Last updated", + "notifications": { + "enableNotifications": "Enable {{platform}} notifications", + "testNotification": "Test notification", + "addOrEditNotifications": "Add or edit notifications", + "slack": { + "label": "Slack", + "description": "To enable Slack notifications, create a Slack app and enable incoming webhooks. After that, simply provide the webhook URL here.", + "webhookLabel": "Webhook URL", + "webhookPlaceholder": "https://hooks.slack.com/services/..." + }, + "discord": { + "label": "Discord", + "description": "To send data to a Discord channel from Checkmate via Discord notifications using webhooks, you can use Discord's incoming Webhooks feature.", + "webhookLabel": "Discord Webhook URL", + "webhookPlaceholder": "https://discord.com/api/webhooks/..." + }, + "telegram": { + "label": "Telegram", + "description": "To enable Telegram notifications, create a Telegram bot using BotFather, an official bot for creating and managing Telegram bots. Then, get the API token and chat ID and write them down here.", + "tokenLabel": "Your bot token", + "tokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", + "chatIdLabel": "Your Chat ID", + "chatIdPlaceholder": "-1001234567890" + }, + "webhook": { + "label": "Webhooks", + "description": "You can set up a custom webhook to receive notifications when incidents occur.", + "urlLabel": "Webhook URL", + "urlPlaceholder": "https://your-server.com/webhook" + }, + "testNotificationDevelop": "Test notification 2" + }, + "testLocale": "" } diff --git a/src/locales/tr.json b/src/locales/tr.json index 6f56a8246..16aebc1ae 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1,179 +1,179 @@ { - "dontHaveAccount": "Hesabınız yok mu", - "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", - "createPassword": "Parolanızı oluşturun", - "createAPassword": "Bir parola oluşturun", - "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", - "commonAppName": "Checkmate", - "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": "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": "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": "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", - "settingsLanguage": "Dil", - "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": "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": "Silindikten sonra, monitörleriniz geri alınamaz.", - "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", - "settingsDemoMonitors": "Demo monitörler", - "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", - "settingsAddDemoMonitors": "Demo monitörler ekle", - "settingsAddDemoMonitorsButton": "Demo monitörler ekle", - "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 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.", - "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", - "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": "", - "http": "", - "monitor": "", - "aboutus": "", - "signUP": "", - "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": "" - }, - "discord": { - "label": "", - "description": "", - "webhookLabel": "", - "webhookPlaceholder": "" - }, - "telegram": { - "label": "", - "description": "", - "tokenLabel": "", - "tokenPlaceholder": "", - "chatIdLabel": "", - "chatIdPlaceholder": "" - }, - "webhook": { - "label": "", - "description": "", - "urlLabel": "", - "urlPlaceholder": "" - }, - "testNotificationDevelop": "" - }, - "testLocale": "TEST5 UPLOAD" -} \ No newline at end of file + "dontHaveAccount": "Hesabınız yok mu", + "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", + "createPassword": "Parolanızı oluşturun", + "createAPassword": "Bir parola oluşturun", + "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", + "commonAppName": "Checkmate", + "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": "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": "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": "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", + "settingsLanguage": "Dil", + "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": "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": "Silindikten sonra, monitörleriniz geri alınamaz.", + "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", + "settingsDemoMonitors": "Demo monitörler", + "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", + "settingsAddDemoMonitors": "Demo monitörler ekle", + "settingsAddDemoMonitorsButton": "Demo monitörler ekle", + "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 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.", + "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", + "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": "", + "http": "", + "monitor": "", + "aboutus": "", + "signUP": "", + "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": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "" + }, + "testNotificationDevelop": "" + }, + "testLocale": "TEST7 UPLOAD" +} From fcf23eb8b3ac64eff0049a0b9a9f9dcce4b9fceb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 16 Mar 2025 11:06:17 +0100 Subject: [PATCH 12/30] Update peter-evans/create-pull-request action to v7 (#1940) --- .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 b26d47a39..711d9825d 100644 --- a/.github/workflows/poeditor-sync.yml +++ b/.github/workflows/poeditor-sync.yml @@ -97,7 +97,7 @@ jobs: run: echo "date=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "feat: translations updated from POEditor" From a68628d33ba774738b23dc352f9fcca154a67fbb Mon Sep 17 00:00:00 2001 From: Cihat ATA Date: Sun, 16 Mar 2025 13:36:53 +0300 Subject: [PATCH 13/30] fix: test github workflow upload action (#1942) --- src/locales/tr.json | 356 ++++++++++++++++++++++---------------------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/src/locales/tr.json b/src/locales/tr.json index 16aebc1ae..c4a4b026f 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1,179 +1,179 @@ { - "dontHaveAccount": "Hesabınız yok mu", - "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", - "createPassword": "Parolanızı oluşturun", - "createAPassword": "Bir parola oluşturun", - "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", - "commonAppName": "Checkmate", - "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": "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": "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": "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", - "settingsLanguage": "Dil", - "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": "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": "Silindikten sonra, monitörleriniz geri alınamaz.", - "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", - "settingsDemoMonitors": "Demo monitörler", - "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", - "settingsAddDemoMonitors": "Demo monitörler ekle", - "settingsAddDemoMonitorsButton": "Demo monitörler ekle", - "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 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.", - "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", - "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": "", - "http": "", - "monitor": "", - "aboutus": "", - "signUP": "", - "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": "" - }, - "discord": { - "label": "", - "description": "", - "webhookLabel": "", - "webhookPlaceholder": "" - }, - "telegram": { - "label": "", - "description": "", - "tokenLabel": "", - "tokenPlaceholder": "", - "chatIdLabel": "", - "chatIdPlaceholder": "" - }, - "webhook": { - "label": "", - "description": "", - "urlLabel": "", - "urlPlaceholder": "" - }, - "testNotificationDevelop": "" - }, - "testLocale": "TEST7 UPLOAD" -} + "dontHaveAccount": "Hesabınız yok mu", + "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", + "createPassword": "Parolanızı oluşturun", + "createAPassword": "Bir parola oluşturun", + "authRegisterAlreadyHaveAccount": "Zaten hesabınız var mı?", + "commonAppName": "Checkmate", + "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": "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": "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": "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", + "settingsLanguage": "Dil", + "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": "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": "Silindikten sonra, monitörleriniz geri alınamaz.", + "settingsClearAllStatsDialogConfirm": "Evet, tüm istatistikleri temizle", + "settingsDemoMonitors": "Demo monitörler", + "settingsDemoMonitorsDescription": "Burada demo monitörler ekleyebilir ve kaldırabilirsiniz.", + "settingsAddDemoMonitors": "Demo monitörler ekle", + "settingsAddDemoMonitorsButton": "Demo monitörler ekle", + "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 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.", + "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", + "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": "", + "http": "", + "monitor": "", + "aboutus": "", + "signUP": "", + "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": "" + }, + "discord": { + "label": "", + "description": "", + "webhookLabel": "", + "webhookPlaceholder": "" + }, + "telegram": { + "label": "", + "description": "", + "tokenLabel": "", + "tokenPlaceholder": "", + "chatIdLabel": "", + "chatIdPlaceholder": "" + }, + "webhook": { + "label": "", + "description": "", + "urlLabel": "", + "urlPlaceholder": "" + }, + "testNotificationDevelop": "" + }, + "testLocale": "TEST8 UPLOAD" +} \ No newline at end of file From 1717513cf4baa3efa49519ea0b4597acd7cdcd05 Mon Sep 17 00:00:00 2001 From: Cihat ATA Date: Sun, 16 Mar 2025 14:29:43 +0300 Subject: [PATCH 14/30] test upload translation step (#1943) * fix: test github workflow upload action * fix: test github workflow upload action --- src/locales/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/tr.json b/src/locales/tr.json index c4a4b026f..6a102672e 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -175,5 +175,5 @@ }, "testNotificationDevelop": "" }, - "testLocale": "TEST8 UPLOAD" + "testLocale": "TEST10 UPLOAD" } \ No newline at end of file From b6113a176fe84de848de6d71de798246b5a0fb24 Mon Sep 17 00:00:00 2001 From: Cihat ATA Date: Sun, 16 Mar 2025 14:38:24 +0300 Subject: [PATCH 15/30] test poeditor upload step (#1944) * fix: test github workflow upload action * fix: test github workflow upload action * fix: test github workflow upload action --- .github/workflows/upload-poeditor.yml | 26 +++++++++++++++++++------- src/locales/tr.json | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.github/workflows/upload-poeditor.yml b/.github/workflows/upload-poeditor.yml index bdd2b8fbf..988463d4b 100644 --- a/.github/workflows/upload-poeditor.yml +++ b/.github/workflows/upload-poeditor.yml @@ -51,14 +51,26 @@ jobs: id: changed-files if: github.event_name == 'pull_request' run: | - # Get list of changed files in src/locales directory - CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} -- src/locales/*.json) - echo "Changed files: $CHANGED_FILES" + # Get base and head commits + BASE_SHA=${{ github.event.pull_request.base.sha }} + HEAD_SHA=${{ github.event.pull_request.head.sha }} - # Create a JSON array of changed files with language codes - echo "CHANGED_FILES<> $GITHUB_ENV - echo "$CHANGED_FILES" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV + echo "Base SHA: $BASE_SHA" + echo "Head SHA: $HEAD_SHA" + + # Get list of changed files in src/locales directory + CHANGED_FILES=$(git diff --name-only $BASE_SHA..$HEAD_SHA -- 'src/locales/*.json' || git ls-files 'src/locales/*.json') + + if [ -z "$CHANGED_FILES" ]; then + echo "No changes detected in locale files" + echo "CHANGED_FILES=" >> $GITHUB_ENV + else + echo "Changed files:" + echo "$CHANGED_FILES" + echo "CHANGED_FILES<> $GITHUB_ENV + echo "$CHANGED_FILES" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + fi - name: Upload changed translations to POEditor if: env.CHANGED_FILES != '' diff --git a/src/locales/tr.json b/src/locales/tr.json index 6a102672e..b4332a548 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -175,5 +175,5 @@ }, "testNotificationDevelop": "" }, - "testLocale": "TEST10 UPLOAD" + "testLocale": "TEST11 UPLOAD" } \ No newline at end of file From cdbabeb225d8bef396109d27efd7ed8def58969d Mon Sep 17 00:00:00 2001 From: Br0wnHammer Date: Mon, 17 Mar 2025 01:16:42 +0530 Subject: [PATCH 16/30] Feat: Migrate Hardcoded Strings --- .../Maintenance/CreateMaintenance/index.jsx | 36 +++---- .../MaintenanceTable/ActionsMenu/index.jsx | 6 +- .../Maintenance/MaintenanceTable/index.jsx | 13 ++- src/Pages/Maintenance/index.jsx | 4 +- src/Pages/NotFound/index.jsx | 4 +- src/Pages/PageSpeed/Configure/index.jsx | 41 ++++---- src/Pages/PageSpeed/Create/index.jsx | 29 +++--- .../Components/Charts/AreaChartLegend.jsx | 5 +- .../Components/PageSpeedStatusBoxes/index.jsx | 7 +- .../Components/PerformanceReport/index.jsx | 8 +- src/Pages/PageSpeed/Details/index.jsx | 8 +- .../Monitors/Components/Card/index.jsx | 4 +- src/Pages/PageSpeed/Monitors/index.jsx | 7 +- .../Create/Components/Progress/index.jsx | 5 +- .../Create/Components/Tabs/Content.jsx | 14 +-- .../Create/Components/Tabs/Settings.jsx | 26 ++--- src/Pages/StatusPage/Create/index.jsx | 9 +- .../Status/Components/AdminLink/index.jsx | 6 +- .../Components/ControlsHeader/index.jsx | 6 +- src/Pages/StatusPage/Status/index.jsx | 26 ++--- .../Components/StatusPagesTable/index.jsx | 10 +- src/Pages/StatusPage/StatusPages/index.jsx | 6 +- src/Pages/Uptime/Configure/index.jsx | 45 +++++---- src/Pages/Uptime/Create/index.jsx | 56 +++++------ .../Components/Charts/ResponseGaugeChart.jsx | 7 +- .../Components/ResponseTable/index.jsx | 10 +- src/Pages/Uptime/Details/index.jsx | 8 +- .../Components/UptimeDataTable/index.jsx | 12 ++- src/Pages/Uptime/Monitors/index.jsx | 6 +- src/locales/gb.json | 97 +++++++++++++++++++ 30 files changed, 334 insertions(+), 187 deletions(-) diff --git a/src/Pages/Maintenance/CreateMaintenance/index.jsx b/src/Pages/Maintenance/CreateMaintenance/index.jsx index abc31361a..33e17a300 100644 --- a/src/Pages/Maintenance/CreateMaintenance/index.jsx +++ b/src/Pages/Maintenance/CreateMaintenance/index.jsx @@ -28,6 +28,7 @@ import { } from "../../../Utils/timeUtils"; import { useNavigate, useParams } from "react-router-dom"; import { buildErrors, hasValidationErrors } from "../../../Validation/error"; +import { useTranslation } from "react-i18next"; const getDurationAndUnit = (durationInMs) => { if (durationInMs % MS_PER_DAY === 0) { @@ -113,6 +114,7 @@ const CreateMaintenance = () => { const { maintenanceWindowId } = useParams(); const navigate = useNavigate(); const theme = useTheme(); + const { t } = useTranslation(); const { user } = useSelector((state) => state.auth); const [monitors, setMonitors] = useState([]); const [search, setSearch] = useState(""); @@ -293,7 +295,7 @@ const CreateMaintenance = () => { component="span" fontSize="inherit" > - {`${maintenanceWindowId === undefined ? "Create a" : "Edit"}`}{" "} + {`${maintenanceWindowId === undefined ? t("createA") : t("edit")}`}{" "} { fontSize="inherit" fontWeight="inherit" > - maintenance{" "} + {t("maintenance")}{" "} - window + {t("window")} { variant="body2" fontSize={14} > - Your pings won't be sent during this time frame + {t("maintenanceWindowDescription")} @@ -324,14 +326,14 @@ const CreateMaintenance = () => { component="h2" variant="h2" > - General Settings + {t("settingsGeneralSettings")} { handleFormChange("name", event.target.value); @@ -342,7 +344,7 @@ const CreateMaintenance = () => { handleChange(event, "interval")} @@ -429,7 +430,7 @@ const PageSpeedConfigure = () => { onClick={handleSave} sx={{ px: theme.spacing(12) }} > - Save + {t("settingsSave")} @@ -438,8 +439,8 @@ const PageSpeedConfigure = () => { setIsOpen(false)} confirmationButtonLabel={"Delete"} onConfirm={handleRemove} diff --git a/src/Pages/PageSpeed/Create/index.jsx b/src/Pages/PageSpeed/Create/index.jsx index 3e32ffea2..75e60eb79 100644 --- a/src/Pages/PageSpeed/Create/index.jsx +++ b/src/Pages/PageSpeed/Create/index.jsx @@ -10,6 +10,7 @@ import { checkEndpointResolution, } from "../../../Features/PageSpeedMonitor/pageSpeedMonitorSlice"; import { parseDomainName } from "../../../Utils/monitorUtils"; +import { useTranslation } from "react-i18next"; // MUI import { useTheme } from "@emotion/react"; @@ -173,6 +174,8 @@ const CreatePageSpeed = () => { } }; + const { t } = useTranslation(); + return ( { component="span" fontSize="inherit" > - Create your{" "} + {t("createYour")}{" "} { fontWeight="inherit" color={theme.palette.primary.contrastTextSecondary} > - PageSpeed monitor + {t("pageSpeedMonitor")} - General settings + {t("settingsGeneralSettings")} - Here you can select the URL of the host, together with the type of monitor. + {t("distributedUptimeCreateSelectURL")} @@ -248,9 +251,9 @@ const CreatePageSpeed = () => { - Checks to perform + {t("distributedUptimeCreateChecks")} - You can always add or remove checks after adding your site. + {t("distributedUptimeCreateChecksDescription")} @@ -269,14 +272,14 @@ const CreatePageSpeed = () => { filled={https.toString()} onClick={() => setHttps(true)} > - HTTPS + {t("https")} @@ -297,13 +300,13 @@ const CreatePageSpeed = () => { - Incident notifications + {t("distributedUptimeCreateIncidentNotification")} - When there is an incident, notify users. + {t("distributedUptimeCreateIncidentDescription")} - When there is a new incident, + {t("whenNewIncident")} { - Advanced settings + {t("distributedUptimeCreateAdvancedSettings")} - Appearance + {t("settingsAppearance")} - Define the default look and feel of your public status page. + {t("statusPageCreateAppearanceDescription")} diff --git a/src/Pages/StatusPage/Create/index.jsx b/src/Pages/StatusPage/Create/index.jsx index 22bdaa3e2..1fa65d38f 100644 --- a/src/Pages/StatusPage/Create/index.jsx +++ b/src/Pages/StatusPage/Create/index.jsx @@ -14,7 +14,7 @@ import { createToast } from "../../../Utils/toastUtils"; import { useNavigate } from "react-router-dom"; import { useStatusPageFetch } from "../Status/Hooks/useStatusPageFetch"; import { useParams } from "react-router-dom"; - +import { useTranslation } from "react-i18next"; //Constants const TAB_LIST = ["General settings", "Contents"]; @@ -54,6 +54,7 @@ const CreateStatusPage = () => { const [createStatusPage, createStatusIsLoading, createStatusPageNetworkError] = useCreateStatusPage(isCreate); const navigate = useNavigate(); + const { t } = useTranslation(); const [statusPage, statusPageMonitors, statusPageIsLoading, statusPageNetworkError] = useStatusPageFetch(isCreate, url); @@ -205,9 +206,9 @@ const CreateStatusPage = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - Network error + {t("networkError")} - Please check your connection + {t("checkConnection")} ); } @@ -241,7 +242,7 @@ const CreateStatusPage = () => { color="accent" onClick={handleSubmit} > - Save + {t("settingsSave")} diff --git a/src/Pages/StatusPage/Status/Components/AdminLink/index.jsx b/src/Pages/StatusPage/Status/Components/AdminLink/index.jsx index 5f5941fe7..816fbd375 100644 --- a/src/Pages/StatusPage/Status/Components/AdminLink/index.jsx +++ b/src/Pages/StatusPage/Status/Components/AdminLink/index.jsx @@ -4,9 +4,11 @@ import { Box, Typography } from "@mui/material"; // Utils import { useTheme } from "@mui/material/styles"; import { useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; const AdminLink = () => { const theme = useTheme(); + const { t } = useTranslation(); const navigate = useNavigate(); return ( @@ -16,7 +18,7 @@ const AdminLink = () => { display="inline-block" color={theme.palette.primary.contrastText} > - Administrator? + {t("administrator")} { sx={{ cursor: "pointer" }} onClick={() => navigate("/login")} > - Login here + {t("loginHere")} ); diff --git a/src/Pages/StatusPage/Status/Components/ControlsHeader/index.jsx b/src/Pages/StatusPage/Status/Components/ControlsHeader/index.jsx index f534e73b3..a9872e99f 100644 --- a/src/Pages/StatusPage/Status/Components/ControlsHeader/index.jsx +++ b/src/Pages/StatusPage/Status/Components/ControlsHeader/index.jsx @@ -8,9 +8,11 @@ import { useTheme } from "@mui/material/styles"; import { useNavigate } from "react-router-dom"; import { useLocation } from "react-router-dom"; import PropTypes from "prop-types"; +import { useTranslation } from "react-i18next"; const Controls = ({ isDeleteOpen, setIsDeleteOpen, isDeleting, url, type }) => { const theme = useTheme(); + const { t } = useTranslation(); const location = useLocation(); const currentPath = location.pathname; const navigate = useNavigate(); @@ -35,7 +37,7 @@ const Controls = ({ isDeleteOpen, setIsDeleteOpen, isDeleting, url, type }) => { onClick={() => setIsDeleteOpen(!isDeleteOpen)} loading={isDeleting} > - Delete + {t("delete")} @@ -59,7 +61,7 @@ const Controls = ({ isDeleteOpen, setIsDeleteOpen, isDeleting, url, type }) => { }, }} > - Configure + {t("configure")} diff --git a/src/Pages/StatusPage/Status/index.jsx b/src/Pages/StatusPage/Status/index.jsx index a47e9d33e..05c42a90c 100644 --- a/src/Pages/StatusPage/Status/index.jsx +++ b/src/Pages/StatusPage/Status/index.jsx @@ -17,6 +17,7 @@ import { useStatusPageDelete } from "./Hooks/useStatusPageDelete"; import { useState } from "react"; import { useParams } from "react-router-dom"; import { useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; const PublicStatus = () => { const { url } = useParams(); @@ -24,6 +25,7 @@ const PublicStatus = () => { const [isDeleteOpen, setIsDeleteOpen] = useState(false); // Utils const theme = useTheme(); + const { t } = useTranslation(); const location = useLocation(); const navigate = useNavigate(); @@ -59,9 +61,9 @@ const PublicStatus = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - Network error + {t("networkError")} - Please check your connection + {t("checkConnection")} ); } @@ -76,9 +78,9 @@ const PublicStatus = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - A public status page is not set up. + {t("statusPageStatus")} - Please contact to your administrator + {t("statusPageStatusContactAdmin")} ); @@ -94,9 +96,9 @@ const PublicStatus = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - This status page is not public. + {t("statusPageStatusNotPublic")} - Please contact to your administrator + {t("statusPageStatusContactAdmin")} ); @@ -111,9 +113,9 @@ const PublicStatus = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - There's no status page here. + {t("statusPageStatusNoPage")} - Please contact to your administrator + {t("statusPageStatusContactAdmin")} ); } @@ -131,12 +133,12 @@ const PublicStatus = () => { setIsDeleteOpen={setIsDeleteOpen} url={url} /> - Service status + {t("statusPageStatusServiceStatus")} {link} { deleteStatusPage(); setIsDeleteOpen(false); @@ -146,8 +148,8 @@ const PublicStatus = () => { setIsDeleteOpen(false); }} open={isDeleteOpen} - confirmationButtonLabel="Yes, delete status page" - description="Once deleted, your status page cannot be retrieved." + confirmationButtonLabel={t("deleteStatusPageConfirm")} + description={t("deleteStatusPageDescription")} isLoading={isDeleting || isLoading} /> diff --git a/src/Pages/StatusPage/StatusPages/Components/StatusPagesTable/index.jsx b/src/Pages/StatusPage/StatusPages/Components/StatusPagesTable/index.jsx index 6772dcdb7..20226d6d3 100644 --- a/src/Pages/StatusPage/StatusPages/Components/StatusPagesTable/index.jsx +++ b/src/Pages/StatusPage/StatusPages/Components/StatusPagesTable/index.jsx @@ -4,20 +4,22 @@ import { useNavigate } from "react-router-dom"; import { StatusLabel } from "../../../../../Components/Label"; import ArrowOutwardIcon from "@mui/icons-material/ArrowOutward"; import { Stack, Typography } from "@mui/material"; +import { useTranslation } from "react-i18next"; const StatusPagesTable = ({ data }) => { const theme = useTheme(); + const { t } = useTranslation(); const navigate = useNavigate(); const headers = [ { id: "name", - content: "Status page name", + content: t("statusPageName"), render: (row) => { return row.companyName; }, }, { id: "url", - content: "Public URL", + content: t("publicURL"), onClick: (e, row) => { if (row.isPublished) { e.stopPropagation(); @@ -57,14 +59,14 @@ const StatusPagesTable = ({ data }) => { }, { id: "type", - content: "Type", + content: t("type"), render: (row) => { return row.type; }, }, { id: "status", - content: "Status", + content: t("status"), render: (row) => { const status = row.isPublished ? "published" : "unpublished"; return ( diff --git a/src/Pages/StatusPage/StatusPages/index.jsx b/src/Pages/StatusPage/StatusPages/index.jsx index 54a41f850..6654be38c 100644 --- a/src/Pages/StatusPage/StatusPages/index.jsx +++ b/src/Pages/StatusPage/StatusPages/index.jsx @@ -8,6 +8,7 @@ import StatusPagesTable from "./Components/StatusPagesTable"; import SkeletonLayout from "../../../Components/Skeletons/FullPage"; // Utils import { useTheme } from "@emotion/react"; +import { useTranslation } from "react-i18next"; import { useStatusPagesFetch } from "./Hooks/useStatusPagesFetch"; import { useIsAdmin } from "../../../Hooks/useIsAdmin"; const BREADCRUMBS = [{ name: `Status Pages`, path: "" }]; @@ -15,6 +16,7 @@ const BREADCRUMBS = [{ name: `Status Pages`, path: "" }]; const StatusPages = () => { // Utils const theme = useTheme(); + const { t } = useTranslation(); const isAdmin = useIsAdmin(); const [isLoading, networkError, statusPages] = useStatusPagesFetch(); @@ -30,9 +32,9 @@ const StatusPages = () => { marginY={theme.spacing(4)} color={theme.palette.primary.contrastTextTertiary} > - Network error + {t("networkError")} - Please check your connection + {t("checkConnection")} ); } diff --git a/src/Pages/Uptime/Configure/index.jsx b/src/Pages/Uptime/Configure/index.jsx index 4a119bd0f..735a087e4 100644 --- a/src/Pages/Uptime/Configure/index.jsx +++ b/src/Pages/Uptime/Configure/index.jsx @@ -6,6 +6,7 @@ import { Box, Stack, Tooltip, Typography, Button } from "@mui/material"; import { monitorValidation } from "../../../Validation/validation"; import { createToast } from "../../../Utils/toastUtils"; import { logger } from "../../../Utils/Logger"; +import { useTranslation } from "react-i18next"; import ConfigBox from "../../../Components/ConfigBox"; import { updateUptimeMonitor, @@ -207,6 +208,8 @@ const Configure = () => { undefined: "Pending...", }; + const { t } = useTranslation(); + return ( { }, }} > - Editing... + {t("editing")} @@ -326,12 +329,12 @@ const Configure = () => { {monitor?.isActive ? ( <> - Pause + {t("pause")} ) : ( <> - Resume + {t("resume")} )} @@ -342,16 +345,15 @@ const Configure = () => { sx={{ px: theme.spacing(8) }} onClick={() => setIsOpen(true)} > - Remove + {t("remove")} - General settings + {t("settingsGeneralSettings")} - Here you can select the URL of the host, together with the type of - monitor. + {t("distributedUptimeCreateSelectURL")} @@ -364,7 +366,7 @@ const Configure = () => { ) } id="monitor-url" - label="URL to monitor" + label={t("urlMonitor")} placeholder="google.com" value={parsedUrl?.host || monitor?.url || ""} disabled={true} @@ -372,7 +374,7 @@ const Configure = () => { { - Incident notifications + {t("distributedUptimeCreateIncidentNotification")} - When there is an incident, notify users. + {t("distributedUptimeCreateIncidentDescription")} - When there is a new incident, + {t("whenNewIncident")} {/* {Leaving components commented for future funtionality implimentation} */} {/* { - Advanced settings + {t("distributedUptimeCreateAdvancedSettings")} handleChange(event, "matchMethod")} items={matchMethodOptions} @@ -464,7 +466,7 @@ const Configure = () => { { color={theme.palette.primary.contrastTextTertiary} opacity={0.8} > - The expected value is used to match against response result, and - the match determines the status. + {t("uptimeCreate")} @@ -500,9 +501,7 @@ const Configure = () => { color={theme.palette.primary.contrastTextTertiary} opacity={0.8} > - This expression will be evaluated against the reponse JSON data - and the result will be used to match against the expected value. - See  + {t("uptimeCreateJsonPath")}  { > jmespath.org -  for query language documentation. +  {t("uptimeCreateJsonPathQuery")} @@ -530,7 +529,7 @@ const Configure = () => { sx={{ px: theme.spacing(12) }} onClick={handleSubmit} > - Save + {t("settingsSave")} diff --git a/src/Pages/Uptime/Create/index.jsx b/src/Pages/Uptime/Create/index.jsx index 3b295f586..4338bb76e 100644 --- a/src/Pages/Uptime/Create/index.jsx +++ b/src/Pages/Uptime/Create/index.jsx @@ -10,7 +10,7 @@ import { checkEndpointResolution } from "../../../Features/UptimeMonitors/uptime import { monitorValidation } from "../../../Validation/validation"; import { getUptimeMonitorById } from "../../../Features/UptimeMonitors/uptimeMonitorsSlice"; import { createUptimeMonitor } from "../../../Features/UptimeMonitors/uptimeMonitorsSlice"; - +import { useTranslation } from "react-i18next"; // MUI import { Box, Stack, Typography, Button, ButtonGroup } from "@mui/material"; @@ -240,6 +240,8 @@ const CreateMonitor = () => { fetchMonitor(); }, [monitorId, dispatch, navigate]); + const { t } = useTranslation(); + return ( @@ -257,7 +259,7 @@ const CreateMonitor = () => { component="span" fontSize="inherit" > - Create your{" "} + {t("createYour")}{" "} { fontSize="inherit" fontWeight="inherit" > - monitor + {t("monitor")} - Checks to perform + {t("distributedUptimeCreateChecks")} - You can always add or remove checks after adding your site. + {t("distributedUptimeCreateChecksDescription")} { filled={https.toString()} onClick={() => setHttps(true)} > - HTTPS + {t("https")} ) : ( @@ -309,8 +311,8 @@ const CreateMonitor = () => { { /> { /> { - General settings + {t("settingsGeneralSettings")} - Here you can select the URL of the host, together with the type of monitor. + {t("distributedUptimeCreateSelectURL")} @@ -374,7 +376,7 @@ const CreateMonitor = () => { handleChange(event, "port")} @@ -385,7 +387,7 @@ const CreateMonitor = () => { { - Incident notifications + {t("distributedUptimeCreateIncidentNotification")} - When there is an incident, notify users. + {t("distributedUptimeCreateIncidentDescription")} @@ -427,7 +429,7 @@ const CreateMonitor = () => { - Advanced settings + {t("distributedUptimeCreateAdvancedSettings")}