diff --git a/README.md b/README.md index 45a1a338f..bb6589c43 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,17 @@ It is a self-hosted monitoring tool like "Uptime Robot". +## 🥔 Live Demo + +Try it! + +https://demo.uptime.kuma.pet + +It is a 5 minutes live demo, all data will be deleted after that. The server is located at Tokyo, if you live far away from here, it may affact your experience. I suggest that you should install to try it. + +VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollective.com/uptime-kuma)! Thank you so much! + + ## ⭐ Features * Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record. @@ -66,6 +77,10 @@ I will mark requests/issues to the next milestone. https://github.com/louislam/uptime-kuma/milestones +Project Plan: + +https://github.com/louislam/uptime-kuma/projects/1 + ## 🖼 More Screenshots Dark Mode: diff --git a/db/demo_kuma.db b/db/demo_kuma.db new file mode 100644 index 000000000..2042fcf2f Binary files /dev/null and b/db/demo_kuma.db differ diff --git a/package.json b/package.json index f279351ec..f503bbf57 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,6 @@ "dev": "vite --host", "start": "npm run start-server", "start-server": "node server/server.js", - "start-demo-server": "set NODE_ENV=demo && node server/server.js", - "update": "", "build": "vite build", "vite-preview-dist": "vite preview --host", "build-docker": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.5.2 --target release . --push", @@ -54,19 +52,19 @@ "express": "^4.17.1", "express-basic-auth": "^1.2.0", "form-data": "^4.0.0", - "http-graceful-shutdown": "^3.1.3", + "http-graceful-shutdown": "^3.1.4", "jsonwebtoken": "^8.5.1", "nodemailer": "^6.6.3", "password-hash": "^1.2.2", "prom-client": "^13.2.0", "prometheus-api-metrics": "^3.2.0", "redbean-node": "0.1.2", - "socket.io": "^4.1.3", - "socket.io-client": "^4.1.3", + "socket.io": "^4.2.0", + "socket.io-client": "^4.2.0", "sqlite3": "github:mapbox/node-sqlite3#593c9d", "tcp-ping": "^0.1.1", "v-pagination-3": "^0.1.6", - "vue": "^3.2.2", + "vue": "^3.2.6", "vue-chart-3": "^0.5.7", "vue-confirm-dialog": "^1.0.2", "vue-i18n": "^9.1.7", @@ -76,18 +74,18 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.15.0", - "@types/bootstrap": "^5.1.1", - "@vitejs/plugin-legacy": "^1.5.1", - "@vitejs/plugin-vue": "^1.4.0", - "@vue/compiler-sfc": "^3.2.2", - "core-js": "^3.16.1", + "@types/bootstrap": "^5.1.2", + "@vitejs/plugin-legacy": "^1.5.2", + "@vitejs/plugin-vue": "^1.6.0", + "@vue/compiler-sfc": "^3.2.6", + "core-js": "^3.17.0", "dns2": "^2.0.1", "eslint": "^7.32.0", - "eslint-plugin-vue": "^7.16.0", - "sass": "^1.37.5", + "eslint-plugin-vue": "^7.17.0", + "sass": "^1.38.2", "stylelint": "^13.13.1", "stylelint-config-standard": "^22.0.0", - "typescript": "^4.3.5", - "vite": "^2.4.4" + "typescript": "^4.4.2", + "vite": "^2.5.3" } } diff --git a/server/database.js b/server/database.js index c0a53a9b8..77c4da758 100644 --- a/server/database.js +++ b/server/database.js @@ -5,7 +5,8 @@ const { setSetting, setting } = require("./util-server"); class Database { static templatePath = "./db/kuma.db" - static path = "./data/kuma.db"; + static dataDir; + static path; static latestVersion = 8; static noReject = true; static sqliteInstance = null; @@ -56,7 +57,7 @@ class Database { console.info("Database patch is needed") console.info("Backup the db") - const backupPath = "./data/kuma.db.bak" + version; + const backupPath = this.dataDir + "kuma.db.bak" + version; fs.copyFileSync(Database.path, backupPath); const shmPath = Database.path + "-shm"; diff --git a/server/server.js b/server/server.js index e1f24ae1f..7dd78bfa8 100644 --- a/server/server.js +++ b/server/server.js @@ -6,6 +6,7 @@ const { sleep, debug, TimeLogger, getRandomInt } = require("../src/util"); console.log("Importing Node libraries") const fs = require("fs"); const http = require("http"); +const https = require("https"); console.log("Importing 3rd-party libraries") debug("Importing express"); @@ -45,9 +46,41 @@ console.info("Version: " + checkVersion.version); const hostname = process.env.HOST || args.host; const port = parseInt(process.env.PORT || args.port || 3001); +// SSL +const sslKey = process.env.SSL_KEY || args["ssl-key"] || undefined; +const sslCert = process.env.SSL_CERT || args["ssl-cert"] || undefined; + +// Demo Mode? +const demoMode = args["demo"] || false; + +if (demoMode) { + console.log("==== Demo Mode ===="); +} + +// Data Directory (must be end with "/") +Database.dataDir = process.env.DATA_DIR || args["data-dir"] || "./data/"; +Database.path = Database.dataDir + "kuma.db"; +if (! fs.existsSync(Database.dataDir)) { + fs.mkdirSync(Database.dataDir, { recursive: true }); +} +console.log(`Data Dir: ${Database.dataDir}`); + console.log("Creating express and socket.io instance") const app = express(); -const server = http.createServer(app); + +let server; + +if (sslKey && sslCert) { + console.log("Server Type: HTTPS"); + server = https.createServer({ + key: fs.readFileSync(sslKey), + cert: fs.readFileSync(sslCert) + }, app); +} else { + console.log("Server Type: HTTP"); + server = http.createServer(app); +} + const io = new Server(server); app.use(express.json()) diff --git a/src/assets/app.scss b/src/assets/app.scss index 41248a5c4..1f75e97fc 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -71,6 +71,14 @@ h2 { } } +.btn-warning { + color: white; + + &:hover, &:active, &:focus, &.active { + color: white; + } +} + .btn-info { color: white; @@ -186,6 +194,14 @@ h2 { color: white; } + .btn-warning { + color: $dark-font-color2; + + &:hover, &:active, &:focus, &.active { + color: $dark-font-color2; + } + } + .btn-close { box-shadow: none; filter: invert(1); diff --git a/src/components/PingChart.vue b/src/components/PingChart.vue index 8f53ea766..0baa9881d 100644 --- a/src/components/PingChart.vue +++ b/src/components/PingChart.vue @@ -85,7 +85,7 @@ export default { y: { title: { display: true, - text: "Resp. Time (ms)", + text: this.$t("respTime"), }, offset: false, grid: { diff --git a/src/components/Uptime.vue b/src/components/Uptime.vue index b1f3a018e..a4bf22f68 100644 --- a/src/components/Uptime.vue +++ b/src/components/Uptime.vue @@ -22,7 +22,7 @@ export default { return Math.round(this.$root.uptimeList[key] * 10000) / 100 + "%"; } - return "N/A" + return this.$t("notAvailableShort") }, color() { diff --git a/src/languages/README.md b/src/languages/README.md index 1deeacd6f..894cb6eaf 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -4,7 +4,15 @@ 2. Create a language file. (e.g. `zh-TW.js`) The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm 3. `npm run update-language-files --base-lang=de-DE` 6. Your language file should be filled in. You can translate now. -7. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. +7. Translate `src/pages/Settings.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). +8. Import your language file in `src/main.js` and add it to `languageList` constant. +9. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. + + + +One of good examples: +https://github.com/louislam/uptime-kuma/pull/316/files + If you do not have programming skills, let me know in [Issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏 diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 245ba5ba7..713eecfe2 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -106,5 +106,7 @@ export default { pauseMonitorMsg: "Er du sikker på, at du vil pause Overvågeren?", "Create your admin account": "Opret din administratorkonto", "Repeat Password": "Gentag adgangskoden", - "Resource Record Type": "Resource Record Type" + "Resource Record Type": "Resource Record Type", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 0a0411dcb..aaeb0adaf 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -70,7 +70,7 @@ export default { Timezone: "Zeitzone", "Search Engine Visibility": "Suchmaschinensichtbarkeit", "Allow indexing": "Indizierung zulassen", - "Discourage search engines from indexing site": "Halte Suchmaschinen von der Indexierung der Site ab", + "Discourage search engines from indexing site": "Halte Suchmaschinen von der Indexierung der Seite ab", "Change Password": "Passwort ändern", "Current Password": "Dezeitiges Passwort", "New Password": "Neues Passwort", @@ -96,10 +96,10 @@ export default { Email: "E-Mail", Test: "Test", "Certificate Info": "Zertifikatsinfo", - keywordDescription: "Suche nach einen Schlüsselwort in einer schlichten HTML oder JSON Ausgabe. Bitte beachte, es wird in der Groß-/Kleinschreibung unterschieden.", + keywordDescription: "Suche nach einem Schlüsselwort in der HTML oder JSON Ausgabe. Bitte beachte, es wird in der Groß-/Kleinschreibung unterschieden.", deleteMonitorMsg: "Bist du sicher das du den Monitor löschen möchtest?", deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", - resoverserverDescription: "Cloudflare ist der Standardserver, dieser kann jederzeit geändern werden.", + resoverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", "Resolver Server": "Auflösungsserver", rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.", "Last Result": "Letztes Ergebnis", @@ -110,4 +110,6 @@ export default { "Import/Export Backup": "Import/Export Backup", "Export": "Export", "Import": "Import", + respTime: "Antw. Zeit (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/en.js b/src/languages/en.js index fbb70d7eb..0fa61170d 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -110,4 +110,6 @@ export default { "Import/Export Backup": "Import/Export Backup", "Export": "Export", "Import": "Import", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js new file mode 100644 index 000000000..96ce923ec --- /dev/null +++ b/src/languages/es-ES.js @@ -0,0 +1,112 @@ +export default { + languageName: "Español", + checkEverySecond: "Comprobar cada {0} segundos.", + "Avg.": "Media. ", + 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 asigne una notificación a el/los monitor(es) para hacerlos funcional(es).", + keywordDescription: "Palabra clave en HTML plano o respuesta JSON y es sensible a mayúsculas", + pauseDashboardHome: "Pausar", + deleteMonitorMsg: "¿Seguro que quieres eliminar este monitor?", + deleteNotificationMsg: "¿Seguro que quieres eliminar esta notificación para todos los monitores?", + resoverserverDescription: "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.", + rrtypeDescription: "Selecciona el tipo de registro que quieres monitorizar", + pauseMonitorMsg: "¿Seguro que quieres pausar?", + Settings: "Ajustes", + Dashboard: "Panel", + "New Update": "Vueva actualización", + Language: "Idioma", + Appearance: "Apariencia", + Theme: "Tema", + General: "General", + Version: "Versión", + "Check Update On GitHub": "Comprobar actualizaciones en GitHub", + List: "Lista", + Add: "Añadir", + "Add New Monitor": "Añadir nuevo monitor", + "Quick Stats": "Estadísticas rápidas", + Up: "Funcional", + Down: "Caído", + Pending: "Pendiente", + Unknown: "Desconociso", + Pause: "Pausa", + Name: "Nombre", + Status: "Estado", + DateTime: "Fecha y Hora", + Message: "Mensaje", + "No important events": "No hay eventos importantes", + Resume: "Reanudar", + Edit: "Editar", + Delete: "Eliminar", + Current: "Actual", + Uptime: "Tiempo activo", + "Cert Exp.": "Caducidad cert.", + days: "días", + day: "día", + "-day": "-día", + hour: "hora", + "-hour": "-hora", + Response: "Respuesta", + Ping: "Ping", + "Monitor Type": "Tipo de Monitor", + Keyword: "Palabra clave", + "Friendly Name": "Nombre sencillo", + URL: "URL", + Hostname: "Nombre del host", + Port: "Puerto", + "Heartbeat Interval": "Intervalo de latido", + Retries: "Reintentos", + Advanced: "Avanzado", + "Upside Down Mode": "Modo invertido", + "Max. Redirects": "Máx. redirecciones", + "Accepted Status Codes": "Códigos de estado aceptados", + Save: "Guardar", + Notifications: "Notificaciones", + "Not available, please setup.": "No disponible, por favor configurar.", + "Setup Notification": "Configurar notificación", + Light: "Claro", + Dark: "Oscuro", + Auto: "Auto", + "Theme - Heartbeat Bar": "Tema - Barra de intervalo de latido", + Normal: "Normal", + Bottom: "Abajo", + None: "Ninguno", + Timezone: "Zona horaria", + "Search Engine Visibility": "Visibilidad motor de búsqueda", + "Allow indexing": "Permitir indexación", + "Discourage search engines from indexing site": "Disuadir a los motores de búsqueda de indexar el sitio", + "Change Password": "Cambiar contraseña", + "Current Password": "Contraseña actual", + "New Password": "Nueva contraseña", + "Repeat New Password": "Repetir nueva contraseña", + "Update Password": "Actualizar contraseña", + "Disable Auth": "Deshabilitar Autenticación ", + "Enable Auth": "Habilitar Autenticación ", + Logout: "Cerrar sesión", + Leave: "Salir", + "I understand, please disable": "Lo comprendo, por favor deshabilitar", + Confirm: "Confirmar", + Yes: "Sí", + No: "No", + Username: "Usuario", + Password: "Contraseña", + "Remember me": "Recordarme", + Login: "Acceso", + "No Monitors, please": "Sin monitores, por favor", + "add one": "añade uno", + "Notification Type": "Tipo de notificación", + Email: "Email", + Test: "Test", + "Certificate Info": "Información del certificado ", + "Resolver Server": "Servidor de resolución", + "Resource Record Type": "Tipo de Registro", + "Last Result": "Último resultado", + "Create your admin account": "Crea tu cuenta de administrador", + "Repeat Password": "Repetir contraseña", + respTime: "Tiempo de resp. (ms)", + notAvailableShort: "N/A" +} diff --git a/src/languages/fr.js b/src/languages/fr.js index ac7aa8a54..e4f999dce 100644 --- a/src/languages/fr.js +++ b/src/languages/fr.js @@ -1,7 +1,7 @@ export default { languageName: "Français (France)", Settings: "Paramètres", - Dashboard: "Dashboard", + Dashboard: "Tableau de bord", "New Update": "Mise à jour disponible", Language: "Langue", Appearance: "Apparence", @@ -11,11 +11,11 @@ export default { "Check Update On GitHub": "Consulter les mises à jour sur Github", List: "Lister", Add: "Ajouter", - "Add New Monitor": "Ajouter un nouveau check", + "Add New Monitor": "Ajouter une nouvelle sonde", "Quick Stats": "Résumé", Up: "En ligne", Down: "Hors ligne", - Pending: "Dans la file d'attente", + Pending: "En attente", Unknown: "Inconnu", Pause: "En Pause", pauseDashboardHome: "Éléments mis en pause", @@ -29,60 +29,60 @@ export default { Delete: "Supprimer", Current: "Actuellement", Uptime: "Uptime", - "Cert Exp.": "Cert Exp.", + "Cert Exp.": "Certificat expiré", days: "Jours", day: "Jour", - "-day": "Demi-Journée", + "-day": "Journée", hour: "Heure", - "-hour": "Demi-Heure", + "-hour": "Heures", checkEverySecond: "Vérifier toutes les {0} secondes", - "Avg.": "Moy.", - Response: "Réponse", + "Avg.": "Moyen", + Response: "Temps de réponse", Ping: "Ping", - "Monitor Type": "Type de Monitoring", + "Monitor Type": "Type de Sonde", Keyword: "Mot-clé", "Friendly Name": "Nom d'affichage", URL: "URL", Hostname: "Nom d'hôte", Port: "Port", - "Heartbeat Interval": "Intervale de vérifications", + "Heartbeat Interval": "Intervale de vérification", Retries: "Essais", retriesDescription: "Nombre d'essais avant que le service soit déclaré hors-ligne.", Advanced: "Avancé", ignoreTLSError: "Ignorer les erreurs liées au certificat SSL/TLS", "Upside Down Mode": "Mode inversé", - upsideDownModeDescription: "Si le service est en ligne il sera alors noté hors-ligne et vice-versa.", - "Max. Redirects": "Redirections", + upsideDownModeDescription: "Si le service est en ligne, il sera alors noté hors-ligne et vice-versa.", + "Max. Redirects": "Nombre maximum de redirections", maxRedirectDescription: "Nombre maximal de redirections avant que le service soit noté hors-ligne.", "Accepted Status Codes": "Codes HTTP", - acceptedStatusCodesDescription: "Si les codes HTTP reçus sont ceux séléctionnés, alors le serveur sera noté en ligne.", + acceptedStatusCodesDescription: "Codes HTTP considérés comme en ligne", Save: "Sauvegarder", Notifications: "Notifications", - "Not available, please setup.": "Créez des notifications depuis les paramètres.", + "Not available, please setup.": "Pas de système de notification disponible, merci de le configurer", "Setup Notification": "Créer une notification", Light: "Clair", Dark: "Sombre", Auto: "Automatique", - "Theme - Heartbeat Bar": "Voir les services monitorés", + "Theme - Heartbeat Bar": "Voir les services surveillés", Normal: "Général", - Bottom: "Au dessus", - None: "Neutre", + Bottom: "En dessous", + None: "Non", Timezone: "Fuseau Horaire", - "Search Engine Visibility": "SEO", + "Search Engine Visibility": "Visibilité par les moteurs de recherche", "Allow indexing": "Autoriser l'indexation par des moteurs de recherche", - "Discourage search engines from indexing site": "Empêche les moteurs de recherche d'indexer votre site", + "Discourage search engines from indexing site": "Refuser l'indexation par des moteurs de recherche", "Change Password": "Changer le mot de passe", "Current Password": "Mot de passe actuel", "New Password": "Nouveau mot de passe", "Repeat New Password": "Répéter votre nouveau mot de passe", passwordNotMatchMsg: "Les mots de passe ne correspondent pas", "Update Password": "Mettre à jour le mot de passe", - "Disable Auth": "Désactiver l'authentification intégrée", + "Disable Auth": "Désactiver l'authentification", "Enable Auth": "Activer l'authentification", Logout: "Se déconnecter", - notificationDescription: "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hosts.", + notificationDescription: "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.", Leave: "Quitter", - "I understand, please disable": "Je comprends, je l'ai désactivé", + "I understand, please disable": "J'ai compris, désactivez-le", Confirm: "Confirmer", Yes: "Oui", No: "Non", @@ -90,21 +90,23 @@ export default { Password: "Mot de passe", "Remember me": "Se souvenir de moi", Login: "Se connecter", - "No Monitors, please": "Pas de monitor, veuillez ", - "add one": "en ajouter un.", + "No Monitors, please": "Pas de sondes, veuillez ", + "add one": "en ajouter une.", "Notification Type": "Type de notification", Email: "Email", Test: "Tester", - keywordDescription: "Le mot clé sera cherché dans la réponse HTML/JSON reçue du site internet.", - "Certificate Info": "Des informations sur le certificat SSL", - deleteMonitorMsg: "Êtes-vous sûr de vouloir supprimer ce monitor ?", + keywordDescription: "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.", + "Certificate Info": "Informations sur le certificat SSL", + deleteMonitorMsg: "Êtes-vous sûr de vouloir supprimer cette sonde ?", 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.", "Resolver Server": "Serveur DNS utilisé", "Resource Record Type": "Type d'enregistrement DNS recherché", resoverserverDescription: "Le DNS de cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", rrtypeDescription: "Veuillez séléctionner un type d'enregistrement DNS", - pauseMonitorMsg: "Are you sure want to pause?", - "Last Result": "Last Result", - "Create your admin account": "Create your admin account", - "Repeat Password": "Repeat Password" + pauseMonitorMsg: "Etes vous sur de vouloir mettre en pause cette sonde ?", + "Last Result": "Dernier résultat", + "Create your admin account": "Créez votre compte administrateur", + "Repeat Password": "Répéter le mot de passe", + respTime: "Temps de réponse (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/ja.js b/src/languages/ja.js index e32e53d69..23de640cf 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -106,5 +106,7 @@ export default { "Resource Record Type": "DNSレコード設定", "Last Result": "最終結果", "Create your admin account": "Create your admin account", - "Repeat Password": "Repeat Password" + "Repeat Password": "Repeat Password", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 91f8f9b22..8493193cb 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -1,110 +1,112 @@ export default { - languageName: '한국어', - checkEverySecond: '{0} 초마다 체크해요.', - 'Avg.': '평균 ', - retriesDescription: '서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수', - ignoreTLSError: 'HTTPS 웹사이트에서 TLS/SSL 에러 무시하기', - upsideDownModeDescription: '서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거에요.', - maxRedirectDescription: '최대 리다이렉트 횟수에요. 0을 입력하면 리다이렉트를 꺼요.', - acceptedStatusCodesDescription: '응답 성공으로 간주할 상태 코드를 정해요.', - passwordNotMatchMsg: '비밀번호 재입력이 일치하지 않아요.', - notificationDescription: '모니터링에 알림을 설정할 수 있어요.', - keywordDescription: 'Html 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.', - pauseDashboardHome: '일시 정지', - deleteMonitorMsg: '정말 이 모니터링을 삭제할까요?', - deleteNotificationMsg: '정말 이 알림을 모든 모니터링에서 삭제할까요?', - resoverserverDescription: 'Cloudflare가 기본 서버에요, 원한다면 언제나 다른 resolver 서버로 변경할 수 있어요.', - rrtypeDescription: '모니터링할 RR-Type을 선택해요.', - pauseMonitorMsg: '정말 이 모니터링을 일시 정지 할까요?', - Settings: '설정', - Dashboard: '대시보드', - 'New Update': '새로운 업데이트', - Language: '언어', - Appearance: '외형', - Theme: '테마', - General: '일반', - Version: '버전', - 'Check Update On 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': '모니터링이 없어요,', - 'add one': '하나 추가해봐요', - 'Notification Type': '알림 종류', - Email: '이메일', - Test: '테스트', - 'Certificate Info': '인증서 정보', - 'Resolver Server': 'Resolver 서버', - 'Resource Record Type': '자원 레코드 유형', - 'Last Result': '최근 결과', - 'Create your admin account': '관리자 계정 만들기', - 'Repeat Password': '비밀번호 재입력' -}; \ No newline at end of file + languageName: "한국어", + checkEverySecond: "{0} 초마다 체크해요.", + "Avg.": "평균 ", + retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수", + ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 에러 무시하기", + upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거에요.", + maxRedirectDescription: "최대 리다이렉트 횟수에요. 0을 입력하면 리다이렉트를 꺼요.", + acceptedStatusCodesDescription: "응답 성공으로 간주할 상태 코드를 정해요.", + passwordNotMatchMsg: "비밀번호 재입력이 일치하지 않아요.", + notificationDescription: "모니터링에 알림을 설정할 수 있어요.", + keywordDescription: "Html 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.", + pauseDashboardHome: "일시 정지", + deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?", + deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?", + resoverserverDescription: "Cloudflare가 기본 서버에요, 원한다면 언제나 다른 resolver 서버로 변경할 수 있어요.", + rrtypeDescription: "모니터링할 RR-Type을 선택해요.", + pauseMonitorMsg: "정말 이 모니터링을 일시 정지 할까요?", + Settings: "설정", + Dashboard: "대시보드", + "New Update": "새로운 업데이트", + Language: "언어", + Appearance: "외형", + Theme: "테마", + General: "일반", + Version: "버전", + "Check Update On 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": "모니터링이 없어요,", + "add one": "하나 추가해봐요", + "Notification Type": "알림 종류", + Email: "이메일", + Test: "테스트", + "Certificate Info": "인증서 정보", + "Resolver Server": "Resolver 서버", + "Resource Record Type": "자원 레코드 유형", + "Last Result": "최근 결과", + "Create your admin account": "관리자 계정 만들기", + "Repeat Password": "비밀번호 재입력", + respTime: "응답 시간 (ms)", + notAvailableShort: "N/A" +} diff --git a/src/languages/nl_NL.js b/src/languages/nl_NL.js new file mode 100644 index 000000000..60c5089c9 --- /dev/null +++ b/src/languages/nl_NL.js @@ -0,0 +1,112 @@ +export default { + languageName: "Nederlands", + checkEverySecond: "Controleer elke {0} seconden.", + "Avg.": "Gem. ", + retriesDescription: "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden", + ignoreTLSError: "Negeer TLS/SSL-fout voor HTTPS-websites", + upsideDownModeDescription: "Draai de status om. Als de service bereikbaar is, is deze OFFLINE.", + maxRedirectDescription: "Maximaal aantal te volgen omleidingen. Stel in op 0 om omleidingen uit te schakelen.", + acceptedStatusCodesDescription: "Selecteer statuscodes die als een succesvol antwoord worden beschouwd.", + passwordNotMatchMsg: "Het herhaalwachtwoord komt niet overeen.", + notificationDescription: "Wijs a.u.b. een melding toe aan de monitor(s) om het te laten werken.", + keywordDescription: "Zoek trefwoord in gewone html of JSON-response en het is hoofdlettergevoelig", + pauseDashboardHome: "Gepauzeerd", + deleteMonitorMsg: "Weet u zeker dat u deze monitor wilt verwijderen?", + deleteNotificationMsg: "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?", + resoverserverDescription: "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.", + rrtypeDescription: "Selecteer het RR-type dat u wilt monitoren", + pauseMonitorMsg: "Weet je zeker dat je wilt pauzeren?", + Settings: "Instellingen", + Dashboard: "Dashboard", + "New Update": "Nieuwe update", + Language: "Taal", + Appearance: "Weergave", + Theme: "Thema", + General: "Algemeen", + Version: "Versie", + "Check Update On GitHub": "Controleer voor updates op GitHub", + List: "Lijst", + Add: "Toevoegen", + "Add New Monitor": "Nieuwe monitor toevoegen", + "Quick Stats": "Snelle statistieken", + Up: "Online", + Down: "Offline", + Pending: "In afwachting", + Unknown: "Onbekend", + Pause: "Pauze", + Name: "Naam", + Status: "Status", + DateTime: "Datum Tijd", + Message: "Bericht", + "No important events": "Geen belangrijke gebeurtenissen", + Resume: "Hervat", + Edit: "Wijzigen", + Delete: "Verwijderen", + Current: "Huidig", + Uptime: "Uptime", + "Cert Exp.": "Cert. verl.", + days: "dagen", + day: "dag", + "-day": "-dag", + hour: "uur", + "-hour": "-uur", + Response: "Antwoord", + Ping: "Ping", + "Monitor Type": "Monitortype:", + Keyword: "Trefwoord", + "Friendly Name": "Vriendelijke naam", + URL: "URL", + Hostname: "Hostnaam", + Port: "Poort", + "Heartbeat Interval": "Hartslaginterval", + Retries: "Pogingen", + Advanced: "Geavanceerd", + "Upside Down Mode": "Ondersteboven modus", + "Max. Redirects": "Max. Omleidingen", + "Accepted Status Codes": "Geaccepteerde statuscodes", + Save: "Opslaan", + Notifications: "Meldingen", + "Not available, please setup.": "Niet beschikbaar, stel a.u.b. in.", + "Setup Notification": "Melding instellen", + Light: "Licht", + Dark: "Donker", + Auto: "Auto", + "Theme - Heartbeat Bar": "Thema - Hartslagbalk", + Normal: "Normaal", + Bottom: "Onderkant", + None: "Geen", + Timezone: "Tijdzone", + "Search Engine Visibility": "Zichtbaarheid voor zoekmachines", + "Allow indexing": "Indexering toestaan", + "Discourage search engines from indexing site": "Ontmoedig zoekmachines om de site te indexeren", + "Change Password": "Verander wachtwoord", + "Current Password": "Huidig wachtwoord", + "New Password": "Nieuw wachtwoord", + "Repeat New Password": "Herhaal nieuw wachtwoord", + "Update Password": "Vernieuw wachtwoord", + "Disable Auth": "Autorisatie uitschakelen", + "Enable Auth": "Autorisatie inschakelen", + Logout: "Uitloggen", + Leave: "Vertrekken", + "I understand, please disable": "Ik begrijp het, schakel a.u.b. uit", + Confirm: "Bevestigen", + Yes: "Ja", + No: "Nee", + Username: "Gebruikersnaam", + Password: "Wachtwoord", + "Remember me": "Wachtwoord onthouden", + Login: "Inloggen", + "No Monitors, please": "Geen monitoren, ", + "add one": "voeg een toe", + "Notification Type": "Melding type", + Email: "E-mail", + Test: "Testen", + "Certificate Info": "Certificaat informatie", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Type bronrecord", + "Last Result": "Laatste resultaat", + "Create your admin account": "Maak uw beheerdersaccount aan", + "Repeat Password": "Herhaal wachtwoord", + respTime: "resp. tijd (ms)", + notAvailableShort: "N.v.t." +} diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js new file mode 100644 index 000000000..f42f9c256 --- /dev/null +++ b/src/languages/ru-RU.js @@ -0,0 +1,112 @@ +export default { + languageName: "Русский", + checkEverySecond: "Проверять каждые {0} секунд.", + "Avg.": "Средн. ", + retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", + ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов", + upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", + maxRedirectDescription: "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", + acceptedStatusCodesDescription: "Выберите коды статусов, которые должны считаться за успешный ответ.", + passwordNotMatchMsg: "Повтор пароля не совпадает.", + notificationDescription: "Привяжите уведомления к мониторам.", + keywordDescription: "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)", + pauseDashboardHome: "Пауза", + deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?", + deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?", + resoverserverDescription: "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": "Мониторов нет, пожалуйста", + "add one": "создайте новый", + "Notification Type": "Тип уведомления", + Email: "Почта", + Test: "Проверка", + "Certificate Info": "Информация о сертификате", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсной записи", + "Last Result": "Последний результат", + "Create your admin account": "Создайте аккаунт администратора", + "Repeat Password": "Повторите пароль", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" +} diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js new file mode 100644 index 000000000..aa7d95cf9 --- /dev/null +++ b/src/languages/sr-latn.js @@ -0,0 +1,112 @@ +export default { + languageName: "Srpski", + checkEverySecond: "Proveri svakih {0} sekundi.", + "Avg.": "Prosečni ", + retriesDescription: "Maksimum pokušaja pre nego što se servis obeleži kao neaktivan i pošalje se obaveštenje.", + ignoreTLSError: "Ignoriši TLS/SSL greške za HTTPS veb stranice.", + upsideDownModeDescription: "Obrnite status. Ako je servis dostupan, onda je obeležen kao neaktivan.", + maxRedirectDescription: "Maksimani broj preusmerenja da se prate. Postavite na 0 da bi se isključila preusmerenja.", + acceptedStatusCodesDescription: "Odaberite statusne kodove koji se smatraju uspešnim odgovorom.", + passwordNotMatchMsg: "Ponovljena lozinka se ne poklapa.", + notificationDescription: "Molim Vas postavite obaveštenje za masmatrače da bise aktivirali.", + keywordDescription: "Pretraži ključnu reč u čistom html ili JSON odgovoru sa osetljivim velikim i malim slovima", + pauseDashboardHome: "Pauziraj", + deleteMonitorMsg: "Da li ste sigurni da želite da obrišete ovog posmatrača?", + deleteNotificationMsg: "Da li ste sigurni d aželite da uklonite ovo obaveštenje za sve posmatrače?", + resoverserverDescription: "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.", + rrtypeDescription: "Odaberite RR-Type koji želite da posmatrate", + pauseMonitorMsg: "Da li ste sigurni da želite da pauzirate?", + Settings: "Podešavanja", + Dashboard: "Komandna tabla", + "New Update": "Nova verzija", + Language: "Jezik", + Appearance: "Izgled", + Theme: "Tema", + General: "Opšte", + Version: "Verzija", + "Check Update On GitHub": "Proverite novu verziju na GitHub-u", + List: "Lista", + Add: "Dodaj", + "Add New Monitor": "Dodaj novog posmatrača", + "Quick Stats": "Brze statistike", + Up: "Aktivno", + Down: "Neaktivno", + Pending: "Nerešeno", + Unknown: "Nepoznato", + Pause: "Pauziraj", + Name: "Ime", + Status: "Status", + DateTime: "Datum i vreme", + Message: "Poruka", + "No important events": "Nema bitnih događaja", + Resume: "Nastavi", + Edit: "Izmeni", + Delete: "Ukloni", + Current: "Trenutno", + Uptime: "Vreme rada", + "Cert Exp.": "Istek sert.", + days: "dana", + day: "dan", + "-day": "-dana", + hour: "sat", + "-hour": "-sata", + Response: "Odgovor", + Ping: "Ping", + "Monitor Type": "Tip posmatrača", + Keyword: "Ključna reč", + "Friendly Name": "Prijateljsko ime", + URL: "URL", + Hostname: "Hostname", + Port: "Port", + "Heartbeat Interval": "Interval otkucaja srca", + Retries: "Pokušaji", + Advanced: "Napredno", + "Upside Down Mode": "Naopak mod", + "Max. Redirects": "Maks. preusmerenja", + "Accepted Status Codes": "Prihvaćeni statusni kodovi", + Save: "Sačuvaj", + Notifications: "Obaveštenja", + "Not available, please setup.": "Nije dostupno, molim Vas podesite.", + "Setup Notification": "Postavi obaveštenje", + Light: "Svetlo", + Dark: "Tamno", + Auto: "Automatsko", + "Theme - Heartbeat Bar": "Tema - Traka otkucaja srca", + Normal: "Normalno", + Bottom: "Dole", + None: "Isključeno", + Timezone: "Vremenska zona", + "Search Engine Visibility": "Vidljivost pretraživačima", + "Allow indexing": "Dozvoli indeksiranje", + "Discourage search engines from indexing site": "Odvraćajte pretraživače od indeksiranja sajta", + "Change Password": "Promeni lozinku", + "Current Password": "Trenutna lozinka", + "New Password": "Nova lozinka", + "Repeat New Password": "Ponovi novu lozinku", + "Update Password": "Izmeni lozinku", + "Disable Auth": "Isključi autentifikaciju", + "Enable Auth": "Uključi autentifikaciju", + Logout: "Odloguj se", + Leave: "Izađi", + "I understand, please disable": "Razumem, molim te isključi", + Confirm: "Potvrdi", + Yes: "Da", + No: "Ne", + Username: "Korisničko ime", + Password: "Lozinka", + "Remember me": "Zapamti me", + Login: "Uloguj se", + "No Monitors, please": "Bez posmatrača molim", + "add one": "dodaj jednog", + "Notification Type": "Tip obaveštenja", + Email: "E-pošta", + Test: "Test", + "Certificate Info": "Informacije sertifikata", + "Resolver Server": "Razrešivački server", + "Resource Record Type": "Tip zapisa resursa", + "Last Result": "Poslednji rezultat", + "Create your admin account": "Naprivi administratorski nalog", + "Repeat Password": "Ponovite lozinku", + respTime: "Vreme odg. (ms)", + notAvailableShort: "N/A" +} diff --git a/src/languages/sr.js b/src/languages/sr.js new file mode 100644 index 000000000..0bd084036 --- /dev/null +++ b/src/languages/sr.js @@ -0,0 +1,112 @@ +export default { + languageName: "Српски", + checkEverySecond: "Провери сваких {0} секунди.", + "Avg.": "Просечни ", + retriesDescription: "Максимум покушаја пре него што се сервис обележи као неактиван и пошаље се обавештење.", + ignoreTLSError: "Игнориши TLS/SSL грешке за HTTPS веб странице.", + upsideDownModeDescription: "Обрните статус. Ако је сервис доступан, онда је обележен као неактиван.", + maxRedirectDescription: "Максимани број преусмерења да се прате. Поставите на 0 да би се искључила преусмерења.", + acceptedStatusCodesDescription: "Одаберите статусне кодове који се сматрају успешним одговором.", + passwordNotMatchMsg: "Поновљена лозинка се не поклапа.", + notificationDescription: "Молим Вас поставите обавештење за масматраче да бисе активирали.", + keywordDescription: "Претражи кључну реч у чистом html или JSON одговору са осетљивим великим и малим словима", + pauseDashboardHome: "Паузирај", + deleteMonitorMsg: "Да ли сте сигурни да желите да обришете овог посматрача?", + deleteNotificationMsg: "Да ли сте сигурни д ажелите да уклоните ово обавештење за све посматраче?", + resoverserverDescription: "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.", + rrtypeDescription: "Одаберите RR-Type који желите да посматрате", + 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: "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": "Без посматрача молим", + "add one": "додај једног", + "Notification Type": "Тип обавештења", + Email: "Е-пошта", + Test: "Тест", + "Certificate Info": "Информације сертификата", + "Resolver Server": "Разрешивачки сервер", + "Resource Record Type": "Тип записа ресурса", + "Last Result": "Последњи резултат", + "Create your admin account": "Наприви администраторски налог", + "Repeat Password": "Поновите лозинку", + respTime: "Време одг. (мс)", + notAvailableShort: "N/A" +} diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 068f5d597..502968891 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -106,5 +106,7 @@ export default { "Resource Record Type": "RR-typ", "Last Result": "Senaste resultat", "Create your admin account": "Skapa ditt administratörskonto", - "Repeat Password": "Upprepa Lösenord" + "Repeat Password": "Upprepa Lösenord", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" } diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js new file mode 100644 index 000000000..d179a91af --- /dev/null +++ b/src/languages/zh-CN.js @@ -0,0 +1,112 @@ +export default { + languageName: "简体中文", + checkEverySecond: "检测频率 {0} 秒", + "Avg.": "平均", + retriesDescription: "最大重试失败次数", + ignoreTLSError: "忽略HTTPS站点的证书错误", + upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", + maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", + acceptedStatusCodesDescription: "选择被视为成功响应的状态码", + passwordNotMatchMsg: "两次密码输入不一致", + notificationDescription: "请为监控项配置消息通知", + keywordDescription: "检测响应内容中的关键字,区分大小写", + pauseDashboardHome: "暂停", + deleteMonitorMsg: "确定要删除此监控吗?", + deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", + resoverserverDescription: "默认服务器 Cloudflare,可以修改为任意你想要使用的DNS服务器", + rrtypeDescription: "选择要监控的资源记录类型", + pauseMonitorMsg: "确定要暂停吗?", + Settings: "设置", + Dashboard: "仪表盘", + "New Update": "有新版本更新", + Language: "语言", + Appearance: "外观设置", + Theme: "主题", + General: "基本设置", + Version: "Version", + "Check Update On 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: "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": "还没有监控项,", + "add one": "点击新增", + "Notification Type": "消息类型", + Email: "邮件", + Test: "测试一下", + "Certificate Info": "证书信息", + "Resolver Server": "解析服务器", + "Resource Record Type": "资源记录类型", + "Last Result": "Last Result", + "Create your admin account": "创建管理员账号", + "Repeat Password": "重复密码", + respTime: "Resp. Time (ms)", + notAvailableShort: "N/A" +} diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 12ebb79de..4bcc5029e 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -103,8 +103,10 @@ export default { "Resource Record Type": "DNS 記錄類型", resoverserverDescription: "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", rrtypeDescription: "請選擇 DNS 記錄類型", - pauseMonitorMsg: "Are you sure want to pause?", - "Last Result": "Last Result", - "Create your admin account": "Create your admin account", - "Repeat Password": "Repeat Password" + pauseMonitorMsg: "是否確定暫停?", + "Last Result": "最後結果", + "Create your admin account": "製作你的管理員帳號", + "Repeat Password": "重複密碼", + respTime: "反應時間 (ms)", + notAvailableShort: "N/A" } diff --git a/src/main.js b/src/main.js index 435caf218..8f5e0a916 100644 --- a/src/main.js +++ b/src/main.js @@ -26,11 +26,17 @@ import { appName } from "./util.ts"; import en from "./languages/en"; import zhHK from "./languages/zh-HK"; import deDE from "./languages/de-DE"; +import nlNL from "./languages/nl-NL"; +import esEs from "./languages/es-ES"; import fr from "./languages/fr"; import ja from "./languages/ja"; import daDK from "./languages/da-DK"; +import sr from "./languages/sr"; +import srLatn from "./languages/sr-latn"; import svSE from "./languages/sv-SE"; import koKR from "./languages/ko-KR"; +import ruRU from "./languages/ru-RU"; +import zhCN from "./languages/zh-CN"; const routes = [ { @@ -97,11 +103,17 @@ const languageList = { en, "zh-HK": zhHK, "de-DE": deDE, + "nl-NL": nlNL, + "es-ES": esEs, "fr": fr, "ja": ja, "da-DK": daDK, + "sr": sr, + "sr-latn": srLatn, "sv-SE": svSE, "ko-KR": koKR, + "ru-RU": ruRU, + "zh-CN": zhCN, }; const i18n = createI18n({ diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index b9c82e00a..1cf237ce7 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -5,7 +5,7 @@
Please use it carefully.
+ +Seguro que deseas deshabilitar la autenticación?
+Es para quien implementa autenticación de terceros ante Uptime Kuma como por ejemplo Cloudflare Access.
+Por favor usar con cuidado.
+ +你是否確認取消登入認証?
這個功能是設計給已有第三方認証的用家,例如 Cloudflare Access。
請小心使用。
+ +是否确定 取消登录验证?
+这是为 有第三方认证 的用户提供的功能,如 Cloudflare Access
+请谨慎使用!
+ +Bist du sicher das du die Authentifizierung deaktivieren möchtest?
Es ist für jemanden der eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access.
Bitte mit Vorsicht nutzen.
+ + +Да ли сте сигурни да желите да искључите аутентификацију?
+То је за оне који имају додату аутентификацију испред Uptime Kuma као на пример Cloudflare Access.
+Молим Вас користите ово са пажњом.
+ + + +Da li ste sigurni da želite da isključite autentifikaciju?
+To je za one koji imaju dodatu autentifikaciju ispred Uptime Kuma kao na primer Cloudflare Access.
+Molim Vas koristite ovo sa pažnjom.
+ + + +정말로 인증 기능을 끌까요?
+이 기능은 Cloudflare Access와 같은 서드파티 인증을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.
+신중하게 사용하세요.
+