Merge branch 'master' into 2.0.X

This commit is contained in:
Louis Lam 2023-08-16 16:14:04 +08:00
commit 31c00081fa
12 changed files with 310 additions and 29 deletions

View file

@ -9,7 +9,7 @@ on:
paths-ignore: paths-ignore:
- '*.md' - '*.md'
pull_request: pull_request:
branches: [ master ] branches: [ master, 2.0.X ]
paths-ignore: paths-ignore:
- '*.md' - '*.md'
@ -50,7 +50,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ ARMv7 ] os: [ ARMv7 ]
node: [ 14.21.3, 20.5.0 ] node: [ 14, 20 ]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps: steps:

View file

@ -6,6 +6,7 @@ on:
pull_request: pull_request:
branches: branches:
- master - master
- 2.0.X
workflow_dispatch: workflow_dispatch:
permissions: permissions:

View file

@ -214,7 +214,7 @@ Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely,
Patch release = the third digit ([Semantic Versioning](https://semver.org/)) Patch release = the third digit ([Semantic Versioning](https://semver.org/))
If for maybe security reasons, a library must be updated. Then you must need to check if there are any breaking changes. If for security / bug / other reasons, a library must be updated, breaking changes need to be checked by the person proposing the change.
## Translations ## Translations

View file

@ -9,8 +9,24 @@
<meta name="theme-color" id="theme-color" content="" /> <meta name="theme-color" id="theme-color" content="" />
<meta name="description" content="Uptime Kuma monitoring tool" /> <meta name="description" content="Uptime Kuma monitoring tool" />
<title>Uptime Kuma</title> <title>Uptime Kuma</title>
<style>
.noscript-message {
font-size: 20px;
text-align: center;
padding: 10px;
max-width: 500px;
margin: 0 auto;
}
</style>
</head> </head>
<body> <body>
<noscript>
<div class="noscript-message">
Sorry, you don't seem to have JavaScript enabled or your browser
doesn't support it.<br />This website requires JavaScript to function.
Please enable JavaScript in your browser settings to continue.
</div>
</noscript>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.js"></script> <script type="module" src="/src/main.js"></script>
</body> </body>

View file

@ -21,7 +21,7 @@ class AliyunSMS extends NotificationProvider {
status: this.statusToString(heartbeatJSON["status"]), status: this.statusToString(heartbeatJSON["status"]),
msg: heartbeatJSON["msg"], msg: heartbeatJSON["msg"],
}); });
if (this.sendSms(notification, msgBody)) { if (await this.sendSms(notification, msgBody)) {
return okMsg; return okMsg;
} }
} else { } else {
@ -31,7 +31,7 @@ class AliyunSMS extends NotificationProvider {
status: "", status: "",
msg: msg, msg: msg,
}); });
if (this.sendSms(notification, msgBody)) { if (await this.sendSms(notification, msgBody)) {
return okMsg; return okMsg;
} }
} }
@ -76,7 +76,8 @@ class AliyunSMS extends NotificationProvider {
if (result.data.Message === "OK") { if (result.data.Message === "OK") {
return true; return true;
} }
return false;
throw new Error(result.data.Message);
} }
/** /**

View file

@ -109,10 +109,10 @@
"Last Result": "Letztes Ergebnis", "Last Result": "Letztes Ergebnis",
"pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?",
"clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
"clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?", "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?",
"Clear Data": "Lösche Daten", "Clear Data": "Lösche Daten",
"Events": "Ereignisse", "Events": "Ereignisse",
"Heartbeats": "Statistiken", "Heartbeats": "Prüfintervalle",
"confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
"Create your admin account": "Erstelle dein Admin-Konto", "Create your admin account": "Erstelle dein Admin-Konto",
"Repeat Password": "Passwort erneut eingeben", "Repeat Password": "Passwort erneut eingeben",
@ -380,12 +380,12 @@
"alertaAlertState": "Alarmstatus", "alertaAlertState": "Alarmstatus",
"alertaRecoverState": "Wiederherstellungsstatus", "alertaRecoverState": "Wiederherstellungsstatus",
"deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?",
"Proxies": "Proxies", "Proxies": "Proxys",
"default": "Standard", "default": "Standard",
"enabled": "Aktiviert", "enabled": "Aktiviert",
"setAsDefault": "Als Standard setzen", "setAsDefault": "Als Standard setzen",
"deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
"proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.", "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.",
"enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
"setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", "setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
"Certificate Chain": "Zertifikatskette", "Certificate Chain": "Zertifikatskette",
@ -815,5 +815,25 @@
"Badge Preview": "Badge Vorschau", "Badge Preview": "Badge Vorschau",
"tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.",
"Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten",
"pushDeerServerDescription": "Leer lassen, um den offiziellen Server zu verwenden" "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden",
"FlashDuty Severity": "Schweregrad",
"nostrSender": "Privater Schlüssel des Absenders (nsec)",
"nostrRecipientsHelp": "npub-Format, eine pro Zeile",
"noOrBadCertificate": "Kein/schlechtes Zertifikat",
"wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Custom Event' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche bitte",
"nostrRelays": "Nostr relays",
"nostrRelaysHelp": "Eine Relay-URL pro Zeile",
"nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)",
"gamedigGuessPort": "Gamedig: Guess Port",
"Request Timeout": "Zeitüberschreitung der Anfrage",
"styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)",
"styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)",
"Select": "Auswählen",
"selectedMonitorCount": "Ausgewählt: {0}",
"PushDeer Server": "PushDeer Server",
"showCertificateExpiry": "Ablauf des Zertifikats anzeigen",
"gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.",
"timeoutAfter": "Zeitüberschreitung nach {0} Sekunden",
"styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste",
"Check/Uncheck": "Aktivieren/Deaktivieren"
} }

View file

@ -109,10 +109,10 @@
"Last Result": "Letztes Ergebnis", "Last Result": "Letztes Ergebnis",
"pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?",
"clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
"clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?", "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?",
"Clear Data": "Lösche Daten", "Clear Data": "Lösche Daten",
"Events": "Ereignisse", "Events": "Ereignisse",
"Heartbeats": "Statistiken", "Heartbeats": "Prüfintervalle",
"confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
"Create your admin account": "Erstelle dein Admin-Konto", "Create your admin account": "Erstelle dein Admin-Konto",
"Repeat Password": "Passwort erneut eingeben", "Repeat Password": "Passwort erneut eingeben",
@ -385,7 +385,7 @@
"enabled": "Aktiviert", "enabled": "Aktiviert",
"setAsDefault": "Als Standard setzen", "setAsDefault": "Als Standard setzen",
"deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?",
"proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.", "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.",
"enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.",
"setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", "setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.",
"Certificate Chain": "Zertifikatskette", "Certificate Chain": "Zertifikatskette",
@ -818,5 +818,25 @@
"jsonQueryDescription": "Führe eine JSON-Abfrage gegen die Antwort durch und prüfe den erwarteten Wert (der Rückgabewert wird zum Vergleich in eine Zeichenkette umgewandelt). Auf <a href='https://jsonata.org/'>jsonata.org</a> findest du die Dokumentation zur Abfragesprache. <a href='https://try.jsonata.org/'>Hier</a> kannst du Abfragen üben.", "jsonQueryDescription": "Führe eine JSON-Abfrage gegen die Antwort durch und prüfe den erwarteten Wert (der Rückgabewert wird zum Vergleich in eine Zeichenkette umgewandelt). Auf <a href='https://jsonata.org/'>jsonata.org</a> findest du die Dokumentation zur Abfragesprache. <a href='https://try.jsonata.org/'>Hier</a> kannst du Abfragen üben.",
"tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.",
"Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten",
"pushDeerServerDescription": "Leer lassen, um den offiziellen Server zu verwenden" "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden",
"FlashDuty Severity": "Schweregrad",
"nostrRelays": "Nostr relays",
"gamedigGuessPort": "Gamedig: Guess Port",
"Request Timeout": "Zeitüberschreitung der Anfrage",
"styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)",
"Select": "Auswählen",
"selectedMonitorCount": "Ausgewählt: {0}",
"PushDeer Server": "PushDeer Server",
"nostrRelaysHelp": "Eine Relay-URL pro Zeile",
"nostrSender": "Privater Schlüssel des Absenders (nsec)",
"gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.",
"wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Custom Event' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche bitte",
"timeoutAfter": "Zeitüberschreitung nach {0} Sekunden",
"styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)",
"styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste",
"Check/Uncheck": "Aktivieren/Deaktivieren",
"nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)",
"nostrRecipientsHelp": "npub-Format, eine pro Zeile",
"showCertificateExpiry": "Ablauf des Zertifikats anzeigen",
"noOrBadCertificate": "Kein/schlechtes Zertifikat"
} }

View file

@ -159,7 +159,7 @@
"Show URI": "Mostra URI", "Show URI": "Mostra URI",
"Tags": "Etichette", "Tags": "Etichette",
"Add New below or Select...": "Aggiungi oppure scegli…", "Add New below or Select...": "Aggiungi oppure scegli…",
"Tag with this name already exist.": "Un'etichetta con questo nome già esiste.", "Tag with this name already exist.": "Un'etichetta con questo nome esiste già.",
"Tag with this value already exist.": "Un'etichetta con questo valore già esiste.", "Tag with this value already exist.": "Un'etichetta con questo valore già esiste.",
"color": "colore", "color": "colore",
"value (optional)": "descrizione (opzionale)", "value (optional)": "descrizione (opzionale)",
@ -213,7 +213,7 @@
"smtpBCC": "CCn", "smtpBCC": "CCn",
"discord": "Discord", "discord": "Discord",
"Discord Webhook URL": "URL Webhook di Discord", "Discord Webhook URL": "URL Webhook di Discord",
"wayToGetDiscordURL": "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook", "wayToGetDiscordURL": "Puoi ottenerlo andando su Impostazioni server -> Integrazioni -> Visualizza webhook -> Nuovo webhook",
"Bot Display Name": "Nome del Bot", "Bot Display Name": "Nome del Bot",
"Prefix Custom Message": "Prefisso per il messaggio personalizzato", "Prefix Custom Message": "Prefisso per il messaggio personalizzato",
"Hello @everyone is...": "Ciao a {'@'}everyone …", "Hello @everyone is...": "Ciao a {'@'}everyone …",
@ -384,7 +384,7 @@
"resendDisabled": "Reinvio disabilitato", "resendDisabled": "Reinvio disabilitato",
"Resend Notification if Down X times consequently": "Reinvia la notifica se Down X volte di seguito", "Resend Notification if Down X times consequently": "Reinvia la notifica se Down X volte di seguito",
"Add New Status Page": "Aggiungi nuova pagina di stato", "Add New Status Page": "Aggiungi nuova pagina di stato",
"webhookAdditionalHeadersDesc": "Imposta gli header aggiuntivi inviati nel webhook.", "webhookAdditionalHeadersDesc": "Imposta intestazioni aggiuntive inviate con il webhook. Ogni intestazione deve essere definita come chiave/valore JSON.",
"topicExplanation": "MQTT topic da controllare", "topicExplanation": "MQTT topic da controllare",
"successMessage": "Messaggio con successo", "successMessage": "Messaggio con successo",
"successMessageExplanation": "Messaggio MQTT considerato come successo", "successMessageExplanation": "Messaggio MQTT considerato come successo",
@ -417,5 +417,196 @@
"Affected Monitors": "Monitoraggi interessati", "Affected Monitors": "Monitoraggi interessati",
"Pick Affected Monitors...": "Seleziona i monitoraggi interessati…", "Pick Affected Monitors...": "Seleziona i monitoraggi interessati…",
"Valid": "Valido", "Valid": "Valido",
"Certificate Expiry Notification": "Notifica scadenza certificato" "Certificate Expiry Notification": "Notifica scadenza certificato",
"styleElapsedTimeShowWithLine": "Mostra (con linea)",
"webhookBodyPresetOption": "Predefinito - {0}",
"webhookBodyCustomOption": "Corpo personalizzato",
"topic": "Topic",
"selectedMonitorCount": "Selezionato: {0}",
"Check/Uncheck": "Seleziona/Deseleziona",
"Proxies": "Proxy",
"Stop": "Fermare",
"startOrEndWithOnly": "Inizia o termina solo con {0}",
"No consecutive dashes": "Nessun trattino consecutivo",
"HTTP Basic Auth": "Autenticazione di base HTTP",
"Reverse Proxy": "Proxy inverso",
"Backup": "Backup",
"About": "Di",
"wayToGetCloudflaredURL": "(Scarica cloudflared da {0})",
"cloudflareWebsite": "Sito web di Cloudflare",
"Message:": "Messaggio:",
"Don't know how to get the token? Please read the guide:": "Non sai come ottenere il token? Si prega di leggere la guida:",
"Trust Proxy": "Proxy di fiducia",
"Other Software": "Altro Software",
"For example: nginx, Apache and Traefik.": "Ad esempio: nginx, Apache e Traefik.",
"Please read": "Si prega di leggere",
"Subject:": "Soggetto:",
"Valid To:": "Valido per:",
"Days Remaining:": "Giorni rimanenti:",
"Issuer:": "Emittente",
"Fingerprint:": "Impronta digitale:",
"No status pages": "Nessuna pagina di stato",
"Domain Name Expiry Notification": "Notifica di scadenza del nome di dominio",
"Date Created": "Data di creazione",
"Slug": "Slug",
"Show Powered By": "Mostra Alimentato da",
"Domain Names": "Nomi di dominio",
"signedInDispDisabled": "Autenticazione disabilitata.",
"RadiusSecret": "Radius Segreto",
"RadiusCalledStationId": "Identificativo della stazione chiamata",
"RadiusCallingStationId": "Id stazione chiamante",
"RadiusCallingStationIdDescription": "Identificativo del dispositivo chiamante",
"API Username": "Nome utente dell'API",
"API Key": "Chiave dell'API",
"Show update if available": "Mostra aggiornamento se disponibile",
"RadiusSecretDescription": "Segreto condiviso tra client e server",
"Also check beta release": "Controlla anche la versione beta",
"Check how to config it for WebSocket": "Controlla come configurarlo per WebSocket",
"Steam Game Server": "Server di gioco Steam",
"Most likely causes:": "Cause più probabili:",
"The resource is no longer available.": "La risorsa non è più disponibile.",
"What you can try:": "Cosa puoi provare:",
"Retype the address.": "Ridigita l'indirizzo.",
"Go back to the previous page.": "Torna alla pagina precedente.",
"Coming Soon": "Prossimamente",
"Connection String": "Stringa di connessione",
"Query": "Richiesta",
"settingsCertificateExpiry": "Scadenza certificato TLS",
"deleteDockerHostMsg": "Sei sicuro di voler eliminare questo host docker per tutti i monitor?",
"tcp": "TCP / HTTP",
"Docker Container": "Contenitore Docker",
"Container Name / ID": "Nome/ID contenitore",
"Docker Host": "Host Docker",
"Docker Hosts": "Host Docker",
"Domain": "Dominio",
"Workstation": "Postazione di lavoro",
"Packet Size": "Dimensione del pacchetto",
"Setup Docker Host": "Configurare l'host Docker",
"telegramSendSilently": "Invia silenziosamente",
"telegramSendSilentlyDescription": "Invia il messaggio in silenzio. Gli utenti riceveranno una notifica senza audio.",
"telegramProtectContent": "Proteggi inoltro/salvataggio",
"disableCloudflaredNoAuthMsg": "Sei in modalità No Auth, non è richiesta una password.",
"wayToGetLineNotifyToken": "Puoi ottenere un token di accesso da {0}",
"Examples": "Esempi",
"Long-Lived Access Token": "Token di accesso di lunga durata",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Il token di accesso di lunga durata può essere creato facendo clic sul nome del tuo profilo (in basso a sinistra) e scorrendo verso il basso, quindi fai clic su Crea token. ",
"Notification Service": "Servizio di notifica",
"default: notify all devices": "default: notifica a tutti i dispositivi",
"Automations can optionally be triggered in Home Assistant:": "Le automazioni possono essere facoltativamente attivate in Home Assistant:",
"Trigger type:": "Tipo di attivazione:",
"Event type:": "Tipo di evento:",
"Event data:": "Dati dell'evento:",
"Then choose an action, for example switch the scene to where an RGB light is red.": "Quindi scegli un'azione, ad esempio cambia la scena in cui una luce RGB è rossa.",
"Frontend Version": "Versione front-end",
"Frontend Version do not match backend version!": "La versione del frontend non corrisponde alla versione del backend!",
"backupOutdatedWarning": "Deprecato: poiché sono state aggiunte molte funzionalità e questa funzionalità di backup è un po' trascurata, non può generare o ripristinare un backup completo.",
"backupRecommend": "Eseguire invece il backup diretto del volume o della cartella dei dati (./data/).",
"Optional": "Opzionale",
"sameAsServerTimezone": "Uguale al fuso orario del server",
"startDateTime": "Data/ora di inizio",
"endDateTime": "Data/ora di fine",
"cronExpression": "Espressione Cron",
"cronSchedule": "Programma: ",
"recurringInterval": "Intervallo",
"Recurring": "Ricorrente",
"strategyManual": "Attivo/Inattivo manualmente",
"warningTimezone": "Sta usando il fuso orario del server",
"weekdayShortMon": "Lun",
"weekdayShortTue": "Mar",
"weekdayShortWed": "Mer",
"weekdayShortThu": "Gio",
"weekdayShortSat": "Sab",
"weekdayShortSun": "Dom",
"dayOfWeek": "Giorno della settimana",
"dayOfMonth": "Giorno del mese",
"lastDay": "Ultimo giorno",
"lastDay1": "Ultimo giorno del mese",
"lastDay3": "3° ultimo giorno del mese",
"lastDay4": "4° ultimo giorno del mese",
"No Maintenance": "Nessuna manutenzione",
"pauseMaintenanceMsg": "Sei sicuro di voler mettere in pausa?",
"maintenanceStatus-inactive": "Inattivo",
"maintenanceStatus-scheduled": "Programmato",
"maintenanceStatus-ended": "Conclusa",
"maintenanceStatus-unknown": "Sconosciuto",
"Display Timezone": "Mostra fuso orario",
"Server Timezone": "Fuso orario del server",
"statusPageMaintenanceEndDate": "Fine",
"IconUrl": "URL dell'icona",
"Enable DNS Cache": "Abilita la cache DNS per i monitor HTTP(s).",
"Enable": "Abilitare",
"Disable": "Disattivare",
"chromeExecutableAutoDetect": "Trovato automaticamente",
"dnsCacheDescription": "Potrebbe non funzionare in alcuni ambienti IPv6, disabilitalo in caso di problemi.",
"Single Maintenance Window": "Singola finestra di manutenzione",
"Maintenance Time Window of a Day": "Finestra temporale di manutenzione di un giorno",
"Effective Date Range": "Intervallo di date effettivo (facoltativo)",
"Schedule Maintenance": "Pianificare la manutenzione",
"Edit Maintenance": "Modifica Manutenzione",
"Date and Time": "Data e ora",
"DateTime Range": "Intervallo DataOra",
"loadingError": "Impossibile recuperare i dati, riprova più tardi.",
"plugin": "Plug-in | Plugin",
"install": "Installare",
"installing": "Installazione",
"uninstall": "Disinstalla",
"confirmUninstallPlugin": "Sei sicuro di voler disinstallare questo plugin?",
"notificationRegional": "Regionale",
"Clone": "Clone",
"cloneOf": "Clone di {0}",
"wayToGetZohoCliqURL": "Puoi scoprire come creare un URL webhook {0}.",
"dataRetentionTimeError": "Il periodo di conservazione deve essere pari o superiore a 0",
"infiniteRetention": "Impostare su 0 per la conservazione infinita.",
"enableGRPCTls": "Consenti l'invio di richieste gRPC con connessione TLS",
"grpcMethodDescription": "Il nome del metodo viene convertito nel formato cammelCase come sayHello, check, ecc.",
"styleElapsedTimeShowNoLine": "Mostra (nessuna riga)",
"Add New Tag": "Aggiungi nuova etichetta",
"webhookCustomBodyDesc": "Definire un corpo HTTP personalizzato per la richiesta. Le variabili modello {msg}, {heartbeat}, {monitor} sono accettate.",
"Select": "Selezionare",
"Accept characters:": "Accetta caratteri:",
"The slug is already taken. Please choose another slug.": "La lumaca è già slug. Scegli un'altra slug.",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connessione corrente potrebbe andare persa se ti stai connettendo tramite Cloudflare Tunnel. Sei sicuro di volerlo fermare? Digita la tua password attuale per confermarla.",
"Footer Text": "Testo piè di pagina",
"signedInDisp": "Accesso eseguito come {0}",
"RadiusCalledStationIdDescription": "Identificativo del dispositivo chiamato",
"Clone Monitor": "Monitoraggio clonazione",
"styleElapsedTime": "Tempo trascorso sotto la barra del battito cardiaco",
"enableProxyDescription": "Questo proxy non avrà effetto sulle richieste di monitoraggio fino a quando non viene attivato. È possibile controllare la disabilitazione temporanea del proxy da tutti i monitor in base allo stato di attivazione.",
"Using a Reverse Proxy?": "Utilizzo di un proxy inverso?",
"There might be a typing error in the address.": "Potrebbe esserci un errore di battitura nell'indirizzo.",
"certificationExpiryDescription": "HTTPS monitora la notifica di attivazione quando il certificato TLS scade tra:",
"tailscalePingWarning": "Per utilizzare il monitor Tailscale Ping, è necessario installare Uptime Kuma senza Docker e installare anche il client Tailscale sul server.",
"telegramMessageThreadID": "(Facoltativo) ID thread messaggio",
"telegramMessageThreadIDDescription": "Facoltativo Identificatore univoco per il thread del messaggio di destinazione (argomento) del forum; solo per i supergruppi del forum",
"telegramProtectContentDescription": "Se abilitato, i messaggi del bot in Telegram saranno protetti dall'inoltro e dal salvataggio.",
"trustProxyDescription": "Fidati delle intestazioni 'X-Forwarded-*'. Se vuoi ottenere l'IP client corretto e il tuo Uptime Kuma è dietro un proxy come Nginx o Apache, dovresti abilitarlo.",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Un elenco di servizi di notifica è disponibile in Home Assistant in \"Strumenti per sviluppatori> Servizi\" cerca \"notifica\" per trovare il nome del tuo dispositivo/telefono.",
"invalidCronExpression": "Espressione Cron non valida: {0}",
"lastDay2": "2° ultimo giorno del mese",
"maintenanceStatus-under-maintenance": "In manutenzione",
"chromeExecutable": "Cromo/cromo eseguibile",
"chromeExecutableDescription": "Per gli utenti Docker, se Chromium non è ancora installato, potrebbero essere necessari alcuni minuti per l'installazione e la visualizzazione del risultato del test. Richiede 1 GB di spazio su disco.",
"uninstalling": "Disinstallazione",
"confirmDeleteTagMsg": "Sei sicuro di voler eliminare questo tag? I monitor associati a questo tag non verranno eliminati.",
"Request Timeout": "Richiedi timeout",
"timeoutAfter": "Timeout dopo {0} secondi",
"Resend Notification if Down X times consecutively": "Invia di nuovo la notifica se giù X volte consecutivamente",
"Proxy": "Proxy",
"or": "o",
"statusPageRefreshIn": "Aggiorna tra: {0}",
"HTTP Headers": "Intestazioni HTTP",
"Custom": "Personalizzato",
"Connection Type": "Tipo di connessione",
"Docker Daemon": "Deamon Docker",
"socket": "Socket",
"Home Assistant URL": "URL dell'assistente domestico",
"weekdayShortFri": "Ven",
"Home": "Accoglienza",
"Invert Keyword": "Inverti parola chiave",
"filterActive": "Attiva",
"filterActivePaused": "In pausa",
"Cannot connect to the socket server": "Impossibile connettersi al server socket",
"Reconnecting...": "Riconnessione...",
"Expected Value": "Valore atteso",
"Json Query": "Query Json"
} }

View file

@ -43,7 +43,7 @@
"Delete": "Удалить", "Delete": "Удалить",
"Current": "Текущий", "Current": "Текущий",
"Uptime": "Аптайм", "Uptime": "Аптайм",
"Cert Exp.": "Сертификат истекает", "Cert Exp.": "Сертификат ист.",
"day": "день | дней", "day": "день | дней",
"-day": "-дней", "-day": "-дней",
"hour": "час", "hour": "час",
@ -542,7 +542,7 @@
"Container Name / ID": "Название контейнера / ID", "Container Name / ID": "Название контейнера / ID",
"Docker Host": "Хост Docker", "Docker Host": "Хост Docker",
"Docker Hosts": "Хосты Docker", "Docker Hosts": "Хосты Docker",
"ntfy Topic": "тема ntfy", "ntfy Topic": "Тема ntfy",
"Domain": "Домен", "Domain": "Домен",
"Workstation": "Рабочая станция", "Workstation": "Рабочая станция",
"disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.", "disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.",
@ -639,7 +639,7 @@
"Server Timezone": "Часовой пояс сервера", "Server Timezone": "Часовой пояс сервера",
"statusPageMaintenanceEndDate": "Конец", "statusPageMaintenanceEndDate": "Конец",
"IconUrl": "URL иконки", "IconUrl": "URL иконки",
"Enable DNS Cache": "Включить DNS кэш", "Enable DNS Cache": "Включить DNS кэш для мониторов HTTP(S)",
"Enable": "Включить", "Enable": "Включить",
"Disable": "Отключить", "Disable": "Отключить",
"Single Maintenance Window": "Единое окно техбслуживания", "Single Maintenance Window": "Единое окно техбслуживания",
@ -825,5 +825,27 @@
"filterActive": "Активный", "filterActive": "Активный",
"filterActivePaused": "На паузе", "filterActivePaused": "На паузе",
"Invert Keyword": "Инвертировать ключевое слово", "Invert Keyword": "Инвертировать ключевое слово",
"tailscalePingWarning": "Для того чтобы использовать монитор Tailscale Ping, необходимо установить Uptime Kuma без Docker, а также установить на сервер клиент Tailscale." "tailscalePingWarning": "Для того чтобы использовать монитор Tailscale Ping, необходимо установить Uptime Kuma без Docker, а также установить на сервер клиент Tailscale.",
"PushDeer Server": "Сервер PushDeer",
"pushDeerServerDescription": "Оставьте пустым для использования официального сервера",
"showCertificateExpiry": "Показывать истекающий сертификат",
"Request Timeout": "Тайм-Аут запроса",
"timeoutAfter": "Тайм-Аут через {0} секунд",
"Select": "Выбрать",
"selectedMonitorCount": "Выбрано: {0}",
"Check/Uncheck": "Отметить/Снять",
"gamedigGuessPort": "Gamedig: Угадай порт",
"styleElapsedTime": "Прошедшее время под полосой частоты опроса",
"noOrBadCertificate": "Отсутствие сертификата",
"gamedigGuessPortDescription": "Порт, используемый протоколом Valve Server Query Protocol, может отличаться от порта клиента. Попробуйте это сделать, если монитор не может подключиться к серверу.",
"nostrSender": "Закрытый ключ отправителя (nsec)",
"wayToGetFlashDutyKey": "Вы можете перейти на страницу \"Канал\" -> (Выберите канал) -> \"Интеграции\" -> \"Добавить новую страницу интеграции\", добавить \"Пользовательское событие\", чтобы получить push-адрес, скопировать ключ интеграции в адрес. Для получения дополнительной информации, пожалуйста, посетите",
"styleElapsedTimeShowNoLine": "Показать (Без линии)",
"styleElapsedTimeShowWithLine": "Показать (С линией)",
"Server URL should not contain the nfty topic": "URL сервера не должен содержать тему nfty",
"nostrRecipients": "Открытые ключи получателей (npub)",
"nostrRecipientsHelp": "формат npub, по одному в строке",
"FlashDuty Severity": "Серьёзность",
"nostrRelays": "Реле Nostr",
"nostrRelaysHelp": "Один URL-адрес ретрансляции в каждой строке"
} }

View file

@ -833,5 +833,10 @@
"Check/Uncheck": "İşaretle/İşareti Kaldır", "Check/Uncheck": "İşaretle/İşareti Kaldır",
"pushDeerServerDescription": "Resmi sunucuyu kullanmak için boş bırakın", "pushDeerServerDescription": "Resmi sunucuyu kullanmak için boş bırakın",
"Request Timeout": "İstek zaman aşımına uğradı", "Request Timeout": "İstek zaman aşımına uğradı",
"timeoutAfter": "{0} saniye sonra zaman aşımı" "timeoutAfter": "{0} saniye sonra zaman aşımı",
"gamedigGuessPort": "Gamedig: Ziyaretçi Portu",
"gamedigGuessPortDescription": "Valve Server Sorgu Protokolü tarafından kullanılan bağlantı noktası, istemci bağlantı noktasından farklı olabilir. Monitör sunucunuza bağlanamıyorsa bunu deneyin.",
"styleElapsedTimeShowNoLine": "Göster (Satır Yok)",
"styleElapsedTime": "Kalp atışı çubuğunun altında geçen süre",
"styleElapsedTimeShowWithLine": "Göster (Satır ile birlikte)"
} }

View file

@ -835,5 +835,10 @@
"pushDeerServerDescription": "留空则使用官方服务器", "pushDeerServerDescription": "留空则使用官方服务器",
"PushDeer Server": "PushDeer 服务器", "PushDeer Server": "PushDeer 服务器",
"timeoutAfter": "{0} 秒后超时", "timeoutAfter": "{0} 秒后超时",
"Request Timeout": "请求超时" "Request Timeout": "请求超时",
"gamedigGuessPortDescription": "Valve 服务器查询协议使用的端口可能与客户端端口不同。如果监控器无法连接到服务器,请尝试此方法。",
"gamedigGuessPort": "Gamedig: 自动检测端口号",
"styleElapsedTimeShowWithLine": "显示(带连接线)",
"styleElapsedTimeShowNoLine": "显示(不带连接线)",
"styleElapsedTime": "在监控项详情的心跳栏下显示起止时间"
} }

View file

@ -23,17 +23,17 @@
</div> </div>
<div class="form-floating mt-3"> <div class="form-floating mt-3">
<input id="floatingInput" v-model="username" type="text" class="form-control" placeholder="Username" required data-cy="username-input"> <input id="floatingInput" v-model="username" type="text" class="form-control" :placeholder="$t('Username')" required data-cy="username-input">
<label for="floatingInput">{{ $t("Username") }}</label> <label for="floatingInput">{{ $t("Username") }}</label>
</div> </div>
<div class="form-floating mt-3"> <div class="form-floating mt-3">
<input id="floatingPassword" v-model="password" type="password" class="form-control" placeholder="Password" required data-cy="password-input"> <input id="floatingPassword" v-model="password" type="password" class="form-control" :placeholder="$t('Password')" required data-cy="password-input">
<label for="floatingPassword">{{ $t("Password") }}</label> <label for="floatingPassword">{{ $t("Password") }}</label>
</div> </div>
<div class="form-floating mt-3"> <div class="form-floating mt-3">
<input id="repeat" v-model="repeatPassword" type="password" class="form-control" placeholder="Repeat Password" required data-cy="password-repeat-input"> <input id="repeat" v-model="repeatPassword" type="password" class="form-control" :placeholder="$t('Repeat Password')" required data-cy="password-repeat-input">
<label for="repeat">{{ $t("Repeat Password") }}</label> <label for="repeat">{{ $t("Repeat Password") }}</label>
</div> </div>