Browse Source
# Conflicts: # README.md # dockerfile # package-lock.json # package.json # server/server.js # src/assets/app.scss # src/assets/vars.scss # src/pages/EditMonitor.vue # src/pages/Settings.vueremotes/philippdormann/main
59 changed files with 5688 additions and 1908 deletions
@ -1,146 +0,0 @@ |
|||||
# Project Info |
|
||||
|
|
||||
First of all, thank you everyone who made pull requests for Uptime Kuma, I never thought GitHub Community can be that nice! And also because of this, I also never thought other people actually read my code and edit my code. It is not structed and commented so well, lol. Sorry about that. |
|
||||
|
|
||||
The project was created with vite.js (vue3). Then I created a sub-directory called "server" for server part. Both frontend and backend share the same package.json. |
|
||||
|
|
||||
The frontend code build into "dist" directory. The server uses "dist" as root. This is how production is working. |
|
||||
|
|
||||
# Can I create a pull request for Uptime Kuma? |
|
||||
|
|
||||
Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge to the master branch once it is tested. |
|
||||
|
|
||||
If you are not sure, feel free to create an empty pull request draft first. |
|
||||
|
|
||||
## Pull Request Examples |
|
||||
|
|
||||
### ✅ High - Medium Priority |
|
||||
|
|
||||
- Add a new notification |
|
||||
- Add a chart |
|
||||
- Fix a bug |
|
||||
|
|
||||
### *️⃣ Requires one more reviewer |
|
||||
|
|
||||
I do not have such knowledge to test it |
|
||||
|
|
||||
- Add k8s supports |
|
||||
|
|
||||
### *️⃣ Low Priority |
|
||||
|
|
||||
It chnaged my current workflow and require further studies. |
|
||||
|
|
||||
- Change my release approach |
|
||||
|
|
||||
### ❌ Won't Merge |
|
||||
|
|
||||
- Duplicated pull request |
|
||||
- Buggy |
|
||||
- Existing logic is completely modified or deleted |
|
||||
- A function that is completely out of scope |
|
||||
|
|
||||
# Project Styles |
|
||||
|
|
||||
I personally do not like something need to learn so much and need to config so much before you can finally start the app. |
|
||||
|
|
||||
For example, recently, because I am not a python expert, I spent a 2 hours to resolve all problems in order to install and use the Apprise cli. Apprise requires so many hidden requirements, I have to figure out myself how to solve the problems by Google search for my OS. That is painful. I do not want Uptime Kuma to be like this way, so: |
|
||||
|
|
||||
- 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 |
|
||||
- All settings in frontend. |
|
||||
- Easy to use |
|
||||
|
|
||||
# Coding Styles |
|
||||
|
|
||||
- Follow .editorconfig |
|
||||
- Follow eslint |
|
||||
|
|
||||
## Name convention |
|
||||
|
|
||||
- Javascript/Typescript: camelCaseType |
|
||||
- SQLite: underscore_type |
|
||||
- CSS/SCSS: dash-type |
|
||||
|
|
||||
# Tools |
|
||||
- Node.js >= 14 |
|
||||
- Git |
|
||||
- IDE that supports .editorconfig and eslint (I am using Intellji Idea) |
|
||||
- A SQLite tool (I am using SQLite Expert Personal) |
|
||||
|
|
||||
# Install dependencies |
|
||||
|
|
||||
```bash |
|
||||
npm install --dev |
|
||||
``` |
|
||||
|
|
||||
# Backend Dev |
|
||||
|
|
||||
```bash |
|
||||
npm run start-server |
|
||||
|
|
||||
# Or |
|
||||
|
|
||||
node server/server.js |
|
||||
``` |
|
||||
|
|
||||
It binds to 0.0.0.0:3001 by default. |
|
||||
|
|
||||
|
|
||||
## Backend Details |
|
||||
|
|
||||
It is mainly a socket.io app + express.js. |
|
||||
|
|
||||
express.js is just used for serving the frontend built files (index.html, .js and .css etc.) |
|
||||
|
|
||||
# Frontend Dev |
|
||||
|
|
||||
Start frontend dev server. Hot-reload enabled in this way. It binds to 0.0.0.0:3000. |
|
||||
|
|
||||
```bash |
|
||||
npm run dev |
|
||||
``` |
|
||||
|
|
||||
PS: You can ignore those scss warnings, those warnings are from Bootstrap that I cannot fix. |
|
||||
|
|
||||
You can use Vue Devtool Chrome extension for debugging. |
|
||||
|
|
||||
After the frontend server started. It cannot connect to the websocket server even you have started the server. You need to tell the frontend that is a dev env by running this in DevTool console and refresh: |
|
||||
|
|
||||
```javascript |
|
||||
localStorage.dev = "dev"; |
|
||||
``` |
|
||||
|
|
||||
So that the frontend will try to connect websocket server in 3001. |
|
||||
|
|
||||
Alternately, you can specific NODE_ENV to "development". |
|
||||
|
|
||||
|
|
||||
## Build the frontend |
|
||||
|
|
||||
```bash |
|
||||
npm run build |
|
||||
``` |
|
||||
|
|
||||
## Frontend Details |
|
||||
|
|
||||
Uptime Kuma Frontend is a single page application (SPA). Most paths are handled by Vue Router. |
|
||||
|
|
||||
The router in "src/main.js" |
|
||||
|
|
||||
As you can see, most data in frontend is stored in root level, even though you changed the current router to any other pages. |
|
||||
|
|
||||
The data and socket logic in "src/mixins/socket.js" |
|
||||
|
|
||||
# Database Migration |
|
||||
|
|
||||
1. create `patch{num}.sql` in `./db/` |
|
||||
1. update `latestVersion` in `./server/database.js` |
|
||||
|
|
||||
# Unit Test |
|
||||
|
|
||||
Yes, no unit test for now. I know it is very important, but at the same time my spare time is very limited. I want to implement my ideas first. I will go back to this in some points. |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
Binary file not shown.
@ -0,0 +1,10 @@ |
|||||
|
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. |
||||
|
BEGIN TRANSACTION; |
||||
|
|
||||
|
ALTER TABLE monitor |
||||
|
ADD dns_resolve_type VARCHAR(5); |
||||
|
|
||||
|
ALTER TABLE monitor |
||||
|
ADD dns_resolve_server VARCHAR(255); |
||||
|
|
||||
|
COMMIT; |
@ -0,0 +1,7 @@ |
|||||
|
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. |
||||
|
BEGIN TRANSACTION; |
||||
|
|
||||
|
ALTER TABLE monitor |
||||
|
ADD dns_last_result VARCHAR(255); |
||||
|
|
||||
|
COMMIT; |
@ -1,19 +1,31 @@ |
|||||
let http = require("http"); |
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; |
||||
|
|
||||
|
let client; |
||||
|
|
||||
|
if (process.env.SSL_KEY && process.env.SSL_CERT) { |
||||
|
client = require("https"); |
||||
|
} else { |
||||
|
client = require("http"); |
||||
|
} |
||||
|
|
||||
let options = { |
let options = { |
||||
host: "localhost", |
host: process.env.HOST || "127.0.0.1", |
||||
port: "3001", |
port: parseInt(process.env.PORT) || 3001, |
||||
timeout: 2000, |
timeout: 120 * 1000, |
||||
}; |
}; |
||||
let request = http.request(options, (res) => { |
|
||||
console.log(`STATUS: ${res.statusCode}`); |
let request = client.request(options, (res) => { |
||||
if (res.statusCode == 200) { |
console.log(`Health Check OK [Res Code: ${res.statusCode}]`); |
||||
|
if (res.statusCode === 200) { |
||||
process.exit(0); |
process.exit(0); |
||||
} else { |
} else { |
||||
process.exit(1); |
process.exit(1); |
||||
} |
} |
||||
}); |
}); |
||||
|
|
||||
request.on("error", function (err) { |
request.on("error", function (err) { |
||||
console.log("ERROR"); |
console.error("Health Check ERROR"); |
||||
process.exit(1); |
process.exit(1); |
||||
}); |
}); |
||||
|
|
||||
request.end(); |
request.end(); |
||||
|
@ -0,0 +1,144 @@ |
|||||
|
/* |
||||
|
* Simple DNS Server |
||||
|
* For testing DNS monitoring type, dev only |
||||
|
*/ |
||||
|
const dns2 = require("dns2"); |
||||
|
|
||||
|
const { Packet } = dns2; |
||||
|
|
||||
|
const server = dns2.createServer({ |
||||
|
udp: true |
||||
|
}); |
||||
|
|
||||
|
server.on("request", (request, send, rinfo) => { |
||||
|
for (let question of request.questions) { |
||||
|
console.log(question.name, type(question.type), question.class); |
||||
|
|
||||
|
const response = Packet.createResponseFromRequest(request); |
||||
|
|
||||
|
if (question.name === "existing.com") { |
||||
|
|
||||
|
if (question.type === Packet.TYPE.A) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
address: "1.2.3.4" |
||||
|
}); |
||||
|
} if (question.type === Packet.TYPE.AAAA) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
address: "fe80::::1234:5678:abcd:ef00", |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.CNAME) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
domain: "cname1.existing.com", |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.MX) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
exchange: "mx1.existing.com", |
||||
|
priority: 5 |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.NS) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
ns: "ns1.existing.com", |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.SOA) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
primary: "existing.com", |
||||
|
admin: "admin@existing.com", |
||||
|
serial: 2021082701, |
||||
|
refresh: 300, |
||||
|
retry: 3, |
||||
|
expiration: 10, |
||||
|
minimum: 10, |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.SRV) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
priority: 5, |
||||
|
weight: 5, |
||||
|
port: 8080, |
||||
|
target: "srv1.existing.com", |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.TXT) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
data: "#v=spf1 include:_spf.existing.com ~all", |
||||
|
}); |
||||
|
} else if (question.type === Packet.TYPE.CAA) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
flags: 0, |
||||
|
tag: "issue", |
||||
|
value: "ca.existing.com", |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
if (question.name === "4.3.2.1.in-addr.arpa") { |
||||
|
if (question.type === Packet.TYPE.PTR) { |
||||
|
response.answers.push({ |
||||
|
name: question.name, |
||||
|
type: question.type, |
||||
|
class: question.class, |
||||
|
ttl: 300, |
||||
|
domain: "ptr1.existing.com", |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
send(response); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
server.on("listening", () => { |
||||
|
console.log("Listening"); |
||||
|
console.log(server.addresses()); |
||||
|
}); |
||||
|
|
||||
|
server.on("close", () => { |
||||
|
console.log("server closed"); |
||||
|
}); |
||||
|
|
||||
|
server.listen({ |
||||
|
udp: 5300 |
||||
|
}); |
||||
|
|
||||
|
function type(code) { |
||||
|
for (let name in Packet.TYPE) { |
||||
|
if (Packet.TYPE[name] === code) { |
||||
|
return name; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
package-lock.json |
||||
|
test.js |
||||
|
languages/ |
@ -0,0 +1,78 @@ |
|||||
|
// Need to use es6 to read language files
|
||||
|
|
||||
|
import fs from "fs"; |
||||
|
import path from "path"; |
||||
|
import util from "util"; |
||||
|
|
||||
|
// https://stackoverflow.com/questions/13786160/copy-folder-recursively-in-node-js
|
||||
|
/** |
||||
|
* Look ma, it's cp -R. |
||||
|
* @param {string} src The path to the thing to copy. |
||||
|
* @param {string} dest The path to the new copy. |
||||
|
*/ |
||||
|
const copyRecursiveSync = function (src, dest) { |
||||
|
let exists = fs.existsSync(src); |
||||
|
let stats = exists && fs.statSync(src); |
||||
|
let isDirectory = exists && stats.isDirectory(); |
||||
|
if (isDirectory) { |
||||
|
fs.mkdirSync(dest); |
||||
|
fs.readdirSync(src).forEach(function (childItemName) { |
||||
|
copyRecursiveSync(path.join(src, childItemName), |
||||
|
path.join(dest, childItemName)); |
||||
|
}); |
||||
|
} else { |
||||
|
fs.copyFileSync(src, dest); |
||||
|
} |
||||
|
}; |
||||
|
console.log(process.argv) |
||||
|
const baseLangCode = process.argv[2] || "zh-HK"; |
||||
|
console.log("Base Lang: " + baseLangCode); |
||||
|
fs.rmdirSync("./languages", { recursive: true }); |
||||
|
copyRecursiveSync("../../src/languages", "./languages"); |
||||
|
|
||||
|
const en = (await import("./languages/en.js")).default; |
||||
|
const baseLang = (await import(`./languages/${baseLangCode}.js`)).default; |
||||
|
const files = fs.readdirSync("./languages"); |
||||
|
console.log(files); |
||||
|
for (const file of files) { |
||||
|
if (file.endsWith(".js")) { |
||||
|
console.log("Processing " + file); |
||||
|
const lang = await import("./languages/" + file); |
||||
|
|
||||
|
let obj; |
||||
|
|
||||
|
if (lang.default) { |
||||
|
console.log("is js module"); |
||||
|
obj = lang.default; |
||||
|
} else { |
||||
|
console.log("empty file"); |
||||
|
obj = { |
||||
|
languageName: "<Your Language name in your language (not in English)>" |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
// En first
|
||||
|
for (const key in en) { |
||||
|
if (! obj[key]) { |
||||
|
obj[key] = en[key]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Base second
|
||||
|
for (const key in baseLang) { |
||||
|
if (! obj[key]) { |
||||
|
obj[key] = key; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
const code = "export default " + util.inspect(obj, { |
||||
|
depth: null, |
||||
|
}); |
||||
|
|
||||
|
fs.writeFileSync(`../../src/languages/${file}`, code); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
fs.rmdirSync("./languages", { recursive: true }); |
||||
|
console.log("Done, fix the format by eslint now"); |
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"name": "update-language-files", |
||||
|
"type": "module", |
||||
|
"version": "1.0.0", |
||||
|
"description": "", |
||||
|
"main": "index.js", |
||||
|
"scripts": { |
||||
|
"test": "echo \"Error: no test specified\" && exit 1" |
||||
|
}, |
||||
|
"author": "", |
||||
|
"license": "ISC" |
||||
|
} |
@ -0,0 +1,91 @@ |
|||||
|
/* |
||||
|
* For Client Socket |
||||
|
*/ |
||||
|
const { TimeLogger } = require("../src/util"); |
||||
|
const { R } = require("redbean-node"); |
||||
|
const { io } = require("./server"); |
||||
|
|
||||
|
async function sendNotificationList(socket) { |
||||
|
const timeLogger = new TimeLogger(); |
||||
|
|
||||
|
let result = []; |
||||
|
let list = await R.find("notification", " user_id = ? ", [ |
||||
|
socket.userID, |
||||
|
]); |
||||
|
|
||||
|
for (let bean of list) { |
||||
|
result.push(bean.export()) |
||||
|
} |
||||
|
|
||||
|
io.to(socket.userID).emit("notificationList", result) |
||||
|
|
||||
|
timeLogger.print("Send Notification List"); |
||||
|
|
||||
|
return list; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Send Heartbeat History list to socket |
||||
|
* @param toUser True = send to all browsers with the same user id, False = send to the current browser only |
||||
|
* @param overwrite Overwrite client-side's heartbeat list |
||||
|
*/ |
||||
|
async function sendHeartbeatList(socket, monitorID, toUser = false, overwrite = false) { |
||||
|
const timeLogger = new TimeLogger(); |
||||
|
|
||||
|
let list = await R.find("heartbeat", ` |
||||
|
monitor_id = ? |
||||
|
ORDER BY time DESC |
||||
|
LIMIT 100 |
||||
|
`, [
|
||||
|
monitorID, |
||||
|
]) |
||||
|
|
||||
|
let result = []; |
||||
|
|
||||
|
for (let bean of list) { |
||||
|
result.unshift(bean.toJSON()); |
||||
|
} |
||||
|
|
||||
|
if (toUser) { |
||||
|
io.to(socket.userID).emit("heartbeatList", monitorID, result, overwrite); |
||||
|
} else { |
||||
|
socket.emit("heartbeatList", monitorID, result, overwrite); |
||||
|
} |
||||
|
|
||||
|
timeLogger.print(`[Monitor: ${monitorID}] sendHeartbeatList`); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Important Heart beat list (aka event list) |
||||
|
* @param socket |
||||
|
* @param monitorID |
||||
|
* @param toUser True = send to all browsers with the same user id, False = send to the current browser only |
||||
|
* @param overwrite Overwrite client-side's heartbeat list |
||||
|
*/ |
||||
|
async function sendImportantHeartbeatList(socket, monitorID, toUser = false, overwrite = false) { |
||||
|
const timeLogger = new TimeLogger(); |
||||
|
|
||||
|
let list = await R.find("heartbeat", ` |
||||
|
monitor_id = ? |
||||
|
AND important = 1 |
||||
|
ORDER BY time DESC |
||||
|
LIMIT 500 |
||||
|
`, [
|
||||
|
monitorID, |
||||
|
]) |
||||
|
|
||||
|
timeLogger.print(`[Monitor: ${monitorID}] sendImportantHeartbeatList`); |
||||
|
|
||||
|
if (toUser) { |
||||
|
io.to(socket.userID).emit("importantHeartbeatList", monitorID, list, overwrite); |
||||
|
} else { |
||||
|
socket.emit("importantHeartbeatList", monitorID, list, overwrite); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
module.exports = { |
||||
|
sendNotificationList, |
||||
|
sendImportantHeartbeatList, |
||||
|
sendHeartbeatList, |
||||
|
} |
@ -1,32 +1,20 @@ |
|||||
$primary: #5cdd8b; |
$primary: #5cdd8b; |
||||
$danger: #dc3545; |
$danger: #dc3545; |
||||
$warning: #dca235; |
$warning: #f8a306; |
||||
$link-color: #111; |
$link-color: #111; |
||||
$border-radius: .25rem; |
$border-radius: 50rem; |
||||
|
|
||||
$highlight: #7ce8a4; |
$highlight: #7ce8a4; |
||||
$highlight-white: #e7faec; |
$highlight-white: #e7faec; |
||||
|
|
||||
:root { |
$dark-font-color: #b1b8c0; |
||||
color-scheme: light dark; |
$dark-font-color2: #020b05; |
||||
// |
$dark-bg: #0d1117; |
||||
--page-background: #fafafa; |
$dark-bg2: #070a10; |
||||
--background-secondary: #d0d3d5; |
$dark-border-color: #1d2634; |
||||
--background-4: #d0d3d5; |
|
||||
--background-ternary: #8e8e8e; |
|
||||
--background-sidebar-active: #e4e4e4; |
|
||||
--background-navbar: #FFF; |
|
||||
--main-font-color: #212529; |
|
||||
} |
|
||||
|
|
||||
@media (prefers-color-scheme: dark) { |
$easing-in: cubic-bezier(0.54, 0.78, 0.55, 0.97); |
||||
:root { |
$easing-out: cubic-bezier(0.25, 0.46, 0.45, 0.94); |
||||
--page-background: #0a0a0a; |
$easing-in-out: cubic-bezier(0.79, 0.14, 0.15, 0.86); |
||||
--background-secondary: #656565; |
|
||||
--background-4: #313131; |
$dropdown-border-radius: 0.5rem; |
||||
--background-ternary: #a7a7a7; |
|
||||
--background-sidebar-active: #777777; |
|
||||
--background-navbar: #333333; |
|
||||
--main-font-color: #e4e4e4; |
|
||||
} |
|
||||
} |
|
||||
|
@ -0,0 +1,102 @@ |
|||||
|
<template> |
||||
|
<div class="input-group mb-3"> |
||||
|
<!-- |
||||
|
Hack - Disable Chrome save password |
||||
|
readonly + onfocus |
||||
|
https://stackoverflow.com/questions/41217019/how-to-prevent-a-browser-from-storing-passwords |
||||
|
--> |
||||
|
<input |
||||
|
v-model="model" |
||||
|
:type="visibility" |
||||
|
class="form-control" |
||||
|
:placeholder="placeholder" |
||||
|
:maxlength="maxlength" |
||||
|
:autocomplete="autocomplete" |
||||
|
:required="required" |
||||
|
:readonly="isReadOnly" |
||||
|
@focus="removeReadOnly" |
||||
|
> |
||||
|
|
||||
|
<a v-if="visibility == 'password'" class="btn btn-outline-primary" @click="showInput()"> |
||||
|
<font-awesome-icon icon="eye" /> |
||||
|
</a> |
||||
|
<a v-if="visibility == 'text'" class="btn btn-outline-primary" @click="hideInput()"> |
||||
|
<font-awesome-icon icon="eye-slash" /> |
||||
|
</a> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
props: { |
||||
|
modelValue: { |
||||
|
type: String, |
||||
|
default: "" |
||||
|
}, |
||||
|
placeholder: { |
||||
|
type: String, |
||||
|
default: "" |
||||
|
}, |
||||
|
maxlength: { |
||||
|
type: Number, |
||||
|
default: 255 |
||||
|
}, |
||||
|
autocomplete: { |
||||
|
type: Boolean, |
||||
|
}, |
||||
|
required: { |
||||
|
type: Boolean |
||||
|
}, |
||||
|
readonly: { |
||||
|
type: Boolean, |
||||
|
default: false, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
visibility: "password", |
||||
|
readOnlyValue: false, |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
model: { |
||||
|
get() { |
||||
|
return this.modelValue |
||||
|
}, |
||||
|
set(value) { |
||||
|
this.$emit("update:modelValue", value) |
||||
|
} |
||||
|
}, |
||||
|
isReadOnly() { |
||||
|
// Actually readonly from prop |
||||
|
if (this.readonly) { |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
// Hack - Disable Chrome save password |
||||
|
return this.readOnlyValue; |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
// Hack - Disable Chrome save password |
||||
|
if (this.autocomplete) { |
||||
|
this.readOnlyValue = "readonly"; |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
showInput() { |
||||
|
this.visibility = "text"; |
||||
|
}, |
||||
|
hideInput() { |
||||
|
this.visibility = "password"; |
||||
|
}, |
||||
|
|
||||
|
// Hack - Disable Chrome save password |
||||
|
removeReadOnly() { |
||||
|
if (this.autocomplete) { |
||||
|
this.readOnlyValue = false; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
@ -1,10 +1,10 @@ |
|||||
import { library } from "@fortawesome/fontawesome-svg-core" |
import { library } from "@fortawesome/fontawesome-svg-core" |
||||
import { faCog, faEdit, faPlus, faPause, faPlay, faTachometerAlt, faTrash, faList, faArrowAltCircleUp } from "@fortawesome/free-solid-svg-icons" |
import { faCog, faEdit, faPlus, faPause, faPlay, faTachometerAlt, faTrash, faList, faArrowAltCircleUp, faEye, faEyeSlash } from "@fortawesome/free-solid-svg-icons" |
||||
//import { fa } from '@fortawesome/free-regular-svg-icons'
|
//import { fa } from '@fortawesome/free-regular-svg-icons'
|
||||
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome" |
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome" |
||||
|
|
||||
// Add Free Font Awesome Icons here
|
// Add Free Font Awesome Icons here
|
||||
// https://fontawesome.com/v5.15/icons?d=gallery&p=2&s=solid&m=free
|
// https://fontawesome.com/v5.15/icons?d=gallery&p=2&s=solid&m=free
|
||||
library.add(faCog, faEdit, faPlus, faPause, faPlay, faTachometerAlt, faTrash, faList, faArrowAltCircleUp); |
library.add(faCog, faEdit, faPlus, faPause, faPlay, faTachometerAlt, faTrash, faList, faArrowAltCircleUp, faEye, faEyeSlash); |
||||
|
|
||||
export { FontAwesomeIcon } |
export { FontAwesomeIcon } |
||||
|
@ -0,0 +1,18 @@ |
|||||
|
# How to translate |
||||
|
|
||||
|
1. Fork this repo. |
||||
|
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. 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. 😏 |
||||
|
|
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "Danish", |
||||
|
Settings: "Indstillinger", |
||||
|
Dashboard: "Dashboard", |
||||
|
"New Update": "Opdatering tilgængelig", |
||||
|
Language: "Sprog", |
||||
|
Appearance: "Udseende", |
||||
|
Theme: "Tema", |
||||
|
General: "Generelt", |
||||
|
Version: "Version", |
||||
|
"Check Update On GitHub": "Tjek efter opdateringer på Github", |
||||
|
List: "Liste", |
||||
|
Add: "Tilføj", |
||||
|
"Add New Monitor": "Tilføj ny Overvåger", |
||||
|
"Quick Stats": "Oversigt", |
||||
|
Up: "Aktiv", |
||||
|
Down: "Inaktiv", |
||||
|
Pending: "Afventer", |
||||
|
Unknown: "Ukendt", |
||||
|
Pause: "Pause", |
||||
|
pauseDashboardHome: "Pauset", |
||||
|
Name: "Navn", |
||||
|
Status: "Status", |
||||
|
DateTime: "Dato / Tid", |
||||
|
Message: "Beskeder", |
||||
|
"No important events": "Inden vigtige begivenheder", |
||||
|
Resume: "Fortsæt", |
||||
|
Edit: "Rediger", |
||||
|
Delete: "Slet", |
||||
|
Current: "Aktuelt", |
||||
|
Uptime: "Oppetid", |
||||
|
"Cert Exp.": "Certifikatets udløb", |
||||
|
days: "Dage", |
||||
|
day: "Dag", |
||||
|
"-day": "-Dage", |
||||
|
hour: "Timer", |
||||
|
"-hour": "-Timer", |
||||
|
checkEverySecond: "Tjek hvert {0} sekund", |
||||
|
"Avg.": "Gennemsnit", |
||||
|
Response: " Respons", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "Overvåger Type", |
||||
|
Keyword: "Nøgleord", |
||||
|
"Friendly Name": "Visningsnavn", |
||||
|
URL: "URL", |
||||
|
Hostname: "Hostname", |
||||
|
Port: "Port", |
||||
|
"Heartbeat Interval": "Taktinterval", |
||||
|
Retries: "Gentagelser", |
||||
|
retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", |
||||
|
Advanced: "Avanceret", |
||||
|
ignoreTLSError: "Ignorere TLS/SSL web fejl", |
||||
|
"Upside Down Mode": "Omvendt tilstand", |
||||
|
upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", |
||||
|
"Max. Redirects": "Maks. Omdirigeringer", |
||||
|
maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", |
||||
|
"Accepted Status Codes": "Tilladte HTTP-Statuskoder", |
||||
|
acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", |
||||
|
Save: "Gem", |
||||
|
Notifications: "Underretninger", |
||||
|
"Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", |
||||
|
"Setup Notification": "Opsæt underretninger", |
||||
|
Light: "Lys", |
||||
|
Dark: "Mørk", |
||||
|
Auto: "Auto", |
||||
|
"Theme - Heartbeat Bar": "Tema - Tidslinje", |
||||
|
Normal: "Normal", |
||||
|
Bottom: "Bunden", |
||||
|
None: "Ingen", |
||||
|
Timezone: "Tidszone", |
||||
|
"Search Engine Visibility": "Søgemaskine synlighed", |
||||
|
"Allow indexing": "Tillad indeksering", |
||||
|
"Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", |
||||
|
"Change Password": "Ændre adgangskode", |
||||
|
"Current Password": "Nuværende adgangskode", |
||||
|
"New Password": "Ny adgangskode", |
||||
|
"Repeat New Password": "Gentag den nye adgangskode", |
||||
|
passwordNotMatchMsg: "Adgangskoderne er ikke ens.", |
||||
|
"Update Password": "Opdater adgangskode", |
||||
|
"Disable Auth": "Deaktiver autentificering", |
||||
|
"Enable Auth": "Aktiver autentificering", |
||||
|
Logout: "Log ud", |
||||
|
notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", |
||||
|
Leave: "Verlassen", |
||||
|
"I understand, please disable": "Jeg er indforstået, deaktiver venligst", |
||||
|
Confirm: "Bekræft", |
||||
|
Yes: "Ja", |
||||
|
No: "Nej", |
||||
|
Username: "Brugernavn", |
||||
|
Password: "Adgangskode", |
||||
|
"Remember me": "Husk mig", |
||||
|
Login: "Log ind", |
||||
|
"No Monitors, please": "Ingen Overvågere", |
||||
|
"add one": "tilføj en", |
||||
|
"Notification Type": "Underretningstype", |
||||
|
Email: "E-Mail", |
||||
|
Test: "Test", |
||||
|
"Certificate Info": "Certifikatoplysninger", |
||||
|
keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", |
||||
|
deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", |
||||
|
deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", |
||||
|
resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", |
||||
|
"Resolver Server": "Navne-server", |
||||
|
rrtypeDescription: "Vælg den type RR, du vil overvåge.", |
||||
|
"Last Result": "Seneste resultat", |
||||
|
pauseMonitorMsg: "Er du sikker på, at du vil pause Overvågeren?", |
||||
|
"Create your admin account": "Opret din administratorkonto", |
||||
|
"Repeat Password": "Gentag adgangskoden", |
||||
|
"Resource Record Type": "Resource Record Type", |
||||
|
respTime: "Resp. Time (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "German", |
||||
|
Settings: "Einstellungen", |
||||
|
Dashboard: "Dashboard", |
||||
|
"New Update": "Update Verfügbar", |
||||
|
Language: "Sprache", |
||||
|
Appearance: "Erscheinung", |
||||
|
Theme: "Thema", |
||||
|
General: "Allgemein", |
||||
|
Version: "Version", |
||||
|
"Check Update On GitHub": "Überprüfen von Updates auf Github", |
||||
|
List: "Liste", |
||||
|
Add: "Hinzufügen", |
||||
|
"Add New Monitor": "Neuer Monitor", |
||||
|
"Quick Stats": "Übersicht", |
||||
|
Up: "Aktiv", |
||||
|
Down: "Inaktiv", |
||||
|
Pending: "Ausstehend", |
||||
|
Unknown: "Unbekannt", |
||||
|
Pause: "Pausieren", |
||||
|
pauseDashboardHome: "Pausiert", |
||||
|
Name: "Name", |
||||
|
Status: "Status", |
||||
|
DateTime: "Datum / Uhrzeit", |
||||
|
Message: "Nachricht", |
||||
|
"No important events": "Keine wichtigen Ereignisse", |
||||
|
Resume: "Fortsetzen", |
||||
|
Edit: "Bearbeiten", |
||||
|
Delete: "Löschen", |
||||
|
Current: "Aktuell", |
||||
|
Uptime: "Verfügbarkeit", |
||||
|
"Cert Exp.": "Zertifikatsablauf", |
||||
|
days: "Tage", |
||||
|
day: "Tag", |
||||
|
"-day": "-Tage", |
||||
|
hour: "Stunde", |
||||
|
"-hour": "-Stunden", |
||||
|
checkEverySecond: "Überprüfe alle {0} Sekunden", |
||||
|
"Avg.": "Durchschn. ", |
||||
|
Response: " Antwortzeit", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "Monitor Typ", |
||||
|
Keyword: "Schlüsselwort", |
||||
|
"Friendly Name": "Anzeigename", |
||||
|
URL: "URL", |
||||
|
Hostname: "Hostname", |
||||
|
Port: "Port", |
||||
|
"Heartbeat Interval": "Taktintervall", |
||||
|
Retries: "Wiederholungen", |
||||
|
retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.", |
||||
|
Advanced: "Erweitert", |
||||
|
ignoreTLSError: "Ignoriere TLS/SSL Fehler von Webseiten", |
||||
|
"Upside Down Mode": "Umgedrehter Modus", |
||||
|
upsideDownModeDescription: "Drehe den Modus um, ist der Dienst erreichbar, wird er als Inaktiv angezeigt.", |
||||
|
"Max. Redirects": "Max. Weiterleitungen", |
||||
|
maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Setzte auf 0, um Weiterleitungen zu deaktivieren.", |
||||
|
"Accepted Status Codes": "Erlaubte HTTP-Statuscodes", |
||||
|
acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gewertet werden sollen.", |
||||
|
Save: "Speichern", |
||||
|
Notifications: "Benachrichtigungen", |
||||
|
"Not available, please setup.": "Keine verfügbar, bitte einrichten.", |
||||
|
"Setup Notification": "Benachrichtigung einrichten", |
||||
|
Light: "Hell", |
||||
|
Dark: "Dunkel", |
||||
|
Auto: "Auto", |
||||
|
"Theme - Heartbeat Bar": "Thema - Taktleiste", |
||||
|
Normal: "Normal", |
||||
|
Bottom: "Unten", |
||||
|
None: "Keine", |
||||
|
Timezone: "Zeitzone", |
||||
|
"Search Engine Visibility": "Suchmaschinensichtbarkeit", |
||||
|
"Allow indexing": "Indizierung zulassen", |
||||
|
"Discourage search engines from indexing site": "Halte Suchmaschinen von der Indexierung der Seite ab", |
||||
|
"Change Password": "Passwort ändern", |
||||
|
"Current Password": "Dezeitiges Passwort", |
||||
|
"New Password": "Neues Passwort", |
||||
|
"Repeat New Password": "Wiederhole neues Passwort", |
||||
|
passwordNotMatchMsg: "Passwörter stimmen nicht überein. ", |
||||
|
"Update Password": "Ändere Passwort", |
||||
|
"Disable Auth": "Authentifizierung deaktivieren", |
||||
|
"Enable Auth": "Authentifizierung aktivieren", |
||||
|
Logout: "Ausloggen", |
||||
|
notificationDescription: "Weise den Monitor(en) eine Benachrichtigung zu, damit diese Funktion greift.", |
||||
|
Leave: "Verlassen", |
||||
|
"I understand, please disable": "Ich verstehe, bitte deaktivieren", |
||||
|
Confirm: "Bestätige", |
||||
|
Yes: "Ja", |
||||
|
No: "Nein", |
||||
|
Username: "Benutzername", |
||||
|
Password: "Passwort", |
||||
|
"Remember me": "Passwort merken", |
||||
|
Login: "Einloggen", |
||||
|
"No Monitors, please": "Keine Monitore, bitte", |
||||
|
"add one": "hinzufügen", |
||||
|
"Notification Type": "Benachrichtigungs Dienst", |
||||
|
Email: "E-Mail", |
||||
|
Test: "Test", |
||||
|
"Certificate Info": "Zertifikatsinfo", |
||||
|
keywordDescription: "Suche nach einem Schlüsselwort in der HTML oder JSON Ausgabe. Bitte beachte, es wird in der Groß-/Kleinschreibung unterschieden.", |
||||
|
deleteMonitorMsg: "Bist du sicher das du den Monitor löschen möchtest?", |
||||
|
deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", |
||||
|
resoverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", |
||||
|
"Resolver Server": "Auflösungsserver", |
||||
|
rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.", |
||||
|
"Last Result": "Letztes Ergebnis", |
||||
|
pauseMonitorMsg: "Bist du sicher das du den Monitor pausieren möchtest?", |
||||
|
clearEventsMsg: "Bist du sicher das du alle Ereignisse für diesen Monitor löschen möchtest?", |
||||
|
clearHeartbeatsMsg: "Bist du sicher das du alle Statistiken für diesen Monitor löschen möchtest?", |
||||
|
"Clear Data": "Lösche Daten", |
||||
|
Events: "Ereignisse", |
||||
|
Heartbeats: "Statistiken", |
||||
|
confirmClearStatisticsMsg: "Bist du sicher das du ALLE Statistiken löschen möchtest?", |
||||
|
"Create your admin account": "Erstelle dein Admin Konto", |
||||
|
"Repeat Password": "Wiederhole das Passwort", |
||||
|
"Resource Record Type": "Resource Record Type", |
||||
|
respTime: "Antw. Zeit (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Erstellen", |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
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", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "Français (France)", |
||||
|
Settings: "Paramètres", |
||||
|
Dashboard: "Tableau de bord", |
||||
|
"New Update": "Mise à jour disponible", |
||||
|
Language: "Langue", |
||||
|
Appearance: "Apparence", |
||||
|
Theme: "Thème", |
||||
|
General: "Général", |
||||
|
Version: "Version", |
||||
|
"Check Update On GitHub": "Consulter les mises à jour sur Github", |
||||
|
List: "Lister", |
||||
|
Add: "Ajouter", |
||||
|
"Add New Monitor": "Ajouter une nouvelle sonde", |
||||
|
"Quick Stats": "Résumé", |
||||
|
Up: "En ligne", |
||||
|
Down: "Hors ligne", |
||||
|
Pending: "En attente", |
||||
|
Unknown: "Inconnu", |
||||
|
Pause: "En Pause", |
||||
|
pauseDashboardHome: "Éléments mis en pause", |
||||
|
Name: "Nom", |
||||
|
Status: "État", |
||||
|
DateTime: "Heure", |
||||
|
Message: "Messages", |
||||
|
"No important events": "Pas d'évènements important", |
||||
|
Resume: "Reprendre", |
||||
|
Edit: "Modifier", |
||||
|
Delete: "Supprimer", |
||||
|
Current: "Actuellement", |
||||
|
Uptime: "Uptime", |
||||
|
"Cert Exp.": "Certificat expiré", |
||||
|
days: "Jours", |
||||
|
day: "Jour", |
||||
|
"-day": "Journée", |
||||
|
hour: "Heure", |
||||
|
"-hour": "Heures", |
||||
|
checkEverySecond: "Vérifier toutes les {0} secondes", |
||||
|
"Avg.": "Moyen", |
||||
|
Response: "Temps de réponse", |
||||
|
Ping: "Ping", |
||||
|
"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é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": "Nombre maximum de redirections", |
||||
|
maxRedirectDescription: "Nombre maximal de redirections avant que le service soit noté hors-ligne.", |
||||
|
"Accepted Status Codes": "Codes HTTP", |
||||
|
acceptedStatusCodesDescription: "Codes HTTP considérés comme en ligne", |
||||
|
Save: "Sauvegarder", |
||||
|
Notifications: "Notifications", |
||||
|
"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 surveillés", |
||||
|
Normal: "Général", |
||||
|
Bottom: "En dessous", |
||||
|
None: "Rien", |
||||
|
Timezone: "Fuseau Horaire", |
||||
|
"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": "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", |
||||
|
"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 hôtes.", |
||||
|
Leave: "Quitter", |
||||
|
"I understand, please disable": "J'ai compris, désactivez-le", |
||||
|
Confirm: "Confirmer", |
||||
|
Yes: "Oui", |
||||
|
No: "Non", |
||||
|
Username: "Nom d'utilisateur", |
||||
|
Password: "Mot de passe", |
||||
|
"Remember me": "Se souvenir de moi", |
||||
|
Login: "Se connecter", |
||||
|
"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 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: "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", |
||||
|
Create: "Créer", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "日本語", |
||||
|
checkEverySecond: "{0}秒ごとにチェックします。", |
||||
|
"Avg.": "平均 ", |
||||
|
retriesDescription: "サービスがダウンとしてマークされ、通知が送信されるまでの最大リトライ数", |
||||
|
ignoreTLSError: "HTTPS ウェブサイトの TLS/SSL エラーを無視する", |
||||
|
upsideDownModeDescription: "ステータスの扱いを逆にします。サービスに到達可能な場合は、DOWNとなる。", |
||||
|
maxRedirectDescription: "フォローするリダイレクトの最大数。リダイレクトを無効にするには0を設定する。", |
||||
|
acceptedStatusCodesDescription: "成功した応答とみなされるステータスコードを選択する。", |
||||
|
passwordNotMatchMsg: "繰り返しのパスワードが一致しません。", |
||||
|
notificationDescription: "監視を機能させるには、監視に通知を割り当ててください。", |
||||
|
keywordDescription: "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します", |
||||
|
pauseDashboardHome: "一時停止", |
||||
|
deleteMonitorMsg: "この監視を削除してよろしいですか?", |
||||
|
deleteNotificationMsg: "全ての監視のこの通知を削除してよろしいですか?", |
||||
|
resoverserverDescription: "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", |
||||
|
rrtypeDescription: "監視するRRタイプを選択します", |
||||
|
pauseMonitorMsg: "一時停止しますか?", |
||||
|
Settings: "設定", |
||||
|
Dashboard: "ダッシュボード", |
||||
|
"New Update": "New Update", |
||||
|
Language: "言語", |
||||
|
Appearance: "外観", |
||||
|
Theme: "テーマ", |
||||
|
General: "General", |
||||
|
Version: "バージョン", |
||||
|
"Check Update On GitHub": "GitHubでアップデートを確認する", |
||||
|
List: "一覧", |
||||
|
Add: "追加", |
||||
|
"Add New Monitor": "監視の追加", |
||||
|
"Quick Stats": "統計", |
||||
|
Up: "Up", |
||||
|
Down: "Down", |
||||
|
Pending: "中止", |
||||
|
Unknown: "不明", |
||||
|
Pause: "一時停止", |
||||
|
Name: "名前", |
||||
|
Status: "ステータス", |
||||
|
DateTime: "日時", |
||||
|
Message: "メッセージ", |
||||
|
"No important events": "重要なイベントなし", |
||||
|
Resume: "再開", |
||||
|
Edit: "編集", |
||||
|
Delete: "削除", |
||||
|
Current: "現在", |
||||
|
Uptime: "起動時間", |
||||
|
"Cert Exp.": "証明書有効期限", |
||||
|
days: "日間", |
||||
|
day: "日", |
||||
|
"-day": "-日", |
||||
|
hour: "時間", |
||||
|
"-hour": "-時間", |
||||
|
Response: "レスポンス", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "監視タイプ", |
||||
|
Keyword: "キーワード", |
||||
|
"Friendly Name": "Friendly Name", |
||||
|
URL: "URL", |
||||
|
Hostname: "ホスト名", |
||||
|
Port: "ポート", |
||||
|
"Heartbeat Interval": "監視間隔", |
||||
|
Retries: "Retries", |
||||
|
Advanced: "Advanced", |
||||
|
"Upside Down Mode": "Upside Down Mode", |
||||
|
"Max. Redirects": "最大リダイレクト数", |
||||
|
"Accepted Status Codes": "承認されたステータスコード", |
||||
|
Save: "保存", |
||||
|
Notifications: "通知", |
||||
|
"Not available, please setup.": "利用できません。設定してください。", |
||||
|
"Setup Notification": "通知設定", |
||||
|
Light: "Light", |
||||
|
Dark: "Dark", |
||||
|
Auto: "Auto", |
||||
|
"Theme - Heartbeat Bar": "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": "add one", |
||||
|
"Notification Type": "通知タイプ", |
||||
|
Email: "Eメール", |
||||
|
Test: "テスト", |
||||
|
"Certificate Info": "証明書情報", |
||||
|
"Resolver Server": "問い合わせ先DNSサーバ", |
||||
|
"Resource Record Type": "DNSレコード設定", |
||||
|
"Last Result": "最終結果", |
||||
|
"Create your admin account": "Create your admin account", |
||||
|
"Repeat Password": "Repeat Password", |
||||
|
respTime: "Resp. Time (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "한국어", |
||||
|
checkEverySecond: "{0} 초마다 체크해요.", |
||||
|
"Avg.": "평균 ", |
||||
|
retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수", |
||||
|
ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 에러 무시하기", |
||||
|
upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거에요.", |
||||
|
maxRedirectDescription: "최대 리다이렉트 횟수에요. 0을 입력하면 리다이렉트를 꺼요.", |
||||
|
acceptedStatusCodesDescription: "응답 성공으로 간주할 상태 코드를 정해요.", |
||||
|
passwordNotMatchMsg: "비밀번호 재입력이 일치하지 않아요.", |
||||
|
notificationDescription: "모니터링에 알림을 설정할 수 있어요.", |
||||
|
keywordDescription: "Html 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.", |
||||
|
pauseDashboardHome: "일시 정지", |
||||
|
deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?", |
||||
|
deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?", |
||||
|
resoverserverDescription: "Cloudflare가 기본 서버에요, 원한다면 언제나 다른 resolver 서버로 변경할 수 있어요.", |
||||
|
rrtypeDescription: "모니터링할 RR-Type을 선택해요.", |
||||
|
pauseMonitorMsg: "정말 이 모니터링을 일시 정지 할까요?", |
||||
|
Settings: "설정", |
||||
|
Dashboard: "대시보드", |
||||
|
"New Update": "새로운 업데이트", |
||||
|
Language: "언어", |
||||
|
Appearance: "외형", |
||||
|
Theme: "테마", |
||||
|
General: "일반", |
||||
|
Version: "버전", |
||||
|
"Check Update On GitHub": "깃허브에서 업데이트 확인", |
||||
|
List: "목록", |
||||
|
Add: "추가", |
||||
|
"Add New Monitor": "새로운 모니터링 추가하기", |
||||
|
"Quick Stats": "간단한 정보", |
||||
|
Up: "온라인", |
||||
|
Down: "오프라인", |
||||
|
Pending: "대기 중", |
||||
|
Unknown: "알 수 없음", |
||||
|
Pause: "일시 정지", |
||||
|
Name: "이름", |
||||
|
Status: "상태", |
||||
|
DateTime: "날짜", |
||||
|
Message: "메시지", |
||||
|
"No important events": "중요 이벤트 없음", |
||||
|
Resume: "재개", |
||||
|
Edit: "수정", |
||||
|
Delete: "삭제", |
||||
|
Current: "현재", |
||||
|
Uptime: "업타임", |
||||
|
"Cert Exp.": "인증서 만료", |
||||
|
days: "일", |
||||
|
day: "일", |
||||
|
"-day": "-일", |
||||
|
hour: "시간", |
||||
|
"-hour": "-시간", |
||||
|
Response: "응답", |
||||
|
Ping: "핑", |
||||
|
"Monitor Type": "모니터링 종류", |
||||
|
Keyword: "키워드", |
||||
|
"Friendly Name": "이름", |
||||
|
URL: "URL", |
||||
|
Hostname: "호스트네임", |
||||
|
Port: "포트", |
||||
|
"Heartbeat Interval": "하트비트 주기", |
||||
|
Retries: "재시도", |
||||
|
Advanced: "고급", |
||||
|
"Upside Down Mode": "상태 반전 모드", |
||||
|
"Max. Redirects": "최대 리다이렉트", |
||||
|
"Accepted Status Codes": "응답 성공 상태 코드", |
||||
|
Save: "저장", |
||||
|
Notifications: "알림", |
||||
|
"Not available, please setup.": "존재하지 않아요, 새로운거 하나 만드는건 어때요?", |
||||
|
"Setup Notification": "알림 설정", |
||||
|
Light: "라이트", |
||||
|
Dark: "다크", |
||||
|
Auto: "자동", |
||||
|
"Theme - Heartbeat Bar": "테마 - 하트비트 바", |
||||
|
Normal: "기본값", |
||||
|
Bottom: "가운데", |
||||
|
None: "제거", |
||||
|
Timezone: "시간대", |
||||
|
"Search Engine Visibility": "검색 엔진 활성화", |
||||
|
"Allow indexing": "인덱싱 허용", |
||||
|
"Discourage search engines from indexing site": "검색 엔진 인덱싱 거부", |
||||
|
"Change Password": "비밀번호 변경", |
||||
|
"Current Password": "기존 비밀번호", |
||||
|
"New Password": "새로운 비밀번호", |
||||
|
"Repeat New Password": "새로운 비밀번호 재입력", |
||||
|
"Update Password": "비밀번호 변경", |
||||
|
"Disable Auth": "인증 끄기", |
||||
|
"Enable Auth": "인증 켜기", |
||||
|
Logout: "로그아웃", |
||||
|
Leave: "나가기", |
||||
|
"I understand, please disable": "기능에 대해 이해했으니 꺼주세요.", |
||||
|
Confirm: "확인", |
||||
|
Yes: "확인", |
||||
|
No: "취소", |
||||
|
Username: "이름", |
||||
|
Password: "비밀번호", |
||||
|
"Remember me": "비밀번호 기억하기", |
||||
|
Login: "로그인", |
||||
|
"No Monitors, please": "모니터링이 없어요,", |
||||
|
"add one": "하나 추가해봐요", |
||||
|
"Notification Type": "알림 종류", |
||||
|
Email: "이메일", |
||||
|
Test: "테스트", |
||||
|
"Certificate Info": "인증서 정보", |
||||
|
"Resolver Server": "Resolver 서버", |
||||
|
"Resource Record Type": "자원 레코드 유형", |
||||
|
"Last Result": "최근 결과", |
||||
|
"Create your admin account": "관리자 계정 만들기", |
||||
|
"Repeat Password": "비밀번호 재입력", |
||||
|
respTime: "응답 시간 (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "Nederlands", |
||||
|
checkEverySecond: "Controleer elke {0} seconden.", |
||||
|
"Avg.": "Gem. ", |
||||
|
retriesDescription: "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden", |
||||
|
ignoreTLSError: "Negeer TLS/SSL-fout voor HTTPS-websites", |
||||
|
upsideDownModeDescription: "Draai de status om. Als de service bereikbaar is, is deze OFFLINE.", |
||||
|
maxRedirectDescription: "Maximaal aantal te volgen omleidingen. Stel in op 0 om omleidingen uit te schakelen.", |
||||
|
acceptedStatusCodesDescription: "Selecteer statuscodes die als een succesvol antwoord worden beschouwd.", |
||||
|
passwordNotMatchMsg: "Het herhaalwachtwoord komt niet overeen.", |
||||
|
notificationDescription: "Wijs a.u.b. een melding toe aan de monitor(s) om het te laten werken.", |
||||
|
keywordDescription: "Zoek trefwoord in gewone html of JSON-response en het is hoofdlettergevoelig", |
||||
|
pauseDashboardHome: "Gepauzeerd", |
||||
|
deleteMonitorMsg: "Weet u zeker dat u deze monitor wilt verwijderen?", |
||||
|
deleteNotificationMsg: "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?", |
||||
|
resoverserverDescription: "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.", |
||||
|
rrtypeDescription: "Selecteer het RR-type dat u wilt monitoren", |
||||
|
pauseMonitorMsg: "Weet je zeker dat je wilt pauzeren?", |
||||
|
Settings: "Instellingen", |
||||
|
Dashboard: "Dashboard", |
||||
|
"New Update": "Nieuwe update", |
||||
|
Language: "Taal", |
||||
|
Appearance: "Weergave", |
||||
|
Theme: "Thema", |
||||
|
General: "Algemeen", |
||||
|
Version: "Versie", |
||||
|
"Check Update On GitHub": "Controleer voor updates op GitHub", |
||||
|
List: "Lijst", |
||||
|
Add: "Toevoegen", |
||||
|
"Add New Monitor": "Nieuwe monitor toevoegen", |
||||
|
"Quick Stats": "Snelle statistieken", |
||||
|
Up: "Online", |
||||
|
Down: "Offline", |
||||
|
Pending: "In afwachting", |
||||
|
Unknown: "Onbekend", |
||||
|
Pause: "Pauze", |
||||
|
Name: "Naam", |
||||
|
Status: "Status", |
||||
|
DateTime: "Datum Tijd", |
||||
|
Message: "Bericht", |
||||
|
"No important events": "Geen belangrijke gebeurtenissen", |
||||
|
Resume: "Hervat", |
||||
|
Edit: "Wijzigen", |
||||
|
Delete: "Verwijderen", |
||||
|
Current: "Huidig", |
||||
|
Uptime: "Uptime", |
||||
|
"Cert Exp.": "Cert. verl.", |
||||
|
days: "dagen", |
||||
|
day: "dag", |
||||
|
"-day": "-dag", |
||||
|
hour: "uur", |
||||
|
"-hour": "-uur", |
||||
|
Response: "Antwoord", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "Monitortype:", |
||||
|
Keyword: "Trefwoord", |
||||
|
"Friendly Name": "Vriendelijke naam", |
||||
|
URL: "URL", |
||||
|
Hostname: "Hostnaam", |
||||
|
Port: "Poort", |
||||
|
"Heartbeat Interval": "Hartslaginterval", |
||||
|
Retries: "Pogingen", |
||||
|
Advanced: "Geavanceerd", |
||||
|
"Upside Down Mode": "Ondersteboven modus", |
||||
|
"Max. Redirects": "Max. Omleidingen", |
||||
|
"Accepted Status Codes": "Geaccepteerde statuscodes", |
||||
|
Save: "Opslaan", |
||||
|
Notifications: "Meldingen", |
||||
|
"Not available, please setup.": "Niet beschikbaar, stel a.u.b. in.", |
||||
|
"Setup Notification": "Melding instellen", |
||||
|
Light: "Licht", |
||||
|
Dark: "Donker", |
||||
|
Auto: "Auto", |
||||
|
"Theme - Heartbeat Bar": "Thema - Hartslagbalk", |
||||
|
Normal: "Normaal", |
||||
|
Bottom: "Onderkant", |
||||
|
None: "Geen", |
||||
|
Timezone: "Tijdzone", |
||||
|
"Search Engine Visibility": "Zichtbaarheid voor zoekmachines", |
||||
|
"Allow indexing": "Indexering toestaan", |
||||
|
"Discourage search engines from indexing site": "Ontmoedig zoekmachines om de site te indexeren", |
||||
|
"Change Password": "Verander wachtwoord", |
||||
|
"Current Password": "Huidig wachtwoord", |
||||
|
"New Password": "Nieuw wachtwoord", |
||||
|
"Repeat New Password": "Herhaal nieuw wachtwoord", |
||||
|
"Update Password": "Vernieuw wachtwoord", |
||||
|
"Disable Auth": "Autorisatie uitschakelen", |
||||
|
"Enable Auth": "Autorisatie inschakelen", |
||||
|
Logout: "Uitloggen", |
||||
|
Leave: "Vertrekken", |
||||
|
"I understand, please disable": "Ik begrijp het, schakel a.u.b. uit", |
||||
|
Confirm: "Bevestigen", |
||||
|
Yes: "Ja", |
||||
|
No: "Nee", |
||||
|
Username: "Gebruikersnaam", |
||||
|
Password: "Wachtwoord", |
||||
|
"Remember me": "Wachtwoord onthouden", |
||||
|
Login: "Inloggen", |
||||
|
"No Monitors, please": "Geen monitoren, ", |
||||
|
"add one": "voeg een toe", |
||||
|
"Notification Type": "Melding type", |
||||
|
Email: "E-mail", |
||||
|
Test: "Testen", |
||||
|
"Certificate Info": "Certificaat informatie", |
||||
|
"Resolver Server": "Resolver Server", |
||||
|
"Resource Record Type": "Type bronrecord", |
||||
|
"Last Result": "Laatste resultaat", |
||||
|
"Create your admin account": "Maak uw beheerdersaccount aan", |
||||
|
"Repeat Password": "Herhaal wachtwoord", |
||||
|
respTime: "resp. tijd (ms)", |
||||
|
notAvailableShort: "N.v.t.", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,113 @@ |
|||||
|
export default { |
||||
|
languageName: "Polski", |
||||
|
checkEverySecond: "Sprawdzaj co {0} sekund.", |
||||
|
"Avg.": "Średnia ", |
||||
|
retriesDescription: "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako wyłączona i zostanie wysłane powiadomienie", |
||||
|
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.", |
||||
|
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ź.", |
||||
|
passwordNotMatchMsg: "Powtórzone hasło nie pasuje.", |
||||
|
notificationDescription: "Proszę przypisać powiadomienie do monitora(ów), aby zadziałało.", |
||||
|
keywordDescription: "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.", |
||||
|
pauseDashboardHome: "Pauza", |
||||
|
deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?", |
||||
|
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.", |
||||
|
rrtypeDescription: "Wybierz RR-Type który chcesz monitorować", |
||||
|
pauseMonitorMsg: "Czy na pewno chcesz wstrzymać?", |
||||
|
Settings: "Ustawienia", |
||||
|
Dashboard: "Panel", |
||||
|
"New Update": "Nowa aktualizacja", |
||||
|
Language: "Język", |
||||
|
Appearance: "Wygląd", |
||||
|
Theme: "Motyw", |
||||
|
General: "Ogólne", |
||||
|
Version: "Wersja", |
||||
|
"Check Update On GitHub": "Sprawdź aktualizację na GitHub.", |
||||
|
List: "Lista", |
||||
|
Add: "Dodaj", |
||||
|
"Add New Monitor": "Dodaj nowy monitor", |
||||
|
"Quick Stats": "Szybkie statystyki", |
||||
|
Up: "Online", |
||||
|
Down: "Offline", |
||||
|
Pending: "Oczekujący", |
||||
|
Unknown: "Nieznane", |
||||
|
Pause: "Pauza", |
||||
|
Name: "Nazwa", |
||||
|
Status: "Status", |
||||
|
DateTime: "Data i godzina", |
||||
|
Message: "Wiadomość", |
||||
|
"No important events": "Brak ważnych wydarzeń", |
||||
|
Resume: "Wznów", |
||||
|
Edit: "Edytuj", |
||||
|
Delete: "Usuń", |
||||
|
Current: "aktualny", |
||||
|
Uptime: "Czas pracy", |
||||
|
"Cert Exp.": "Wygaśnięcie certyfikatu", |
||||
|
days: "dni", |
||||
|
day: "dzień", |
||||
|
"-day": " dni", |
||||
|
hour: "godzina", |
||||
|
"-hour": " godziny", |
||||
|
Response: "Odpowiedź", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "Typ monitora", |
||||
|
Keyword: "Słowo kluczowe", |
||||
|
"Friendly Name": "Przyjazna nazwa", |
||||
|
URL: "URL", |
||||
|
Hostname: "Nazwa hosta", |
||||
|
Port: "Port", |
||||
|
"Heartbeat Interval": "Interwał bicia serca", |
||||
|
Retries: "Prób", |
||||
|
Advanced: "Zaawansowane", |
||||
|
"Upside Down Mode": "Tryb do góry nogami", |
||||
|
"Max. Redirects": "Maks. przekierowania", |
||||
|
"Accepted Status Codes": "Akceptowane kody statusu", |
||||
|
Save: "Zapisz", |
||||
|
Notifications: "Powiadomienia", |
||||
|
"Not available, please setup.": "Niedostępne, proszę skonfigurować.", |
||||
|
"Setup Notification": "Konfiguracja powiadomień", |
||||
|
Light: "Jasny", |
||||
|
Dark: "Ciemny", |
||||
|
Auto: "Automatyczny", |
||||
|
"Theme - Heartbeat Bar": "Motyw - pasek bicia serca", |
||||
|
Normal: "Normalne", |
||||
|
Bottom: "Na dole", |
||||
|
None: "Brak", |
||||
|
Timezone: "Strefa czasowa", |
||||
|
"Search Engine Visibility": "Widoczność w wyszukiwarce", |
||||
|
"Allow indexing": "Pozwól na indeksowanie", |
||||
|
"Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", |
||||
|
"Change Password": "Zmień hasło", |
||||
|
"Current Password": "Aktualne hasło", |
||||
|
"New Password": "Nowe hasło", |
||||
|
"Repeat New Password": "Powtórz nowe hasło", |
||||
|
"Update Password": "Zaktualizuj hasło", |
||||
|
"Disable Auth": "Wyłącz autoryzację", |
||||
|
"Enable Auth": "Włącz autoryzację ", |
||||
|
Logout: "Wyloguj się", |
||||
|
Leave: "Zostaw", |
||||
|
"I understand, please disable": "Rozumiem, proszę wyłączyć", |
||||
|
Confirm: "Potwierdź", |
||||
|
Yes: "Tak", |
||||
|
No: "Nie", |
||||
|
Username: "Nazwa użytkownika", |
||||
|
Password: "Hasło", |
||||
|
"Remember me": "Zapamiętaj mnie", |
||||
|
Login: "Zaloguj się", |
||||
|
"No Monitors, please": "Brak monitorów, proszę", |
||||
|
"add one": "dodaj jeden", |
||||
|
"Notification Type": "Typ powiadomienia", |
||||
|
Email: "Email", |
||||
|
Test: "Test", |
||||
|
"Certificate Info": "Informacje o certyfikacie", |
||||
|
"Resolver Server": "Server resolver", |
||||
|
"Resource Record Type": "Typ rekordu zasobów", |
||||
|
"Last Result": "Ostatni wynik", |
||||
|
"Create your admin account": "Utwórz swoje konto administratora", |
||||
|
"Repeat Password": "Powtórz hasło", |
||||
|
respTime: "Czas odp. (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Stwórz" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "Русский", |
||||
|
checkEverySecond: "Проверять каждые {0} секунд.", |
||||
|
"Avg.": "Средн. ", |
||||
|
retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", |
||||
|
ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов", |
||||
|
upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", |
||||
|
maxRedirectDescription: "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", |
||||
|
acceptedStatusCodesDescription: "Выберите коды статусов, которые должны считаться за успешный ответ.", |
||||
|
passwordNotMatchMsg: "Повтор пароля не совпадает.", |
||||
|
notificationDescription: "Привяжите уведомления к мониторам.", |
||||
|
keywordDescription: "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)", |
||||
|
pauseDashboardHome: "Пауза", |
||||
|
deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?", |
||||
|
deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?", |
||||
|
resoverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", |
||||
|
rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать", |
||||
|
pauseMonitorMsg: "Вы действительно хотите поставить на паузу?", |
||||
|
Settings: "Настройки", |
||||
|
Dashboard: "Панель", |
||||
|
"New Update": "Обновление", |
||||
|
Language: "Язык", |
||||
|
Appearance: "Внешний вид", |
||||
|
Theme: "Тема", |
||||
|
General: "Общее", |
||||
|
Version: "Версия", |
||||
|
"Check Update On GitHub": "Проверить обновления на GitHub", |
||||
|
List: "Список", |
||||
|
Add: "Добавить", |
||||
|
"Add New Monitor": "Новый монитор", |
||||
|
"Quick Stats": "Статистика", |
||||
|
Up: "Доступно", |
||||
|
Down: "Недоступно", |
||||
|
Pending: "Ожидание", |
||||
|
Unknown: "Неизвестно", |
||||
|
Pause: "Пауза", |
||||
|
Name: "Имя", |
||||
|
Status: "Статус", |
||||
|
DateTime: "Дата и время", |
||||
|
Message: "Сообщение", |
||||
|
"No important events": "Важных событий нет", |
||||
|
Resume: "Возобновить", |
||||
|
Edit: "Изменить", |
||||
|
Delete: "Удалить", |
||||
|
Current: "Текущий", |
||||
|
Uptime: "Аптайм", |
||||
|
"Cert Exp.": "Сертификат просрочен", |
||||
|
days: "дней", |
||||
|
day: "день", |
||||
|
"-day": " дней", |
||||
|
hour: "час", |
||||
|
"-hour": " часа", |
||||
|
Response: "Ответ", |
||||
|
Ping: "Пинг", |
||||
|
"Monitor Type": "Тип монитора", |
||||
|
Keyword: "Слово", |
||||
|
"Friendly Name": "Имя", |
||||
|
URL: "URL", |
||||
|
Hostname: "Имя хоста", |
||||
|
Port: "Порт", |
||||
|
"Heartbeat Interval": "Частота опроса", |
||||
|
Retries: "Попыток", |
||||
|
Advanced: "Дополнительно", |
||||
|
"Upside Down Mode": "Режим реверса статуса", |
||||
|
"Max. Redirects": "Макс. перенаправлений", |
||||
|
"Accepted Status Codes": "Допустимые коды статуса", |
||||
|
Save: "Сохранить", |
||||
|
Notifications: "Уведомления", |
||||
|
"Not available, please setup.": "Доступных уведомлений нет, необходима настройка.", |
||||
|
"Setup Notification": "Настроить уведомления", |
||||
|
Light: "Светлая", |
||||
|
Dark: "Тёмная", |
||||
|
Auto: "Авто", |
||||
|
"Theme - Heartbeat Bar": "Тема - Полоса частоты опроса", |
||||
|
Normal: "Обычный", |
||||
|
Bottom: "Снизу", |
||||
|
None: "Отсутствует", |
||||
|
Timezone: "Часовой пояс", |
||||
|
"Search Engine Visibility": "Видимость поисковым движком", |
||||
|
"Allow indexing": "Разрешить индексирование", |
||||
|
"Discourage search engines from indexing site": "Не позволять индексировать сайт", |
||||
|
"Change Password": "Сменить пароль", |
||||
|
"Current Password": "Текущий пароль", |
||||
|
"New Password": "Новый пароль", |
||||
|
"Repeat New Password": "Повтор нового пароля", |
||||
|
"Update Password": "Обновить пароль", |
||||
|
"Disable Auth": "Отключить авторизацию", |
||||
|
"Enable Auth": "Включить авторизацию", |
||||
|
Logout: "Выйти", |
||||
|
Leave: "Отмена", |
||||
|
"I understand, please disable": "Я понимаю, всё равно отключить", |
||||
|
Confirm: "Подтвердить", |
||||
|
Yes: "Да", |
||||
|
No: "Нет", |
||||
|
Username: "Логин", |
||||
|
Password: "Пароль", |
||||
|
"Remember me": "Запомнить меня", |
||||
|
Login: "Вход в систему", |
||||
|
"No Monitors, please": "Мониторов нет, пожалуйста", |
||||
|
"add one": "создайте новый", |
||||
|
"Notification Type": "Тип уведомления", |
||||
|
Email: "Почта", |
||||
|
Test: "Проверка", |
||||
|
"Certificate Info": "Информация о сертификате", |
||||
|
"Resolver Server": "DNS сервер", |
||||
|
"Resource Record Type": "Тип ресурсной записи", |
||||
|
"Last Result": "Последний результат", |
||||
|
"Create your admin account": "Создайте аккаунт администратора", |
||||
|
"Repeat Password": "Повторите пароль", |
||||
|
respTime: "Resp. Time (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
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", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
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", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "Svenska", |
||||
|
checkEverySecond: "Uppdatera var {0} sekund.", |
||||
|
"Avg.": "Genomsnittligt ", |
||||
|
retriesDescription: "Max antal försök innan tjänsten markeras som nere och en notis skickas", |
||||
|
ignoreTLSError: "Ignorera TLS/SSL-fel för webbsidor med HTTPS", |
||||
|
upsideDownModeDescription: "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", |
||||
|
maxRedirectDescription: "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.", |
||||
|
acceptedStatusCodesDescription: "Välj statuskoder som räknas som lyckade.", |
||||
|
passwordNotMatchMsg: "Det bekräftade lösenordet stämmer ej överens.", |
||||
|
notificationDescription: "Vänligen lägg till en notistjänst till dina övervakare.", |
||||
|
keywordDescription: "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.", |
||||
|
pauseDashboardHome: "Pausa", |
||||
|
deleteMonitorMsg: "Är du säker på att du vill ta bort den här övervakningen?", |
||||
|
deleteNotificationMsg: "Är du säker på att du vill ta bort den här notisen för alla övervakare?", |
||||
|
resoverserverDescription: "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", |
||||
|
rrtypeDescription: "Välj den RR-typ du vill övervaka", |
||||
|
pauseMonitorMsg: "Är du säker på att du vill pausa?", |
||||
|
Settings: "Inställningar", |
||||
|
Dashboard: "Infopanel", |
||||
|
"New Update": "Ny uppdatering", |
||||
|
Language: "Språk", |
||||
|
Appearance: "Utseende", |
||||
|
Theme: "Tema", |
||||
|
General: "Allmänt", |
||||
|
Version: "Version", |
||||
|
"Check Update On GitHub": "Sök efter uppdatering på GitHub", |
||||
|
List: "Lista", |
||||
|
Add: "Lägg till", |
||||
|
"Add New Monitor": "Lägg Till Ny Övervakare", |
||||
|
"Quick Stats": "Snabbstatistik", |
||||
|
Up: "Uppe", |
||||
|
Down: "Nere", |
||||
|
Pending: "Pågående", |
||||
|
Unknown: "Okänt", |
||||
|
Pause: "Pausa", |
||||
|
Name: "Namn", |
||||
|
Status: "Status", |
||||
|
DateTime: "Datum & Tid", |
||||
|
Message: "Meddelande", |
||||
|
"No important events": "Inga viktiga händelser", |
||||
|
Resume: "Återuppta", |
||||
|
Edit: "Redigera", |
||||
|
Delete: "Ta bort", |
||||
|
Current: "Nuvarande", |
||||
|
Uptime: "Drifttid", |
||||
|
"Cert Exp.": "Certifikat utgår", |
||||
|
days: "dagar", |
||||
|
day: "dag", |
||||
|
"-day": " dagar", |
||||
|
hour: "timme", |
||||
|
"-hour": " timmar", |
||||
|
Response: "Svar", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "Övervakningstyp", |
||||
|
Keyword: "Nyckelord", |
||||
|
"Friendly Name": "Namn", |
||||
|
URL: "URL", |
||||
|
Hostname: "Värdnamn", |
||||
|
Port: "Port", |
||||
|
"Heartbeat Interval": "Hjärtslagsintervall", |
||||
|
Retries: "Försök", |
||||
|
Advanced: "Avancerat", |
||||
|
"Upside Down Mode": "Upp och ner-läge", |
||||
|
"Max. Redirects": "Max antal omdirigeringar", |
||||
|
"Accepted Status Codes": "Tillåtna statuskoder", |
||||
|
Save: "Spara", |
||||
|
Notifications: "Notiser", |
||||
|
"Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.", |
||||
|
"Setup Notification": "Ny Notistjänst", |
||||
|
Light: "Ljust", |
||||
|
Dark: "Mörkt", |
||||
|
Auto: "Automatiskt", |
||||
|
"Theme - Heartbeat Bar": "Tema - Heartbeat Bar", |
||||
|
Normal: "Normal", |
||||
|
Bottom: "Botten", |
||||
|
None: "Tomt", |
||||
|
Timezone: "Tidszon", |
||||
|
"Search Engine Visibility": "Synlighet på Sökmotorer", |
||||
|
"Allow indexing": "Tillåt indexering", |
||||
|
"Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan", |
||||
|
"Change Password": "Byt Lösenord", |
||||
|
"Current Password": "Nuvarande Lösenord", |
||||
|
"New Password": "Nytt Lösenord", |
||||
|
"Repeat New Password": "Upprepa Nytt Lösenord", |
||||
|
"Update Password": "Uppdatera Lösenord", |
||||
|
"Disable Auth": "Avaktivera Autentisering", |
||||
|
"Enable Auth": "Aktivera Autentisering", |
||||
|
Logout: "Logga ut", |
||||
|
Leave: "Lämna", |
||||
|
"I understand, please disable": "Jag förstår, vänligen avaktivera", |
||||
|
Confirm: "Bekräfta", |
||||
|
Yes: "Ja", |
||||
|
No: "Nej", |
||||
|
Username: "Användarnamn", |
||||
|
Password: "Lösenord", |
||||
|
"Remember me": "Kom ihåg mig", |
||||
|
Login: "Logga in", |
||||
|
"No Monitors, please": "Inga Övervakare, tack", |
||||
|
"add one": "lägg till en", |
||||
|
"Notification Type": "Notistyp", |
||||
|
Email: "Email", |
||||
|
Test: "Test", |
||||
|
"Certificate Info": "Certifikatsinfo", |
||||
|
"Resolver Server": "Resolverserver", |
||||
|
"Resource Record Type": "RR-typ", |
||||
|
"Last Result": "Senaste resultat", |
||||
|
"Create your admin account": "Skapa ditt administratörskonto", |
||||
|
"Repeat Password": "Upprepa Lösenord", |
||||
|
respTime: "Svarstid (ms)", |
||||
|
notAvailableShort: "Ej Tillg.", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
export default { |
||||
|
languageName: "简体中文", |
||||
|
checkEverySecond: "检测频率 {0} 秒", |
||||
|
"Avg.": "平均", |
||||
|
retriesDescription: "最大重试失败次数", |
||||
|
ignoreTLSError: "忽略HTTPS站点的证书错误", |
||||
|
upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", |
||||
|
maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", |
||||
|
acceptedStatusCodesDescription: "选择被视为成功响应的状态码", |
||||
|
passwordNotMatchMsg: "两次密码输入不一致", |
||||
|
notificationDescription: "请为监控项配置消息通知", |
||||
|
keywordDescription: "检测响应内容中的关键字,区分大小写", |
||||
|
pauseDashboardHome: "暂停", |
||||
|
deleteMonitorMsg: "确定要删除此监控吗?", |
||||
|
deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", |
||||
|
resoverserverDescription: "默认服务器 Cloudflare,可以修改为任意你想要使用的DNS服务器", |
||||
|
rrtypeDescription: "选择要监控的资源记录类型", |
||||
|
pauseMonitorMsg: "确定要暂停吗?", |
||||
|
Settings: "设置", |
||||
|
Dashboard: "仪表盘", |
||||
|
"New Update": "有新版本更新", |
||||
|
Language: "语言", |
||||
|
Appearance: "外观设置", |
||||
|
Theme: "主题", |
||||
|
General: "基本设置", |
||||
|
Version: "Version", |
||||
|
"Check Update On GitHub": "检查更新", |
||||
|
List: "列表", |
||||
|
Add: "添加", |
||||
|
"Add New Monitor": "创建监控项", |
||||
|
"Quick Stats": "状态速览", |
||||
|
Up: "正常", |
||||
|
Down: "故障", |
||||
|
Pending: "检测失败", |
||||
|
Unknown: "未知", |
||||
|
Pause: "暂停", |
||||
|
Name: "名称", |
||||
|
Status: "状态", |
||||
|
DateTime: "时间", |
||||
|
Message: "事件", |
||||
|
"No important events": "暂无重要事件", |
||||
|
Resume: "恢复", |
||||
|
Edit: "修改", |
||||
|
Delete: "删除", |
||||
|
Current: "当前", |
||||
|
Uptime: "可用率", |
||||
|
"Cert Exp.": "证书过期", |
||||
|
days: "天", |
||||
|
day: "天", |
||||
|
"-day": " 天", |
||||
|
hour: "小时", |
||||
|
"-hour": " 小时", |
||||
|
Response: "响应时长", |
||||
|
Ping: "Ping", |
||||
|
"Monitor Type": "监控类型", |
||||
|
Keyword: "关键字", |
||||
|
"Friendly Name": "自定义名称", |
||||
|
URL: "网址URL", |
||||
|
Hostname: "主机名", |
||||
|
Port: "端口号", |
||||
|
"Heartbeat Interval": "心跳间隔", |
||||
|
Retries: "重试次数", |
||||
|
Advanced: "高级选项", |
||||
|
"Upside Down Mode": "反向监控", |
||||
|
"Max. Redirects": "重定向次数", |
||||
|
"Accepted Status Codes": "有效状态码", |
||||
|
Save: "保存", |
||||
|
Notifications: "消息通知", |
||||
|
"Not available, please setup.": "无可用通道,请先设置", |
||||
|
"Setup Notification": "设置通知", |
||||
|
Light: "明亮", |
||||
|
Dark: "黑暗", |
||||
|
Auto: "自动", |
||||
|
"Theme - Heartbeat Bar": "状态显示", |
||||
|
Normal: "正常显示", |
||||
|
Bottom: "靠下显示", |
||||
|
None: "不显示", |
||||
|
Timezone: "时区", |
||||
|
"Search Engine Visibility": "搜索引擎设置", |
||||
|
"Allow indexing": "允许索引", |
||||
|
"Discourage search engines from indexing site": "阻止搜索引擎索引网站", |
||||
|
"Change Password": "修改密码", |
||||
|
"Current Password": "当前密码", |
||||
|
"New Password": "新的密码", |
||||
|
"Repeat New Password": "重复新的密码", |
||||
|
"Update Password": "更新密码", |
||||
|
"Disable Auth": "禁用身份验证", |
||||
|
"Enable Auth": "启用身份验证", |
||||
|
Logout: "退出", |
||||
|
Leave: "离开", |
||||
|
"I understand, please disable": "我已了解,继续禁用", |
||||
|
Confirm: "确认", |
||||
|
Yes: "确定", |
||||
|
No: "取消", |
||||
|
Username: "用户名", |
||||
|
Password: "密码", |
||||
|
"Remember me": "记住登录", |
||||
|
Login: "登录", |
||||
|
"No Monitors, please": "还没有监控项,", |
||||
|
"add one": "点击新增", |
||||
|
"Notification Type": "消息类型", |
||||
|
Email: "邮件", |
||||
|
Test: "测试一下", |
||||
|
"Certificate Info": "证书信息", |
||||
|
"Resolver Server": "解析服务器", |
||||
|
"Resource Record Type": "资源记录类型", |
||||
|
"Last Result": "Last Result", |
||||
|
"Create your admin account": "创建管理员账号", |
||||
|
"Repeat Password": "重复密码", |
||||
|
respTime: "Resp. Time (ms)", |
||||
|
notAvailableShort: "N/A", |
||||
|
Create: "Create", |
||||
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?", |
||||
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", |
||||
|
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", |
||||
|
"Clear Data": "Clear Data", |
||||
|
Events: "Events", |
||||
|
Heartbeats: "Heartbeats" |
||||
|
} |
File diff suppressed because it is too large
Loading…
Reference in new issue