diff --git a/README.md b/README.md
index 925b8798..bb6589c4 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.
diff --git a/db/demo_kuma.db b/db/demo_kuma.db
new file mode 100644
index 00000000..2042fcf2
Binary files /dev/null and b/db/demo_kuma.db differ
diff --git a/package.json b/package.json
index f279351e..f503bbf5 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 c0a53a9b..77c4da75 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 d4fe668b..e4cd06eb 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 41248a5c..1f75e97f 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/languages/README.md b/src/languages/README.md
index 1deeacd6..894cb6ea 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/es-ES.js b/src/languages/es-ES.js
new file mode 100644
index 00000000..96ce923e
--- /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 694f4d28..e4f999dc 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,23 +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",
- respTime: "Resp. Time (ms)",
+ 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/sr-latn.js b/src/languages/sr-latn.js
new file mode 100644
index 00000000..aa7d95cf
--- /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 00000000..0bd08403
--- /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/zh-CN.js b/src/languages/zh-CN.js
index b67f1d5a..d179a91a 100644
--- a/src/languages/zh-CN.js
+++ b/src/languages/zh-CN.js
@@ -1,20 +1,20 @@
export default {
languageName: "简体中文",
checkEverySecond: "检测频率 {0} 秒",
- "Avg.": "平均 ",
- retriesDescription: "最大重试次数",
+ "Avg.": "平均",
+ retriesDescription: "最大重试失败次数",
ignoreTLSError: "忽略HTTPS站点的证书错误",
- upsideDownModeDescription: "反向状态监控",
+ upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)",
maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向",
acceptedStatusCodesDescription: "选择被视为成功响应的状态码",
passwordNotMatchMsg: "两次密码输入不一致",
- notificationDescription: "请先设置一个消息通知",
+ notificationDescription: "请为监控项配置消息通知",
keywordDescription: "检测响应内容中的关键字,区分大小写",
- pauseDashboardHome: "Pause",
+ pauseDashboardHome: "暂停",
deleteMonitorMsg: "确定要删除此监控吗?",
deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。",
resoverserverDescription: "默认服务器 Cloudflare,可以修改为任意你想要使用的DNS服务器",
- rrtypeDescription: "选择您要监控的资源记录类型",
+ rrtypeDescription: "选择要监控的资源记录类型",
pauseMonitorMsg: "确定要暂停吗?",
Settings: "设置",
Dashboard: "仪表盘",
@@ -27,7 +27,7 @@ export default {
"Check Update On GitHub": "检查更新",
List: "列表",
Add: "添加",
- "Add New Monitor": "添加新的监控",
+ "Add New Monitor": "创建监控项",
"Quick Stats": "状态速览",
Up: "正常",
Down: "故障",
@@ -50,12 +50,12 @@ export default {
"-day": " 天",
hour: "小时",
"-hour": " 小时",
- Response: "响应",
+ Response: "响应时长",
Ping: "Ping",
"Monitor Type": "监控类型",
Keyword: "关键字",
- "Friendly Name": "名称",
- URL: "网址",
+ "Friendly Name": "自定义名称",
+ URL: "网址URL",
Hostname: "主机名",
Port: "端口号",
"Heartbeat Interval": "心跳间隔",
@@ -66,12 +66,12 @@ export default {
"Accepted Status Codes": "有效状态码",
Save: "保存",
Notifications: "消息通知",
- "Not available, please setup.": "不可用,请设置",
+ "Not available, please setup.": "无可用通道,请先设置",
"Setup Notification": "设置通知",
Light: "明亮",
Dark: "黑暗",
Auto: "自动",
- "Theme - Heartbeat Bar": "心跳状态显示",
+ "Theme - Heartbeat Bar": "状态显示",
Normal: "正常显示",
Bottom: "靠下显示",
None: "不显示",
@@ -81,23 +81,23 @@ export default {
"Discourage search engines from indexing site": "阻止搜索引擎索引网站",
"Change Password": "修改密码",
"Current Password": "当前密码",
- "New Password": "新密码",
- "Repeat New Password": "重复新密码",
+ "New Password": "新的密码",
+ "Repeat New Password": "重复新的密码",
"Update Password": "更新密码",
"Disable Auth": "禁用身份验证",
"Enable Auth": "启用身份验证",
Logout: "退出",
Leave: "离开",
- "I understand, please disable": "我已经了解,继续禁用",
+ "I understand, please disable": "我已了解,继续禁用",
Confirm: "确认",
- Yes: "是的",
- No: "不是",
+ Yes: "确定",
+ No: "取消",
Username: "用户名",
Password: "密码",
- "Remember me": "请记住我",
+ "Remember me": "记住登录",
Login: "登录",
- "No Monitors, please": "没有监控,",
- "add one": "添加一个",
+ "No Monitors, please": "还没有监控项,",
+ "add one": "点击新增",
"Notification Type": "消息类型",
Email: "邮件",
Test: "测试一下",
@@ -107,6 +107,6 @@ export default {
"Last Result": "Last Result",
"Create your admin account": "创建管理员账号",
"Repeat Password": "重复密码",
- respTime: "响应时间 (ms)",
+ respTime: "Resp. Time (ms)",
notAvailableShort: "N/A"
}
diff --git a/src/main.js b/src/main.js
index b20db3e0..8f5e0a91 100644
--- a/src/main.js
+++ b/src/main.js
@@ -27,12 +27,16 @@ 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 = [
{
@@ -100,12 +104,16 @@ const languageList = {
"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/Settings.vue b/src/pages/Settings.vue
index d71ec109..8cf2d519 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -172,17 +172,41 @@
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.
+