Merge remote-tracking branch 'remote/master' into feature/add-xml-support-to-http-monitors

# Conflicts:
#	src/lang/en.json
This commit is contained in:
Faruk Genç 2023-02-02 19:43:17 +03:00
commit 4287f7e885
21 changed files with 1183 additions and 165 deletions

View file

@ -17,8 +17,11 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
## Directories
- config (dev config files)
- data (App data)
- db (Base database and migration scripts)
- dist (Frontend build)
- docker (Dockerfiles)
- extra (Extra useful scripts)
- public (Frontend resources for dev only)
- server (Server source code)
@ -80,13 +83,13 @@ Before deep into coding, discussion first is preferred. Creating an empty pull r
## Project Styles
I personally do not like it when something requires so much learning and configuration before you can finally start the app.
I personally do not like something that requires so many configurations before you can finally start the app. I hope Uptime Kuma installation could be as easy as like installing a mobile app.
- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort required to get it running
- Easy to install for non-Docker users, no native build dependency is needed (for x86_64/armv7/arm64), no extra config, no extra effort required to get it running
- Single container for Docker users, no very complex docker-compose file. Just map the volume and expose the port, then good to go
- Settings should be configurable in the frontend. Environment variable is not encouraged, unless it is related to startup such as `DATA_DIR`.
- Settings should be configurable in the frontend. Environment variable is not encouraged, unless it is related to startup such as `DATA_DIR`
- Easy to use
- The web UI styling should be consistent and nice.
- The web UI styling should be consistent and nice
## Coding Styles
@ -95,7 +98,7 @@ I personally do not like it when something requires so much learning and configu
- Follow ESLint
- Methods and functions should be documented with JSDoc
## Name convention
## Name Conventions
- Javascript/Typescript: camelCaseType
- SQLite: snake_case (Underscore)
@ -109,7 +112,7 @@ I personally do not like it when something requires so much learning and configu
- IDE that supports ESLint and EditorConfig (I am using IntelliJ IDEA)
- A SQLite GUI tool (SQLite Expert Personal is suggested)
## Install dependencies
## Install Dependencies for Development
```bash
npm ci
@ -127,6 +130,12 @@ Port `3000` and port `3001` will be used.
npm run dev
```
But sometimes, you would like to keep restart the server, but not the frontend, you can run these command in two terminals:
```
npm run start-frontend-dev
npm run start-server-dev
```
## Backend Server
It binds to `0.0.0.0:3001` by default.
@ -142,12 +151,15 @@ express.js is used for:
### Structure in /server/
- jobs/ (Jobs that are running in another process)
- model/ (Object model, auto mapping to the database table name)
- modules/ (Modified 3rd-party modules)
- monitor_types (Monitor Types)
- notification-providers/ (individual notification logic)
- routers/ (Express Routers)
- socket-handler (Socket.io Handlers)
- server.js (Server entry point and main logic)
- server.js (Server entry point)
- uptime-kuma-server.js (UptimeKumaServer class, main logic should be here, but some still in `server.js`)
## Frontend Dev Server
@ -198,18 +210,12 @@ Both frontend and backend share the same package.json. However, the frontend dep
### Update Dependencies
Install `ncu`
https://github.com/raineorshine/npm-check-updates
```bash
ncu -u -t patch
npm install
```
Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.
Patch release = the third digit ([Semantic Versioning](https://semver.org/))
If for maybe security reasons, a library must be updated. Then you must need to check if there are any breaking changes.
## Translations
Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages

18
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "uptime-kuma",
"version": "1.19.5",
"version": "1.19.6",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "uptime-kuma",
"version": "1.19.5",
"version": "1.19.6",
"license": "MIT",
"dependencies": {
"@grpc/grpc-js": "~1.7.3",
@ -27,6 +27,7 @@
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
"dayjs": "~1.11.5",
"dotenv": "~16.0.3",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",
@ -7813,6 +7814,14 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/dotenv": {
"version": "16.0.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
"engines": {
"node": ">=12"
}
},
"node_modules/duplexify": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
@ -24881,6 +24890,11 @@
"domhandler": "^5.0.1"
}
},
"dotenv": {
"version": "16.0.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
},
"duplexify": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",

View file

@ -84,6 +84,7 @@
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
"dayjs": "~1.11.5",
"dotenv": "~16.0.3",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",

View file

@ -4,7 +4,7 @@ const { R } = require("redbean-node");
const apicache = require("../modules/apicache");
const Monitor = require("../model/monitor");
const dayjs = require("dayjs");
const { UP, MAINTENANCE, DOWN, flipStatus, log } = require("../../src/util");
const { UP, MAINTENANCE, DOWN, PENDING, flipStatus, log } = require("../../src/util");
const StatusPage = require("../model/status_page");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const { makeBadge } = require("badge-maker");
@ -147,19 +147,19 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response
badgeValues.label = label ?? "";
switch (state) {
case 0:
case DOWN:
badgeValues.color = downColor;
badgeValues.message = downLabel;
break;
case 1:
case UP:
badgeValues.color = upColor;
badgeValues.message = upLabel;
break;
case 2:
case PENDING:
badgeValues.color = pendingColor;
badgeValues.message = pendingLabel;
break;
case 3:
case MAINTENANCE:
badgeValues.color = maintenanceColor;
badgeValues.message = maintenanceLabel;
break;

View file

@ -11,6 +11,9 @@ dayjs.extend(require("dayjs/plugin/utc"));
dayjs.extend(require("./modules/dayjs/plugin/timezone"));
dayjs.extend(require("dayjs/plugin/customParseFormat"));
// Load environment variables from `.env`
require("dotenv").config();
// Check Node.js Version
const nodeVersion = parseInt(process.versions.node.split(".")[0]);
const requiredVersion = 14;

View file

@ -109,8 +109,8 @@
"Password": "Парола",
"Remember me": "Запомни ме",
"Login": "Вход",
"No Monitors, please": "Все още няма монитори. Моля, добавете поне",
"add one": "един.",
"No Monitors, please": "Все още няма монитори. Моля,",
"add one": "добавете един.",
"Notification Type": "Тип известие",
"Email": "Имейл",
"Test": "Тест",
@ -561,7 +561,7 @@
"Container Name / ID": "Име на контейнер / ID",
"Docker Host": "Docker хост",
"Docker Hosts": "Docker хостове",
"trustProxyDescription": "Trust 'X-Forwarded-*' headers. Ако искате да получавате правилния IP адрес на клиента, а Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.",
"trustProxyDescription": "Доверяване на 'X-Forwarded-*' хедърите. В случай, че желаете да получавате реалния IP адрес на клиента и Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.",
"Examples": "Примери",
"Home Assistant URL": "Home Assistant URL адрес",
"Long-Lived Access Token": "Long-Lived токен за достъп",
@ -580,8 +580,8 @@
"goAlertInfo": "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}",
"goAlertIntegrationKeyInfo": "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.",
"goAlert": "GoAlert",
"backupOutdatedWarning": "Отпаднало: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.",
"backupRecommend": "Моля, архивирайте дяла или папката (./data/) директно вместо това.",
"backupOutdatedWarning": "Отпаднала: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.",
"backupRecommend": "Вместо това моля, архивирайте директно дяла или папката (./data/).",
"Maintenance": "Поддръжка",
"statusMaintenance": "Поддръжка",
"Schedule maintenance": "Планиране на поддръжка",
@ -683,5 +683,13 @@
"dataRetentionTimeError": "Периодът на съхранение трябва да е 0 или по-голям",
"confirmDeleteTagMsg": "Сигурни ли сте, че желаете да изтриете този таг? Мониторите, свързани с него, няма да бъдат изтрити.",
"promosmsAllowLongSMS": "Позволи дълъг SMS",
"Packet Size": "Размер на пакет"
"Packet Size": "Размер на пакет",
"Custom Monitor Type": "Потребителски тип монитор",
"loadingError": "Данните не могат да бъдат изтеглени. Моля, опитайте отново по-късно.",
"plugin": "Плъгин | Плъгини",
"install": "Инсталирай",
"installing": "Инсталиране",
"uninstall": "Деинсталирай",
"uninstalling": "Деинсталиране",
"confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?"
}

View file

@ -62,7 +62,7 @@
"Down": "Nedostupný",
"Pending": "Čekám",
"Unknown": "Neznámý",
"Pause": "Pozastavit",
"Pause": "Pauza",
"Name": "Název",
"Status": "Stav",
"DateTime": "Časové razítko",
@ -342,7 +342,7 @@
"steamApiKeyDescription": "Pro monitorování Steam Game Serveru je nutné zadat Steam Web-API klíč. Svůj API klíč získáte na následující stránce: ",
"Current User": "Aktuálně přihlášený uživatel",
"topic": "Téma",
"topicExplanation": "MQTT topic, který chcete sledovat",
"topicExplanation": "MQTT téma, které chcete sledovat",
"successMessage": "Zpráva o úspěchu",
"successMessageExplanation": "MQTT zpráva považovaná za úspěšnou",
"recent": "Poslední",
@ -351,7 +351,7 @@
"Security": "Bezpečnost",
"Steam API Key": "API klíč služby Steam",
"Shrink Database": "Zmenšit databázi",
"Pick a RR-Type...": "Vyberte typ záznamu o prostředku…",
"Pick a RR-Type...": "Vyberte typ RR záznamu…",
"Pick Accepted Status Codes...": "Vyberte stavové kódy, které chcete akceptovat…",
"Default": "Výchozí",
"HTTP Options": "Možnosti protokolu HTTP",
@ -578,7 +578,7 @@
"Go back to the previous page.": "Vrátit se na předchozí stránku.",
"Coming Soon": "Připravujeme",
"wayToGetClickSendSMSToken": "API Username a API Key získáte na adrese {0} .",
"Connection String": "Connection String",
"Connection String": "Připojovací řetězec",
"Query": "Dotaz",
"settingsCertificateExpiry": "Platnost TLS certifikátu",
"certificationExpiryDescription": "Aktivovat oznámení nad HTTPS dohledy, pokud platnost TLS certifikátu vyprší za:",
@ -596,7 +596,7 @@
"Domain": "Doména",
"Workstation": "Pracovní stanice",
"disableCloudflaredNoAuthMsg": "Používáte režim bez ověření, heslo není vyžadováno.",
"trustProxyDescription": "Důvěřovat 'X-Forwarded-*' hlavičkám. Pokud chcete získat správnou IP adresu klientů a vaše instance Uptime Kuma je schována za Nginx nebo Apache, měli byste tuto možnost zapnout.",
"trustProxyDescription": "Důvěřovat 'X-Forwarded-*' hlavičkám. Pokud chcete získat správnou IP adresu klientů a vaše instance Uptime Kuma je za Nginx nebo Apache, měli byste tuto možnost zapnout.",
"wayToGetLineNotifyToken": "Přístupový token můžete získat na adrese {0}",
"Examples": "Příklady",
"Home Assistant URL": "Home Assistant URL",
@ -616,7 +616,7 @@
"goAlertInfo": "GoAlert je aplikace s otevřeným zdrojovým kódem pro plánování hovorů, automatické eskalace a upozornění (jako jsou SMS nebo hlasové hovory). Automaticky zapojte správnou osobu, správným způsobem a ve správný čas! {0}",
"goAlertIntegrationKeyInfo": "Obecný API integrační klíč pro danou službu ve formátu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" se obvykle nachází ve zkopírované URL jako hodnota parametru token.",
"goAlert": "GoAlert",
"backupOutdatedWarning": "Zastaralé: V poslední době byla funkčnost aplikace značně rozšířena, nicméně součást pro zálohování nepokrývá všechny možnosti. Z tohoto důvodu není možné vygenerovat úplnou zálohu a zajistit obnovení všech dat.",
"backupOutdatedWarning": "Zastaralé: Vzhledem k tomu, že bylo přidáno mnoho funkcí a tato funkce zálohování je poněkud neudržovaná, nemůže vytvářet nebo obnovit kompletní zálohu.",
"backupRecommend": "Prosím, zálohujte si ručně celý svazek nebo datovou složku (./data/).",
"Optional": "Volitelný",
"squadcast": "Squadcast",
@ -666,12 +666,12 @@
"Date and Time": "Datum a čas",
"DateTime Range": "Rozsah data a času",
"Strategy": "Strategie",
"Free Mobile User Identifier": "Free Mobile User Identifier",
"Free Mobile API Key": "Free Mobile API Key",
"Free Mobile User Identifier": "Identifikátor uživatele Free Mobile",
"Free Mobile API Key": "API klíč Free Mobile",
"Enable TLS": "Povolit TLS",
"Proto Service Name": "Proto Service Name",
"Proto Method": "Proto Method",
"Proto Content": "Proto Content",
"Proto Method": "Proto metoda",
"Proto Content": "Proto obsah",
"Economy": "Úsporná",
"Lowcost": "Nízkonákladová",
"high": "high",
@ -682,5 +682,14 @@
"infiniteRetention": "Pro nekonečný záznam zadejte 0.",
"confirmDeleteTagMsg": "Opravdu chcete odstranit tento štítek? Provedením této akce nedojde k odstranění dohledů, které jej mají přiřazeny.",
"Help": "Nápověda",
"Game": "Hra"
"Game": "Hra",
"Custom Monitor Type": "Vlastní typ dohledu",
"loadingError": "Nelze načíst data, zkuste to prosím později.",
"confirmUninstallPlugin": "Opravdu chcete tento zásuvný modul odinstalovat?",
"plugin": "Zásuvné moduly | Zásuvné moduly",
"install": "Instalace",
"installing": "Instaluji",
"uninstall": "Odinstalace",
"uninstalling": "Odinstalování",
"Packet Size": "Velikost paketu"
}

View file

@ -368,7 +368,7 @@
"YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
"chatIDNotFound": "Chat ID is not found; please send a message to this bot first",
"disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.",
"trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind such as Nginx or Apache, you should enable this.",
"trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind a proxy such as Nginx or Apache, you should enable this.",
"wayToGetLineNotifyToken": "You can get an access token from {0}",
"Examples": "Examples",
"Home Assistant URL": "Home Assistant URL",
@ -384,7 +384,7 @@
"Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.",
"Frontend Version": "Frontend Version",
"Frontend Version do not match backend version!": "Frontend Version do not match backend version!",
"backupOutdatedWarning": "Deprecated: Since a lot of features added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.",
"backupOutdatedWarning": "Deprecated: Since a lot of features were added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.",
"backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.",
"Optional": "Optional",
"squadcast": "Squadcast",
@ -690,5 +690,6 @@
"onebotSafetyTips": "For safety, must set access token",
"PushDeer Key": "PushDeer Key",
"wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .",
"Custom Monitor Type": "Custom Monitor Type",
"Body Encoding": "Body Encoding"
}

View file

@ -1,14 +1,14 @@
{
"languageName": "Español",
"checkEverySecond": "Comprobar cada {0} segundos.",
"retriesDescription": "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada.",
"checkEverySecond": "Comprobar cada {0} segundos",
"retriesDescription": "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada",
"ignoreTLSError": "Ignorar error TLS/SSL para sitios web HTTPS",
"upsideDownModeDescription": "Invertir el estado. Si el servicio es alcanzable, está CAÍDO.",
"maxRedirectDescription": "Número máximo de direcciones a seguir. Establecer a 0 para deshabilitar.",
"acceptedStatusCodesDescription": "Seleccionar los códigos de estado que se consideran como respuesta exitosa.",
"passwordNotMatchMsg": "La contraseña repetida no coincide.",
"notificationDescription": "Por favor asigna una notificación a el/los monitor(es) para hacerlos funcional(es).",
"keywordDescription": "Palabra clave en HTML plano o respuesta JSON, es sensible a mayúsculas",
"keywordDescription": "Buscar palabra clave en HTML plano o respuesta JSON. La búsqueda es sensible a mayúsculas.",
"pauseDashboardHome": "Pausado",
"deleteMonitorMsg": "¿Seguro que quieres eliminar este monitor?",
"deleteNotificationMsg": "¿Seguro que quieres eliminar esta notificación para todos los monitores?",
@ -86,7 +86,7 @@
"Enable Auth": "Habilitar autenticación",
"disableauth.message1": "Seguro que deseas <strong>deshabilitar la autenticación</strong>?",
"disableauth.message2": "Es para <strong>quien implementa autenticación de terceros</strong> ante Uptime Kuma como por ejemplo Cloudflare Access.",
"Please use this option carefully!": "Por favor usar con cuidado.",
"Please use this option carefully!": "¡Utilice esta opción con cuidado!",
"Logout": "Cerrar sesión",
"Leave": "Salir",
"I understand, please disable": "Entiendo, por favor deshabilitar",
@ -128,7 +128,7 @@
"backupDescription3": "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdalo con cuidado.",
"alertNoFile": "Selecciona un archivo para importar.",
"alertWrongFileType": "Selecciona un archivo JSON.",
"twoFAVerifyLabel": "Ingresa tu token para verificar que 2FA está funcionando",
"twoFAVerifyLabel": "Ingresa tu token para verificar que 2FA está funcionando:",
"tokenValidSettingsMsg": "¡El token es válido! Ahora puedes guardar la configuración de 2FA.",
"confirmEnableTwoFAMsg": "¿Estás seguro de que quieres habilitar 2FA?",
"confirmDisableTwoFAMsg": "¿Estás seguro de que quieres desactivar 2FA?",
@ -144,7 +144,7 @@
"Token": "Token",
"Show URI": "Mostrar URI",
"Clear all statistics": "Borrar todas las estadísticas",
"retryCheckEverySecond": "Reintentar cada {0} segundo.",
"retryCheckEverySecond": "Reintentar cada {0} segundos",
"importHandleDescription": "Elige 'Omitir existente' si deseas omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.",
"confirmImportMsg": "¿Estás seguro de importar la copia de seguridad? Asegúrate de haber seleccionado la opción de importación correcta.",
"Heartbeat Retry Interval": "Intervalo de reintento de latido",
@ -155,7 +155,7 @@
"Options": "Opciones",
"Keep both": "Manténer ambos",
"Tags": "Etiquetas",
"Add New below or Select...": "Agregar nuevo a continuación o seleccionar...",
"Add New below or Select...": "Agregar nuevo a continuación o seleccionar",
"Tag with this name already exist.": "Una etiqueta con este nombre ya existe.",
"Tag with this value already exist.": "Una etiqueta con este valor ya existe.",
"color": "color",
@ -168,7 +168,7 @@
"Indigo": "Índigo",
"Purple": "Morado",
"Pink": "Rosa",
"Search...": "Buscar...",
"Search...": "Buscar",
"Avg. Ping": "Ping promedio",
"Avg. Response": "Respuesta promedio",
"Entry Page": "Página de entrada",
@ -188,7 +188,7 @@
"smtp": "Email (SMTP)",
"discord": "Discord",
"teams": "Microsoft Teams",
"signal": "Signal",
"signal": "Sal",
"gotify": "Gotify",
"slack": "Slack",
"rocket.chat": "Rocket.chat",
@ -205,5 +205,455 @@
"clearDataOlderThan": "Mantener los datos del historial del monitor durante {0} días.",
"records": "registros",
"One record": "Un registro",
"steamApiKeyDescription": "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: "
"steamApiKeyDescription": "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: ",
"Custom Monitor Type": "Monitor Tipo Personalizado",
"Primary Base URL": "URL Base Primaria",
"Passive Monitor Type": "Monitor Tipo Pasivo",
"pushOptionalParams": "Parámetros opcionales: {0}",
"Schedule maintenance": "Programar mantenimiento",
"Pick Affected Monitors...": "Seleccionar Monitores Afectados…",
"Start of maintenance": "Inicio del mantenimiento",
"All Status Pages": "Todas las Páginas de Estado",
"Select status pages...": "Seleccionar páginas de estado…",
"Style": "Estilo",
"info": "información",
"warning": "advertencia",
"danger": "peligro",
"critical": "crítico",
"primary": "primario",
"Content": "Contenido",
"recent": "Reciente",
"Done": "Terminado",
"Create Incident": "Crear Incidente",
"Title": "Título",
"Info": "Información",
"Security": "Seguridad",
"Current User": "Usuario Actual",
"topic": "Asunto",
"Shrink Database": "Reducir Base de Datos",
"dark": "oscuro",
"light": "claro",
"Last Updated": "Última Actualización",
"Show Tags": "Mostrar Etiquetas",
"Switch to Light Theme": "Cambiar a Tema Claro",
"Add one": "Añadir uno",
"Description": "Descripción",
"Cancel": "Cancelar",
"No Monitors": "Sin Monitores",
"Untitled Group": "Grupo sin título",
"Services": "Servicios",
"Discard": "Descartar",
"Add New Status Page": "Añadir Nueva Página de Estado",
"Start": "Iniciar",
"Stop": "Parar",
"Remove Token": "Eliminar Token",
"Powered by": "Potenciado por",
"Customize": "Personalizar",
"Custom Footer": "Pie Personalizado",
"Custom CSS": "CSS Personalizado",
"Backup": "Respaldo",
"Go back to the previous page.": "Volver a la página anterior.",
"Query": "Consulta",
"Examples": "Ejemplos",
"weekdayShortMon": "Lun",
"weekdayShortWed": "Mie",
"weekdayShortSat": "Sab",
"Ignore TLS Error": "Ignorar Error TLS",
"secureOptionNone": "Ninguno / STARTTLS (25, 587)",
"Schedule Maintenance": "Programar Mantenimiento",
"Date and Time": "Fecha y Hora",
"Enable": "Habilitar",
"Disable": "Deshabilitar",
"maintenanceStatus-inactive": "Inactivo",
"maintenanceStatus-scheduled": "Programado",
"maintenanceStatus-unknown": "Desconocido",
"Display Timezone": "Mostrar Zona Horaria",
"Server Timezone": "Servidor de Zona Horaria",
"statusPageMaintenanceEndDate": "Finaliza",
"Enable DNS Cache": "Habilitar Cache DNS",
"No Maintenance": "Sin Mantenimiento",
"weekdayShortSun": "Dom",
"dayOfWeek": "Día de la Semana",
"dayOfMonth": "Día del Mes",
"lastDay": "Último día",
"lastDay1": "Último Día del Mes",
"pauseMaintenanceMsg": "¿Seguro que quiere pausar?",
"maintenanceStatus-under-maintenance": "En Mantenimiento",
"DateTime Range": "Rango de Fecha y Hora",
"infiniteRetention": "Poner a 0 para retención infinita.",
"confirmDeleteTagMsg": "¿Estas seguro que quieres eliminar esta etiqueta? Los monitores asociados a esta etiqueta no serán eliminados.",
"Example:": "Ejemplo: {0}",
"Strategy": "Estrategia",
"Read more:": "Leer más: {0}",
"onebotGroupMessage": "Grupo",
"Affected Monitors": "Monitores Afectados",
"Custom": "Personalizado",
"Headers": "Encabezados",
"PhoneNumbers": "Números de Teléfono",
"No monitors available.": "Sin monitores disponibles.",
"error": "error",
"deleteProxyMsg": "¿Seguro que quieres eliminar este proxy para todos los monitores?",
"Hide Tags": "Ocultar Etiquetas",
"Created": "Creado",
"Switch to Dark Theme": "Cambiar a Tema Oscuro",
"More info on:": "Más información en: {0}",
"weekdayShortTue": "Mar",
"PasswordsDoNotMatch": "Las contraseñas no coinciden.",
"statusMaintenance": "Mantenimiento",
"Maintenance": "Mantenimiento",
"General Monitor Type": "Monitor Tipo General",
"Specific Monitor Type": "Monitor Tipo Específico",
"Monitor": "Monitores",
"Resend Notification if Down X times consequently": "Reenviar Notificación si Caído X veces consecutivas",
"resendEveryXTimes": "Reenviar cada {0} veces",
"resendDisabled": "Reenvío deshabilitado",
"needPushEvery": "Debe llamar a esta URL cada {0} segundos.",
"here": "aquí",
"Content Type": "Tipo de Contenido",
"Required": "Requerido",
"defaultNotificationName": "Mi {notification} Alerta ({number})",
"Server URL": "URL del servidor",
"Priority": "Prioridad",
"Read more": "Leer más",
"Body": "Cuerpo",
"webhookAdditionalHeadersTitle": "Encabezados Adicionales",
"Method": "Método",
"Default": "Predeterminado",
"uninstalling": "Desinstalando",
"install": "Instalar",
"installing": "Instalando",
"uninstall": "Desinstalar",
"confirmUninstallPlugin": "¿Estas seguro que quieres desinstalar este complemento?",
"Recipients": "Destinatarios",
"User ID": "ID de Usuario",
"deleteMaintenanceMsg": "¿Seguro que quieres eliminar este mantenimiento?",
"promosmsLogin": "Nombre de inicio de sesión de la API",
"SMS Type": "Tipo de SMS",
"Device": "Dispositivo",
"Message Title": "Título del Mensaje",
"Notification Sound": "Sonido de Notificación",
"documentation": "documentación",
"onebotUserOrGroupId": "Grupo/ID de Usuario",
"Game": "Juego",
"or": "ó",
"Status:": "Estado: {0}",
"Help": "Ayuda",
"HTTP Options": "Opciones HTTP",
"weekdayShortThu": "Jue",
"weekdayShortFri": "Vie",
"maintenanceStatus-ended": "Finalizado",
"BodyInvalidFormat": "El cuerpo de la solicitud no es JSON válido: ",
"topicExplanation": "Tema MQTT para monitorear",
"successMessageExplanation": "Mensaje MQTT que será considerado como éxito",
"Steam API Key": "API Key de Steam",
"Please input title and content": "Por favor introduzca título y contenido",
"Footer Text": "Texto del Pié",
"Show Powered By": "Mostrar Potenciado Por",
"Domain Names": "Nombres de Dominio",
"signedInDisp": "Iniciada sesión como {0}",
"RadiusSecretDescription": "Secreto Compartido entre cliente y servidor",
"RadiusCalledStationId": "Id de la Estación Llamada",
"RadiusCalledStationIdDescription": "Identificador del dispositivo llamado",
"RadiusCallingStationId": "Id de Estación Llamante",
"Certificate Expiry Notification": "Notificación de Caducidad del Certificado",
"API Username": "Nombre Usuario API",
"API Key": "Clave API",
"Show update if available": "Mostrar actualización si está disponible",
"Also check beta release": "Comprobar también lanzamientos beta",
"Steam Game Server": "Servidor de Juegos de Steam",
"Most likely causes:": "Las causas más probables:",
"There might be a typing error in the address.": "Debe haber un error de escritura en la dirección.",
"What you can try:": "Lo que puedes intentar:",
"Retype the address.": "Reescriba la dirección.",
"Coming Soon": "Próximamente",
"Connection String": "Cadena de Conexión",
"settingsCertificateExpiry": "Caducidad del certificado TLS",
"certificationExpiryDescription": "Los monitores HTTPS activan una notificación cuando el certificado TLS caduca en:",
"Setup Docker Host": "Configurar Host de Docker",
"Connection Type": "Tipo de Conexión",
"Docker Daemon": "Demonio Docker",
"deleteDockerHostMsg": "¿Estas seguro que quieres eliminar este host de docker para todos los monitores?",
"Date Created": "Fecha de Creación",
"signedInDispDisabled": "Autenticación Deshabilitada.",
"RadiusCallingStationIdDescription": "Identificador del dispositivo llamante",
"Using a Reverse Proxy?": "¿Usando un Proxy Inverso?",
"Check how to config it for WebSocket": "Compruebe cómo configurarlo para WebSocket",
"The resource is no longer available.": "El recurso ya no está disponible.",
"Push URL": "URL Push",
"Webhook URL": "URL Webhook",
"Application Token": "Token de Aplicación",
"appriseNotInstalled": "Apprise no está instalado. {0}",
"PushUrl": "URL Push",
"HeadersInvalidFormat": "Los encabezados de solicitud no son JSON válido: ",
"Post URL": "URL Post",
"emojiCheatSheet": "Hoja de trucos Emoji: {0}",
"webhookJsonDesc": "{0} es bueno para cualquier servidor HTTP moderno como Express.js",
"webhookFormDataDesc": "{multipart} es bueno para PHP. El JSON deberá analizarse con {decodeFunction}",
"webhookAdditionalHeadersDesc": "Establece encabezados adicionales enviados con el webhook.",
"appriseInstalled": "Apprise está instalado.",
"successMessage": "Mensaje de éxito",
"Pick Accepted Status Codes...": "Elija códigos de estado aceptados…",
"Post": "Post",
"shrinkDatabaseDescription": "Activar ASPIRADORA para SQLite. Si tu base de datos fue creada después 1.10.0, AUTO_ASPIRADORA ya está habilitada y esta acción no es necesaria.",
"deleteStatusPageMsg": "¿Estas seguro que quieres eliminar esta página de estado?",
"default": "Predeterminado",
"enabled": "Habilitado",
"setAsDefault": "Establecer Por Defecto",
"proxyDescription": "Proxies deben ser asignados a un monitor para que funcionen.",
"warningTimezone": "Está usando la zona horaria del servidor",
"trustProxyDescription": "Confiar en los encabezados 'X-Forwarded-*'. Si desea obtener la IP de cliente correcta y su Uptime Kuma está detrás de un proxy como Nginx o Apache, debe habilitar esto.",
"enableProxyDescription": "Este proxy no afectará las solicitudes de monitoreo hasta que se active. Puede controlar deshabilitar temporalmente el proxy de todos los monitores por estado de activación.",
"setAsDefaultProxyDescription": "Este proxy estará habilitado de forma predeterminada para los nuevos monitores. Todavía puede deshabilitar el proxy por separado para cada monitor.",
"Certificate Chain": "Cadena de certificado",
"Valid": "Válido",
"Invalid": "Inválido",
"User": "Usuario",
"Installed": "Instalado",
"Not installed": "No instalado",
"Running": "Funcionando",
"Not running": "No funcionando",
"Slug": "Slug",
"Accept characters:": "Aceptar caracteres:",
"Proxies": "Proxys",
"startOrEndWithOnly": "Empezar o terminar sólo con {0}",
"No consecutive dashes": "Sin guiones consecutivos",
"Next": "Siguiente",
"The slug is already taken. Please choose another slug.": "Este slug ya está en uso. Por favor, elige otro slug.",
"No Proxy": "Sin Proxy",
"Authentication": "Autenticación",
"HTTP Basic Auth": "Autenticación básica HTTP",
"New Status Page": "Nueva Página de Estado",
"Page Not Found": "Página No Encontrada",
"Reverse Proxy": "Proxy Inverso",
"About": "Acerca de",
"wayToGetCloudflaredURL": "(Descargar cloudflared de {0})",
"cloudflareWebsite": "Web de Cloudflare",
"Message:": "Mensaje:",
"Don't know how to get the token? Please read the guide:": "No sabes como obtener el token? Por favor, lee la guía:",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La conexión actual puede perderse si actualmente se está conectando a través del Tunel Cloudflare. ¿Seguro que quieres detenerlo? Escriba su contraseña actual para confirmarlo.",
"HTTP Headers": "Encabezados HTTP",
"Trust Proxy": "Proxy de Confianza",
"Other Software": "Otro Software",
"For example: nginx, Apache and Traefik.": "Por ejemplo: nginx, Apache y Traefik.",
"Please read": "Por favor lee",
"Subject:": "Asunto:",
"Valid To:": "Válido Para:",
"Days Remaining:": "Días Restantes:",
"Issuer:": "Emisor:",
"Fingerprint:": "Huella:",
"No status pages": "Sin páginas de estado",
"Domain Name Expiry Notification": "Notificación de Caducidad de Nombre de Dominio",
"Proxy": "Proxy",
"RadiusSecret": "Secreto de Radius",
"socket": "Socket",
"tcp": "TCP / HTTP",
"Docker Container": "Contenedor de Docker",
"Container Name / ID": "Nombre / ID de Contenedor",
"Docker Host": "Host Docker",
"Docker Hosts": "Hosts Docker",
"Domain": "Dominio",
"Workstation": "Puesto de Trabajo",
"Packet Size": "Tamaño del Paquete",
"ZohoCliq": "ZohoCliq",
"Bot Token": "Token de Bot",
"wayToGetTelegramToken": "Puedes conseguir un token desde {0}.",
"Chat ID": "ID de Chat",
"supportTelegramChatID": "Chat Directo de Soporte / Grupo / ID de Chat del Canal",
"wayToGetTelegramChatID": "Puedes obtener tu ID de chat enviando un mensaje al bot y visitando esta URL para ver el chat_id:",
"YOUR BOT TOKEN HERE": "TU TOKEN DE BOT AQUÍ",
"chatIDNotFound": "ID de Chat no encontrada; por favor, primero envía un mensaje a este bot",
"disableCloudflaredNoAuthMsg": "Estas en modo No Autenticado, no es necesaria una contraseña.",
"wayToGetLineNotifyToken": "Puede obtener un token de acceso desde {0}",
"Home Assistant URL": "URL de Asistente de Hogar",
"Long-Lived Access Token": "Token de acceso de larga duración",
"Notification Service": "Servicio de Notificaciones",
"default: notify all devices": "predeterminado: notificar todos los dispositivos",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Puede encontrar una lista de Servicios de notificación en Asistente de Hogar en \"Herramientas para desarrolladores > Servicios\", busque \"notificación\" para encontrar el nombre de su dispositivo/teléfono.",
"Automations can optionally be triggered in Home Assistant:": "Las automatizaciones se pueden activar opcionalmente en Asistente de Hogar:",
"Trigger type:": "Tipo de disparador:",
"Event type:": "Tipo de Evento:",
"Event data:": "Datos del Evento:",
"Then choose an action, for example switch the scene to where an RGB light is red.": "Luego elija una acción, por ejemplo, cambie la escena a donde una luz RGB es roja.",
"Frontend Version": "Versión de Interfaz",
"Frontend Version do not match backend version!": "La Versión de Interfaz no coincide con la versión backend!",
"backupRecommend": "Por favor, haz copia de seguridad del volumen o el archivo de datos (./data/) directamente en su lugar.",
"recurringInterval": "Intervalo",
"Recurring": "Periódico",
"strategyManual": "Activo/Inactivo Manualmente",
"lastDay2": "Penúltimo Día del Mes",
"lastDay3": "Antepenúltimo día del mes",
"lastDay4": "Trasantepenúltimo Día del Mes",
"IconUrl": "URL de Icono",
"dnsCacheDescription": "Es posible que no funcione en algunos entornos IPv6; desactívelo si encuentra algún problema.",
"Single Maintenance Window": "Ventana de Mantenimiento Único",
"secureOptionTLS": "TLS (465)",
"aboutMattermostChannelName": "Puedes sobreescribir el canal por defecto en el cual el Webhook publica introduciendo el nombre del canal en el campo \"Nombre del Canal\". Esto tiene que estar habilitado en la configuración de Mattermost Webhook. Ejemplo: #otro-canal",
"dataRetentionTimeError": "El periodo de retención debe ser 0 o mayor",
"Enable TLS": "Habilita TLS",
"Lowcost": "Bajo coste",
"You can divide numbers with": "Puedes dividir números con",
"Base URL": "URL Base",
"Proto Service Name": "Nombre de Servicio Proto",
"Proto Method": "Método Proto",
"Proto Content": "Contenido Proto",
"Economy": "Económico",
"iOS": "iOS",
"Android": "Android",
"Platform": "Plataforma",
"onebotPrivateMessage": "Privado",
"onebotMessageType": "Tipo de Mensaje OneBot",
"smseagleRecipientType": "Tipo de destinatario",
"smseagleRecipient": "Destinatario(s) (multiples deben separarse por comas)",
"smseagleEncoding": "Enviar como Unicode",
"smseaglePriority": "Prioridad del mensaje (0-9, predeterminado = 0)",
"stackfield": "Stackfield",
"Leave blank to use a shared sender number.": "Dejar en blanco para usar un número de remitente compartido.",
"Octopush API Version": "Versión API Octopush",
"From Name/Number": "De Nombre/Número",
"Recipient Number": "Número de Destinatario",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "El token de acceso de larga duración se puede crear haciendo clic en el nombre de su perfil (abajo a la izquierda) y desplazándose hasta la parte inferior y luego haciendo clic en Crear token. ",
"backupOutdatedWarning": "Obsoleto: dado que se agregaron muchas funciones y esta función de copia de seguridad no se mantiene desde hace un tiempo, no puede generar ni restaurar una copia de seguridad completa.",
"Optional": "Opcional",
"loadingError": "No se pueden obtener los datos, inténtelo de nuevo más tarde.",
"pushoverDesc2": "Si quieres enviar notificaciones a diferentes dispositivos, rellena el campo Dispositivo.",
"octopushLegacyHint": "Utilizas la versión anterior de Octopush (2011-2020) o la nueva versión?",
"Sms template must contain parameters: ": "La plantilla SMS debería contener parámetros: ",
"For safety, must use secret key": "Por seguridad, deberías usar key secreta",
"signalImportant": "IMPORTANTE: No puedes mezclar grupos y números en destinatarios!",
"aboutWebhooks": "Más información sobre Webhooks en: {0}",
"smtpDkimHashAlgo": "Algoritmo Hash (Opcional)",
"promosmsPhoneNumber": "Número de teléfono (para destinatarios Polacos puedes omitir los códigos de área)",
"promosmsTypeFlash": "SMS FLASH - Mensaje se mostrará automáticamente en el dispositivo del destinatario. Limitado sólo a destinatarios Polacos.",
"promosmsSMSSender": "Nombre de Remitente SMS: Nombre pre-registrado o uno de los predeterminados: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
"matrixDesc1": "Puedes encontrar la ID de sala interna mirando en la sección avanzado de los ajustes de sala en tu cliente Matrix. Debería ser algo como !QMdRCpUIfLwsfjxye6:home.server.",
"matrixDesc2": "Es altamente recomendable crear un nuevo usuario y no usar el token de acceso propio de tu usuario porque otorgaría acceso completo a tu cuenta y todas las salas que hayas entrado. En su lugar, crea un usuario nuevo e invítalo a la sala donde quieres recibir las notificaciones. Puedes obtener el token de acceso ejecutando {0}",
"plugin": "Complemento | Complementos",
"From Email": "Desde el Email",
"emailCustomSubject": "Asunto Personalizado",
"To Email": "Al Email",
"smtpCC": "CC",
"smtpBCC": "CCO",
"Discord Webhook URL": "URL Webhook de Discord",
"wayToGetDiscordURL": "Puede obtener esto yendo a Configuración del servidor -> Integraciones -> Crear webhook",
"Bot Display Name": "Nombre para mostrar del Bot",
"Hello @everyone is...": "Hola {'@'}todos están…",
"wayToGetTeamsURL": "Puedes aprender cómo crear una URL webhook {0}.",
"wayToGetZohoCliqURL": "Puedes aprender cómo crear una URL webhook {0}.",
"needSignalAPI": "Necesitas tener un cliente de señal con API REST.",
"wayToCheckSignalURL": "Puedes revisar esta URL para ver cómo configurar uno:",
"Number": "Número",
"Access Token": "Token de Acceso",
"Channel access token": "Token de acceso al canal",
"Line Developers Console": "Consola de Desarrolladores de Line",
"lineDevConsoleTo": "Consola de Desarrolladores de Line - {0}",
"Basic Settings": "Configuración Básica",
"Messaging API": "API de Mensajería",
"wayToGetLineChannelToken": "Primero accede al {0}, crea un proveedor y un canal (API de Mensajería), entonces puedes obtener el token de acceso al cana y el ID de usuario de los elementos de menú anteriormente mencionados.",
"Icon URL": "URL de Icono",
"aboutIconURL": "Puede proporcionar un enlace a una imagen en \"URL de icono\" para anular la imagen de perfil predeterminada. No se utilizará si se establece Icono Emoji.",
"enableGRPCTls": "Permite enviar solicitudes gRPC con conexión TLS",
"grpcMethodDescription": "Nombre del método es convertido a formato cammelCase tal como digoHola, verificandoTodo, etc.",
"dnsPortDescription": "Puerto servidor DNS. Por defecto al 53. Puedes cambiar el puerto en cualquier momento.",
"recurringIntervalMessage": "Ejecutar una vez al día | Ejecutar una vez cada {0} días",
"affectedMonitorsDescription": "Selecciona los monitores que se ven afectados por el mantenimiento actual",
"affectedStatusPages": "Muestra este mensaje de mantenimiento en las páginas de estado seleccionadas",
"atLeastOneMonitor": "Selecciona al menos un monitor afectado",
"endpoint": "punto final",
"promosmsPassword": "Contraseña API",
"pushoversounds pushover": "Pushover (predeterminado)",
"pushoversounds bike": "Bicicleta",
"pushoversounds bugle": "Bugle",
"pushoversounds cashregister": "Caja Registradora",
"pushoversounds classical": "Clásica",
"pushoversounds cosmic": "Cósmico",
"pushoversounds falling": "Descendente",
"pushoversounds gamelan": "Gamelán",
"pushoversounds incoming": "Entrante",
"pushoversounds intermission": "Intermedio",
"pushoversounds magic": "Mágico",
"pushoversounds mechanical": "Mecánica",
"pushoversounds pianobar": "Bar Piano",
"pushoversounds siren": "Sirena",
"pushoversounds spacealarm": "Alarma Espacial",
"pushoversounds tugboat": "Remolcador",
"pushoversounds alien": "Alarma Alienígena (largo)",
"pushoversounds climb": "Escalada (largo)",
"pushoversounds persistent": "Persistente (largo)",
"pushoversounds echo": "Pushover Eco (largo)",
"pushoversounds updown": "Arriba Abajo (largo)",
"pushoversounds vibrate": "Sólo Vibración",
"pushoversounds none": "Ninguno (silencio)",
"pushyAPIKey": "Key de Api Secreta",
"pushyToken": "Token de Dispositivo",
"PushByTechulus": "Push con Techulus",
"clicksendsms": "SMS con ClickSend",
"GoogleChat": "Chat de Google (sólo Google Workspace)",
"Kook": "Kook",
"wayToGetKookBotToken": "Crea aplicación y obtén tu token de bot en {0}",
"wayToGetKookGuildID": "Activa 'Modo Desarrollador' en los ajustes de Kook, y haz click derecho en la unión para obtener su ID",
"Guild ID": "",
"User Key": "Key de Usuario",
"octopushTypePremium": "Premium (Rápido - recomendado para alertas)",
"octopushTypeLowCost": "Bajo Coste (Lento - algunas veces bloqueado por operador)",
"checkPrice": "Consultar {0} precios:",
"apiCredentials": "Credenciales de API",
"Check octopush prices": "Consulta los precios de octopush {0}.",
"octopushPhoneNumber": "Número de teléfono (en formato internacional, ejemplo: +33612345678) ",
"octopushSMSSender": "Nombre de Remitente del SMS: 3-11 caracteres alfanuméricos y espacio (a-zA-Z0-9)",
"LunaSea Device ID": "ID Dispositivo LunaSea",
"goAlert": "GoAlert",
"pushoverDesc1": "La prioridad Emergencia (2) tiene predeterminado un tiempo muerto entre reintentos de 30 segundos y expirará después de 1 hora.",
"AccessKeyId": "ID de Key de Acceso",
"SecretAccessKey": "Secrreto de Key de Acceso",
"TemplateCode": "Código de Plantilla",
"Bark Group": "Grupo de Bark",
"Bark Sound": "Sonido de Bark",
"SecretKey": "Key Secreta",
"Huawei": "Huawei",
"Retry": "Reintentar",
"Proxy Server": "Servidor Proxy",
"Proxy Protocol": "Protocolo Proxy",
"Setup Proxy": "Configurar Proxy",
"Proxy server has authentication": "El servidor Proxy tiene autenticación",
"promosmsAllowLongSMS": "Permitir SMS largo",
"Uptime Kuma URL": "URL de Uptime Kuma",
"Icon Emoji": "Icono Emoji",
"aboutKumaURL": "Si dejas vacío el campo URL Uptime Kuma, predeterminará la página GitHub del Proyecto.",
"smtpDkimSettings": "Ajustes DKIM",
"smtpDkimDomain": "Nombre de Dominio",
"smtpDkimKeySelector": "Selector de Key",
"smtpDkimPrivateKey": "Key Privada",
"Integration Key": "Key de Integración",
"Integration URL": "URL de Integración",
"Device Token": "Token de Dispositivo",
"WeCom Bot Key": "Key de Bot WeCom",
"promosmsTypeEco": "SMS ECO - barato pero lento y a veces sobrecargado. Limitado sólo a destinatarios Polacos.",
"promosmsTypeSpeed": "SMS SPEED - La mayor prioridad en el sistema. Muy rápido y confiable pero costoso (alrededor del doble del precio de SMS FULL).",
"matrixHomeserverURL": "URL Servidor Casero (con http(s):// y opcionalmente el puerto)",
"Internal Room Id": "ID de Sala Interna",
"Channel Name": "Nombre del canal",
"aboutChannelName": "Introduce el nombre del canal en {0} campo Nombre del Canal si quieres evitar el canal Webhook. Ejemplo: #otro-canal",
"smtpDkimDesc": "Por favor, remitir a DKIM Nodemailer {0} para descubrir como se usa.",
"smtpDkimheaderFieldNames": "Keys de encabezado para firmar (Opcional)",
"smtpDkimskipFields": "Keys de encabezado para no firmar (Opcional)",
"Auto resolve or acknowledged": "Resolución automática o reconocida",
"promosmsTypeFull": "SMS FULL - Nivel Premium de SMS, puedes usar tu Nombre de Remitente (Tienes que registrarlo primero). Confiable para alertas.",
"do nothing": "no hacer nada",
"alerta": "Alerta",
"serwersmsAPIPassword": "Contraseña de API",
"serwersmsPhoneNumber": "Número de teléfono",
"smseagle": "SMSEagle",
"smseagleTo": "Número(s) de teléfono",
"serwersmsSenderName": "Nombre de remitente de SMS (registrado a través del portal de cliente)",
"auto resolve": "resolución automática",
"auto acknowledged": "Auto reconocida",
"alertaEnvironment": "Entorno",
"PushDeer Key": "Key de PushDeer",
"onebotSafetyTips": "Por seguridad, deberías colocara el token de acceso",
"wayToGetClickSendSMSToken": "Puedes obtener Nombre de Usuario API y la Key API en {0}.",
"Apprise URL": "URL Apprise",
"gorush": "Gorush",
"squadcast": "Squadcast",
"Maintenance Time Window of a Day": "Ventana de tiempo de mantenimiento de un día",
"Effective Date Range": "Rango de Fecha Efectivo"
}

View file

@ -15,10 +15,10 @@
"statusMaintenance": "Maintenance",
"Schedule maintenance": "Planifier la maintenance",
"Affected Monitors": "Sondes concernées",
"Pick Affected Monitors...": "Sélectionner les sondes concernées...",
"Pick Affected Monitors...": "Sélectionner les sondes concernées",
"Start of maintenance": "Début de la maintenance",
"All Status Pages": "Toutes les pages d'état",
"Select status pages...": "Sélectionner les pages d'état...",
"Select status pages...": "Sélectionner les pages d'état",
"recurringIntervalMessage": "Exécuter une fois par jour | Exécuter une fois tous les {0} jours",
"affectedMonitorsDescription": "Sélectionnez les sondes concernées par la maintenance en cours",
"affectedStatusPages": "Afficher ce message de maintenance sur les pages d'état sélectionnées",
@ -29,7 +29,7 @@
"pauseDashboardHome": "En pause",
"deleteMonitorMsg": "Êtes-vous sûr de vouloir supprimer cette sonde ?",
"deleteMaintenanceMsg": "Voulez-vous vraiment supprimer cette maintenance ?",
"deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notifications ? Une fois désactivée, les services qui l'utilisent ne pourront plus envoyer de notifications.",
"deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notification pour toutes les sondes?",
"dnsPortDescription": "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.",
"resolverserverDescription": "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.",
"rrtypeDescription": "Veuillez sélectionner un type d'enregistrement DNS",
@ -177,7 +177,7 @@
"Token": "Jeton",
"Show URI": "Afficher l'URI",
"Tags": "Étiquettes",
"Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici...",
"Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici",
"Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.",
"Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.",
"color": "Couleur",
@ -190,7 +190,7 @@
"Indigo": "Indigo",
"Purple": "Violet",
"Pink": "Rose",
"Search...": "Rechercher...",
"Search...": "Rechercher",
"Avg. Ping": "Ping moyen",
"Avg. Response": "Réponse moyenne",
"Entry Page": "Page d'accueil",
@ -238,7 +238,7 @@
"wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Créer un Webhook »",
"Bot Display Name": "Nom du robot (affiché)",
"Prefix Custom Message": "Préfixe du message personnalisé",
"Hello @everyone is...": "Bonjour {'@'}everyone il...",
"Hello @everyone is...": "Bonjour {'@'}everyone il",
"teams": "Microsoft Teams",
"Webhook URL": "URL vers le webhook",
"wayToGetTeamsURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.",
@ -348,8 +348,8 @@
"Security": "Sécurité",
"Steam API Key": "Clé d'API Steam",
"Shrink Database": "Réduire la base de données",
"Pick a RR-Type...": "Choisissez un type d'enregistrement...",
"Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés...",
"Pick a RR-Type...": "Choisissez un type d'enregistrement",
"Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés",
"Default": "Défaut",
"HTTP Options": "Options HTTP",
"Create Incident": "Créer un incident",
@ -593,7 +593,7 @@
"Domain": "Domaine",
"Workstation": "Poste de travail",
"disableCloudflaredNoAuthMsg": "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.",
"trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière (nginx ou Apache) vous devez l'activer.",
"trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière un proxy (comme nginx ou Apache) vous devez l'activer.",
"wayToGetLineNotifyToken": "Vous pouvez obtenir un jeton d'accès auprès de {0}",
"Examples": "Exemples",
"Home Assistant URL": "URL vers Home Assistant",
@ -613,7 +613,7 @@
"goAlertInfo": "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}",
"goAlertIntegrationKeyInfo": "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.",
"goAlert": "GoAlert",
"backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.",
"backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.",
"backupRecommend": "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.",
"Optional": "Optionnel",
"squadcast": "Squadcast",
@ -683,5 +683,13 @@
"promosmsAllowLongSMS": "Autoriser les longs SMS",
"Help": "Aide",
"Game": "Jeux",
"Packet Size": "Taille du paquet"
"Packet Size": "Taille du paquet",
"loadingError": "Impossible de récupérer les données, veuillez réessayer plus tard.",
"plugin": "Plugin | Plugins",
"install": "Installer",
"installing": "Installation",
"uninstall": "Désinstaller",
"uninstalling": "Désinstallation",
"confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?",
"Custom Monitor Type": "Type de sonde personnalisé"
}

View file

@ -56,9 +56,9 @@
"Uptime": "Uptime",
"Cert Exp.": "SSL lejárat",
"day": "nap",
"-day": " nap",
"-day": "-nap",
"hour": "óra",
"-hour": " óra",
"-hour": "- óra",
"Response": "Válasz",
"Ping": "Ping",
"Monitor Type": "Figyelő típusa",
@ -197,7 +197,7 @@
"apprise": "Apprise (50+ értesítési szolgáltatás)",
"pushbullet": "Pushbullet",
"line": "Line Messenger",
"mattermost": "Mattermost",
"mattermost": "A legfontosabb",
"Status Page": "Státusz oldal",
"Status Pages": "Státusz oldalak",
"Primary Base URL": "Elsődleges URL",
@ -315,8 +315,8 @@
"Security": "Biztonság",
"Steam API Key": "Steam API kulcs",
"Shrink Database": "Adatbázis tömörítése",
"Pick a RR-Type...": "Válasszon egy RR-típust...",
"Pick Accepted Status Codes...": "Válasszon olyan kódot, ami elfogadottnak számít...",
"Pick a RR-Type...": "Válasszon egy RR-típust",
"Pick Accepted Status Codes...": "Válasszon olyan kódot, ami elfogadottnak számít",
"Default": "Alapért.",
"HTTP Options": "HTTP beállítások",
"Create Incident": "Incidens létrehozása",
@ -372,5 +372,43 @@
"alertaApiKey": "API kulcs",
"alertaAlertState": "Figyelmeztetési állapot",
"alertaRecoverState": "Visszaállási állapot",
"deleteStatusPageMsg": "Biztos, hogy törölni akarja a státusz oldalt?"
"deleteStatusPageMsg": "Biztos, hogy törölni akarja a státusz oldalt?",
"Start of maintenance": "Karbantartás kezdete",
"successMessageExplanation": "MQTT üzenet, amely sikeresnek minősül",
"weekdayShortFri": "Pé",
"lastDay2": "A hónap 2. utolsó napja",
"maintenanceStatus-under-maintenance": "Karbantartás alatt",
"dnsCacheDescription": "Előfordulhat, hogy bizonyos IPv6-környezetekben nem működik, tiltsa le, ha problémákat tapasztal.",
"Add New Status Page": "Új állapotoldal hozzáadása",
"The resource is no longer available.": "Az erőforrás már nem elérhető.",
"Show update if available": "Frissítés megjelenítése, ha elérhető",
"weekdayShortMon": "Hé",
"weekdayShortTue": "Ke",
"weekdayShortWed": "Sze",
"weekdayShortThu": "Csüt",
"weekdayShortSat": "Szo",
"weekdayShortSun": "Vas",
"dayOfWeek": "A hét napja",
"dayOfMonth": "A hónap napja",
"lastDay": "Utolsó nap",
"lastDay3": "A hónap 3. utolsó napja",
"lastDay4": "A hónap 4. utolsó napja",
"No Maintenance": "Nincs karbantartás",
"pauseMaintenanceMsg": "Biztosan szüneteltetni akarja?",
"maintenanceStatus-inactive": "Inaktív",
"maintenanceStatus-scheduled": "Ütemezett",
"maintenanceStatus-ended": "Végzett",
"maintenanceStatus-unknown": "Ismeretlen",
"Display Timezone": "Időzóna megjelenítése",
"Server Timezone": "Szerver időzóna",
"statusPageMaintenanceEndDate": "Vége",
"Enable DNS Cache": "DNS-gyorsítótár engedélyezése",
"Enable": "Engedélyezze",
"Disable": "Letiltás",
"Affected Monitors": "Érintett monitorok",
"Packet Size": "Csomag mérete",
"IconUrl": "Ikon URL",
"successMessage": "Sikeres üzenet",
"lastDay1": "A hónap utolsó napja",
"Guild ID": "Guild ID"
}

View file

@ -1,7 +1,7 @@
{
"languageName": "한국어",
"checkEverySecond": "{0}초마다 확인해요.",
"retryCheckEverySecond": "{0}초마다 다시 확인해요.",
"checkEverySecond": "{0}초마다 확인해요",
"retryCheckEverySecond": "{0}초마다 다시 확인해요",
"retriesDescription": "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수",
"ignoreTLSError": "HTTPS 웹사이트에서 TLS/SSL 오류 무시하기",
"upsideDownModeDescription": "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거예요.",
@ -14,7 +14,7 @@
"deleteMonitorMsg": "정말 이 모니터링을 삭제할까요?",
"deleteNotificationMsg": "정말 이 알림을 모든 모니터링에서 삭제할까요?",
"resolverserverDescription": "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.",
"rrtypeDescription": "모니터링할 RR-Type을 선택해요.",
"rrtypeDescription": "모니터링할 RR-Type을 선택해요",
"pauseMonitorMsg": "정말 이 모니터링을 일시 정지할까요?",
"enableDefaultNotificationDescription": "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.",
"clearEventsMsg": "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?",
@ -22,7 +22,7 @@
"confirmClearStatisticsMsg": "정말 모든 통계를 삭제할까요?",
"importHandleDescription": "이름이 같은 모든 모니터링이나 알림을 건너뛰려면 '기존값 건너뛰기'를 선택해주세요. '덮어쓰기'는 기존의 모든 모니터링과 알림을 삭제해요.",
"confirmImportMsg": "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.",
"twoFAVerifyLabel": "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요.",
"twoFAVerifyLabel": "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요",
"tokenValidSettingsMsg": "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.",
"confirmEnableTwoFAMsg": "정말 2단계 인증을 활성화할까요?",
"confirmDisableTwoFAMsg": "정말 2단계 인증을 비활성화할까요?",
@ -98,7 +98,7 @@
"Enable Auth": "인증 활성화",
"disableauth.message1": "정말로 <strong>인증 기능을 끌까요</strong>?",
"disableauth.message2": "이 기능은 <strong>Cloudflare Access와 같은 서드파티 인증</strong>을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.",
"Please use this option carefully!": "신중하게 사용하세요.",
"Please use this option carefully!": "신중하게 사용하세요!",
"Logout": "로그아웃",
"Leave": "나가기",
"I understand, please disable": "기능에 대해 이해했으니 꺼주세요.",
@ -154,7 +154,7 @@
"Token": "토큰",
"Show URI": "URI 보기",
"Tags": "태그",
"Add New below or Select...": "아래 새롭게 추가 또는 선택...",
"Add New below or Select...": "아래 새롭게 추가 또는 선택",
"Tag with this name already exist.": "같은 태그 이름이 이미 존재해요.",
"Tag with this value already exist.": "같은 값을 가진 태그가 이미 존재해요.",
"color": "색상",
@ -167,7 +167,7 @@
"Indigo": "남색",
"Purple": "보라색",
"Pink": "핑크색",
"Search...": "검색...",
"Search...": "검색",
"Avg. Ping": "평균 핑",
"Avg. Response": "평균 응답",
"Entry Page": "첫 페이지",
@ -189,15 +189,15 @@
"Bot Token": "봇 토큰",
"wayToGetTelegramToken": "토큰은 여기서 얻을 수 있어요: {0}.",
"Chat ID": "채팅 ID",
"supportTelegramChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요.",
"wayToGetTelegramChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요.",
"supportTelegramChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요",
"wayToGetTelegramChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요",
"YOUR BOT TOKEN HERE": "봇 토큰",
"chatIDNotFound": "채팅 ID를 찾을 수 없어요. 먼저 봇에게 메시지를 보내주세요.",
"chatIDNotFound": "채팅 ID를 찾을 수 없어요. 먼저 봇에게 메시지를 보내주세요",
"webhook": "Webhook",
"Post URL": "Post URL",
"Content Type": "Content Type",
"webhookJsonDesc": "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.",
"webhookFormDataDesc": "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.",
"webhookJsonDesc": "{0}은 Express.js와 같은 최신 HTTP 서버에 적합해요",
"webhookFormDataDesc": "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 JSON을 디코딩하면 되어요",
"smtp": "Email (SMTP)",
"secureOptionNone": "없음 / STARTTLS (25, 587)",
"secureOptionTLS": "TLS (465)",
@ -207,24 +207,24 @@
"smtpCC": "참조",
"smtpBCC": "숨은 참조",
"discord": "Discord",
"Discord Webhook URL": "Discord Webhook URL",
"wayToGetDiscordURL": "서버 설정 -> 연동 -> 웹후크 보기 -> 새 웹후크에서 얻을 수 있어요!",
"Discord Webhook URL": "Discord 웹훅 URL",
"wayToGetDiscordURL": "서버 설정 -> 연동 -> 웹후크 보기 -> 새 웹후크에서 얻을 수 있어요",
"Bot Display Name": "표시 이름",
"Prefix Custom Message": "접두사 메시지",
"Hello @everyone is...": "{'@'}everyone 서버 상태 알림이에요...",
"Hello @everyone is...": "{'@'}everyone 서버 상태 알림이에요",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook URL",
"wayToGetTeamsURL": "{0}에서 Webhook을 어떻게 만드는지 알아보세요!",
"Webhook URL": "웹훅 URL",
"wayToGetTeamsURL": "{0}에서 Webhook을 어떻게 만드는지 알아보세요.",
"signal": "Signal",
"Number": "숫자",
"Recipients": "받는 사람",
"needSignalAPI": "REST API를 사용하는 Signal 클라이언트가 있어야 해요.",
"wayToCheckSignalURL": "밑에 URL을 확인해 URL 설정 방법을 볼 수 있어요.",
"wayToCheckSignalURL": "밑에 URL을 확인해 URL 설정 방법을 볼 수 있어요:",
"signalImportant": "경고: 받는 사람의 그룹과 숫자는 섞을 수 없어요!",
"gotify": "Gotify",
"Application Token": "애플리케이션 토큰",
"Server URL": "서버 URL",
"Priority": "Priority",
"Priority": "우선 순위",
"slack": "Slack",
"Icon Emoji": "아이콘 이모지",
"Channel Name": "채널 이름",
@ -276,7 +276,7 @@
"aboutIconURL": "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.",
"aboutMattermostChannelName": "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널",
"matrix": "Matrix",
"promosmsTypeEco": "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ",
"promosmsTypeEco": "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요.",
"promosmsTypeFlash": "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.",
"promosmsTypeFull": "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.",
"promosmsTypeSpeed": "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).",
@ -295,10 +295,10 @@
"matrixHomeserverURL": "Homeserver URL (http(s):// 와 함께 적어주세요. 그리고 포트 번호는 선택적 입니다.)",
"Internal Room Id": "내부 방 ID",
"matrixDesc1": "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.",
"matrixDesc2": "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요.",
"Method": "Method",
"matrixDesc2": "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요",
"Method": "메서드",
"Body": "Body",
"Headers": "Headers",
"Headers": "헤더",
"PushUrl": "Push URL",
"HeadersInvalidFormat": "요청 Headers의 JSON 형식이 올바르지 않아요: ",
"BodyInvalidFormat": "요청 Body의 JSON 형식이 올바르지 않아요: ",
@ -315,8 +315,8 @@
"Security": "보안",
"Steam API Key": "스팀 API 키",
"Shrink Database": "데이터베이스 축소",
"Pick a RR-Type...": "RR-Type을 골라주세요...",
"Pick Accepted Status Codes...": "상태 코드를 골라주세요...",
"Pick a RR-Type...": "RR-Type을 골라주세요",
"Pick Accepted Status Codes...": "상태 코드를 골라주세요",
"Default": "기본",
"HTTP Options": "HTTP 옵션",
"Create Incident": "인시던트 만들기",
@ -330,7 +330,7 @@
"light": "화이트",
"dark": "다크",
"Post": "게시",
"Please input title and content": "제목과 내용을 작성해주세요.",
"Please input title and content": "제목과 내용을 작성해주세요",
"Created": "생성 날짜",
"Last Updated": "마지막 업데이트",
"Unpin": "제거",
@ -375,7 +375,7 @@
"smtpDkimHashAlgo": "해시 알고리즘 (선택)",
"smtpDkimheaderFieldNames": "서명할 헤더 키 (선택)",
"smtpDkimskipFields": "서명하지 않을 헤더 키 (선택)",
"wayToGetPagerDutyKey": "Service -> Service Directory -> (서비스 선택) -> Integrations -> Add integration. 에서 찾을 수 있어요. 자세히 알아보려면 {0}에서 \"Events API V2\"를 검색해봐요.",
"wayToGetPagerDutyKey": "Service -> Service Directory -> (서비스 선택) -> Integrations -> Add integration. 에서 찾을 수 있어요. 자세히 알아보려면 {0}에서 \"Events API V2\"를 검색해봐요",
"Integration Key": "Integration 키",
"Integration URL": "Integration URL",
"Auto resolve or acknowledged": "자동 해결 혹은 승인",
@ -406,7 +406,7 @@
"PhoneNumbers": "휴대전화 번호",
"TemplateCode": "템플릿 코드",
"SignName": "SignName",
"Sms template must contain parameters: ": "SMS 템플릿은 다음과 같은 파라미터가 포함되어야 해요:",
"Sms template must contain parameters: ": "SMS 템플릿은 다음과 같은 파라미터가 포함되어야 해요: ",
"Bark Endpoint": "Bark Endpoint",
"WebHookUrl": "웹훅 URL",
"SecretKey": "Secret Key",
@ -436,7 +436,7 @@
"Add New Status Page": "새로운 상태 페이지 만들기",
"Slug": "주소",
"Accept characters:": "허용되는 문자열:",
"startOrEndWithOnly": "{0}로 시작하거나 끝나야 해요.",
"startOrEndWithOnly": "{0} 로 시작하거나 끝나야 해요",
"No consecutive dashes": "연속되는 대시는 허용되지 않아요",
"Next": "다음",
"The slug is already taken. Please choose another slug.": "이미 존재하는 주소에요. 다른 주소를 사용해 주세요.",
@ -456,10 +456,10 @@
"Other Software": "다른 소프트웨어",
"For example: nginx, Apache and Traefik.": "nginx, Apache, Traefik 등을 사용할 수 있어요.",
"Please read": "이 문서를 참조하세요:",
"Subject:": "Subject:",
"Valid To:": "Valid To:",
"Subject:": "발급 대상:",
"Valid To:": "유효 기간:",
"Days Remaining:": "남은 일수:",
"Issuer:": "Issuer:",
"Issuer:": "발급 기관:",
"Fingerprint:": "Fingerprint:",
"No status pages": "상태 페이지 없음",
"Domain Name Expiry Notification": "도메인 이름 만료 알림",
@ -470,7 +470,7 @@
"onebotGroupMessage": "그룹 메시지",
"onebotPrivateMessage": "개인 메시지",
"onebotUserOrGroupId": "그룹/사용자 ID",
"onebotSafetyTips": "안전을 위해 Access 토큰을 설정하세요.",
"onebotSafetyTips": "안전을 위해 Access 토큰을 설정하세요",
"PushDeer Key": "PushDeer 키",
"Footer Text": "Footer 문구",
"Show Powered By": "Powered By 문구 표시하기",
@ -524,8 +524,172 @@
"The resource is no longer available.": "더 이상 사용할 수 없어요...",
"There might be a typing error in the address.": "주소에 오탈자가 있을 수 있어요.",
"What you can try:": "해결 방법:",
"Retype the address.": "주소 다시 입력하기",
"Go back to the previous page.": "이전 페이지로 돌아가기",
"Coming Soon": "Coming Soon...",
"wayToGetClickSendSMSToken": "{0}에서 API 사용자 이름과 키를 얻을 수 있어요."
"Retype the address.": "주소 다시 입력하기.",
"Go back to the previous page.": "이전 페이지로 돌아가기.",
"Coming Soon": "Coming Soon",
"wayToGetClickSendSMSToken": "{0}에서 API 사용자 이름과 키를 얻을 수 있어요.",
"Custom Monitor Type": "커스텀 모니터링",
"deleteDockerHostMsg": "정말 이 도커 호스트를 모든 모니터링에서 삭제할까요?",
"trustProxyDescription": "'X-Forwarded-*' 헤더를 신뢰해요. 올바른 클라이언트 IP를 얻어야하고Uptime Kuma가 Nginx나 Apache 같은 프록시 뒤에 있다면 이 기능을 활성화해야 해요.",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "프로필 이름(왼쪽 아래)을 클릭하고 아래로 스크롤한 다음 토큰 만들기를 클릭하여 장기 액세스 토큰을 만들 수 있어요. ",
"Then choose an action, for example switch the scene to where an RGB light is red.": "그런 다음 동작을 선택해요, 예를 들어 장면을 RGB 조명이 빨간색인 곳으로 전환해요.",
"backupOutdatedWarning": "Deprecated: 많은 기능이 추가되었고 이 백업 기능은 유지 관리되지 않아 전체 백업을 생성하거나 복원할 수 없어요.",
"lastDay3": "매월 세 번째 마지막 날",
"maintenanceStatus-under-maintenance": "점검 중",
"dnsCacheDescription": "일부 IPv6 환경에서는 작동하지 않을 수 있어요. 문제가 발생하면 비활성화하세요.",
"dataRetentionTimeError": "저장 기간은 0 이상이어야 해요",
"wayToGetKookGuildID": "Kook 설정에서 'Developer Mode'를 활성화하고 길드를 우클릭해 ID를 얻어요",
"You can divide numbers with": "다음과 같이 숫자를 구분할 수 있어요:",
"goAlertInfo": "GoAlert는 온콜 스케줄링, 자동 에스컬레이션 및 알림(SMS 또는 음성 통화와 같은)을 위한 오픈 소스 응용 프로그램이에요. 올바른 사람, 올바른 방법, 적절한 시간에 자동으로 참여하세요! {0}",
"smseagle": "SMSEagle",
"smseagleTo": "휴대전화 번호",
"smseagleRecipient": "받는 사람 (쉼표로 구분)",
"Maintenance": "점검",
"statusMaintenance": "점검 중",
"resendEveryXTimes": "{0}번마다 다시 보내요",
"resendDisabled": "다시 보내지 않아요",
"loadingError": "데이터를 가져올 수 없어요, 나중에 다시 시도하세요.",
"plugin": "플러그인",
"install": "설치",
"installing": "설치 중",
"uninstall": "삭제",
"uninstalling": "삭제 중",
"confirmUninstallPlugin": "정말 이 플러그인을 삭제할까요?",
"Guild ID": "길드 ID",
"Strategy": "계획",
"Free Mobile User Identifier": "무료 모바일 사용자 식별",
"Free Mobile API Key": "무료 모바일 API 키",
"Enable TLS": "TLS 활성화",
"Proto Service Name": "Proto 서비스 이름",
"Proto Method": "Proto 메서드",
"Proto Content": "Proto Content",
"Economy": "경제적",
"high": "높음",
"Lowcost": "저비용",
"SendKey": "SendKey",
"SMSManager API Docs": "SMSManager API 문서 ",
"Gateway Type": "게이트웨이 종류",
"SMSManager": "SMSManager",
"Base URL": "베이스 URL",
"goAlertIntegrationKeyInfo": "일반적으로 복사된 URL의 토큰 매개 변수 값을 \"aaaaaa-bbb-ccccc-ddd-eeeeeeeee\" 형식으로 서비스에 대한 일반 API 통합 키를 가져와요.",
"goAlert": "GoAlert",
"Bark Group": "Bark 그룹",
"Bark Sound": "Bark 소리",
"promosmsAllowLongSMS": "긴 SMS 허용",
"smseagleGroup": "전화번호부 그룹 이름",
"smseagleContact": "전화번호부 연락처 이름",
"smseagleRecipientType": "받는 사람 종류",
"smseagleToken": "API 엑세스 토큰",
"smseagleUrl": "SMSEagle 기기 URL",
"smseagleEncoding": "유니코드로 보내기",
"smseaglePriority": "메시지 우선 순위 (0-9, 기본값= 0)",
"ntfy Topic": "ntfy 주제",
"HomeAssistant": "홈 어시스턴트",
"RadiusSecretDescription": "클라이언트와 서버 간의 비밀 키",
"RadiusSecret": "Radius 비밀 키",
"RadiusCalledStationId": "접속 스테이션의 Id",
"RadiusCalledStationIdDescription": "접속 스테이션의 식별자",
"RadiusCallingStationId": "접속 요청 스테이션의 Id",
"RadiusCallingStationIdDescription": "접속 요청 스테이션의 식별자",
"Query": "쿼리",
"settingsCertificateExpiry": "TLS 인증서 만료",
"certificationExpiryDescription": "HTTPS 모니터링 TLS 인증서가 만료되면 알림을 활성화해요:",
"Setup Docker Host": "도커 호스트 설정",
"Docker Daemon": "도커 데몬",
"socket": "소켓",
"tcp": "TCP / HTTP",
"Docker Container": "도커 컨테이너",
"Container Name / ID": "컨테이너 이름 / ID",
"Docker Host": "도커 호스트",
"Docker Hosts": "도커 호스트",
"Domain": "도메인",
"Connection String": "연결 문자열",
"Workstation": "워크스테이션",
"Packet Size": "패킷 크기",
"ZohoCliq": "ZohoCliq",
"disableCloudflaredNoAuthMsg": "인증 없음 모드이므로 암호가 필요하지 않아요.",
"wayToGetLineNotifyToken": "토큰은 여기서 얻을 수 있어요: {0}",
"Examples": "예시",
"Home Assistant URL": "홈 어시스턴트 URL",
"Long-Lived Access Token": "장기 엑세스 토큰",
"Notification Service": "알림 서비스",
"default: notify all devices": "기본값: 모든 장치에 알림",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "알림 서비스 목록은 홈 어시스턴트의 \"개발자 도구 > 서비스\"에서 \"알림\" 검색해 장치/전화 이름을 찾을 수 있어요.",
"Automations can optionally be triggered in Home Assistant:": "자동화는 Home Assistant에서 선택적으로 트리거될 수 있어요:",
"Connection Type": "연결 종류",
"Trigger type:": "트리거 종류:",
"Event type:": "이벤트 종류:",
"Event data:": "이벤트 데이터:",
"Frontend Version": "프론트엔드 버전",
"Frontend Version do not match backend version!": "프론트엔드 버전이 백엔드 버전과 일치하지 않아요!",
"confirmDeleteTagMsg": "정말 이 태그를 삭제할까요? 이 태그와 연결된 모니터링은 삭제되지 않아요.",
"infiniteRetention": "무한히 저장하려면 0으로 설정하세요.",
"backupRecommend": "대신 볼륨 또는 데이터 폴더 (./data/) 를 직접 백업하세요.",
"Optional": "선택",
"squadcast": "Squadcast",
"or": "혹은",
"recurringInterval": "반복 - 주기적",
"Recurring": "반복",
"strategyManual": "직접 활성/비활성화 하기",
"warningTimezone": "서버 표준 시간대를 사용해요",
"weekdayShortMon": "월",
"weekdayShortTue": "화",
"weekdayShortWed": "수",
"weekdayShortThu": "목",
"weekdayShortFri": "금",
"weekdayShortSat": "토",
"weekdayShortSun": "일",
"dayOfWeek": "요일",
"dayOfMonth": "날짜",
"lastDay": "마지막 날",
"lastDay1": "매월 마지막 날",
"lastDay2": "매월 마지막 날",
"lastDay4": "매월 네 번째 마지막 날",
"No Maintenance": "점검 일정이 없어요",
"pauseMaintenanceMsg": "정말 일시 정지 할까요?",
"maintenanceStatus-inactive": "비활성화",
"maintenanceStatus-scheduled": "예약됨",
"maintenanceStatus-ended": "완료됨",
"maintenanceStatus-unknown": "알 수 없음",
"Server Timezone": "서버 시간대",
"Display Timezone": "표시 시간대",
"statusPageMaintenanceEndDate": "종료",
"IconUrl": "아이콘 URL",
"Enable DNS Cache": "DNS 캐시 활성화",
"Enable": "활성화",
"Disable": "비활성화",
"Single Maintenance Window": "단일 점검",
"Maintenance Time Window of a Day": "점검 시간",
"Effective Date Range": "유효 날짜 범위",
"Schedule Maintenance": "점검 예약하기",
"Date and Time": "날짜 및 시간",
"DateTime Range": "날짜 시간 범위",
"wayToGetZohoCliqURL": "{0}에서 Webhook을 어떻게 만드는지 배울 수 있어요.",
"enableGRPCTls": "TLS 연결 gRPC 요청 전송 허용",
"grpcMethodDescription": "메서드 이름은 sayHello, check와 같은 카멜 케이스로 변환되어요.",
"deleteMaintenanceMsg": "정말 이 점검을 삭제할까요?",
"recurringIntervalMessage": "매일 한 번 실행 | {0}일마다 한 번 실행",
"affectedMonitorsDescription": "현재 점검에 영향을 받는 모니터링 선택하기",
"affectedStatusPages": "점검 메시지를 표시할 상태 페이지 선택하기",
"Kook": "Kook",
"atLeastOneMonitor": "최소 1개의 모니터링을 선택하세요",
"wayToGetKookBotToken": "{0} 에서 애플리케이션을 만들고 봇 토큰을 얻어요",
"Help": "도움말",
"Game": "게임",
"General Monitor Type": "일반 모니터링",
"Passive Monitor Type": "수동 모니터링",
"Specific Monitor Type": "특정 모니터링",
"Monitor": "모니터",
"Resend Notification if Down X times consequently": "X번 중단될 경우 알림 다시 보내기",
"Schedule maintenance": "점검 예약하기",
"Affected Monitors": "영향을 받는 모니터링",
"Pick Affected Monitors...": "영향을 받는 모니터링 선택하기…",
"Start of maintenance": "점검 시작",
"All Status Pages": "모든 상태 페이지",
"Select status pages...": "상태 페이지 선택하기…",
"Custom": "커스텀",
"webhookAdditionalHeadersTitle": "추가 헤더",
"webhookAdditionalHeadersDesc": "웹훅과 함께 전송될 추가 헤더를 설정해요.",
"HTTP Headers": "HTTP 헤더",
"Trust Proxy": "프록시 신뢰"
}

View file

@ -130,7 +130,7 @@
"Apply on all existing monitors": "Zastosuj do istniejących monitorów",
"Create": "Stwórz",
"Clear Data": "Usuń dane",
"Events": "Wydarzenia",
"Events": "Zdarzenia",
"Heartbeats": "Bicia serca",
"Auto Get": "Wykryj",
"backupDescription": "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.",
@ -584,7 +584,7 @@
"Domain": "Domena",
"Workstation": "Stacja robocza",
"disableCloudflaredNoAuthMsg": "Jesteś w trybie No Auth, hasło nie jest wymagane.",
"trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za Nginx lub Apache, powinieneś to włączyć.",
"trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za proxy, takim jak Nginx lub Apache, powinieneś to włączyć.",
"wayToGetLineNotifyToken": "Możesz uzyskać token dostępu z {0}",
"Examples": "Przykłady",
"Home Assistant URL": "URL Home Assistant",
@ -682,5 +682,13 @@
"Free Mobile API Key": "Darmowy mobilny klucz API",
"Lowcost": "Tani",
"high": "wysoki",
"General Monitor Type": "Ogólny typ monitora"
"General Monitor Type": "Ogólny typ monitora",
"Packet Size": "Rozmiar pakietu",
"uninstalling": "Odinstalowywanie",
"loadingError": "Nie można pobrać danych, proszę spróbować ponownie później.",
"plugin": "Wtyczka | Wtyczki",
"install": "Instaluj",
"installing": "Instalowanie",
"uninstall": "Odinstaluj",
"confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?"
}

View file

@ -1,7 +1,7 @@
{
"languageName": "Türkçe",
"checkEverySecond": "{0} Saniyede bir kontrol et.",
"retryCheckEverySecond": "{0} Saniyede bir dene.",
"checkEverySecond": "{0} saniyede bir kontrol et",
"retryCheckEverySecond": "{0} saniyede bir dene",
"resendEveryXTimes": "Her {0} bir yeniden gönder",
"resendDisabled": "Yeniden gönderme devre dışı",
"retriesDescription": "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı",
@ -11,7 +11,7 @@
"acceptedStatusCodesDescription": "Başarılı bir yanıt olarak kabul edilen durum kodlarını seçin.",
"passwordNotMatchMsg": "Şifre eşleşmiyor.",
"notificationDescription": "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.",
"keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır",
"keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır.",
"pauseDashboardHome": "Durdur",
"deleteMonitorMsg": "Servisi silmek istediğinden emin misin?",
"deleteNotificationMsg": "Bu bildirimi tüm servisler için silmek istediğinden emin misin?",
@ -19,14 +19,14 @@
"resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.",
"rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin",
"pauseMonitorMsg": "Durdurmak istediğinden emin misin?",
"enableDefaultNotificationDescription": "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz. ",
"enableDefaultNotificationDescription": "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz.",
"clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?",
"clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?",
"confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?",
"importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir. ",
"confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz. ",
"importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir.",
"confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz.",
"twoFAVerifyLabel": "2FA doğrulamasını sağlamak için lütfen token bilgisini giriniz:",
"tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz. ",
"tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz.",
"confirmEnableTwoFAMsg": "2FA'ı etkinleştirmek istediğinizden emin misiniz?",
"confirmDisableTwoFAMsg": "2FA'ı devre dışı bırakmak istediğinize emin misiniz?",
"Settings": "Ayarlar",
@ -69,7 +69,7 @@
"Keyword": "Anahtar Kelime",
"Friendly Name": "Panelde görünecek isim",
"URL": "URL",
"Hostname": "IP Adresi",
"Hostname": "Hostname",
"Port": "Port",
"Heartbeat Interval": "Servis Test Aralığı",
"Retries": "Yeniden deneme",
@ -102,8 +102,8 @@
"New Password": "Yeni Şifre",
"Repeat New Password": "Yeni Şifreyi Tekrar Girin",
"Update Password": "Şifreyi Değiştir",
"Disable Auth": "Şifreli girişi iptal et.",
"Enable Auth": "Şifreli girişi aktif et.",
"Disable Auth": "Şifreli girişi iptal et",
"Enable Auth": "Şifreli girişi aktif et",
"disableauth.message1": "<strong>Şifreli girişi devre dışı bırakmak istediğinizden</strong>emin misiniz?",
"disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi <strong>üçüncü taraf yetkilendirmesi olan</strong> kişiler içindir.",
"Please use this option carefully!": "Lütfen dikkatli kullanın!",
@ -162,7 +162,7 @@
"Token": "Token",
"Show URI": "URI'yi göster",
"Tags": "Etiketler",
"Add New below or Select...": "Aşağıya Yeni Ekle veya Seç...",
"Add New below or Select...": "Aşağıya Yeni Ekle veya Seç",
"Tag with this name already exist.": "Bu ada sahip etiket zaten var.",
"Tag with this value already exist.": "Bu değere sahip etiket zaten var.",
"color": "renk",
@ -175,7 +175,7 @@
"Indigo": "Çivit mavisi",
"Purple": "Mor",
"Pink": "Pembe",
"Search...": "Ara...",
"Search...": "Ara",
"Avg. Ping": "Ortalama Ping",
"Avg. Response": "Ortalama Cevap Süresi",
"Entry Page": "Giriş Sayfası",
@ -190,7 +190,7 @@
"Go to Dashboard": "Panele Git",
"Status Page": "Durum Sayfası",
"Status Pages": "Durum Sayfaları",
"defaultNotificationName": "My {notification} Alert ({number})",
"defaultNotificationName": "Benim {notification} Alarmım ({number})",
"here": "burada",
"Required": "Gerekli",
"telegram": "Telegram",
@ -220,7 +220,7 @@
"wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhook Oluştur'a giderek alabilirsiniz.",
"Bot Display Name": "Botun Görünecek Adı",
"Prefix Custom Message": "Önek Özel Mesaj",
"Hello @everyone is...": "Merhaba {'@'}everyone ...",
"Hello @everyone is...": "Merhaba {'@'}everyone",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook URL",
"wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
@ -240,7 +240,7 @@
"aboutWebhooks": "Webhook hakkında daha fazla bilgi: {0}",
"aboutChannelName": "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal",
"aboutKumaURL": "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.",
"emojiCheatSheet": "Emoji cheat sheet: {0}",
"emojiCheatSheet": "Emoji referans sayfası: {0}",
"PushByTechulus": "Push by Techulus",
"apprise": "Apprise (50'den fazla Bildirim hizmetini destekler)",
"GoogleChat": "Google Chat (sadece Google Workspace)",
@ -315,8 +315,8 @@
"Security": "Güvenlik",
"Steam API Key": "Steam API Anahtarı",
"Shrink Database": "Veritabanını Küçült",
"Pick a RR-Type...": "Bir RR-Tipi seçin...",
"Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin...",
"Pick a RR-Type...": "Bir RR-Tipi seçin",
"Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin",
"Default": "Varsayılan",
"HTTP Options": "HTTP Ayarları",
"Create Incident": "Olay Oluştur",
@ -324,13 +324,13 @@
"Content": "İçerik",
"Style": "Stil",
"info": "info",
"warning": "warning",
"danger": "danger",
"warning": "uyarı",
"danger": "tehlike",
"error": "hata",
"critical": "kritik",
"primary": "primary",
"light": "light",
"dark": "dark",
"primary": "öncelik",
"light": "hafif",
"dark": "koyu",
"Post": "Post",
"Please input title and content": "Lütfen başlık ve içerik girin",
"Created": "Oluşturuldu",
@ -348,7 +348,7 @@
"Services": "Hizmetler",
"Discard": "İptal Et",
"Cancel": "İptal Et",
"Powered by": "Powered by",
"Powered by": "Tarafından desteklenmektedir",
"shrinkDatabaseDescription": "SQLite için veritabanı VACUUM'unu tetikleyin. Veritabanınız 1.10.0'dan sonra oluşturulduysa, AUTO_VACUUM zaten etkinleştirilmiştir ve bu eyleme gerek yoktur.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)",
@ -390,13 +390,13 @@
"deleteProxyMsg": "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?",
"proxyDescription": "Proxy'lerin çalışması için bir servise atanması gerekir.",
"enableProxyDescription": "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.",
"setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her servis için ayrı ayrı devre dışı bırakabilirsiniz.",
"setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her bir servis için devre dışı bırakabilirsiniz.",
"Certificate Chain": "Sertifika Zinciri",
"Valid": "Geçerli",
"Invalid": "Geçersiz",
"AccessKeyId": "AccessKey ID",
"SecretAccessKey": "AccessKey Secret",
"PhoneNumbers": "PhoneNumbers",
"PhoneNumbers": "Telefon numaraları",
"TemplateCode": "TemplateCode",
"SignName": "SignName",
"Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir: ",
@ -412,8 +412,8 @@
"Android": "Android",
"Huawei": "Huawei",
"High": "High",
"Retry": "Retry",
"Topic": "Topic",
"Retry": "Tekrar",
"Topic": "Başlık",
"WeCom Bot Key": "WeCom Bot Key",
"Setup Proxy": "Proxy kur",
"Proxy Protocol": "Proxy Protokolü",
@ -550,7 +550,7 @@
"Domain": "Domain",
"Workstation": "İş İstasyonu",
"disableCloudflaredNoAuthMsg": "Yetki yok modundasınız, şifre gerekli değil.",
"trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache'nin arkasındaysa, bunu etkinleştirmelisiniz.",
"trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache gibi bir proxy'nin arkasındaysa, bunu etkinleştirmelisiniz.",
"wayToGetLineNotifyToken": "{0} adresinden bir erişim jetonu alabilirsiniz.",
"Examples": "Örnekler",
"Home Assistant URL": "Home Assistant URL",
@ -570,7 +570,7 @@
"goAlertInfo": "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}",
"goAlertIntegrationKeyInfo": "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.",
"goAlert": "GoAlert",
"backupOutdatedWarning": "Kullanımdan Kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan, tam bir yedekleme oluşturamaz veya geri yükleyemez.",
"backupOutdatedWarning": "Kullanımdan kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan tam bir yedekleme oluşturamaz veya geri yükleyemez.",
"backupRecommend": "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.",
"enableGRPCTls": "TLS bağlantısıyla gRPC isteği göndermeye izin ver",
"grpcMethodDescription": "Yöntem adı, sayHello, check, vb. gibi cammelCase biçimine dönüştürülür.",
@ -578,10 +578,10 @@
"statusMaintenance": "Bakım",
"Schedule maintenance": "Bakım Planla",
"Affected Monitors": "Etkilenen Monitörler",
"Pick Affected Monitors...": "Etkilenen Monitörleri Seçin...",
"Pick Affected Monitors...": "Etkilenen Monitörleri Seçin",
"Start of maintenance": "Bakım başlangıcı",
"All Status Pages": "Tüm Durum Sayfaları",
"Select status pages...": "Durum sayfalarını seçin...",
"Select status pages...": "Durum sayfalarını seçin",
"recurringIntervalMessage": "Her gün bir kez çalıştırın | {0} günde bir çalıştırın",
"affectedMonitorsDescription": "Geçerli bakımdan etkilenen monitörleri seçin",
"affectedStatusPages": "Bu bakım mesajını seçili durum sayfalarında göster",
@ -666,10 +666,30 @@
"Passive Monitor Type": "Pasif Monitör Tipi",
"Specific Monitor Type": "Özel Monitör Tipi",
"Help": "Yardım",
"Monitor": "Ekran | Ekranlar",
"Monitor": "Monitör | Monitörler",
"Custom": "Özel",
"dataRetentionTimeError": "Saklama süresi 0 veya daha büyük olmalıdır",
"confirmDeleteTagMsg": "Bu etiketi silmek istediğinizden emin misiniz? Bu etiketle ilişkili monitörler silinmez.",
"promosmsAllowLongSMS": "Uzun SMS'e izin ver",
"infiniteRetention": "Sonsuza dek saklamak için 0 giriniz."
"infiniteRetention": "Sonsuza dek saklamak için 0 giriniz.",
"rocket.chat": "Rocket.Chat",
"slack": "Slack",
"pushover": "Pushover",
"Game": "Oyun",
"Packet Size": "Paket Boyutu",
"Custom Monitor Type": "Özel Monitör Tipi",
"clicksendsms": "ClickSend SMS",
"loadingError": "Veriler getirilemiyor, lütfen daha sonra tekrar deneyin.",
"plugin": "Eklenti | Eklentiler",
"install": "Yükle",
"installing": "Yükleniyor",
"uninstall": "Kaldır",
"uninstalling": "Yükleme kaldırılıyor",
"confirmUninstallPlugin": "Bu eklentiyi kaldırmak istediğinizden emin misiniz?",
"pushy": "Pushy",
"octopush": "Octopush",
"promosms": "PromoSMS",
"lunasea": "LunaSea",
"line": "Line Messenger",
"mattermost": "Mattermost"
}

View file

@ -12,5 +12,90 @@
"Version": "版本",
"Check Update On GitHub": "去 GitHub 睇下有冇更新",
"List": "列表",
"Add": "新增"
"Add": "新增",
"Primary Base URL": "主要 Base URL",
"Heartbeat Retry Interval": "確定為離線的重試間隔",
"retryCheckEverySecond": "每 {0} 秒重試一次",
"add one": "加一個",
"upsideDownModeDescription": "反轉狀態,如果網址係可以正常瀏覽,會被判定為 '離線/DOWN'",
"Not available, please setup.": "未可以用,需要設定。",
"Discourage search engines from indexing site": "唔建議搜尋器索引",
"Remember me": "記住我",
"Test": "測試",
"DateTime": "日期時間",
"Resume": "恢復",
"statusMaintenance": "維護緊",
"Maintenance": "維護",
"Unknown": "唔知",
"pauseDashboardHome": "暫停",
"Pause": "暫停",
"Status": "狀態",
"Message": "內容",
"No important events": "冇重要事件",
"Edit": "編輯",
"Delete": "刪除",
"Current": "目前",
"Uptime": "上線率",
"day": "日 | 日",
"-day": "日",
"hour": "個鐘",
"-hour": "個鐘",
"Response": "反應時間",
"Ping": "反應時間",
"URL": "網址",
"Retries": "重試數次確定為離線",
"Advanced": "進階",
"ignoreTLSError": "唔理 TLS/SSL 錯誤",
"Upside Down Mode": "反轉模式",
"Accepted Status Codes": "接受為上線嘅 HTTP 狀態碼",
"Save": "儲存",
"Notifications": "通知",
"Setup Notification": "設定通知",
"Light": "明亮",
"Dark": "暗黑",
"Auto": "自動",
"Normal": "一般",
"Bottom": "下方",
"None": "冇",
"Timezone": "時區",
"Search Engine Visibility": "係咪允許搜尋器索引",
"Allow indexing": "允許索引",
"Change Password": "改密碼",
"Current Password": "而家嘅密碼",
"New Password": "新密碼",
"Repeat New Password": "確認新密碼",
"Update Password": "更新密碼",
"Disable Auth": "取消登入認証",
"Enable Auth": "開啟登入認証",
"disableauth.message1": "你係咪確認想<strong>取消登入認証</strong>",
"Please use this option carefully!": "請小心使用。",
"Logout": "登出",
"Leave": "離開",
"I understand, please disable": "我知,唔該取消登入認証",
"Confirm": "確認",
"Yes": "係",
"No": "唔係",
"Username": "帳號",
"Password": "密碼",
"Login": "登入",
"Notification Type": "通知類型",
"Email": "電郵",
"Repeat Password": "重複密碼",
"Up": "上線",
"Down": "離線",
"Pending": "待定",
"Name": "名稱",
"General Monitor Type": "一般監測器類型",
"Passive Monitor Type": "被動監測器類型",
"Specific Monitor Type": "特定監測器類型",
"Monitor": "監測器 | 監測器",
"Keyword": "關鍵字",
"Friendly Name": "名稱",
"Hostname": "Hostname",
"Port": "Port",
"No Monitors, please": "冇監測器,請",
"Monitor Type": "監測器類型",
"Heartbeat Interval": "檢查間距",
"Add New Monitor": "新增監測器",
"Quick Stats": "綜合數據"
}

View file

@ -77,7 +77,7 @@
"day": "天",
"-day": "天",
"hour": "小时",
"-hour": " 小时",
"-hour": "小时",
"Response": "响应",
"Ping": "Ping",
"Monitor Type": "监控类型",
@ -238,7 +238,7 @@
"wayToGetDiscordURL": "要获取,可以前往服务器设置 -> 整合 -> 创建 Webhook",
"Bot Display Name": "机器人显示名称",
"Prefix Custom Message": "自定义消息前缀",
"Hello @everyone is...": "{'@'}everyone",
"Hello @everyone is...": "{'@'}everyone",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook 网址",
"wayToGetTeamsURL": "您可以在{0}了解如何获取 Webhook URL。",
@ -264,7 +264,7 @@
"rocket.chat": "Rocket.Chat",
"pushover": "Pushover",
"pushy": "Pushy",
"PushByTechulus": "Push by Techulus",
"PushByTechulus": "使用 Techulus 推送",
"octopush": "Octopush",
"promosms": "PromoSMS",
"clicksendsms": "ClickSend SMS",
@ -687,5 +687,14 @@
"confirmDeleteTagMsg": "你确定你要删除这个标签?与此标签关联的监视器不会被删除。",
"infiniteRetention": "设为0表示无限保留期。",
"Help": "帮助",
"Game": "游戏"
"Game": "游戏",
"Packet Size": "数据包大小",
"loadingError": "无法获取数据,请稍后重试。",
"plugin": "插件 | 插件",
"install": "安装",
"installing": "正在安装",
"uninstall": "卸载",
"uninstalling": "正在卸载",
"confirmUninstallPlugin": "您确定要卸载此插件吗?",
"Custom Monitor Type": "自定义监控类型"
}

View file

@ -155,7 +155,7 @@
"Options": "選項",
"Keep both": "兩者並存",
"Tags": "標籤",
"Add New below or Select...": "Add New below or Select...",
"Add New below or Select...": "在下方新增或選取…",
"Tag with this name already exist.": "Tag with this name already exist.",
"Tag with this value already exist.": "Tag with this value already exist.",
"color": "顏色",
@ -168,7 +168,7 @@
"Indigo": "靛",
"Purple": "紫",
"Pink": "粉紅",
"Search...": "搜尋...",
"Search...": "搜尋",
"Avg. Ping": "平均反應時間",
"Avg. Response": "平均反應時間",
"Entry Page": "Entry Page",
@ -178,7 +178,7 @@
"Partially Degraded Service": "部份服務受阻",
"Degraded Service": "服務受阻",
"Add Group": "新增群組",
"Add a monitor": " 新增監測器",
"Add a monitor": "新增監測器",
"Edit Status Page": "編輯 Status Page",
"Go to Dashboard": "前往主控台",
"Status Page": "Status Page",
@ -316,10 +316,10 @@
"Done": "完成",
"Info": "資訊",
"Security": "安全性",
"Steam API Key": "Steam API 金鑰",
"Steam API Key": "Steam API Key",
"Shrink Database": "壓縮資料庫",
"Pick a RR-Type...": "選擇資源記錄類型...",
"Pick Accepted Status Codes...": "選擇可接受的狀態碼...",
"Pick a RR-Type...": "選擇資源記錄類型",
"Pick Accepted Status Codes...": "選擇可接受的狀態碼",
"Default": "預設",
"HTTP Options": "HTTP 選項",
"Create Incident": "建立事件",
@ -401,5 +401,177 @@
"Game": "遊戲",
"Specific Monitor Type": "特定監測器類型",
"Monitor": "監測器 | 監測器",
"General Monitor Type": "一般監測器類型"
"General Monitor Type": "一般監測器類型",
"Affected Monitors": "受影響的監測器",
"Powered by": "技術支持:",
"Add New Status Page": "新增 Status Page",
"Page Not Found": "找不到頁面",
"Start of maintenance": "維護開始時間",
"All Status Pages": "所有 Status Page",
"webhookAdditionalHeadersTitle": "額外 Header",
"successMessage": "成功訊息",
"error": "錯誤",
"critical": "嚴重",
"Customize": "自定義",
"Custom Footer": "自訂 Footer",
"Custom CSS": "自訂 CSS",
"Valid": "有效",
"Invalid": "無效",
"Installed": "已安裝",
"Not installed": "未安裝",
"Running": "執行中",
"Stop": "停止",
"Next": "下一步",
"No Proxy": "無 Proxy",
"Backup": "備份",
"Pick Affected Monitors...": "挑選受影響的監測器…",
"Custom": "自訂",
"Not running": "未執行",
"Remove Token": "移除 Token",
"Start": "開始",
"User": "使用者",
"trustProxyDescription": "信任 'X-Forwarded-*' 的 Header。如果您想取得正確的 Client IP且您的 Uptime Kuma 架設於 Nginx 或 Apache 之後,您應啟用此選項。",
"Reverse Proxy": "Reverse Proxy",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "若要取得長期有效 Access Token請按您的個人檔案名稱 (左下角),捲動至最下方,然後按建立 Token。 ",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "您可以在 Home Assistant 中查看通知服務的列表,在\"開發者工具 > 服務\"下搜尋\"通知\"來找到您的裝置/手機的名稱。",
"loadingError": "未能取得數據,請重新再試。",
"uninstall": "解除安裝",
"wayToGetZohoCliqURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
"Select status pages...": "選擇 Status Page…",
"webhookAdditionalHeadersDesc": "設定傳送 Webhook 時使用的額外 Header。",
"topic": "Topic",
"topicExplanation": "監測 MQTT 中的一個 Topic",
"successMessageExplanation": "MQTT 中收到視為成功的訊息",
"Certificate Chain": "証書信任鏈",
"Slug": "Slug",
"Accept characters:": "可用字元:",
"startOrEndWithOnly": "只能使用 {0} 開頭或結尾",
"No consecutive dashes": "不得連續使用破折號",
"The slug is already taken. Please choose another slug.": "此 slug 已被使用。請選擇其他 slug。",
"Authentication": "驗證",
"HTTP Basic Auth": "HTTP Basic Auth",
"New Status Page": "新 Status Page",
"Docker Daemon": "Docker Daemon",
"About": "關於",
"wayToGetCloudflaredURL": "(到 {0} 下載 cloudflared)",
"cloudflareWebsite": "Cloudflare 網頁",
"Message:": "訊息:",
"Don't know how to get the token? Please read the guide:": "不知道如何取得權杖?請閱讀指南:",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正透過 Cloudflare Tunnel 連線,可能會導致連線中斷。您確定要停止嗎?請輸入密碼以確認。",
"HTTP Headers": "HTTP Headers",
"Trust Proxy": "信任 Proxy",
"Other Software": "其他軟件",
"For example: nginx, Apache and Traefik.": "例如 nginx、Apache 和 Traefik。",
"Please read": "請閱覽",
"Subject:": "標題:",
"Days Remaining:": "餘下日數:",
"Issuer:": "簽發者:",
"Fingerprint:": "指紋:",
"No status pages": "無 Status Page",
"Domain Name Expiry Notification": "Domain 到期通知",
"Footer Text": "Footer 文字",
"Show Powered By": "顯示 \"Powered By\"",
"Domain Names": "Domain",
"signedInDisp": "登入為 {0}",
"signedInDispDisabled": "驗證已停用。",
"RadiusSecret": "Radius Secret",
"RadiusSecretDescription": "Client 與 Server 之間的共享 Secret",
"RadiusCalledStationId": "Called Station Id",
"RadiusCallingStationId": "Calling Station Id",
"Certificate Expiry Notification": "証書過期通知",
"API Username": "API 使用者名稱",
"API Key": "API Key",
"Show update if available": "有更新時顯示",
"Also check beta release": "檢查 Beta 版本",
"Using a Reverse Proxy?": "正在使用 Reverse Proxy",
"Check how to config it for WebSocket": "查看如何加入 WebSocket 設定",
"Steam Game Server": "Steam 遊戲 Server",
"Most likely causes:": "最可能原因:",
"The resource is no longer available.": "資源已不能存取。",
"There might be a typing error in the address.": "網址可能輸入錯誤。",
"What you can try:": "您可以嘗試:",
"Retype the address.": "重新輸入網址。",
"Go back to the previous page.": "返回上一頁。",
"Coming Soon": "即將推出",
"Connection String": "Connection String",
"Query": "Query",
"settingsCertificateExpiry": "TLS 証書到期",
"certificationExpiryDescription": "証書將於 X 天後到期時觸發 HTTPS 監測器通知:",
"Setup Docker Host": "設定 Docker 主機",
"Connection Type": "連線方式",
"deleteDockerHostMsg": "您確定要為所有監測器刪除此 Docker 主機嗎?",
"socket": "Socket",
"tcp": "TCP / HTTP",
"Docker Container": "Docker Container",
"Container Name / ID": "Container 名稱 / ID",
"Docker Host": "Docker 主機",
"Docker Hosts": "Docker 主機",
"Domain": "Domain",
"Workstation": "Workstation",
"ZohoCliq": "ZohoCliq",
"disableCloudflaredNoAuthMsg": "您處於無驗證模式。無須輸入密碼。",
"wayToGetLineNotifyToken": "您可以從 {0} 取得 Access Token。",
"Examples": "例子",
"Home Assistant URL": "Home Assistant 網址",
"Long-Lived Access Token": "長期有效 Access Token",
"Notification Service": "通知服務",
"default: notify all devices": "預設:通知所有服務",
"Automations can optionally be triggered in Home Assistant:": "可以選擇在 Home Assistant 中觸發自動程序:",
"Trigger type:": "觸發類型:",
"backupRecommend": "請直接備份 Docker Volume 或 ./data/ 資料夾。",
"squadcast": "Squadcast",
"or": "或",
"recurringInterval": "間隔",
"Recurring": "重複性",
"strategyManual": "手動啟用/停用",
"warningTimezone": "正在使用 Server 的時區",
"weekdayShortMon": "一",
"weekdayShortTue": "二",
"weekdayShortWed": "三",
"weekdayShortThu": "四",
"weekdayShortFri": "五",
"weekdayShortSat": "六",
"weekdayShortSun": "日",
"dayOfWeek": "每周特定一天",
"dayOfMonth": "每月特定一天",
"lastDay": "最後一天",
"lastDay1": "每月最後一天",
"maintenanceStatus-ended": "已結束",
"maintenanceStatus-unknown": "未知",
"Display Timezone": "顯示時區",
"Schedule Maintenance": "排程維護",
"Date and Time": "日期與時間",
"DateTime Range": "日期與時間範圍",
"plugin": "插件 | 插件",
"install": "安裝",
"installing": "正在安装",
"uninstalling": "正在解除安裝",
"confirmUninstallPlugin": "你確定要解除安裝?",
"dataRetentionTimeError": "保留限期必需為 0 或正數",
"infiniteRetention": "設定為 0 以作無限期保留。",
"Effective Date Range": "有效日期範圍",
"Hello @everyone is...": "Hello {'@'}everyone is…",
"Packet Size": "Packet 大小",
"Event type:": "事件類型:",
"Event data:": "事件資料:",
"Then choose an action, for example switch the scene to where an RGB light is red.": "然後選擇操作,例如切換至 RGB 燈為紅色的場景。",
"Frontend Version": "前端版本",
"Frontend Version do not match backend version!": "前端版本與後端版本不符!",
"lastDay2": "每月倒數第二天",
"lastDay3": "每月倒數第三天",
"lastDay4": "每月倒數第四天",
"No Maintenance": "無維護",
"pauseMaintenanceMsg": "您確定要暫停嗎?",
"maintenanceStatus-under-maintenance": "維護中",
"maintenanceStatus-inactive": "已停用",
"maintenanceStatus-scheduled": "已排程",
"Server Timezone": "伺服器時區",
"statusPageMaintenanceEndDate": "結束",
"IconUrl": "Icon 網址",
"dnsCacheDescription": "在某些情況 IPv6 可能會出現異常,如果您遇到任何問題,請停用。",
"Single Maintenance Window": "單一維護時段",
"Maintenance Time Window of a Day": "每日維護時段",
"Proxy": "Proxy",
"backupOutdatedWarning": "過時:由於備份功能未顧及新功能的增加,因此備份功能無法產生或復原完整的備份。",
"Optional": "可選填"
}

View file

@ -15,10 +15,10 @@
"statusMaintenance": "維護",
"Schedule maintenance": "排程維護",
"Affected Monitors": "受影響的監測器",
"Pick Affected Monitors...": "挑選受影響的監測器...",
"Pick Affected Monitors...": "挑選受影響的監測器",
"Start of maintenance": "維護起始",
"All Status Pages": "所有狀態頁",
"Select status pages...": "選擇狀態頁...",
"Select status pages...": "選擇狀態頁",
"recurringIntervalMessage": "每日執行 | 每 {0} 天執行",
"affectedMonitorsDescription": "選擇受目前維護影響的監測器",
"affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息",
@ -177,7 +177,7 @@
"Token": "權杖",
"Show URI": "顯示 URI",
"Tags": "標籤",
"Add New below or Select...": "在下方新增或選取...",
"Add New below or Select...": "在下方新增或選取",
"Tag with this name already exist.": "已存在相同名稱的標籤。",
"Tag with this value already exist.": "已存在相同數值的標籤。",
"color": "顏色",
@ -190,7 +190,7 @@
"Indigo": "靛色",
"Purple": "紫色",
"Pink": "粉色",
"Search...": "搜尋...",
"Search...": "搜尋",
"Avg. Ping": "平均 Ping",
"Avg. Response": "平均回應",
"Entry Page": "入口頁面",
@ -237,7 +237,7 @@
"wayToGetDiscordURL": "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得",
"Bot Display Name": "機器人顯示名稱",
"Prefix Custom Message": "前綴自訂訊息",
"Hello @everyone is...": "Hello {'@'}everyone is...",
"Hello @everyone is...": "Hello {'@'}everyone is",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook 網址",
"wayToGetTeamsURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
@ -342,8 +342,8 @@
"Security": "安全性",
"Steam API Key": "Steam API 金鑰",
"Shrink Database": "壓縮資料庫",
"Pick a RR-Type...": "選擇資源記錄類型...",
"Pick Accepted Status Codes...": "選擇可接受的狀態碼...",
"Pick a RR-Type...": "選擇資源記錄類型",
"Pick Accepted Status Codes...": "選擇可接受的狀態碼",
"Default": "預設",
"HTTP Options": "HTTP 選項",
"Create Incident": "建立事件",
@ -668,5 +668,11 @@
"high": "高",
"General Monitor Type": "一般監測器類型",
"Passive Monitor Type": "被動監測器類型",
"Specific Monitor Type": "指定監測器類型"
"Specific Monitor Type": "指定監測器類型",
"plugin": "插件 | 插件",
"install": "安裝",
"Game": "遊戲",
"Help": "幫助",
"Monitor": "監測器 | 監測器",
"Custom": "自訂"
}

View file

@ -959,6 +959,14 @@ message HealthCheckResponse {
this.monitor.headers = JSON.stringify(JSON.parse(this.monitor.headers), null, 4);
}
if (this.monitor.hostname) {
this.monitor.hostname = this.monitor.hostname.trim();
}
if (this.monitor.url) {
this.monitor.url = this.monitor.url.trim();
}
if (this.isAdd) {
this.$root.add(this.monitor, async (res) => {

View file

@ -88,7 +88,7 @@ export function hostNameRegexPattern(mqtt = false) {
// mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect)
const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?";
// Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/
const ipRegexPattern = `((^\\s*${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`;
const ipRegexPattern = `((^${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?$))`;
// Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address
const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`;

View file

@ -9,7 +9,11 @@ describe("Test util-frontend.js", () => {
expect(regex.test("www.test.com")).to.be.true;
expect(regex.test("127.0.0.1")).to.be.true;
expect(regex.test("192.168.1.156")).to.be.true;
expect(regex.test(" 192.168.1.145")).to.be.false;
expect(regex.test("192.168.1.145 ")).to.be.false;
expect(regex.test(" fe80::3282:3ff:ae28:592")).to.be.false;
expect(regex.test("fe80::3282:3ff:ae28:592 ")).to.be.false;
["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
expect(regex.test(`${schema}://www.test.com`)).to.be.false;
expect(regex.test(`${schema}://127.0.0.1`)).to.be.false;
@ -23,11 +27,15 @@ describe("Test util-frontend.js", () => {
expect(regex.test("www.test.com")).to.be.true;
expect(regex.test("127.0.0.1")).to.be.true;
expect(regex.test("192.168.1.156")).to.be.true;
expect(regex.test(" 192.168.1.145")).to.be.false;
expect(regex.test("192.168.1.145 ")).to.be.false;
expect(regex.test(" fe80::3282:3ff:ae28:592")).to.be.false;
expect(regex.test("fe80::3282:3ff:ae28:592 ")).to.be.false;
["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
expect(regex.test(`${schema}://www.test.com`)).to.be.true;
expect(regex.test(`${schema}://127.0.0.1`)).to.be.true;
});
});
});
});
});