diff --git a/package-lock.json b/package-lock.json index 39a7641c6..e99f0ccf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.21.2-beta.0", + "version": "1.21.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.21.2-beta.0", + "version": "1.21.2", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.7.3", diff --git a/package.json b/package.json index 55479549e..5af6b18b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.21.2-beta.0", + "version": "1.21.2", "license": "MIT", "repository": { "type": "git", @@ -39,7 +39,7 @@ "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.21.1 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.21.2 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", diff --git a/server/model/maintenance.js b/server/model/maintenance.js index e3ce5d321..787953fb8 100644 --- a/server/model/maintenance.js +++ b/server/model/maintenance.js @@ -18,9 +18,12 @@ class Maintenance extends BeanModel { let dateRange = []; if (this.start_date) { dateRange.push(this.start_date); - if (this.end_date) { - dateRange.push(this.end_date); - } + } else { + dateRange.push(null); + } + + if (this.end_date) { + dateRange.push(this.end_date); } let timeRange = []; @@ -155,10 +158,14 @@ class Maintenance extends BeanModel { if (obj.dateRange[0]) { bean.start_date = obj.dateRange[0]; + } else { + bean.start_date = null; + } - if (obj.dateRange[1]) { - bean.end_date = obj.dateRange[1]; - } + if (obj.dateRange[1]) { + bean.end_date = obj.dateRange[1]; + } else { + bean.end_date = null; } if (bean.strategy === "cron") { diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index 44a6ac8a8..1249868ed 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -542,7 +542,7 @@ "promosmsPassword": "API Password", "pushoversounds pushover": "Pushover (výchozí)", "pushoversounds bike": "Kolo", - "pushoversounds bugle": "Bugle", + "pushoversounds bugle": "Trumpeta", "pushoversounds cashregister": "Pokladna", "pushoversounds classical": "Classical", "pushoversounds cosmic": "Kosmický", @@ -554,9 +554,9 @@ "pushoversounds mechanical": "Mechanika", "pushoversounds pianobar": "Barové piano", "pushoversounds siren": "Siréna", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "Tug Boat", - "pushoversounds alien": "Alien Alarm (dlouhý)", + "pushoversounds spacealarm": "Vesmírný alarm", + "pushoversounds tugboat": "Remorkér", + "pushoversounds alien": "Mimozemský poplach (dlouhý)", "pushoversounds climb": "Climb (dlouhý)", "pushoversounds persistent": "Persistent (dlouhý)", "pushoversounds echo": "Pushover Echo (dlouhý)", @@ -661,7 +661,7 @@ "dnsCacheDescription": "V některých IPv6 prostředích nemusí fungovat. Pokud narazíte na nějaké problémy, vypněte jej.", "Single Maintenance Window": "Konkrétní časové okno pro údržbu", "Maintenance Time Window of a Day": "Časové okno pro údržbu v daný den", - "Effective Date Range": "Časové období", + "Effective Date Range": "Časové období (volitelné)", "Schedule Maintenance": "Naplánovat údržbu", "Date and Time": "Datum a čas", "DateTime Range": "Rozsah data a času", @@ -739,5 +739,15 @@ "lunaseaTarget": "Cíl", "lunaseaDeviceID": "ID zařízení", "lunaseaUserID": "ID uživatele", - "statusPageRefreshIn": "Obnovení za: {0}" + "statusPageRefreshIn": "Obnovení za: {0}", + "twilioAccountSID": "SID účtu", + "twilioFromNumber": "Číslo odesílatele", + "twilioToNumber": "Číslo příjemce", + "twilioAuthToken": "Autorizační token", + "sameAsServerTimezone": "Stejné jako časové pásmo serveru", + "cronExpression": "Cron výraz", + "cronSchedule": "Plán: ", + "invalidCronExpression": "Neplatný cron výraz: {0}", + "startDateTime": "Počáteční datum/čas", + "endDateTime": "Datum/čas konce" } diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index ca9748e09..9445e6cd7 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -645,7 +645,7 @@ "Single Maintenance Window": "Einmaliges Wartungsfenster", "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.", "Maintenance Time Window of a Day": "Wartungszeitfenster eines Tages", - "Effective Date Range": "Gültigkeitsbereich", + "Effective Date Range": "Gültigkeitsbereich (Optional)", "Schedule Maintenance": "Wartung planen", "Date and Time": "Datum und Uhrzeit", "DateTime Range": "Datums- und Zeitbereich", @@ -742,5 +742,11 @@ "twilioFromNumber": "Absender", "twilioToNumber": "Empfänger", "twilioAuthToken": "Auth Token", - "statusPageRefreshIn": "Aktualisierung in: {0}" + "statusPageRefreshIn": "Aktualisierung in: {0}", + "sameAsServerTimezone": "Gleiche Zeitzone wie Server", + "startDateTime": "Start Datum/Uhrzeit", + "endDateTime": "Ende Datum/Uhrzeit", + "cronExpression": "Cron-Ausdruck", + "cronSchedule": "Zeitplan: ", + "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}" } diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 87eb1b399..b5d428f95 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -607,7 +607,7 @@ "Recurring": "Wiederkehrend", "Single Maintenance Window": "Einmaliges Wartungsfenster", "Maintenance Time Window of a Day": "Zeitfenster für die Wartung", - "Effective Date Range": "Bereich der Wirksamkeitsdaten", + "Effective Date Range": "Bereich der Wirksamkeitsdaten (Optional)", "strategyManual": "Aktiv/Inaktiv Manuell", "warningTimezone": "Es wird die Zeitzone des Servers verwendet", "weekdayShortMon": "Mo", @@ -745,5 +745,11 @@ "twilioFromNumber": "Absender", "twilioToNumber": "Empfänger", "twilioAuthToken": "Auth Token", - "statusPageRefreshIn": "Aktualisierung in: {0}" + "statusPageRefreshIn": "Aktualisierung in: {0}", + "sameAsServerTimezone": "Gleiche Zeitzone wie Server", + "startDateTime": "Start Datum/Uhrzeit", + "endDateTime": "Ende Datum/Uhrzeit", + "cronExpression": "Cron-Ausdruck", + "cronSchedule": "Zeitplan: ", + "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}" } diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 3d051bae7..e59f5a6b9 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -303,7 +303,7 @@ "Maintenance": "Mantenimiento", "General Monitor Type": "Monitor Tipo General", "Specific Monitor Type": "Monitor Tipo Específico", - "Monitor": "Monitores", + "Monitor": "Monitor | Monitores", "Resend Notification if Down X times consecutively": "Reenviar Notificación si Caído X veces consecutivamente", "resendEveryXTimes": "Reenviar cada {0} veces", "resendDisabled": "Reenvío deshabilitado", @@ -679,15 +679,15 @@ "serwersms": "SerwerSMS.pl", "serwersmsAPIUser": "Nombre de usuario de API (inc. webapi_ prefix)", "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica", - "Unpin": "Quitar de destacados", + "Unpin": "Dejar de Fijar", "Prefix Custom Message": "Prefijo personalizado", - "markdownSupported": "Soporta sintaxis Markdown", + "markdownSupported": "Sintaxis de Markdown soportada", "Server Address": "Dirección del Servidor", "Learn More": "Aprende Más", "Pick a RR-Type...": "Seleccione un Tipo RR", "onebotHttpAddress": "Dirección HTTP OneBot", "SendKey": "Clave de Envío", - "octopushAPIKey": "\"Clave API\" de las credenciales HTTP API en el panel de control", + "octopushAPIKey": "\"Clave API\" desde credenciales API HTTP en panel de control", "octopushLogin": "\"Inicio de Sesión\" a partir de las credenciales API HTTP en el panel de control", "ntfy Topic": "Tema ntfy", "Google Analytics ID": "ID Analíticas de Google", @@ -738,5 +738,15 @@ "lunaseaUserID": "ID Usuario", "lunaseaDeviceID": "ID Dispositivo", "disableAPIKeyMsg": "¿Está seguro de que desea desactivar esta clave API?", - "Expires": "Expira" + "Expires": "Expira", + "twilioAccountSID": "SID de Cuenta", + "twilioFromNumber": "Desde el numero", + "twilioToNumber": "Hasta el numero", + "startDateTime": "Fecha/Hora Inicio", + "sameAsServerTimezone": "Igual a Zona horaria del Servidor", + "endDateTime": "Fecha/Hora Fin", + "cronExpression": "Expresión Cron", + "cronSchedule": "Cronograma: ", + "invalidCronExpression": "Expresión Cron invalida:{0}", + "statusPageRefreshIn": "Reinicio en: {0}" } diff --git a/src/lang/fa.json b/src/lang/fa.json index e96923519..7b85e4722 100644 --- a/src/lang/fa.json +++ b/src/lang/fa.json @@ -346,7 +346,7 @@ "Security": "امنیت", "light": "روشن", "Query": "کوئری", - "Effective Date Range": "محدوده تاریخ مورد تاثیر", + "Effective Date Range": "محدوده تاریخ مورد تاثیر (اختیاری)", "statusPageRefreshIn": "بارگذاری مجدد در هر:‌ {0}", "Content Type": "نوع محتوا (Content Type)", "Server URL": "آدرس سرور", @@ -712,5 +712,11 @@ "endpoint": "نقطه پایانی", "Status:": "وضعیت: {0}", "Strategy": "استراتژی", - "Icon Emoji": "ایموجی آیکون" + "Icon Emoji": "ایموجی آیکون", + "sameAsServerTimezone": "مشابه با منطقه زمانی سرور", + "startDateTime": "ساعت/روز شروع", + "endDateTime": "ساعت/روز پایان", + "cronSchedule": "برنامه زمانی: ", + "invalidCronExpression": "حالت کرون نامعتبر است: {0}", + "cronExpression": "حالت کرون" } diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index 9e725ad07..9eca1bae0 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -658,7 +658,7 @@ "dnsCacheDescription": "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.", "Single Maintenance Window": "Créneau de maintenance unique", "Maintenance Time Window of a Day": "Créneau de la maintenance", - "Effective Date Range": "Plage de dates d'effet", + "Effective Date Range": "Plage de dates d'effet (facultatif)", "Schedule Maintenance": "Créer une maintenance", "Date and Time": "Date et heure", "DateTime Range": "Plage de dates et d'heures", @@ -743,5 +743,11 @@ "twilioFromNumber": "Du Nombre", "twilioToNumber": "Au Nombre", "twilioAccountSID": "ID du compte", - "twilioAuthToken": "Jeton d'authentification" + "twilioAuthToken": "Jeton d'authentification", + "sameAsServerTimezone": "Identique au fuseau horaire du serveur", + "startDateTime": "Date/heure de début", + "endDateTime": "Date/heure de fin", + "cronExpression": "Expression cron", + "cronSchedule": "Calendrier : ", + "invalidCronExpression": "Expression Cron non valide : {0}" } diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 2a8696e00..ff3417170 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -660,7 +660,7 @@ "Disable": "비활성화", "Single Maintenance Window": "단일 점검", "Maintenance Time Window of a Day": "점검 시간", - "Effective Date Range": "유효 날짜 범위", + "Effective Date Range": "유효 날짜 범위 (옵션)", "Schedule Maintenance": "점검 예약하기", "Date and Time": "날짜 및 시간", "DateTime Range": "날짜 시간 범위", @@ -699,7 +699,7 @@ "cloneOf": "{0}의 복제본", "Clone Monitor": "모니터링 복제", "telegramProtectContent": "포워딩/저장 보호", - "telegramProtectContentDescription": "활성화 시, 텔레그램 봇 메시지는 포워딩 및 저장으로부터 보호됩니다.", + "telegramProtectContentDescription": "활성화 할경우 텔레그램 봇 메시지는 포워딩 및 저장으로부터 보호됩니다.", "telegramSendSilentlyDescription": "조용히 메시지를 보냅니다. 사용자들은 무음으로 알림을 받습니다.", "telegramSendSilently": "무음 알림", "Add New Tag": "태그 추가", @@ -720,9 +720,33 @@ "Google Analytics ID": "Google Analytics ID", "Add API Key": "API 키 추가", "apiKeyAddedMsg": "API 키가 추가되었습니다. 다시 표시되지 않을 것이므로 메모해 두세요.", - "pagertreeCritical": "치명적인", + "pagertreeCritical": "긴급", "apiKey-active": "사용 가능", "lunaseaUserID": "사용자 ID", "apiKey-expired": "만료됨", - "Expires": "만료일" + "Expires": "만료일", + "twilioAuthToken": "인증 토큰", + "twilioFromNumber": "번호에서", + "twilioToNumber": "번호에서", + "twilioAccountSID": "계정 SID", + "pagertreeUrgency": "긴급", + "sameAsServerTimezone": "서버 시간대로 설정하기", + "startDateTime": "시작 시간", + "endDateTime": "종료 시간", + "cronExpression": "Cron 값", + "cronSchedule": "스케줄: ", + "invalidCronExpression": "알수없는 Cron 값입니다: {0}", + "Add Another": "다른 항목 추가", + "apiKey-inactive": "비활성화", + "pagertreeIntegrationUrl": "Integration 링크", + "pagertreeLow": "낮음", + "pagertreeMedium": "중간", + "pagertreeHigh": "높음", + "pagertreeResolve": "자동으로 해결하기", + "pagertreeDoNothing": "아무것도 하지 않음", + "wayToGetPagerTreeIntegrationURL": "PagerTree에서 Uptime Kuma 통합을 생성한 후 Endpoint를 복사합니다. 전체 세부 정보 보기 {0}", + "lunaseaTarget": "대상", + "lunaseaDeviceID": "기기 ID", + "statusPageRefreshIn": "{0} 후 새로고침", + "telegramMessageThreadIDDescription": "포럼의 대상 메시지 쓰레드(주제)에 대한 선택적 고유 식별인, 포럼 관리자 그룹에만 해당" } diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 8e46e20d8..39e6b00c0 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -441,7 +441,7 @@ "Accept characters:": "Принимаемые символы:", "startOrEndWithOnly": "Начинается или кончается только {0}", "No consecutive dashes": "Без последовательных тире", - "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "The slug is already taken. Please choose another slug.": "Слово уже занято. Пожалуйста, выберите другой вариант.", "Page Not Found": "Страница не найдена", "wayToGetCloudflaredURL": "(Скачать cloudflared с {0})", "cloudflareWebsite": "Веб-сайт Cloudflare", @@ -565,7 +565,7 @@ "Frontend Version": "Версия интерфейса", "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!", "Base URL": "Базовый URL", - "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}", + "goAlertInfo": "GoAlert — это приложение с открытым исходным кодом для составления расписания вызовов, автоматической эскалации и уведомлений (например, SMS или голосовых звонков). Автоматически привлекайте нужного человека, нужным способом и в нужное время! {0}", "goAlertIntegrationKeyInfo": "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.", "goAlert": "GoAlert", "backupOutdatedWarning": "Устарело: поскольку добавлено множество функций, а эта функция резервного копирования немного не поддерживается, она не может создать или восстановить полную резервную копию.", @@ -669,7 +669,7 @@ "smseagle": "SMSEagle", "Google Analytics ID": "ID Google Аналитики", "wayToGetZohoCliqURL": "Вы можете узнать как создать webhook URL тут {0}.", - "Effective Date Range": "Даты действия", + "Effective Date Range": "Даты действия (Опционально)", "wayToGetKookGuildID": "Включите \"Режим разработчика\" в настройках Kook, а затем нажмите правой кнопкой по гильдии чтобы скопировать её ID", "Enable TLS": "Включить TLS", "Integration Key": "Ключ интеграции", @@ -721,7 +721,7 @@ "apiKey-inactive": "Неактивный", "Expires": "Истекает", "disableAPIKeyMsg": "Вы уверены, что хотите отключить этот ключ?", - "Generate": "Создать", + "Generate": "Сгенерировать", "pagertreeResolve": "Автоматическое разрешение", "pagertreeDoNothing": "ничего не делать", "lunaseaTarget": "Цель", @@ -740,7 +740,7 @@ "Economy": "Экономия", "wayToGetPagerDutyKey": "Вы можете получить это, перейдя в службу -> Каталог служб -> (Выберите службу) -> Интеграции -> Добавить интеграцию. Здесь вы можете выполнить поиск по \"Events API V2\". Дополнительная информация {0}", "apiKeyAddedMsg": "Ваш API ключ был добавлен. Пожалуйста, запишите это, так как оно больше не будет показан.", - "deleteAPIKeyMsg": "Вы уверены, что хотите удалить этот ключ?", + "deleteAPIKeyMsg": "Вы уверены, что хотите удалить этот ключ API?", "wayToGetPagerTreeIntegrationURL": "После создания интеграции Uptime Kuma в PagerTree, скопируйте конечную точку. Смотрите полную информацию {0}", "telegramMessageThreadIDDescription": "Необязательный уникальный идентификатор для цепочки сообщений (темы) форума; только для форумов-супергрупп", "grpcMethodDescription": "Название метода - преобразовать в формат cammelCase, такой как sayHello, check и т.д.", @@ -748,5 +748,15 @@ "Proto Method": "Метод Proto", "Proto Content": "Содержание Proto", "telegramMessageThreadID": "(Необязательно) ID цепочки сообщений", - "statusPageRefreshIn": "Обновлять каждые: {0}" + "statusPageRefreshIn": "Обновлять каждые: {0}", + "twilioAccountSID": "SID учетной записи", + "twilioAuthToken": "Токен авторизации", + "twilioFromNumber": "С номера", + "twilioToNumber": "На номер", + "sameAsServerTimezone": "Аналогично часовому поясу сервера", + "startDateTime": "Начальная дата и время", + "endDateTime": "Конечная дата и время", + "cronExpression": "Выражение для Cron", + "cronSchedule": "Расписание: ", + "invalidCronExpression": "Неверное выражение Cron: {0}" } diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index fdced11fe..dcaadfe72 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -648,7 +648,7 @@ "dnsCacheDescription": "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.", "Single Maintenance Window": "Tek Seferlik Bakım", "Maintenance Time Window of a Day": "Bür Günlük Bakım", - "Effective Date Range": "Bakim Tarih Aralığı", + "Effective Date Range": "Geçerlilik Tarihi Aralığı (Opsiyonel)", "Schedule Maintenance": "Bakım Planla", "Date and Time": "Tarih ve Saat", "DateTime Range": "Tarih ve Saat Aralığı", @@ -743,5 +743,11 @@ "twilioAuthToken": "Kimlik Doğrulama Jetonu", "twilioFromNumber": "Gönderen Numara", "twilioToNumber": "Alıcı Numara", - "twilioAccountSID": "Hesap ID" + "twilioAccountSID": "Hesap ID", + "sameAsServerTimezone": "Sunucu Saat Dilimi ile aynı", + "startDateTime": "Başlangıç Tarihi/Saati", + "endDateTime": "Bitiş Tarihi/Saati", + "cronExpression": "Cron İfadesi", + "cronSchedule": "Zamanlama: ", + "invalidCronExpression": "Geçersiz Cron İfadesi: {0}" } diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index b567b72f0..fd5d35e36 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -549,7 +549,7 @@ "confirmUninstallPlugin": "你確定要解除安裝?", "dataRetentionTimeError": "保留限期必需為 0 或正數", "infiniteRetention": "設定為 0 以作無限期保留。", - "Effective Date Range": "有效日期範圍", + "Effective Date Range": "有效日期範圍 (可選)", "Hello @everyone is...": "Hello {'@'}everyone is…", "Packet Size": "Packet 大小", "Event type:": "事件類型:", @@ -709,5 +709,15 @@ "high": "高價", "statusPageRefreshIn": "將於 {0} 後重新整理", "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API 文件 " + "SMSManager API Docs": "SMSManager API 文件 ", + "startDateTime": "開始時間", + "pagertreeLow": "低", + "endDateTime": "結束時間", + "cronExpression": "Cron 表達式", + "cronSchedule": "排程: ", + "invalidCronExpression": "無效 Cron 表達式:{0}", + "sameAsServerTimezone": "使用伺服器時區", + "WeCom Bot Key": "WeCom 機器人 Key", + "pagertreeMedium": "中", + "pagertreeHigh": "高" }