Merge remote-tracking branch 'origin/master' into feature/add-support-for-method-body-and-headers

This commit is contained in:
Bert Verhelst 2021-10-10 18:40:53 +02:00
commit dc08510e72
14 changed files with 421 additions and 164 deletions

View file

@ -28,6 +28,7 @@ install.sh
SECURITY.md SECURITY.md
tsconfig.json tsconfig.json
.env .env
/tmp
### .gitignore content (commented rules are duplicated) ### .gitignore content (commented rules are duplicated)

View file

@ -64,7 +64,7 @@ It changed my current workflow and require further studies.
I personally do not like something need to learn so much and need to config so much before you can finally start the app. I personally do not like something need to learn so much and need to config so much before you can finally start the app.
- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run - Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run
- Single container for Docker users, no very complex docker-composer file. Just map the volume and expose the port, then good to go - Single container for Docker users, no very complex docker-compose file. Just map the volume and expose the port, then good to go
- Settings should be configurable in the frontend. Env var is not encouraged. - Settings should be configurable in the frontend. Env var is not encouraged.
- Easy to use - Easy to use
@ -74,7 +74,7 @@ I personally do not like something need to learn so much and need to config so m
- Follow `.editorconfig` - Follow `.editorconfig`
- Follow ESLint - Follow ESLint
## Name convention # Name convention
- Javascript/Typescript: camelCaseType - Javascript/Typescript: camelCaseType
- SQLite: underscore_type - SQLite: underscore_type

View file

@ -5,11 +5,23 @@
Use this section to tell people about which versions of your project are Use this section to tell people about which versions of your project are
currently being supported with security updates. currently being supported with security updates.
#### Uptime Kuma Versions:
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 1.7.X | :white_check_mark: | | 1.7.X | :white_check_mark: |
| < 1.7 | | | < 1.7 | |
#### Upgradable Docker Tags:
| Tag | Supported |
| ------- | ------------------ |
| 1 | :white_check_mark: |
| 1-debian | :white_check_mark: |
| 1-alpine | :white_check_mark: |
| latest | :white_check_mark: |
| debian | :white_check_mark: |
| alpine | :white_check_mark: |
| All other tags | ❌ |
## Reporting a Vulnerability ## Reporting a Vulnerability
Please report security issues to uptime@kuma.pet. Please report security issues to uptime@kuma.pet.

View file

@ -4,9 +4,9 @@ WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
COPY . . COPY . .
RUN npm install --legacy-peer-deps && \ RUN npm ci && \
npm run build && \ npm run build && \
npm prune --production && \ npm ci --production && \
chmod +x /app/extra/entrypoint.sh chmod +x /app/extra/entrypoint.sh

View file

@ -4,9 +4,9 @@ WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
COPY . . COPY . .
RUN npm install --legacy-peer-deps && \ RUN npm ci && \
npm run build && \ npm run build && \
npm prune --production && \ npm ci --production && \
chmod +x /app/extra/entrypoint.sh chmod +x /app/extra/entrypoint.sh

57
extra/download-dist.js Normal file
View file

@ -0,0 +1,57 @@
console.log("Downloading dist");
const https = require("https");
const tar = require("tar");
const packageJSON = require("../package.json");
const fs = require("fs");
const version = packageJSON.version;
const filename = "dist.tar.gz";
const url = `https://github.com/louislam/uptime-kuma/releases/download/${version}/${filename}`;
download(url);
function download(url) {
console.log(url);
https.get(url, (response) => {
if (response.statusCode === 200) {
console.log("Extracting dist...");
if (fs.existsSync("./dist")) {
if (fs.existsSync("./dist-backup")) {
fs.rmdirSync("./dist-backup", {
recursive: true
});
}
fs.renameSync("./dist", "./dist-backup");
}
const tarStream = tar.x({
cwd: "./",
});
tarStream.on("close", () => {
fs.rmdirSync("./dist-backup", {
recursive: true
});
console.log("Done");
});
tarStream.on("error", () => {
if (fs.existsSync("./dist-backup")) {
fs.renameSync("./dist-backup", "./dist");
}
console.log("Done");
});
response.pipe(tarStream);
} else if (response.statusCode === 302) {
download(response.headers.location);
} else {
console.log("dist not found");
}
});
}

1
package-lock.json generated
View file

@ -40,6 +40,7 @@
"redbean-node": "0.1.2", "redbean-node": "0.1.2",
"socket.io": "~4.2.0", "socket.io": "~4.2.0",
"socket.io-client": "~4.2.0", "socket.io-client": "~4.2.0",
"tar": "^6.1.11",
"tcp-ping": "~0.1.1", "tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2", "thirty-two": "~1.0.2",
"timezones-list": "~3.0.1", "timezones-list": "~3.0.1",

View file

@ -1,6 +1,6 @@
{ {
"name": "uptime-kuma", "name": "uptime-kuma",
"version": "1.7.3", "version": "1.8.0",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
"type": "git", "type": "git",
@ -29,13 +29,14 @@
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
"build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push",
"build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push",
"build-docker-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.7.3-alpine --target release . --push", "build-docker-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.8.0-alpine --target release . --push",
"build-docker-debian": "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.7.3 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.7.3-debian --target release . --push", "build-docker-debian": "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.8.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.8.0-debian --target release . --push",
"build-docker-nightly": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
"build-docker-nightly-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push",
"build-docker-nightly-amd64": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "build-docker-nightly-amd64": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"upload-artifacts": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", "upload-artifacts": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
"setup": "git checkout 1.7.3 && npm install --legacy-peer-deps && node node_modules/esbuild/install.js && npm run build && npm prune", "setup": "git checkout 1.8.0 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"update-version": "node extra/update-version.js", "update-version": "node extra/update-version.js",
"mark-as-nightly": "node extra/mark-as-nightly.js", "mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js", "reset-password": "node extra/reset-password.js",
@ -81,6 +82,7 @@
"redbean-node": "0.1.2", "redbean-node": "0.1.2",
"socket.io": "~4.2.0", "socket.io": "~4.2.0",
"socket.io-client": "~4.2.0", "socket.io-client": "~4.2.0",
"tar": "^6.1.11",
"tcp-ping": "~0.1.1", "tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2", "thirty-two": "~1.0.2",
"timezones-list": "~3.0.1", "timezones-list": "~3.0.1",

View file

@ -11,6 +11,7 @@ const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalCli
const { R } = require("redbean-node"); const { R } = require("redbean-node");
const { BeanModel } = require("redbean-node/dist/bean-model"); const { BeanModel } = require("redbean-node/dist/bean-model");
const { Notification } = require("../notification"); const { Notification } = require("../notification");
const { demoMode } = require("../server");
const version = require("../../package.json").version; const version = require("../../package.json").version;
const apicache = require("../modules/apicache"); const apicache = require("../modules/apicache");
@ -371,6 +372,14 @@ class Monitor extends BeanModel {
previousBeat = bean; previousBeat = bean;
if (! this.isStop) { if (! this.isStop) {
if (demoMode) {
if (beatInterval < 20) {
console.log("beat interval too low, reset to 20s");
beatInterval = 20;
}
}
this.heartbeatInterval = setTimeout(beat, beatInterval * 1000); this.heartbeatInterval = setTimeout(beat, beatInterval * 1000);
} }

View file

@ -6,7 +6,7 @@ const commonLabels = [
"monitor_url", "monitor_url",
"monitor_hostname", "monitor_hostname",
"monitor_port", "monitor_port",
] ];
const monitor_cert_days_remaining = new PrometheusClient.Gauge({ const monitor_cert_days_remaining = new PrometheusClient.Gauge({
name: "monitor_cert_days_remaining", name: "monitor_cert_days_remaining",
@ -41,45 +41,46 @@ class Prometheus {
monitor_url: monitor.url, monitor_url: monitor.url,
monitor_hostname: monitor.hostname, monitor_hostname: monitor.hostname,
monitor_port: monitor.port monitor_port: monitor.port
} };
} }
update(heartbeat, tlsInfo) { update(heartbeat, tlsInfo) {
if (typeof tlsInfo !== "undefined") { if (typeof tlsInfo !== "undefined") {
try { try {
let is_valid = 0 let is_valid = 0;
if (tlsInfo.valid == true) { if (tlsInfo.valid == true) {
is_valid = 1 is_valid = 1;
} else { } else {
is_valid = 0 is_valid = 0;
} }
monitor_cert_is_valid.set(this.monitorLabelValues, is_valid) monitor_cert_is_valid.set(this.monitorLabelValues, is_valid);
} catch (e) { } catch (e) {
console.error(e) console.error(e);
} }
try { try {
monitor_cert_days_remaining.set(this.monitorLabelValues, tlsInfo.certInfo.daysRemaining) monitor_cert_days_remaining.set(this.monitorLabelValues, tlsInfo.certInfo.daysRemaining);
} catch (e) { } catch (e) {
console.error(e) console.error(e);
} }
} }
try { try {
monitor_status.set(this.monitorLabelValues, heartbeat.status) monitor_status.set(this.monitorLabelValues, heartbeat.status);
} catch (e) { } catch (e) {
console.error(e) console.error(e);
} }
try { try {
if (typeof heartbeat.ping === "number") { if (typeof heartbeat.ping === "number") {
monitor_response_time.set(this.monitorLabelValues, heartbeat.ping) monitor_response_time.set(this.monitorLabelValues, heartbeat.ping);
} else { } else {
// Is it good? // Is it good?
monitor_response_time.set(this.monitorLabelValues, -1) monitor_response_time.set(this.monitorLabelValues, -1);
} }
} catch (e) { } catch (e) {
console.error(e) console.error(e);
} }
} }
@ -87,4 +88,4 @@ class Prometheus {
module.exports = { module.exports = {
Prometheus Prometheus
} };

View file

@ -1,12 +1,18 @@
console.log("Welcome to Uptime Kuma"); console.log("Welcome to Uptime Kuma");
const args = require("args-parser")(process.argv);
const { sleep, debug, getRandomInt, genSecret } = require("../src/util");
debug(args);
if (! process.env.NODE_ENV) { if (! process.env.NODE_ENV) {
process.env.NODE_ENV = "production"; process.env.NODE_ENV = "production";
} }
console.log("Node Env: " + process.env.NODE_ENV); // Demo Mode?
const demoMode = args["demo"] || false;
exports.demoMode = demoMode;
const { sleep, debug, getRandomInt, genSecret } = require("../src/util"); console.log("Node Env: " + process.env.NODE_ENV);
console.log("Importing Node libraries"); console.log("Importing Node libraries");
const fs = require("fs"); const fs = require("fs");
@ -50,8 +56,6 @@ const { basicAuth } = require("./auth");
const { login } = require("./auth"); const { login } = require("./auth");
const passwordHash = require("./password-hash"); const passwordHash = require("./password-hash");
const args = require("args-parser")(process.argv);
const checkVersion = require("./check-version"); const checkVersion = require("./check-version");
console.info("Version: " + checkVersion.version); console.info("Version: " + checkVersion.version);
@ -70,6 +74,10 @@ const sslCert = process.env.SSL_CERT || args["ssl-cert"] || undefined;
*/ */
const testMode = !!args["test"] || false; const testMode = !!args["test"] || false;
if (demoMode) {
console.log("==== Demo Mode ====");
}
console.log("Creating express and socket.io instance"); console.log("Creating express and socket.io instance");
const app = express(); const app = express();

View file

@ -1,5 +1,31 @@
export default { export default {
languageName: "Français (France)", languageName: "Français (France)",
checkEverySecond: "Vérifier toutes les {0} secondes",
retryCheckEverySecond: "Réessayer toutes les {0} secondes.",
retriesDescription: "Nombre d'essais avant que le service soit déclaré hors-ligne.",
ignoreTLSError: "Ignorer les erreurs liées au certificat SSL/TLS",
upsideDownModeDescription: "Si le service est en ligne, il sera alors noté hors-ligne et vice-versa.",
maxRedirectDescription: "Nombre maximal de redirections avant que le service soit noté hors-ligne.",
acceptedStatusCodesDescription: "Codes HTTP considérés comme en ligne",
passwordNotMatchMsg: "Les mots de passe ne correspondent pas",
notificationDescription: "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.",
keywordDescription: "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.",
pauseDashboardHome: "Éléments mis en pause",
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.",
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: "Etes vous sur de vouloir mettre en pause cette sonde ?",
enableDefaultNotificationDescription: "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.",
clearEventsMsg: "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?",
clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer tous les vérifications pour cette sonde ?",
confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer tous les statistiques ?",
importHandleDescription: "Choisissez 'Ignorer l'existant' si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option 'Écraser' supprime tous les sondes et notifications existantes.",
confirmImportMsg: "Êtes-vous sûr d'importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.",
twoFAVerifyLabel: "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.",
tokenValidSettingsMsg: "Le jeton est valide ! Vous pouvez maintenant sauvegarder les paramètres 2FA.",
confirmEnableTwoFAMsg: "Êtes-vous sûr de vouloir activer le 2FA ?",
confirmDisableTwoFAMsg: "Êtes-vous sûr de vouloir désactiver le 2FA ?",
Settings: "Paramètres", Settings: "Paramètres",
Dashboard: "Tableau de bord", Dashboard: "Tableau de bord",
"New Update": "Mise à jour disponible", "New Update": "Mise à jour disponible",
@ -18,7 +44,6 @@ export default {
Pending: "En attente", Pending: "En attente",
Unknown: "Inconnu", Unknown: "Inconnu",
Pause: "En Pause", Pause: "En Pause",
pauseDashboardHome: "Éléments mis en pause",
Name: "Nom", Name: "Nom",
Status: "État", Status: "État",
DateTime: "Heure", DateTime: "Heure",
@ -30,31 +55,26 @@ export default {
Current: "Actuellement", Current: "Actuellement",
Uptime: "Uptime", Uptime: "Uptime",
"Cert Exp.": "Certificat expiré", "Cert Exp.": "Certificat expiré",
days: "Jours", days: "jours",
day: "Jour", day: "jour",
"-day": "Journée", "-day": "-jours",
hour: "Heure", hour: "-heure",
"-hour": "Heures", "-hour": "-heures",
checkEverySecond: "Vérifier toutes les {0} secondes",
Response: "Temps de réponse", Response: "Temps de réponse",
Ping: "Ping", Ping: "Ping",
"Monitor Type": "Type de Sonde", "Monitor Type": "Type de Sonde",
Keyword: "Mot-clé", Keyword: "Mot-clé",
"Friendly Name": "Nom d'affichage", "Friendly Name": "Nom d'affichage",
URL: "URL", URL: "URL",
Hostname: "Nom d'hôte", Hostname: "Nom d'hôte / adresse IP",
Port: "Port", Port: "Port",
"Heartbeat Interval": "Intervale de vérification", "Heartbeat Interval": "Intervale de vérification",
Retries: "Essais", Retries: "Essais",
retriesDescription: "Nombre d'essais avant que le service soit déclaré hors-ligne.", "Heartbeat Retry Interval": "Réessayer l'intervale de vérification",
Advanced: "Avancé", Advanced: "Avancé",
ignoreTLSError: "Ignorer les erreurs liées au certificat SSL/TLS",
"Upside Down Mode": "Mode inversé", "Upside Down Mode": "Mode inversé",
upsideDownModeDescription: "Si le service est en ligne, il sera alors noté hors-ligne et vice-versa.",
"Max. Redirects": "Nombre maximum de redirections", "Max. Redirects": "Nombre maximum de redirections",
maxRedirectDescription: "Nombre maximal de redirections avant que le service soit noté hors-ligne.", "Accepted Status Codes": "Codes HTTP acceptés",
"Accepted Status Codes": "Codes HTTP",
acceptedStatusCodesDescription: "Codes HTTP considérés comme en ligne",
Save: "Sauvegarder", Save: "Sauvegarder",
Notifications: "Notifications", Notifications: "Notifications",
"Not available, please setup.": "Pas de système de notification disponible, merci de le configurer", "Not available, please setup.": "Pas de système de notification disponible, merci de le configurer",
@ -63,9 +83,9 @@ export default {
Dark: "Sombre", Dark: "Sombre",
Auto: "Automatique", Auto: "Automatique",
"Theme - Heartbeat Bar": "Voir les services surveillés", "Theme - Heartbeat Bar": "Voir les services surveillés",
Normal: "Général", Normal: "Normal",
Bottom: "En dessous", Bottom: "En dessous",
None: "Rien", None: "Aucun",
Timezone: "Fuseau Horaire", Timezone: "Fuseau Horaire",
"Search Engine Visibility": "Visibilité par les moteurs de recherche", "Search Engine Visibility": "Visibilité par les moteurs de recherche",
"Allow indexing": "Autoriser l'indexation par des moteurs de recherche", "Allow indexing": "Autoriser l'indexation par des moteurs de recherche",
@ -74,14 +94,12 @@ export default {
"Current Password": "Mot de passe actuel", "Current Password": "Mot de passe actuel",
"New Password": "Nouveau mot de passe", "New Password": "Nouveau mot de passe",
"Repeat New Password": "Répéter votre 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", "Update Password": "Mettre à jour le mot de passe",
"Disable Auth": "Désactiver l'authentification", "Disable Auth": "Désactiver l'authentification",
"Enable Auth": "Activer l'authentification", "Enable Auth": "Activer l'authentification",
Logout: "Se déconnecter", Logout: "Se déconnecter",
notificationDescription: "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.",
Leave: "Quitter", Leave: "Quitter",
"I understand, please disable": "J'ai compris, désactivez-le", "I understand, please disable": "Je comprends, désactivez-le",
Confirm: "Confirmer", Confirm: "Confirmer",
Yes: "Oui", Yes: "Oui",
No: "Non", No: "Non",
@ -94,43 +112,35 @@ export default {
"Notification Type": "Type de notification", "Notification Type": "Type de notification",
Email: "Email", Email: "Email",
Test: "Tester", Test: "Tester",
keywordDescription: "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.",
"Certificate Info": "Informations sur le certificat SSL", "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é", "Resolver Server": "Serveur DNS utilisé",
"Resource Record Type": "Type d'enregistrement DNS recherché", "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: "Etes vous sur de vouloir mettre en pause cette sonde ?",
"Last Result": "Dernier résultat", "Last Result": "Dernier résultat",
"Create your admin account": "Créez votre compte administrateur", "Create your admin account": "Créez votre compte administrateur",
"Repeat Password": "Répéter le mot de passe", "Repeat Password": "Répéter le mot de passe",
"Import Backup": "Importation de la sauvegarde",
"Export Backup": "Exportation de la sauvegarde",
Export: "Exporter",
Import: "Importer",
respTime: "Temps de réponse (ms)", respTime: "Temps de réponse (ms)",
notAvailableShort: "N/A", notAvailableShort: "N/A",
"Default enabled": "Activé par défaut",
"Apply on all existing monitors": "Appliquer sur toutes les sondes existantes",
Create: "Créer", Create: "Créer",
clearEventsMsg: "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?",
clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer tous les vérifications pour cette sonde ? Are you sure want to delete all heartbeats for this monitor?",
confirmClearStatisticsMsg: "tes-vous sûr de vouloir supprimer tous les statistiques ?",
"Clear Data": "Effacer les données", "Clear Data": "Effacer les données",
Events: "Evénements", Events: "Evénements",
Heartbeats: "Vérfications", Heartbeats: "Vérfications",
"Auto Get": "Auto Get", "Auto Get": "Auto Get",
enableDefaultNotificationDescription: "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.",
"Default enabled": "Activé par défaut",
"Also apply to existing monitors": "S'applique également aux sondes existantes",
Export: "Exporter",
Import: "Importer",
backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.",
backupDescription2: "PS: Les données relatives à l'historique et aux événements ne sont pas incluses.", backupDescription2: "PS: Les données relatives à l'historique et aux événements ne sont pas incluses.",
backupDescription3: "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", backupDescription3: "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.",
alertNoFile: "Veuillez sélectionner un fichier à importer.", alertNoFile: "Veuillez sélectionner un fichier à importer.",
alertWrongFileType: "Veuillez sélectionner un fichier JSON à importer.", alertWrongFileType: "Veuillez sélectionner un fichier JSON à importer.",
twoFAVerifyLabel: "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.", "Clear all statistics": "Effacer touutes les statistiques",
tokenValidSettingsMsg: "Le jeton est valide ! Vous pouvez maintenant sauvegarder les paramètres 2FA.", "Skip existing": "Sauter l'existant",
confirmEnableTwoFAMsg: "Êtes-vous sûr de vouloir activer le 2FA ?", Overwrite: "Ecraser",
confirmDisableTwoFAMsg: "Êtes-vous sûr de vouloir désactiver le 2FA ?", Options: "Options",
"Apply on all existing monitors": "Appliquer sur toutes les sondes existantes", "Keep both": "Garder les deux",
"Verify Token": "Vérifier le jeton", "Verify Token": "Vérifier le jeton",
"Setup 2FA": "Configurer 2FA", "Setup 2FA": "Configurer 2FA",
"Enable 2FA": "Activer 2FA", "Enable 2FA": "Activer 2FA",
@ -141,17 +151,6 @@ export default {
Inactive: "Inactif", Inactive: "Inactif",
Token: "Jeton", Token: "Jeton",
"Show URI": "Afficher l'URI", "Show URI": "Afficher l'URI",
"Clear all statistics": "Effacer touutes les statistiques",
retryCheckEverySecond: "Réessayer toutes les {0} secondes.",
importHandleDescription: "Choisissez 'Ignorer l'existant' si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option 'Écraser' supprime tous les sondes et notifications existantes.",
confirmImportMsg: "Êtes-vous sûr d'importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.",
"Heartbeat Retry Interval": "Réessayer l'intervale de vérification",
"Import Backup": "Importation de la sauvegarde",
"Export Backup": "Exportation de la sauvegarde",
"Skip existing": "Sauter l'existant",
Overwrite: "Ecraser",
Options: "Options",
"Keep both": "Garder les deux",
Tags: "Étiquettes", Tags: "Étiquettes",
"Add New below or Select...": "Ajouter nouveau ci-dessous ou sélectionner...", "Add New below or Select...": "Ajouter nouveau ci-dessous ou sélectionner...",
"Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.", "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.",
@ -180,14 +179,58 @@ export default {
"Edit Status Page": "Modifier la page de statut", "Edit Status Page": "Modifier la page de statut",
"Go to Dashboard": "Accéder au tableau de bord", "Go to Dashboard": "Accéder au tableau de bord",
"Status Page": "Status Page", "Status Page": "Status Page",
telegram: "Telegram", // Start notification form
webhook: "Webhook", defaultNotificationName: "Ma notification {notification} numéro ({number})",
smtp: "Email (SMTP)", here: "ici",
discord: "Discord", "Required": "Requis",
teams: "Microsoft Teams", "telegram": "Telegram",
signal: "Signal", "Bot Token": "Bot Token",
gotify: "Gotify", "You can get a token from": "Vous pouvez avoir un token depuis",
slack: "Slack", "Chat ID": "Chat ID",
supportTelegramChatID: "Supporte les messages privés / en groupe / l'ID du salon",
wayToGetTelegramChatID: "Vous pouvez obtenir l'ID du chat en envoyant un message avec le bot puis en récupérant l'URL pour voir l'ID du salon:",
"YOUR BOT TOKEN HERE": "VOTRE TOKEN BOT ICI",
chatIDNotFound: "ID du salon introuvable, envoyez un message via le bot avant",
"webhook": "Webhook",
"Post URL": "Post URL",
"Content Type": "Content Type",
webhookJsonDesc: "{0} est bon pour tous les serveurs HTTP modernes comme express.js",
webhookFormDataDesc: "{multipart} est bon pour du PHP, vous avez juste besoin de mettre le json via {decodeFunction}",
"smtp": "Email (SMTP)",
secureOptionNone: "Aucun / STARTTLS (25, 587)",
secureOptionTLS: "TLS (465)",
"Ignore TLS Error": "Ignorer les erreurs TLS",
"From Email": "Depuis l'Email",
"To Email": "Vers l'Email",
smtpCC: "CC",
smtpBCC: "BCC",
"discord": "Discord",
"Discord Webhook URL": "Discord Webhook URL",
wayToGetDiscordURL: "Vous pouvez l'obtenir en allant dans 'Paramètres du Serveur' -> 'Intégrations' -> 'Créer un Webhook'",
"Bot Display Name": "Nom du bot (affiché)",
"Prefix Custom Message": "Prefix Custom Message",
"Hello @everyone is...": "Bonjour {'@'}everyone il...",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook URL",
wayToGetTeamsURL: "Vous pouvez apprendre comment créer un Webhook {0}.",
"signal": "Signal",
"Number": "Numéro",
"Recipients": "Destinataires",
needSignalAPI: "Vous avez besoin d'un client Signal avec l'API REST.",
wayToCheckSignalURL: "Vous pouvez regarder l'URL sur comment le mettre en place:",
signalImportant: "IMPORTANT: Vous ne pouvez pas mixer les groupes et les numéros en destinataires!",
"gotify": "Gotify",
"Application Token": "Application Token",
"Server URL": "Server URL",
"Priority": "Priorité",
"slack": "Slack",
"Icon Emoji": "Icon Emoji",
"Channel Name": "Nom du salon",
"Uptime Kuma URL": "Uptime Kuma URL",
aboutWebhooks: "Plus d'informations sur les Webhooks ici: {0}",
aboutChannelName: "Mettez le nom du salon dans {0} dans Channel Name si vous voulez bypass le salon Webhook. Ex: #autre-salon",
aboutKumaURL: "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.",
emojiCheatSheet: "Emoji cheat sheet: {0}",
"rocket.chat": "Rocket.chat", "rocket.chat": "Rocket.chat",
pushover: "Pushover", pushover: "Pushover",
pushy: "Pushy", pushy: "Pushy",
@ -198,4 +241,44 @@ export default {
pushbullet: "Pushbullet", pushbullet: "Pushbullet",
line: "Line Messenger", line: "Line Messenger",
mattermost: "Mattermost", mattermost: "Mattermost",
"User Key": "Clé d'utilisateur",
"Device": "Appareil",
"Message Title": "Titre du message",
"Notification Sound": "Son de notification",
"More info on:": "Plus d'informations sur: {0}",
pushoverDesc1: "Priorité d'urgence (2) a par défaut 30 secondes de délai dépassé entre les tentatives et expierera après 1 heure.",
pushoverDesc2: "Si vous voulez envoyer des notifications sur différents Appareils, remplissez le champ 'Device'.",
"SMS Type": "SMS Type",
octopushTypePremium: "Premium (Rapide - recommandé pour les alertes)",
octopushTypeLowCost: "A bas prix (Lent, bloqué de temps en temps par l'opérateur)",
"Check octopush prices": "Vérifiez les prix d'octopush {0}.",
octopushPhoneNumber: "Numéro de téléphone (format intérn., ex : +33612345678) ",
octopushSMSSender: "Nom de l'envoyer : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)",
"LunaSea Device ID": "LunaSea Device ID",
"Apprise URL": "Apprise URL",
"Example:": "Exemple: {0}",
"Read more:": "En savoir plus: {0}",
"Status:": "Status: {0}",
"Read more": "En savoir plus",
appriseInstalled: "Apprise est intallé.",
appriseNotInstalled: "Apprise n'est pas intallé. {0}",
"Access Token": "Access Token",
"Channel access token": "Channel access token",
"Line Developers Console": "Line Developers Console",
lineDevConsoleTo: "Line Developers Console - {0}",
"Basic Settings": "Paramètres de base",
"User ID": "Identifiant utilisateur",
"Messaging API": "Messaging API",
wayToGetLineChannelToken: "Premièrement accéder à {0}, créez un Provider et un Salon (Messaging API), puis vous pourrez avoir le Token d'accès du salon ainsi que l'Identifiant utilisateur depuis le même menu.",
"Icon URL": "Icon URL",
aboutIconURL: "Vous pouvez mettre un lien vers l'image dans \"Icon URL\" pour remplacer l'image de profil par défaut. Ne sera pas utilisé si Icon Emoji est défini.",
aboutMattermostChannelName: "Vous pouvez remplacer le salon par défaut que le Webhook utilise en mettant le nom du salon dans le champ \"Channel Name\". Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex: #autre-salon",
"matrix": "Matrix",
promosmsTypeEco: "SMS ECO - Pas chère mais lent et souvent surchargé. Limité uniquement aux déstinataires Polonais.",
promosmsTypeFlash: "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux déstinataires Polonais.",
promosmsTypeFull: "SMS FULL - Version Premium des SMS, Vous pouvez mettre le nom de l'expéditeur (Vous devez vous enregistrer avant). Fiable pour les alertes.",
promosmsTypeSpeed: "SMS SPEED - La plus haute des priorités dans le système. Très rapide et fiable mais cher (environ le double du prix d'un SMS FULL).",
promosmsPhoneNumber: "Numéro de téléphone (Poiur les déstinataires Polonais, vous pouvez enlever les codes interna.)",
promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
// End notification form
}; };

View file

@ -1,38 +1,49 @@
export default { export default {
languageName: "Polski", languageName: "Polski",
checkEverySecond: "Sprawdzam co {0} sekund.", checkEverySecond: "Sprawdzaj co {0} sekund",
retriesDescription: "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako wyłączona i zostanie wysłane powiadomienie", retryCheckEverySecond: "Ponawiaj co {0} sekund",
retriesDescription: "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie",
ignoreTLSError: "Ignoruj błąd TLS/SSL dla stron HTTPS", ignoreTLSError: "Ignoruj błąd TLS/SSL dla stron HTTPS",
upsideDownModeDescription: "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.", upsideDownModeDescription: "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.",
maxRedirectDescription: "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.", maxRedirectDescription: "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.",
acceptedStatusCodesDescription: "Wybierz kody stanu, które są uważane za udaną odpowiedź.", acceptedStatusCodesDescription: "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.",
passwordNotMatchMsg: "Powtórzone hasło nie pasuje.", passwordNotMatchMsg: "Powtórzone hasło nie pasuje.",
notificationDescription: "Proszę przypisać powiadomienie do monitora(ów), aby zadziałało.", notificationDescription: "Proszę przypisać powiadomienie do monitora(ów), aby działało.",
keywordDescription: "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.", keywordDescription: "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.",
pauseDashboardHome: "Pauza", pauseDashboardHome: "Wstrzymaj",
deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?", deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?",
deleteNotificationMsg: "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?", deleteNotificationMsg: "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?",
resoverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", resoverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.",
rrtypeDescription: "Wybierz RR-Type który chcesz monitorować", rrtypeDescription: "Wybierz rodzaj rekordu, który chcesz monitorować.",
pauseMonitorMsg: "Czy na pewno chcesz wstrzymać?", pauseMonitorMsg: "Czy na pewno chcesz wstrzymać monitorowanie?",
enableDefaultNotificationDescription: "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.",
clearEventsMsg: "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?",
clearHeartbeatsMsg: "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?",
confirmClearStatisticsMsg: "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?",
importHandleDescription: "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.",
confirmImportMsg: "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.",
twoFAVerifyLabel: "Proszę podaj swój token 2FA, aby sprawdzić czy 2FA działa.",
tokenValidSettingsMsg: "Token jest prawdiłowy! Teraz możesz zapisać ustawienia 2FA.",
confirmEnableTwoFAMsg: "Jesteś pewien, że chcesz włączyć 2FA?",
confirmDisableTwoFAMsg: "Jesteś pewien, że chcesz wyłączyć 2FA?",
Settings: "Ustawienia", Settings: "Ustawienia",
Dashboard: "Panel", Dashboard: "Panel",
"New Update": "Nowa aktualizacja", "New Update": "Nowa Aktualizacja",
Language: "Język", Language: "Język",
Appearance: "Wygląd", Appearance: "Wygląd",
Theme: "Motyw", Theme: "Motyw",
General: "Ogólne", General: "Ogólne",
Version: "Wersja", Version: "Wersja",
"Check Update On GitHub": "Sprawdź aktualizację na GitHub.", "Check Update On GitHub": "Sprawdź aktualizację na GitHub",
List: "Lista", List: "Lista",
Add: "Dodaj", Add: "Dodaj",
"Add New Monitor": "Dodaj nowy monitor", "Add New Monitor": "Dodaj Monitor",
"Quick Stats": "Szybkie statystyki", "Quick Stats": "Szybki podgląd statystyk",
Up: "Online", Up: "Online",
Down: "Offline", Down: "Offline",
Pending: "Oczekujący", Pending: "Oczekuje",
Unknown: "Nieznane", Unknown: "Nieznane",
Pause: "Pauza", Pause: "Wstrzymane",
Name: "Nazwa", Name: "Nazwa",
Status: "Status", Status: "Status",
DateTime: "Data i godzina", DateTime: "Data i godzina",
@ -41,42 +52,43 @@ export default {
Resume: "Wznów", Resume: "Wznów",
Edit: "Edytuj", Edit: "Edytuj",
Delete: "Usuń", Delete: "Usuń",
Current: "aktualny", Current: "Aktualny",
Uptime: "Czas pracy", Uptime: "Czas Pracy",
"Cert Exp.": "Wygaśnięcie certyfikatu", "Cert Exp.": "Certyfikat Wygasa",
days: "dni", days: "dni",
day: "dzień", day: "dzień",
"-day": " dni", "-day": " dni",
hour: "godzina", hour: "godzina",
"-hour": " godziny", "-hour": " godzin",
Response: "Odpowiedź", Response: "Odpowiedź",
Ping: "Ping", Ping: "Ping",
"Monitor Type": "Typ monitora", "Monitor Type": "Rodzaj Monitora",
Keyword: "Słowo kluczowe", Keyword: "Słowo kluczowe",
"Friendly Name": "Przyjazna nazwa", "Friendly Name": "Przyjazna Nazwa",
URL: "URL", URL: "URL",
Hostname: "Nazwa hosta", Hostname: "Hostname",
Port: "Port", Port: "Port",
"Heartbeat Interval": "Interwał bicia serca", "Heartbeat Interval": "Czętotliwość bicia serca",
Retries: "Prób", Retries: "Prób",
"Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca",
Advanced: "Zaawansowane", Advanced: "Zaawansowane",
"Upside Down Mode": "Tryb do góry nogami", "Upside Down Mode": "Tryb odwrócony",
"Max. Redirects": "Maks. przekierowania", "Max. Redirects": "Maks. Przekierowań",
"Accepted Status Codes": "Akceptowane kody statusu", "Accepted Status Codes": "Akceptowane kody statusu",
Save: "Zapisz", Save: "Zapisz",
Notifications: "Powiadomienia", Notifications: "Powiadomienia",
"Not available, please setup.": "Niedostępne, proszę skonfigurować.", "Not available, please setup.": "Niedostępne, proszę skonfigurować.",
"Setup Notification": "Konfiguracja powiadomień", "Setup Notification": "Skonfiguruj Powiadomienie",
Light: "Jasny", Light: "Jasny",
Dark: "Ciemny", Dark: "Ciemny",
Auto: "Automatyczny", Auto: "Automatyczny",
"Theme - Heartbeat Bar": "Motyw - pasek bicia serca", "Theme - Heartbeat Bar": "Motyw - pasek bicia serca",
Normal: "Normalne", Normal: "Domyślne",
Bottom: "Na dole", Bottom: "Na dole",
None: "Brak", None: "Brak",
Timezone: "Strefa czasowa", Timezone: "Strefa czasowa",
"Search Engine Visibility": "Widoczność w wyszukiwarce", "Search Engine Visibility": "Widoczność w wyszukiwarce",
"Allow indexing": "Pozwól na indeksowanie", "Allow indexing": "Zezwól na indeksowanie",
"Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony",
"Change Password": "Zmień hasło", "Change Password": "Zmień hasło",
"Current Password": "Aktualne hasło", "Current Password": "Aktualne hasło",
@ -84,54 +96,52 @@ export default {
"Repeat New Password": "Powtórz nowe hasło", "Repeat New Password": "Powtórz nowe hasło",
"Update Password": "Zaktualizuj hasło", "Update Password": "Zaktualizuj hasło",
"Disable Auth": "Wyłącz autoryzację", "Disable Auth": "Wyłącz autoryzację",
"Enable Auth": "Włącz autoryzację ", "Enable Auth": "Włącz autoryzację",
Logout: "Wyloguj się", Logout: "Wyloguj",
Leave: "Zostaw", Leave: "Zostaw",
"I understand, please disable": "Rozumiem, proszę wyłączyć", "I understand, please disable": "Rozumiem, proszę wyłączyć",
Confirm: "Potwierdź", Confirm: "Potiwerdź",
Yes: "Tak", Yes: "Tak",
No: "Nie", No: "Nie",
Username: "Nazwa użytkownika", Username: "Nazwa użytkownika",
Password: "Hasło", Password: "Hasło",
"Remember me": "Zapamiętaj mnie", "Remember me": "Zapamiętaj mnie",
Login: "Zaloguj się", Login: "Zaloguj",
"No Monitors, please": "Brak monitorów, proszę", "No Monitors, please": "Brak monitorów, proszę",
"add one": "dodaj jeden", "add one": "dodać jeden",
"Notification Type": "Typ powiadomienia", "Notification Type": "Rodzaj powiadomienia",
Email: "Email", Email: "Email",
Test: "Test", Test: "Test",
"Certificate Info": "Informacje o certyfikacie", "Certificate Info": "Informacje o certyfikacie",
"Resolver Server": "Server resolver", "Resolver Server": "Serwer rozwiązywania nazw",
"Resource Record Type": "Typ rekordu zasobów", "Resource Record Type": "Typ rekordu zasobów",
"Last Result": "Ostatni wynik", "Last Result": "Ostatni wynik",
"Create your admin account": "Utwórz swoje konto administratora", "Create your admin account": "Utwórz swoje konto administratora",
"Repeat Password": "Powtórz hasło", "Repeat Password": "Powtórz hasło",
respTime: "Czas odp. (ms)", "Import Backup": "Importuj Kopię",
notAvailableShort: "N/A", "Export Backup": "Eksportuj Kopię",
Create: "Stwórz",
clearEventsMsg: "Jesteś pewien, że chcesz usunąć wszystkie monitory dla tej strony?",
clearHeartbeatsMsg: "Jesteś pewien, że chcesz usunąć wszystkie bicia serca dla tego monitora?",
confirmClearStatisticsMsg: "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?",
"Clear Data": "Usuń dane",
Events: "Wydarzenia",
Heartbeats: "Bicia serca",
"Auto Get": "Pobierz automatycznie",
enableDefaultNotificationDescription: "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.",
"Default enabled": "Domyślnie włączone",
"Also apply to existing monitors": "Również zastosuj do obecnych monitorów",
Export: "Eksportuj", Export: "Eksportuj",
Import: "Importuj", Import: "Importuj",
respTime: "Czas Odp. (ms)",
notAvailableShort: "N/A",
"Default enabled": "Włącz domyślnie",
"Apply on all existing monitors": "Zastosuj do istniejących monitorów",
Create: "Stwórz",
"Clear Data": "Usuń Dane",
Events: "Wydarzenia",
Heartbeats: "Bicia serca",
"Auto Get": "Wykryj",
backupDescription: "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.", backupDescription: "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.",
backupDescription2: "PS: Historia i dane zdarzeń nie są uwzględniane.", backupDescription2: "PS: Historia i dane zdarzeń nie są uwzględniane.",
backupDescription3: "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.", backupDescription3: "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.",
alertNoFile: "Proszę wybrać plik do importu.", alertNoFile: "Wybierz plik do importu.",
alertWrongFileType: "Proszę wybrać plik JSON.", alertWrongFileType: "Proszę wybrać plik JSON.",
twoFAVerifyLabel: "Proszę podaj swój token 2FA, aby sprawdzić czy 2FA działa", "Clear all statistics": "Wyczyść wszystkie statystyki",
tokenValidSettingsMsg: "Token jest poprawny! Możesz teraz zapisać ustawienia 2FA.", "Skip existing": "Pomiń istniejące",
confirmEnableTwoFAMsg: "Jesteś pewien że chcesz włączyć 2FA?", Overwrite: "Nadpisz",
confirmDisableTwoFAMsg: "Jesteś pewien że chcesz wyłączyć 2FA?", Options: "Opcje",
"Apply on all existing monitors": "Zastosuj do wszystki obecnych monitorów", "Keep both": "Zachowaj oba",
"Verify Token": "Weryfikuj token", "Verify Token": "Zweryfikuj token",
"Setup 2FA": "Konfiguracja 2FA", "Setup 2FA": "Konfiguracja 2FA",
"Enable 2FA": "Włącz 2FA", "Enable 2FA": "Włącz 2FA",
"Disable 2FA": "Wyłącz 2FA", "Disable 2FA": "Wyłącz 2FA",
@ -141,17 +151,6 @@ export default {
Inactive: "Wyłączone", Inactive: "Wyłączone",
Token: "Token", Token: "Token",
"Show URI": "Pokaż URI", "Show URI": "Pokaż URI",
"Clear all statistics": "Wyczyść wszystkie statystyki",
retryCheckEverySecond: "Ponawiaj co {0} sekund.",
importHandleDescription: "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.",
confirmImportMsg: "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.",
"Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca",
"Import Backup": "Importuj kopię zapasową",
"Export Backup": "Eksportuj kopię zapasową",
"Skip existing": "Pomiń istniejące",
Overwrite: "Nadpisz",
Options: "Opcje",
"Keep both": "Zachowaj oba",
Tags: "Tagi", Tags: "Tagi",
"Add New below or Select...": "Dodaj nowy poniżej lub wybierz...", "Add New below or Select...": "Dodaj nowy poniżej lub wybierz...",
"Tag with this name already exist.": "Tag o tej nazwie już istnieje.", "Tag with this name already exist.": "Tag o tej nazwie już istnieje.",
@ -169,33 +168,117 @@ export default {
"Search...": "Szukaj...", "Search...": "Szukaj...",
"Avg. Ping": "Średni ping", "Avg. Ping": "Średni ping",
"Avg. Response": "Średnia odpowiedź", "Avg. Response": "Średnia odpowiedź",
"Entry Page": "Strona główna", "Entry Page": "Strona startowa",
statusPageNothing: "Nic tu nie ma, dodaj grupę lub monitor.", statusPageNothing: "Nic tu nie ma, dodaj grupę lub monitor.",
"No Services": "Brak usług", "No Services": "Brak usług",
"All Systems Operational": "Wszystkie systemy działają", "All Systems Operational": "Wszystkie systemy działają poprawnie",
"Partially Degraded Service": "Częściowy błąd usługi", "Partially Degraded Service": "Część usług nie działa",
"Degraded Service": "Błąd usługi", "Degraded Service": "Usługa nie działa",
"Add Group": "Dodaj grupę", "Add Group": "Dodaj grupę",
"Add a monitor": "Dodaj monitor", "Add a monitor": "Dodaj monitor",
"Edit Status Page": "Edytuj stronę statusu", "Edit Status Page": "Edytuj stronę statusu",
"Go to Dashboard": "Idź do panelu", "Go to Dashboard": "Idź do panelu",
"Status Page": "Strona statusu", "Status Page": "Strona statusu",
telegram: "Telegram", // Start notification form
webhook: "Webhook", defaultNotificationName: "Moje powiadomienie {notification} ({number})",
smtp: "Email (SMTP)", here: "tutaj",
discord: "Discord", "Required": "Wymagane",
teams: "Microsoft Teams", "telegram": "Telegram",
signal: "Signal", "Bot Token": "Token Bota",
gotify: "Gotify", "You can get a token from": "Token można uzyskać z",
slack: "Slack", "Chat ID": "Identyfikator Czatu",
supportTelegramChatID: "Czat wsprarcia technicznego / Bezpośrednia Rozmowa / Czat Grupowy",
wayToGetTelegramChatID: "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:",
"YOUR BOT TOKEN HERE": "TWOJ TOKEN BOTA",
chatIDNotFound: "Identyfikator czatu nie znaleziony, najpierw napisz do bota",
"webhook": "Webhook",
"Post URL": "Adres URL",
"Content Type": "Rodzaj danych",
webhookJsonDesc: "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js",
webhookFormDataDesc: "{multipart} jest dobry dla PHP, musisz jedynie przetowrzyć dane przez {decodeFunction}",
"smtp": "Email (SMTP)",
secureOptionNone: "Brak / STARTTLS (25, 587)",
secureOptionTLS: "TLS (465)",
"Ignore TLS Error": "Zignrouj Błędy TLS",
"From Email": "Nadawca (OD)",
"To Email": "Odbiorca (DO)",
smtpCC: "DW",
smtpBCC: "UDW",
"discord": "Discord",
"Discord Webhook URL": "URL Webhook Discorda",
wayToGetDiscordURL: "Możesz go uzyskać przechodząc do Ustawienia Serwera -> Integracje -> Tworzenie Webhooka",
"Bot Display Name": "Wyświetlana Nazwa Bota",
"Prefix Custom Message": "Własny Początek Wiadomości",
"Hello @everyone is...": "Hej {'@'}everyone ...",
"teams": "Microsoft Teams",
"Webhook URL": "URL Webhooka",
wayToGetTeamsURL: "You can learn how to create a webhook url {0}.",
"signal": "Signal",
"Number": "Numer",
"Recipients": "Odbiorcy",
needSignalAPI: "Musisz posiadać klienta Signal z REST API.",
wayToCheckSignalURL: "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:",
signalImportant: "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!",
"gotify": "Gotify",
"Application Token": "Token Aplikacji",
"Server URL": "Server URL",
"Priority": "Priorytet",
"slack": "Slack",
"Icon Emoji": "Ikona Emoji",
"Channel Name": "Nazwa Kanału",
"Uptime Kuma URL": "Adres Uptime Kuma",
aboutWebhooks: "Więcej informacji na temat webhooków: {0}",
aboutChannelName: "Podaj nazwę kanału {0} w polu Nazwa Kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal",
aboutKumaURL: "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na Github.",
emojiCheatSheet: "Ściąga Emoji: {0}",
"rocket.chat": "Rocket.chat", "rocket.chat": "Rocket.chat",
pushover: "Pushover", pushover: "Pushover",
pushy: "Pushy", pushy: "Pushy",
octopush: "Octopush", octopush: "Octopush",
promosms: "PromoSMS", promosms: "PromoSMS",
lunasea: "LunaSea", lunasea: "LunaSea",
apprise: "Apprise (obsługuje 50+ usług powiadamiania)", apprise: "Apprise (Obsługuje 50+ usług powiadomień)",
pushbullet: "Pushbullet", pushbullet: "Pushbullet",
line: "Line Messenger", line: "Line Messenger",
mattermost: "Mattermost", mattermost: "Mattermost",
"User Key": "Klucz Użytkownika",
"Device": "Urządzenie",
"Message Title": "Tytuł Wiadomości",
"Notification Sound": "Dźwięk Powiadomienia",
"More info on:": "Więcej informacji na: {0}",
pushoverDesc1: "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.",
pushoverDesc2: "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.",
"SMS Type": "Rodzaj SMS",
octopushTypePremium: "Premium (Szybki - rekomendowany dla powiadomień)",
octopushTypeLowCost: "Low Cost (Wolny, czasami blokowany przez operatorów)",
"Check octopush prices": "Sprawdź ceny Octopush {0}.",
octopushPhoneNumber: "Numer Telefonu (Format międzynarodowy np.: +33612345678)",
octopushSMSSender: "Nadawca SMS : 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)",
"LunaSea Device ID": "Idetyfikator Urządzenia LunaSea",
"Apprise URL": "URL Apprise",
"Example:": "Przykład: {0}",
"Read more:": "Czytaj Dalej: {0}",
"Status:": "Status: {0}",
"Read more": "Czytaj dalej",
appriseInstalled: "Apprise jest zostało zainstalowane.",
appriseNotInstalled: "Apprise nie zostało zainstalowane. {0}",
"Access Token": "Token Dostępu",
"Channel access token": "Token Dostępu Kanału",
"Line Developers Console": "Konsola Dewelopersja Line",
lineDevConsoleTo: "Konsola Dewelopersja Line - {0}",
"Basic Settings": "Ustawienia Ogólne",
"User ID": "Idetyfikator Użytkownika",
"Messaging API": "API Wiadomości",
wayToGetLineChannelToken: "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.",
"Icon URL": "Adres Ikony",
aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.",
aboutMattermostChannelName: "You can override the default channel that webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in Mattermost webhook settings. Ex: #other-channel",
"matrix": "Matrix",
promosmsTypeEco: "SMS ECO - Tanie, lecz wolne. Dostępne tylko w Polsce",
promosmsTypeFlash: "SMS FLASH - Wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.",
promosmsTypeFull: "SMS FULL - Szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.",
promosmsTypeSpeed: "SMS SPEED - Wysyłka priorytetowa, posiada wszystkie zalety SMS FULL",
promosmsPhoneNumber: "Numer Odbiorcy",
promosmsSMSSender: "Nadawca SMS (Wcześniej zatwierdzone nazwy z panelu PromoSMS)",
// End notification form
}; };

View file

@ -179,7 +179,7 @@ export default {
"Add a monitor": "添加监控项", "Add a monitor": "添加监控项",
"Edit Status Page": "编辑状态页", "Edit Status Page": "编辑状态页",
"Go to Dashboard": "前往仪表盘", "Go to Dashboard": "前往仪表盘",
"Status Page": "Status Page", "Status Page": "状态页",
telegram: "Telegram", telegram: "Telegram",
webhook: "Webhook", webhook: "Webhook",
smtp: "Email (SMTP)", smtp: "Email (SMTP)",