+
+
+
+
+
+ {{ $t("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.") }}
+
+
Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.
+
Будь ласка, використовуйте з обережністю.
+
+
آیا مطمئن هستید که میخواهید احراز هویت را غیر فعال کنید?
این ویژگی برای کسانی است که لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کردهاند، مانند Cloudflare Access.
@@ -215,14 +221,14 @@
Dette er for de som har tredjepartsautorisering foran Uptime Kuma, for eksempel Cloudflare Access.
Vennligst vær forsiktig.
-
+
Opravdu chcete deaktivovat autentifikaci?
Tato možnost je určena pro případy, kdy máte autentifikaci zajištěnou třetí stranou ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.
Používejte ji prosím s rozmyslem.
-
+
Bạn có muốn TẮT XÁC THỰC không?
Điều này rất nguy hiểmBẤT KỲ AI cũng có thể truy cập và cướp quyền điều khiển.
Vui lòng cẩn thận.
@@ -234,6 +240,19 @@
It is designed for scenarios where you intend to implement third-party authentication in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.
Please use this option carefully!
+
+
+
+
+
@@ -310,7 +329,12 @@ export default {
disableAuth() {
this.settings.disableAuth = true;
- this.saveSettings();
+
+ // Need current password to disable auth
+ // Set it to empty if done
+ this.saveSettings(() => {
+ this.password.currentPassword = "";
+ }, this.password.currentPassword);
},
enableAuth() {
diff --git a/src/i18n.js b/src/i18n.js
index 8d9b2fafa..5505e5c2b 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -29,7 +29,8 @@ const languageList = {
"pl": "Polski",
"et-EE": "eesti",
"vi-VN": "Tiếng Việt",
- "zh-TW": "繁體中文 (台灣)"
+ "zh-TW": "繁體中文 (台灣)",
+ "uk-UA": "Український",
};
let messages = {
diff --git a/src/icon.js b/src/icon.js
index bbd816ea0..7201b94fb 100644
--- a/src/icon.js
+++ b/src/icon.js
@@ -37,6 +37,8 @@ import {
faPen,
faExternalLinkSquareAlt,
faSpinner,
+ faUndo,
+ faPlusCircle,
} from "@fortawesome/free-solid-svg-icons";
library.add(
@@ -73,6 +75,8 @@ library.add(
faPen,
faExternalLinkSquareAlt,
faSpinner,
+ faUndo,
+ faPlusCircle,
);
export { FontAwesomeIcon };
diff --git a/src/languages/en.js b/src/languages/en.js
index 0def91d08..a8462f3c7 100644
--- a/src/languages/en.js
+++ b/src/languages/en.js
@@ -331,21 +331,21 @@ export default {
dark: "dark",
Post: "Post",
"Please input title and content": "Please input title and content",
- "Created": "Created",
+ Created: "Created",
"Last Updated": "Last Updated",
- "Unpin": "Unpin",
+ Unpin: "Unpin",
"Switch to Light Theme": "Switch to Light Theme",
"Switch to Dark Theme": "Switch to Dark Theme",
"Show Tags": "Show Tags",
"Hide Tags": "Hide Tags",
- "Description": "Description",
+ Description: "Description",
"No monitors available.": "No monitors available.",
"Add one": "Add one",
"No Monitors": "No Monitors",
"Untitled Group": "Untitled Group",
- "Services": "Services",
- "Discard": "Discard",
- "Cancel": "Cancel",
+ Services: "Services",
+ Discard: "Discard",
+ Cancel: "Cancel",
"Powered by": "Powered by",
shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
serwersms: "SerwerSMS.pl",
@@ -371,4 +371,75 @@ export default {
alertaAlertState: "Alert State",
alertaRecoverState: "Recover State",
deleteStatusPageMsg: "Are you sure want to delete this status page?",
+ Proxies: "Proxies",
+ default: "Default",
+ enabled: "Enabled",
+ setAsDefault: "Set As Default",
+ deleteProxyMsg: "Are you sure want to delete this proxy for all monitors?",
+ proxyDescription: "Proxies must be assigned to a monitor to function.",
+ enableProxyDescription: "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
+ setAsDefaultProxyDescription: "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
+ "Certificate Chain": "Certificate Chain",
+ Valid: "Valid",
+ Invalid: "Invalid",
+ AccessKeyId: "AccessKey ID",
+ SecretAccessKey: "AccessKey Secret",
+ PhoneNumbers: "PhoneNumbers",
+ TemplateCode: "TemplateCode",
+ SignName: "SignName",
+ "Sms template must contain parameters: ": "Sms template must contain parameters: ",
+ "Bark Endpoint": "Bark Endpoint",
+ WebHookUrl: "WebHookUrl",
+ SecretKey: "SecretKey",
+ "For safety, must use secret key": "For safety, must use secret key",
+ "Device Token": "Device Token",
+ Platform: "Platform",
+ iOS: "iOS",
+ Android: "Android",
+ Huawei: "Huawei",
+ High: "High",
+ Retry: "Retry",
+ Topic: "Topic",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Setup Proxy",
+ "Proxy Protocol": "Proxy Protocol",
+ "Proxy Server": "Proxy Server",
+ "Proxy server has authentication": "Proxy server has authentication",
+ User: "User",
+ Installed: "Installed",
+ "Not installed": "Not installed",
+ Running: "Running",
+ "Not running": "Not running",
+ "Remove Token": "Remove Token",
+ Start: "Start",
+ Stop: "Stop",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "Add New Status Page",
+ Slug: "Slug",
+ "Accept characters:": "Accept characters:",
+ "startOrEndWithOnly": "Start or end with {0} only",
+ "No consecutive dashes": "No consecutive dashes",
+ Next: "Next",
+ "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
+ "No Proxy": "No Proxy",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "New Status Page",
+ "Page Not Found": "Page Not Found",
+ "Reverse Proxy": "Reverse Proxy",
+ Backup: "Backup",
+ About: "About",
+ wayToGetCloudflaredURL: "(Download cloudflared from {0})",
+ cloudflareWebsite: "Cloudflare Website",
+ "Message:": "Message:",
+ "Don't know how to get the token? Please read the guide:": "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.": "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.",
+ "Other Software": "Other Software",
+ "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.",
+ "Please read": "Please read",
+ "Subject:": "Subject:",
+ "Valid To:": "Valid To:",
+ "Days Remaining:": "Days Remaining:",
+ "Issuer:": "Issuer:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "No status pages",
};
diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js
index ac851b675..a033edb5c 100644
--- a/src/languages/hr-HR.js
+++ b/src/languages/hr-HR.js
@@ -183,7 +183,7 @@ export default {
"Edit Status Page": "Uredi Statusnu stranicu",
"Go to Dashboard": "Na Kontrolnu ploču",
"Status Page": "Statusna stranica",
- "Status Pages": "Statusna stranica",
+ "Status Pages": "Statusne stranice",
defaultNotificationName: "Moja {number}. {notification} obavijest",
here: "ovdje",
Required: "Potrebno",
@@ -347,4 +347,30 @@ export default {
Cancel: "Otkaži",
"Powered by": "Pokreće",
Saved: "Spremljeno",
+ PushByTechulus: "Push by Techulus",
+ GoogleChat: "Google Chat (preko platforme Google Workspace)",
+ shrinkDatabaseDescription: "Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.",
+ serwersms: "SerwerSMS.pl",
+ serwersmsAPIUser: "API korisničko ime (uključujući webapi_ prefiks)",
+ serwersmsAPIPassword: "API lozinka",
+ serwersmsPhoneNumber: "Broj telefona",
+ serwersmsSenderName: "Ime SMS pošiljatelja (registrirano preko korisničkog portala)",
+ stackfield: "Stackfield",
+ smtpDkimSettings: "DKIM postavke",
+ smtpDkimDesc: "Za više informacija, postoji Nodemailer DKIM {0}.",
+ documentation: "dokumentacija",
+ smtpDkimDomain: "Domena",
+ smtpDkimKeySelector: "Odabir ključa",
+ smtpDkimPrivateKey: "Privatni ključ",
+ smtpDkimHashAlgo: "Hash algoritam (neobavezno)",
+ smtpDkimheaderFieldNames: "Ključevi zaglavlja za potpis (neobavezno)",
+ smtpDkimskipFields: "Ključevi zaglavlja koji se neće potpisati (neobavezno)",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "Krajnja točka API-ja (Endpoint)",
+ alertaEnvironment: "Okruženje (Environment)",
+ alertaApiKey: "API ključ",
+ alertaAlertState: "Stanje upozorenja",
+ alertaRecoverState: "Stanje oporavka",
+ deleteStatusPageMsg: "Sigurno želite obrisati ovu statusnu stranicu?",
};
diff --git a/src/languages/hu.js b/src/languages/hu.js
index 06a324aa1..a88289e14 100644
--- a/src/languages/hu.js
+++ b/src/languages/hu.js
@@ -197,7 +197,7 @@ export default {
line: "Line Messenger",
mattermost: "Mattermost",
"Status Page": "Státusz oldal",
- "Status Pages": "Státusz oldal",
+ "Status Pages": "Státusz oldalak",
"Primary Base URL": "Elsődleges URL",
"Push URL": "Meghívandó URL",
needPushEvery: "Ezt az URL-t kell meghívni minden {0} másodpercben.",
@@ -370,4 +370,5 @@ export default {
alertaApiKey: "API kulcs",
alertaAlertState: "Figyelmeztetési állapot",
alertaRecoverState: "Visszaállási állapot",
+ deleteStatusPageMsg: "Biztos, hogy törölni akarja a státusz oldalt?",
};
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
index d5bec924e..c8212442b 100644
--- a/src/languages/ru-RU.js
+++ b/src/languages/ru-RU.js
@@ -180,8 +180,8 @@ export default {
"Add a monitor": "Добавить монитор",
"Edit Status Page": "Редактировать",
"Go to Dashboard": "Панель управления",
- "Status Page": "Мониторинг",
- "Status Pages": "Página de Status",
+ "Status Page": "Страница статуса",
+ "Status Pages": "Страницы статуса",
Discard: "Отмена",
"Create Incident": "Создать инцидент",
"Switch to Dark Theme": "Тёмная тема",
@@ -311,28 +311,28 @@ export default {
"One record": "Одна запись",
steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ",
"Certificate Chain": "Цепочка сертификатов",
- "Valid": "Действительный",
+ Valid: "Действительный",
"Hide Tags": "Скрыть тэги",
Title: "Название инцидента:",
Content: "Содержание инцидента:",
Post: "Опубликовать",
- "Cancel": "Отмена",
- "Created": "Создано",
- "Unpin": "Открепить",
+ Cancel: "Отмена",
+ Created: "Создано",
+ Unpin: "Открепить",
"Show Tags": "Показать тэги",
- "recent": "Сейчас",
+ recent: "Сейчас",
"3h": "3 часа",
"6h": "6 часов",
"24h": "24 часа",
"1w": "1 неделя",
"No monitors available.": "Нет доступных мониторов",
"Add one": "Добавить новый",
- "Backup": "Резервная копия",
- "Security": "Безопасность",
+ Backup: "Резервная копия",
+ Security: "Безопасность",
"Shrink Database": "Сжать Базу Данных",
"Current User": "Текущий пользователь",
- "About": "О программе",
- "Description": "Описание",
+ About: "О программе",
+ Description: "Описание",
"Powered by": "Работает на основе скрипта от",
shrinkDatabaseDescription: "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
deleteStatusPageMsg: "Вы действительно хотите удалить эту страницу статуса сервисов?",
@@ -343,4 +343,50 @@ export default {
primary: "ОСНОВНОЙ",
light: "СВЕТЛЫЙ",
dark: "ТЕМНЫЙ",
+ "New Status Page": "Новая страница статуса",
+ "Show update if available": "Показывать доступные обновления",
+ "Also check beta release": "Проверять обновления для бета версий",
+ "Add New Status Page": "Добавить страницу статуса",
+ Next: "Далее",
+ "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -",
+ "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9",
+ "No consecutive dashes --": "Запрещено использовать тире --",
+ "HTTP Options": "HTTP Опции",
+ "Basic Auth": "HTTP Авторизация",
+ PushByTechulus: "Push by Techulus",
+ clicksendsms: "ClickSend SMS",
+ GoogleChat: "Google Chat (только Google Workspace)",
+ apiCredentials: "API реквизиты",
+ Done: "Готово",
+ Info: "Инфо",
+ "Steam API Key": "Steam API-Ключ",
+ "Pick a RR-Type...": "Выберите RR-Тип...",
+ "Pick Accepted Status Codes...": "Выберите принятые коды состояния...",
+ Default: "По умолчанию",
+ "Please input title and content": "Пожалуйста, введите название и содержание",
+ "Last Updated": "Последнее Обновление",
+ "Untitled Group": "Группа без названия",
+ Services: "Сервисы",
+ serwersms: "SerwerSMS.pl",
+ serwersmsAPIUser: "API Пользователь (включая префикс webapi_)",
+ serwersmsAPIPassword: "API Пароль",
+ serwersmsPhoneNumber: "Номер телефона",
+ serwersmsSenderName: "SMS Имя Отправителя (регистрированный через пользовательский портал)",
+ stackfield: "Stackfield",
+ smtpDkimSettings: "DKIM Настройки",
+ smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.",
+ documentation: "документация",
+ smtpDkimDomain: "Имя Домена",
+ smtpDkimKeySelector: "Ключ",
+ smtpDkimPrivateKey: "Приватный ключ",
+ smtpDkimHashAlgo: "Алгоритм хэша (опционально)",
+ smtpDkimheaderFieldNames: "Заголовок ключей для подписи (опционально)",
+ smtpDkimskipFields: "Заколовок ключей не для подписи (опционально)",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "Конечная точка API",
+ alertaEnvironment: "Среда",
+ alertaApiKey: "Ключ API",
+ alertaAlertState: "Состояние алерта",
+ alertaRecoverState: "Состояние восстановления",
};
diff --git a/src/languages/uk-UA.js b/src/languages/uk-UA.js
new file mode 100644
index 000000000..ac18a29cd
--- /dev/null
+++ b/src/languages/uk-UA.js
@@ -0,0 +1,392 @@
+export default {
+ languageName: "Український",
+ checkEverySecond: "Перевірка кожні {0} секунд",
+ retriesDescription: "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення",
+ ignoreTLSError: "Ігнорувати помилку TLS/SSL для сайтів HTTPS",
+ upsideDownModeDescription: "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.",
+ maxRedirectDescription: "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.",
+ acceptedStatusCodesDescription: "Виберіть коди статусів для визначення доступності сервісу.",
+ passwordNotMatchMsg: "Повторення паролю не збігається.",
+ notificationDescription: "Прив'яжіть повідомлення до моніторів.",
+ keywordDescription: "Пошук слова в чистому HTML або JSON-відповіді (чутливо до регістру)",
+ pauseDashboardHome: "Пауза",
+ deleteMonitorMsg: "Ви дійсно хочете видалити цей монітор?",
+ deleteNotificationMsg: "Ви дійсно хочете видалити це повідомлення для всіх моніторів?",
+ resolverserverDescription: "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.",
+ rrtypeDescription: "Виберіть тип ресурсного запису, який ви хочете відстежувати",
+ pauseMonitorMsg: "Ви дійсно хочете поставити на паузу?",
+ Settings: "Налаштування",
+ Dashboard: "Панель управління",
+ "New Update": "Оновлення",
+ Language: "Мова",
+ Appearance: "Зовнішній вигляд",
+ Theme: "Тема",
+ General: "Загальне",
+ Version: "Версія",
+ "Check Update On GitHub": "Перевірити оновлення на GitHub",
+ List: "Список",
+ Add: "Додати",
+ "Add New Monitor": "Новий монітор",
+ "Quick Stats": "Статистика",
+ Up: "Доступний",
+ Down: "Недоступний",
+ Pending: "Очікування",
+ Unknown: "Невідомо",
+ Pause: "Пауза",
+ Name: "Ім'я",
+ Status: "Статус",
+ DateTime: "Дата і час",
+ Message: "Повідомлення",
+ "No important events": "Важливих подій немає",
+ Resume: "Відновити",
+ Edit: "Змінити",
+ Delete: "Видалити",
+ Current: "Поточний",
+ Uptime: "Аптайм",
+ "Cert Exp.": "Сертифікат спливає",
+ days: "днів",
+ day: "день",
+ "-day": " днів",
+ hour: "година",
+ "-hour": " години",
+ Response: "Відповідь",
+ Ping: "Пінг",
+ "Monitor Type": "Тип монітора",
+ Keyword: "Ключове слово",
+ "Friendly Name": "Ім'я",
+ URL: "URL",
+ Hostname: "Ім'я хоста",
+ Port: "Порт",
+ "Heartbeat Interval": "Частота опитування",
+ Retries: "Спроб",
+ Advanced: "Додатково",
+ "Upside Down Mode": "Реверс статусу",
+ "Max. Redirects": "Макс. кількість перенаправлень",
+ "Accepted Status Codes": "Припустимі коди статусу",
+ Save: "Зберегти",
+ Notifications: "Повідомлення",
+ "Not available, please setup.": "Доступних сповіщень немає, необхідно створити.",
+ "Setup Notification": "Створити сповіщення",
+ Light: "Світла",
+ Dark: "Темна",
+ Auto: "Авто",
+ "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування",
+ Normal: "Звичайний",
+ Bottom: "Знизу",
+ None: "Відсутня",
+ Timezone: "Часовий пояс",
+ "Search Engine Visibility": "Індексація пошуковими системами:",
+ "Allow indexing": "Дозволити індексування",
+ "Discourage search engines from indexing site": "Заборонити індексування",
+ "Change Password": "Змінити пароль",
+ "Current Password": "Поточний пароль",
+ "New Password": "Новий пароль",
+ "Repeat New Password": "Повтор нового пароля",
+ "Update Password": "Оновити пароль",
+ "Disable Auth": "Вимкнути авторизацію",
+ "Enable Auth": "Увімкнути авторизацію",
+ Logout: "Вийти",
+ Leave: "Відміна",
+ "I understand, please disable": "Я розумію, все одно відключити",
+ Confirm: "Підтвердити",
+ Yes: "Так",
+ No: "Ні",
+ Username: "Логін",
+ Password: "Пароль",
+ "Remember me": "Запам'ятати мене",
+ Login: "Вхід до системи",
+ "No Monitors, please": "Моніторів немає, будь ласка",
+ "No Monitors": "Монітори відсутні",
+ "add one": "створіть новий",
+ "Notification Type": "Тип повідомлення",
+ Email: "Пошта",
+ Test: "Перевірка",
+ "Certificate Info": "Інформація про сертифікат",
+ "Resolver Server": "DNS сервер",
+ "Resource Record Type": "Тип ресурсного запису",
+ "Last Result": "Останній результат",
+ "Create your admin account": "Створіть обліковий запис адміністратора",
+ "Repeat Password": "Повторіть пароль",
+ respTime: "Час відповіді (мс)",
+ notAvailableShort: "Н/д",
+ Create: "Створити",
+ clearEventsMsg: "Ви дійсно хочете видалити всю статистику подій цього монітора?",
+ clearHeartbeatsMsg: "Ви дійсно хочете видалити всю статистику опитувань цього монітора?",
+ confirmClearStatisticsMsg: "Ви дійсно хочете видалити ВСЮ статистику?",
+ "Clear Data": "Видалити статистику",
+ Events: "Події",
+ Heartbeats: "Опитування",
+ "Auto Get": "Авто-отримання",
+ enableDefaultNotificationDescription: "Для кожного нового монітора це повідомлення буде включено за замовчуванням. Ви все ще можете відключити повідомлення в кожному моніторі окремо.",
+ "Default enabled": "Використовувати за промовчанням",
+ "Also apply to existing monitors": "Застосувати до існуючих моніторів",
+ Export: "Експорт",
+ Import: "Імпорт",
+ backupDescription: "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу",
+ backupDescription2: "P.S.: Історія та події збережені не будуть",
+ backupDescription3: "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці",
+ alertNoFile: "Виберіть файл для імпорту.",
+ alertWrongFileType: "Виберіть JSON-файл.",
+ twoFAVerifyLabel: "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA",
+ tokenValidSettingsMsg: "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.",
+ confirmEnableTwoFAMsg: "Ви дійсно хочете увімкнути 2FA?",
+ confirmDisableTwoFAMsg: "Ви дійсно хочете вимкнути 2FA?",
+ "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів",
+ "Verify Token": "Перевірити токен",
+ "Setup 2FA": "Налаштування 2FA",
+ "Enable 2FA": "Увімкнути 2FA",
+ "Disable 2FA": "Вимкнути 2FA",
+ "2FA Settings": "Налаштування 2FA",
+ "Two Factor Authentication": "Двофакторна аутентифікація",
+ Active: "Активно",
+ Inactive: "Неактивно",
+ Token: "Токен",
+ "Show URI": "Показати URI",
+ "Clear all statistics": "Очистити статистику",
+ retryCheckEverySecond: "Повтор кожні {0} секунд",
+ importHandleDescription: "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.",
+ confirmImportMsg: "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.",
+ "Heartbeat Retry Interval": "Інтервал повтору опитування",
+ "Import Backup": "Імпорт",
+ "Export Backup": "Експорт",
+ "Skip existing": "Пропустити існуючі",
+ Overwrite: "Перезаписати",
+ Options: "Опції",
+ "Keep both": "Не перевіряти",
+ Tags: "Теги",
+ "Add New below or Select...": "Додати новий або вибрати...",
+ "Tag with this name already exist.": "Такий тег вже існує.",
+ "Tag with this value already exist.": "Тег із таким значенням вже існує.",
+ color: "колір",
+ "value (optional)": "значення (опціонально)",
+ Gray: "Сірий",
+ Red: "Червоний",
+ Orange: "Помаранчевий",
+ Green: "Зелений",
+ Blue: "Синій",
+ Indigo: "Індиго",
+ Purple: "Пурпурний",
+ Pink: "Рожевий",
+ "Search...": "Пошук...",
+ "Avg. Ping": "Середнє значення пінгу",
+ "Avg. Response": "Середній час відповіді",
+ "Entry Page": "Головна сторінка",
+ statusPageNothing: "Тут порожньо. Додайте групу або монітор.",
+ "No Services": "Немає сервісів",
+ "All Systems Operational": "Всі системи працюють у штатному режимі",
+ "Partially Degraded Service": "Сервіси працюють частково",
+ "Degraded Service": "Всі сервіси не працюють",
+ "Add Group": "Додати групу",
+ "Add a monitor": "Додати монітор",
+ "Edit Status Page": "Редагувати",
+ "Go to Dashboard": "Панель управління",
+ "Status Page": "Сторінка статусу",
+ "Status Pages": "Сторінки статусу",
+ Discard: "Скасування",
+ "Create Incident": "Створити інцидент",
+ "Switch to Dark Theme": "Темна тема",
+ "Switch to Light Theme": "Світла тема",
+ telegram: "Telegram",
+ webhook: "Вебхук",
+ smtp: "Email (SMTP)",
+ discord: "Discord",
+ teams: "Microsoft Teams",
+ signal: "Signal",
+ gotify: "Gotify",
+ slack: "Slack",
+ "rocket.chat": "Rocket.chat",
+ pushover: "Pushover",
+ pushy: "Pushy",
+ octopush: "Octopush",
+ promosms: "PromoSMS",
+ lunasea: "LunaSea",
+ apprise: "Apprise (Підтримка 50+ сервісів повідомлень)",
+ pushbullet: "Pushbullet",
+ line: "Line Messenger",
+ mattermost: "Mattermost",
+ "Primary Base URL": "Основна URL",
+ "Push URL": "URL пуша",
+ needPushEvery: "До цієї URL необхідно звертатися кожні {0} секунд",
+ pushOptionalParams: "Опціональні параметри: {0}",
+ defaultNotificationName: "Моє повідомлення {notification} ({number})",
+ here: "тут",
+ Required: "Потрібно",
+ "Bot Token": "Токен бота",
+ wayToGetTelegramToken: "Ви можете взяти токен тут - {0}.",
+ "Chat ID": "ID чату",
+ supportTelegramChatID: "Підтримуються ID чатів, груп та каналів",
+ wayToGetTelegramChatID: "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:",
+ "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ",
+ chatIDNotFound: "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту",
+ "Post URL": "Post URL",
+ "Content Type": "Тип контенту",
+ webhookJsonDesc: "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js",
+ webhookFormDataDesc: "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}",
+ secureOptionNone: "Ні / STARTTLS (25, 587)",
+ secureOptionTLS: "TLS (465)",
+ "Ignore TLS Error": "Ігнорувати помилки TLS",
+ "From Email": "Від кого",
+ emailCustomSubject: "Своя тема",
+ "To Email": "Кому",
+ smtpCC: "Копія",
+ smtpBCC: "Прихована копія",
+ "Discord Webhook URL": "Discord Вебхук URL",
+ wayToGetDiscordURL: "Ви можете створити його в Параметрах сервера -> Інтеграції -> Створити вебхук",
+ "Bot Display Name": "Ім'я бота, що відображається",
+ "Prefix Custom Message": "Свій префікс повідомлення",
+ "Hello @everyone is...": "Привіт {'@'}everyone це...",
+ "Webhook URL": "URL вебхука",
+ wayToGetTeamsURL: "Як створити URL вебхука ви можете дізнатися тут - {0}.",
+ Номер: "Номер",
+ Recipients: "Одержувачі",
+ needSignalAPI: "Вам необхідний клієнт Signal із підтримкою REST API.",
+ wayToCheckSignalURL: "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:",
+ signalImportant: "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!",
+ "Application Token": "Токен програми",
+ "Server URL": "URL сервера",
+ Priority: "Пріоритет",
+ "Icon Emoji": "Іконка Emoji",
+ "Channel Name": "Ім'я каналу",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ aboutWebhooks: "Більше інформації про вебхуки: {0}",
+ aboutChannelName: "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel",
+ aboutKumaURL: "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.",
+ emojiCheatSheet: "Шпаргалка по Emoji: {0}",
+ "User Key": "Ключ користувача",
+ Device: "Пристрій",
+ "Message Title": "Заголовок повідомлення",
+ "Notification Sound": "Звук повідомлення",
+ "More info on:": "Більше інформації: {0}",
+ pushoverDesc1: "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.",
+ pushoverDesc2: "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.",
+ "SMS Type": "Тип SMS",
+ octopushTypePremium: "Преміум (Швидкий - рекомендується для алертів)",
+ octopushTypeLowCost: "Дешевий (Повільний - іноді блокується операторами)",
+ checkPrice: "Тарифи {0}:",
+ octopushLegacyHint: "Ви використовуєте стару версію Octopush (2011-2020) або нову?",
+ "Check octopush prices": "Тарифи Octopush {0}.",
+ octopushPhoneNumber: "Номер телефону (між. формат, наприклад: +380123456789)",
+ octopushSMSSender: "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID пристрою LunaSea",
+ "Apprise URL": "Apprise URL",
+ "Example:": "Приклад: {0}",
+ "Read more:": "Докладніше: {0}",
+ "Status:": "Статус: {0}",
+ "Read more": "Докладніше",
+ appriseInstalled: "Apprise встановлено.",
+ appriseNotInstalled: "Apprise не встановлено. {0}",
+ "Access Token": "Токен доступу",
+ "Channel access token": "Токен доступу каналу",
+ "Line Developers Console": "Консоль розробників Line",
+ lineDevConsoleTo: "Консоль розробників Line - {0}",
+ "Basic Settings": "Базові налаштування",
+ "User ID": "ID користувача",
+ "Messaging API": "API повідомлень",
+ wayToGetLineChannelToken: "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.",
+ "Icon URL": "URL іконки",
+ aboutIconURL: "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.",
+ aboutMattermostChannelName: "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel",
+ matrix: "Matrix",
+ promosmsTypeEco: "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.",
+ promosmsTypeFlash: "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.",
+ promosmsTypeFull: "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.",
+ promosmsTypeSpeed: "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).",
+ promosmsPhoneNumber: "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)",
+ promosmsSMSSender: "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "Feishu WebHookURL": "Feishu WebHookURL",
+ matrixHomeserverURL: "URL сервера (разом з http(s):// і опціонально порт)",
+ "Internal Room Id": "Внутрішній ID кімнати",
+ matrixDesc1: "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.",
+ matrixDesc2: "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}",
+ Method: "Метод",
+ Body: "Тіло",
+ Headers: "Заголовки",
+ PushUrl: "URL пуша",
+ HeadersInvalidFormat: "Заголовки запиту некоректні JSON: ",
+ BodyInvalidFormat: "Тіло запиту некоректне JSON: ",
+ "Monitor History": "Статистика",
+ clearDataOlderThan: "Зберігати статистику за {0} днів.",
+ PasswordsDoNotMatch: "Паролі не співпадають.",
+ records: "записів",
+ "One record": "Один запис",
+ steamApiKeyDescription: "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ",
+ "Certificate Chain": "Ланцюжок сертифікатів",
+ Valid: "Дійсний",
+ "Hide Tags": "Приховати теги",
+ Title: "Назва інциденту:",
+ Content: "Зміст інциденту:",
+ Post: "Опублікувати",
+ Cancel: "Скасувати",
+ Created: "Створено",
+ Unpin: "Відкріпити",
+ "Show Tags": "Показати теги",
+ recent: "Зараз",
+ "3h": "3 години",
+ "6h": "6 годин",
+ "24h": "24 години",
+ "1w": "1 тиждень",
+ "No monitors available.": "Немає доступних моніторів",
+ "Add one": "Додати новий",
+ Backup: "Резервна копія",
+ Security: "Безпека",
+ "Shrink Database": "Стиснути базу даних",
+ "Current User": "Поточний користувач",
+ About: "Про програму",
+ Description: "Опис",
+ "Powered by": "Працює на основі скрипту від",
+ shrinkDatabaseDescription: "Включає VACUUM для бази даних SQLite. Якщо база даних була створена на версії 1.10.0 і більше, AUTO_VACUUM вже включений і ця дія не потрібна.",
+ Style: "Стиль",
+ info: "ІНФО",
+ warning: "УВАГА",
+ danger: "ПОМИЛКА",
+ primary: "ОСНОВНИЙ",
+ light: "СВІТЛИЙ",
+ dark: "ТЕМНИЙ",
+ "New Status Page": "Нова сторінка статусу",
+ "Show update if available": "Показувати доступні оновлення",
+ "Also check beta release": "Перевіряти оновлення для бета версій",
+ "Add New Status Page": "Додати сторінку статусу",
+ Next: "Далі",
+ "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -",
+ "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9",
+ "No consecutive dashes --": "Заборонено використовувати тире --",
+ "HTTP Options": "HTTP Опції",
+ "Basic Auth": "HTTP Авторизація",
+ PushByTechulus: "Push by Techulus",
+ clicksendsms: "ClickSend SMS",
+ GoogleChat: "Google Chat (тільки Google Workspace)",
+ apiCredentials: "API реквізити",
+ Done: "Готово",
+ Info: "Інфо",
+ "Steam API Key": "Steam API-Ключ",
+ "Pick a RR-Type...": "Виберіть RR-тип...",
+ "Pick Accepted Status Codes...": "Виберіть прийняті коди стану...",
+ Default: "За замовчуванням",
+ "Please input title and content": "Будь ласка, введіть назву та зміст",
+ "Last Updated": "Останнє Оновлення",
+ "Untitled Group": "Група без назви",
+ Services: "Сервіси",
+ serwersms: "SerwerSMS.pl",
+ serwersmsAPIUser: "API Користувач (включаючи префікс webapi_)",
+ serwersmsAPIPassword: "API Пароль",
+ serwersmsPhoneNumber: "Номер телефону",
+ serwersmsSenderName: "SMS ім'я відправника (реєстрований через портал користувача)",
+ stackfield: "Stackfield",
+ smtpDkimSettings: "DKIM Налаштування",
+ smtpDkimDesc: "Повернутися до Nodemailer DKIM {0} для використання.",
+ documentation: "документація",
+ smtpDkimDomain: "Ім'я домена",
+ smtpDkimKeySelector: "Ключ",
+ smtpDkimPrivateKey: "Приватний ключ",
+ smtpDkimHashAlgo: "Алгоритм хеша (опціонально)",
+ smtpDkimheaderFieldNames: "Заголовок ключів для підпису (опціонально)",
+ smtpDkimskipFields: "Заколовок ключів не для підпису (опціонально)",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "Кінцева точка API",
+ alertaEnvironment: "Середовище",
+ alertaApiKey: "Ключ API",
+ alertaAlertState: "Стан алерту",
+ alertaRecoverState: "Стан відновлення",
+ deleteStatusPageMsg: "Дійсно хочете видалити цю сторінку статусів?",
+};
diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js
index 1f2439b05..5bed47006 100644
--- a/src/languages/zh-CN.js
+++ b/src/languages/zh-CN.js
@@ -88,8 +88,8 @@ export default {
Dark: "黑暗",
Auto: "自动",
"Theme - Heartbeat Bar": "主题 - 心跳栏",
- Normal: "正常显示",
- Bottom: "靠下显示",
+ Normal: "正常", // 此处还供 Gorush 的通知优先级功能使用,不应翻译为“正常显示”
+ Bottom: "靠下",
None: "不显示",
Timezone: "时区",
"Search Engine Visibility": "搜索引擎可见性",
@@ -373,4 +373,80 @@ export default {
"For safety, must use secret key": "出于安全考虑,必须使用加签密钥",
WeCom: "企业微信群机器人",
"WeCom Bot Key": "企业微信群机器人 Key",
+ PushByTechulus: "Push by Techulus",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "API 接入点",
+ alertaEnvironment: "环境参数",
+ alertaApiKey: "API Key",
+ alertaAlertState: "报警时的严重性",
+ alertaRecoverState: "恢复后的严重性",
+ deleteStatusPageMsg: "您确认要删除此状态页吗?",
+ Proxies: "代理",
+ default: "默认",
+ enabled: "启用",
+ setAsDefault: "设为默认",
+ deleteProxyMsg: "您确认要在所有监控项中删除此代理吗?",
+ proxyDescription: "代理必须配置到至少一个监控项后才会工作。",
+ enableProxyDescription: "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。",
+ setAsDefaultProxyDescription: "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。",
+ "Proxy Protocol": "代理协议",
+ "Proxy Server": "代理服务器",
+ "Server Address": "服务器地址",
+ "Certificate Chain": "证书链",
+ Valid: "有效",
+ Invalid: "无效",
+ AccessKeyId: "AccessKey ID",
+ SecretAccessKey: "AccessKey Secret",
+ /* 以下为阿里云短信服务 API Dysms#SendSms 的参数 */
+ PhoneNumbers: "PhoneNumbers",
+ TemplateCode: "TemplateCode",
+ SignName: "SignName",
+ /* 以上为阿里云短信服务 API Dysms#SendSms 的参数 */
+ "Bark Endpoint": "Bark 接入点",
+ "Device Token": "Apple Device Token",
+ Platform: "平台",
+ iOS: "iOS",
+ Android: "Android",
+ Huawei: "华为",
+ High: "高",
+ Retry: "重试次数",
+ Topic: "Gorush Topic",
+ "Setup Proxy": "设置代理",
+ "Proxy server has authentication": "代理服务器启用了身份验证功能",
+ User: "用户名",
+ Installed: "已安装",
+ "Not installed": "未安装",
+ Running: "运行中",
+ "Not running": "未运行",
+ "Message:": "信息:",
+ wayToGetCloudflaredURL: "(可从 {0} 下载 cloudflared)",
+ cloudflareWebsite: "Cloudflare 网站",
+ "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:",
+ "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 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。",
+ "Other Software": "其他软件",
+ "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。",
+ "Please read": "请阅读",
+ "Remove Token": "移除 Token",
+ Start: "启动",
+ Stop: "停止",
+ "Uptime Kuma": "Uptime Kuma",
+ "Add New Status Page": "添加新的状态页",
+ Slug: "路径",
+ "Accept characters:": "可接受的字符:",
+ "startOrEndWithOnly": "开头和结尾必须为 {0}",
+ "No consecutive dashes": "不能有连续的破折号",
+ Next: "下一步",
+ "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。",
+ "No Proxy": "无代理",
+ "HTTP Basic Auth": "HTTP 基础身份验证",
+ "New Status Page": "新的状态页",
+ "Page Not Found": "状态页未找到",
+ "Reverse Proxy": "反向代理",
+ "Subject:": "颁发给:",
+ "Valid To:": "有效期至:",
+ "Days Remaining:": "剩余有效天数:",
+ "Issuer:": "颁发者:",
+ "Fingerprint:": "指纹:",
+ "No status pages": "无状态页",
};
diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js
index 4def65d37..0c282f372 100644
--- a/src/languages/zh-HK.js
+++ b/src/languages/zh-HK.js
@@ -200,4 +200,182 @@ export default {
line: "Line Messenger",
mattermost: "Mattermost",
deleteStatusPageMsg: "是否確定刪除這個 Status Page?",
+ "Push URL": "推送網址",
+ needPushEvery: "您應每 {0} 秒呼叫此網址。",
+ pushOptionalParams: "選填參數:{0}",
+ defaultNotificationName: "我的 {notification} 通知 ({number})",
+ here: "此處",
+ Required: "必填",
+ "Bot Token": "機器人權杖",
+ wayToGetTelegramToken: "您可以從 {0} 取得 Token。",
+ "Chat ID": "聊天 ID",
+ supportTelegramChatID: "支援 對話/群組/頻道的聊天 ID",
+ wayToGetTelegramChatID: "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:",
+ "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖",
+ chatIDNotFound: "找不到 Chat ID;請先傳送訊息給機器人",
+ "Post URL": "Post 網址",
+ "Content Type": "Content Type",
+ webhookJsonDesc: "{0} 適合任何現代的 HTTP 伺服器,如 Express.js",
+ webhookFormDataDesc: "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。",
+ secureOptionNone: "無 / STARTTLS (25, 587)",
+ secureOptionTLS: "TLS (465)",
+ "Ignore TLS Error": "忽略 TLS 錯誤",
+ "From Email": "寄件人",
+ emailCustomSubject: "自訂主旨",
+ "To Email": "收件人",
+ smtpCC: "CC",
+ smtpBCC: "BCC",
+ "Discord Webhook URL": "Discord Webhook 網址",
+ wayToGetDiscordURL: "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得",
+ "Bot Display Name": "機器人顯示名稱",
+ "Prefix Custom Message": "前綴自訂訊息",
+ "Webhook URL": "Webhook 網址",
+ wayToGetTeamsURL: "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。",
+ Number: "號碼",
+ Recipients: "收件人",
+ needSignalAPI: "您需要有 REST API 的 Signal 客戶端。",
+ wayToCheckSignalURL: "您可以前往下列網址以了解如何設定:",
+ signalImportant: "注意: 不得混合收件人的群組和號碼!",
+ "Application Token": "應用程式權杖",
+ "Server URL": "伺服器網址",
+ Priority: "優先度",
+ "Icon Emoji": "Emoji 圖示",
+ "Channel Name": "頻道名稱",
+ "Uptime Kuma URL": "Uptime Kuma 網址",
+ aboutWebhooks: "更多關於 Webhook 的資訊: {0}",
+ aboutChannelName: "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道",
+ aboutKumaURL: "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。",
+ emojiCheatSheet: "Emoji 一覽表: {0}",
+ PushByTechulus: "Push by Techulus",
+ clicksendsms: "ClickSend SMS",
+ GoogleChat: "Google Chat (僅限 Google Workspace)",
+ "User Key": "使用者金鑰",
+ Device: "裝置",
+ "Message Title": "訊息標題",
+ "Notification Sound": "通知音效",
+ "More info on:": "更多資訊: {0}",
+ pushoverDesc1: "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。",
+ pushoverDesc2: "如果您想要傳送通知到不同裝置,請填寫裝置欄位。",
+ "SMS Type": "簡訊類型",
+ octopushTypePremium: "Premium (快速 - 建議用於警報)",
+ octopushTypeLowCost: "Low Cost (緩慢 - 有時會被營運商阻擋)",
+ checkPrice: "查看 {0} 價格:",
+ apiCredentials: "API 認證",
+ octopushLegacyHint: "您使用的是舊版的 Octopush (2011-2020) 還是新版?",
+ "Check octopush prices": "查看 octopush 價格 {0}。",
+ octopushPhoneNumber: "電話號碼 (intl 格式,例如:+33612345678) ",
+ octopushSMSSender: "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea 裝置 ID",
+ "Apprise URL": "Apprise 網址",
+ "Example:": "範例:{0}",
+ "Read more:": "深入瞭解:{0}",
+ "Status:": "狀態:{0}",
+ "Read more": "深入瞭解",
+ appriseInstalled: "已安裝 Apprise。",
+ appriseNotInstalled: "尚未安裝 Apprise。{0}",
+ "Access Token": "存取權杖",
+ "Channel access token": "頻道存取權杖",
+ "Line Developers Console": "Line 開發者控制台",
+ lineDevConsoleTo: "Line 開發者控制台 - {0}",
+ "Basic Settings": "基本設定",
+ "User ID": "使用者 ID",
+ "Messaging API": "Messaging API",
+ wayToGetLineChannelToken: "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
+ "Icon URL": "圖示網址",
+ aboutIconURL: "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
+ aboutMattermostChannelName: "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道",
+ matrix: "Matrix",
+ promosmsTypeEco: "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件人。",
+ promosmsTypeFlash: "SMS FLASH - 訊息會自動在收件人的裝置上顯示。僅限位於波蘭的收件人。",
+ promosmsTypeFull: "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。",
+ promosmsTypeSpeed: "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。",
+ promosmsPhoneNumber: "電話號碼 (若收件人位於波蘭則無需輸入區域代碼)",
+ promosmsSMSSender: "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
+ "Feishu WebHookUrl": "飛書 WebHook 網址",
+ matrixHomeserverURL: "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
+ "Internal Room Id": "Internal Room ID",
+ matrixDesc1: "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
+ matrixDesc2: "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
+ Method: "方法",
+ Body: "主體",
+ Headers: "標頭",
+ PushUrl: "Push URL",
+ HeadersInvalidFormat: "要求標頭不是有效的 JSON:",
+ BodyInvalidFormat: "請求主體不是有效的 JSON:",
+ "Monitor History": "監測器歷史紀錄",
+ clearDataOlderThan: "保留 {0} 天內的監測器歷史紀錄。",
+ PasswordsDoNotMatch: "密碼不相符。",
+ records: "記錄",
+ "One record": "一項記錄",
+ "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項",
+ steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:",
+ "Current User": "目前使用者",
+ recent: "最近",
+ Done: "完成",
+ Info: "資訊",
+ Security: "安全性",
+ "Steam API Key": "Steam API 金鑰",
+ "Shrink Database": "壓縮資料庫",
+ "Pick a RR-Type...": "選擇資源記錄類型...",
+ "Pick Accepted Status Codes...": "選擇可接受的狀態碼...",
+ Default: "預設",
+ "HTTP Options": "HTTP 選項",
+ "Create Incident": "建立事件",
+ Title: "標題",
+ Content: "內容",
+ Style: "樣式",
+ info: "資訊",
+ warning: "警告",
+ danger: "危險",
+ primary: "主要",
+ light: "淺色",
+ dark: "暗色",
+ Post: "發佈",
+ "Please input title and content": "請輸入標題及內容",
+ Created: "建立",
+ "Last Updated": "最後更新",
+ Unpin: "取消釘選",
+ "Switch to Light Theme": "切換至淺色佈景主題",
+ "Switch to Dark Theme": "切換至深色佈景主題",
+ "Show Tags": "顯示標籤",
+ "Hide Tags": "隱藏標籤",
+ Description: "描述",
+ "No monitors available.": "沒有可用的監測器。",
+ "Add one": "新增一個",
+ "No Monitors": "無監測器",
+ "Untitled Group": "未命名群組",
+ Services: "服務",
+ Discard: "捨棄",
+ Cancel: "取消",
+ shrinkDatabaseDescription: "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
+ serwersms: "SerwerSMS.pl",
+ serwersmsAPIUser: "API 使用者名稱 (包括 webapi_ 前綴)",
+ serwersmsAPIPassword: "API 密碼",
+ serwersmsPhoneNumber: "電話號碼",
+ serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
+ stackfield: "Stackfield",
+ smtpDkimSettings: "DKIM 設定",
+ smtpDkimDesc: "請參考 Nodemailer DKIM {0} 使用方式。",
+ documentation: "文件",
+ smtpDkimDomain: "網域名稱",
+ smtpDkimKeySelector: "DKIM 選取器",
+ smtpDkimPrivateKey: "私密金鑰",
+ smtpDkimHashAlgo: "雜湊演算法 (選填)",
+ smtpDkimheaderFieldNames: "要簽署的郵件標頭 (選填)",
+ smtpDkimskipFields: "不簽署的郵件標頭 (選填)",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "API Endpoint",
+ alertaEnvironment: "環境",
+ alertaApiKey: "API 金鑰",
+ alertaAlertState: "警示狀態",
+ alertaRecoverState: "恢復狀態",
+ Proxies: "代理伺服器",
+ default: "預設",
+ enabled: "啟用",
+ setAsDefault: "設為預設",
+ deleteProxyMsg: "您確定要為所有監測器刪除此代理伺服器嗎?",
+ proxyDescription: "必須將代理伺服器指派給監測器才能運作。",
+ enableProxyDescription: "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。",
+ setAsDefaultProxyDescription: "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。",
};
diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js
index ec730b0f2..0b5b5adda 100644
--- a/src/languages/zh-TW.js
+++ b/src/languages/zh-TW.js
@@ -239,11 +239,13 @@ export default {
"rocket.chat": "Rocket.Chat",
pushover: "Pushover",
pushy: "Pushy",
+ PushByTechulus: "Push by Techulus",
octopush: "Octopush",
promosms: "PromoSMS",
clicksendsms: "ClickSend SMS",
lunasea: "LunaSea",
apprise: "Apprise (支援 50 種以上的通知服務)",
+ GoogleChat: "Google Chat (僅限 Google Workspace)",
pushbullet: "Pushbullet",
line: "Line Messenger",
mattermost: "Mattermost",
@@ -352,5 +354,30 @@ export default {
serwersmsAPIPassword: "API 密碼",
serwersmsPhoneNumber: "電話號碼",
serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
- "stackfield": "Stackfield",
+ stackfield: "Stackfield",
+ smtpDkimSettings: "DKIM 設定",
+ smtpDkimDesc: "請參考 Nodemailer DKIM {0} 使用方式。",
+ documentation: "文件",
+ smtpDkimDomain: "網域名稱",
+ smtpDkimKeySelector: "DKIM 選取器",
+ smtpDkimPrivateKey: "私密金鑰",
+ smtpDkimHashAlgo: "雜湊演算法 (選填)",
+ smtpDkimheaderFieldNames: "要簽署的郵件標頭 (選填)",
+ smtpDkimskipFields: "不簽署的郵件標頭 (選填)",
+ gorush: "Gorush",
+ alerta: "Alerta",
+ alertaApiEndpoint: "API Endpoint",
+ alertaEnvironment: "環境",
+ alertaApiKey: "API 金鑰",
+ alertaAlertState: "警示狀態",
+ alertaRecoverState: "恢復狀態",
+ deleteStatusPageMsg: "您確定要刪除此狀態頁嗎?",
+ Proxies: "代理伺服器",
+ default: "預設",
+ enabled: "啟用",
+ setAsDefault: "設為預設",
+ deleteProxyMsg: "您確定要為所有監測器刪除此代理伺服器嗎?",
+ proxyDescription: "必須將代理伺服器指派給監測器才能運作。",
+ enableProxyDescription: "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。",
+ setAsDefaultProxyDescription: "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。",
};
diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue
index 09c8b7db3..524fd8f2c 100644
--- a/src/layouts/Layout.vue
+++ b/src/layouts/Layout.vue
@@ -48,7 +48,7 @@
-
+
@@ -189,6 +189,7 @@ main {
color: white;
position: fixed;
width: 100%;
+ z-index: 99999;
}
.dark {
diff --git a/src/mixins/socket.js b/src/mixins/socket.js
index 7d1bbea51..0f9846d48 100644
--- a/src/mixins/socket.js
+++ b/src/mixins/socket.js
@@ -40,8 +40,17 @@ export default {
notificationList: [],
statusPageListLoaded: false,
statusPageList: [],
+ proxyList: [],
connectionErrorMsg: "Cannot connect to the socket server. Reconnecting...",
showReverseProxyGuide: true,
+ cloudflared: {
+ cloudflareTunnelToken: "",
+ installed: null,
+ running: false,
+ message: "",
+ errorMessage: "",
+ currentPassword: "",
+ }
};
},
@@ -120,6 +129,16 @@ export default {
this.statusPageList = data;
});
+ socket.on("proxyList", (data) => {
+ this.proxyList = data.map(item => {
+ item.auth = !!item.auth;
+ item.active = !!item.active;
+ item.default = !!item.default;
+
+ return item;
+ });
+ });
+
socket.on("heartbeat", (data) => {
if (! (data.monitorID in this.heartbeatList)) {
this.heartbeatList[data.monitorID] = [];
@@ -231,6 +250,12 @@ export default {
this.socket.firstConnect = false;
});
+ // cloudflared
+ socket.on("cloudflared_installed", (res) => this.cloudflared.installed = res);
+ socket.on("cloudflared_running", (res) => this.cloudflared.running = res);
+ socket.on("cloudflared_message", (res) => this.cloudflared.message = res);
+ socket.on("cloudflared_errorMessage", (res) => this.cloudflared.errorMessage = res);
+ socket.on("cloudflared_token", (res) => this.cloudflared.cloudflareTunnelToken = res);
},
storage() {
diff --git a/src/mixins/theme.js b/src/mixins/theme.js
index fc593eb0d..21ebd0916 100644
--- a/src/mixins/theme.js
+++ b/src/mixins/theme.js
@@ -6,6 +6,7 @@ export default {
userTheme: localStorage.theme,
userHeartbeatBar: localStorage.heartbeatBarTheme,
statusPageTheme: "light",
+ forceStatusPageTheme: false,
path: "",
};
},
@@ -27,6 +28,10 @@ export default {
computed: {
theme() {
+ // As entry can be status page now, set forceStatusPageTheme to true to use status page theme
+ if (this.forceStatusPageTheme) {
+ return this.statusPageTheme;
+ }
// Entry no need dark
if (this.path === "") {
diff --git a/src/pages/AddStatusPage.vue b/src/pages/AddStatusPage.vue
index 59c21ee95..e0200177e 100644
--- a/src/pages/AddStatusPage.vue
+++ b/src/pages/AddStatusPage.vue
@@ -21,7 +21,9 @@