commit
110ec491ee
@ -1,21 +0,0 @@
|
||||
---
|
||||
name: Ask for help
|
||||
about: You can ask any question related to Uptime Kuma.
|
||||
title: ''
|
||||
labels: help
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
**Is it a duplicated question?**
|
||||
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=
|
||||
|
||||
**Describe your problem**
|
||||
Please describe what you are asking for
|
||||
|
||||
**Info**
|
||||
Uptime Kuma Version:
|
||||
Using Docker?: Yes/No
|
||||
Docker Version:
|
||||
Node.js Version (Without Docker only):
|
||||
OS:
|
||||
Browser:
|
@ -0,0 +1,76 @@
|
||||
name: "❓ Ask for help"
|
||||
description: "Submit any question related to Uptime Kuma"
|
||||
title: "[Help]: <title>"
|
||||
labels: [help]
|
||||
body:
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "📝 Describe your problem"
|
||||
description: "Please walk us through it step by step."
|
||||
placeholder: "Describe what are you asking for..."
|
||||
- type: input
|
||||
id: uptime-kuma-version
|
||||
attributes:
|
||||
label: "🐻 Uptime-Kuma version"
|
||||
description: "Which version of Uptime-Kuma are you running?"
|
||||
placeholder: "Ex. 1.9.x"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: operating-system
|
||||
attributes:
|
||||
label: "💻 Operating System"
|
||||
description: "Which OS is your server/device running on?"
|
||||
placeholder: "Ex. Ubuntu 20.04"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: browser-vendor
|
||||
attributes:
|
||||
label: "🌐 Browser"
|
||||
description: "Which browser are you running on?"
|
||||
placeholder: "Ex. Firefox"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: docker-version
|
||||
attributes:
|
||||
label: "🐋 Docker"
|
||||
description: "If running with Docker, which version are you running?"
|
||||
placeholder: "Ex. 20.10.9"
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: docker-image-tag
|
||||
attributes:
|
||||
label: "🏷️ Docker Image Tag"
|
||||
description: "Which Docker image tag are you using? If running '1' or 'latest', please specify image hash."
|
||||
placeholder: "Ex. 1.9.1"
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: nodejs-version
|
||||
attributes:
|
||||
label: "🟩 NodeJS Version"
|
||||
description: "If running with Node.js? which version are you running?"
|
||||
placeholder: "14.x"
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
label: "👀 Have you spent some time to check if this question has been raised before?"
|
||||
description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)"
|
||||
options:
|
||||
- label: "I checked and didn't find similar question"
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: "🛡️ Security Policy"
|
||||
description: Please review the security policy before reporting security related issues/bugs.
|
||||
options:
|
||||
- label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy)
|
||||
required: true
|
@ -1,42 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is it a duplicated question?**
|
||||
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Info**
|
||||
Uptime Kuma Version:
|
||||
Using Docker?: Yes/No
|
||||
Docker Version:
|
||||
Node.js Version (Without Docker only):
|
||||
OS:
|
||||
Browser:
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Error Log**
|
||||
It is easier for us to find out the problem.
|
||||
|
||||
Docker: `docker logs <container id>`
|
||||
PM2: `~/.pm2/logs/` (e.g. `/home/ubuntu/.pm2/logs`)
|
@ -0,0 +1,100 @@
|
||||
name: "🐛 Bug Report"
|
||||
description: "Submit a bug report to help us improve"
|
||||
title: "[Bug]: <title>"
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "👟 Reproduction steps"
|
||||
description: "How do you trigger this bug? Please walk us through it step by step."
|
||||
placeholder: "..."
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "👍 Expected behavior"
|
||||
description: "What did you think would happen?"
|
||||
placeholder: "..."
|
||||
- type: textarea
|
||||
id: actual-behavior
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "👎 Actual Behavior"
|
||||
description: "What actually happen?"
|
||||
placeholder: "..."
|
||||
- type: input
|
||||
id: uptime-kuma-version
|
||||
attributes:
|
||||
label: "🐻 Uptime-Kuma version"
|
||||
description: "Which version of Uptime-Kuma are you running?"
|
||||
placeholder: "Ex. 1.9.x"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: operating-system
|
||||
attributes:
|
||||
label: "💻 Operating System"
|
||||
description: "Which OS is your server/device running on?"
|
||||
placeholder: "Ex. Ubuntu 20.04"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: browser-vendor
|
||||
attributes:
|
||||
label: "🌐 Browser"
|
||||
description: "Which browser are you running on?"
|
||||
placeholder: "Ex. Firefox"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: docker-version
|
||||
attributes:
|
||||
label: "🐋 Docker"
|
||||
description: "If running with Docker, which version are you running?"
|
||||
placeholder: "Ex. 20.10.9"
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: docker-image-tag
|
||||
attributes:
|
||||
label: "🏷️ Docker Image Tag"
|
||||
description: "Which Docker image tag are you using? If running '1' or 'latest', please specify image hash."
|
||||
placeholder: "Ex. 1.9.1"
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: nodejs-version
|
||||
attributes:
|
||||
label: "🟩 NodeJS Version"
|
||||
description: "If running with Node.js? which version are you running?"
|
||||
placeholder: "14.x"
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: "📝 Relevant log output"
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
label: "👀 Have you spent some time to check if this issue has been raised before?"
|
||||
description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)"
|
||||
options:
|
||||
- label: "I checked and didn't find similar issue"
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: "🛡️ Security Policy"
|
||||
description: Please review the security policy before reporting security related issues/bugs.
|
||||
options:
|
||||
- label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy)
|
||||
required: true
|
@ -1,22 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
**Is it a duplicated question?**
|
||||
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
@ -0,0 +1,59 @@
|
||||
name: 🚀 Feature Request
|
||||
description: "Submit a proposal for a new feature"
|
||||
title: "[Feature]: <title>"
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: dropdown
|
||||
id: feature-area
|
||||
attributes:
|
||||
label: "🏷️ Feature Request Type"
|
||||
description: "What kind of feature request is this?"
|
||||
multiple: true
|
||||
options:
|
||||
- API
|
||||
- New Notification
|
||||
- New Monitor
|
||||
- UI Feature
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature-description
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "🔖 Feature description"
|
||||
description: "A clear and concise description of what the feature request is."
|
||||
placeholder: "You should add ..."
|
||||
- type: textarea
|
||||
id: solution
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "✔️ Solution"
|
||||
description: "A clear and concise description of what you want to happen."
|
||||
placeholder: "In my use-case, ..."
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
validations:
|
||||
required: false
|
||||
attributes:
|
||||
label: "❓ Alternatives"
|
||||
description: "A clear and concise description of any alternative solutions or features you've considered."
|
||||
placeholder: "I have considered ..."
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
validations:
|
||||
required: false
|
||||
attributes:
|
||||
label: "📝 Additional Context"
|
||||
description: "Add any other context or screenshots about the feature request here."
|
||||
placeholder: "..."
|
||||
- type: checkboxes
|
||||
id: no-duplicate-issues
|
||||
attributes:
|
||||
label: "👀 Have you spent some time to check if this feature request has been raised before?"
|
||||
description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)"
|
||||
options:
|
||||
- label: "I checked and didn't find similar feature request"
|
||||
required: true
|
@ -0,0 +1,26 @@
|
||||
# Description
|
||||
|
||||
Fixes #(issue)
|
||||
|
||||
## Type of change
|
||||
|
||||
Please delete options that are not relevant.
|
||||
|
||||
- Bug fix (non-breaking change which fixes an issue)
|
||||
- User Interface
|
||||
- New feature (non-breaking change which adds functionality)
|
||||
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- Translation update
|
||||
- Other
|
||||
- This change requires a documentation update
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] My code follows the style guidelines of this project
|
||||
- [ ] I ran ESLint and other linters for modified files
|
||||
- [ ] I have performed a self-review of my own code and test it
|
||||
- [ ] I have commented my code, particularly in hard-to-understand areas
|
||||
- [ ] My changes generate no new warnings
|
||||
- [ ] My code needed automated testing. I have added them (this is optional task)
|
||||
|
||||
## Screenshots (if any)
|
@ -0,0 +1,89 @@
|
||||
//
|
||||
// bark.js
|
||||
// UptimeKuma
|
||||
//
|
||||
// Created by Lakr Aream on 2021/10/24.
|
||||
// Copyright © 2021 Lakr Aream. All rights reserved.
|
||||
//
|
||||
|
||||
const NotificationProvider = require("./notification-provider");
|
||||
const { DOWN, UP } = require("../../src/util");
|
||||
const { default: axios } = require("axios");
|
||||
|
||||
// bark is an APN bridge that sends notifications to Apple devices.
|
||||
|
||||
const barkNotificationGroup = "UptimeKuma";
|
||||
const barkNotificationAvatar = "https://github.com/louislam/uptime-kuma/raw/master/public/icon.png";
|
||||
const barkNotificationSound = "telegraph";
|
||||
const successMessage = "Successes!";
|
||||
|
||||
class Bark extends NotificationProvider {
|
||||
name = "Bark";
|
||||
|
||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||
try {
|
||||
var barkEndpoint = notification.barkEndpoint;
|
||||
|
||||
// check if the endpoint has a "/" suffix, if so, delete it first
|
||||
if (barkEndpoint.endsWith("/")) {
|
||||
barkEndpoint = barkEndpoint.substring(0, barkEndpoint.length - 1);
|
||||
}
|
||||
|
||||
if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] == UP) {
|
||||
let title = "UptimeKuma Monitor Up";
|
||||
return await this.postNotification(title, msg, barkEndpoint);
|
||||
}
|
||||
|
||||
if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] == DOWN) {
|
||||
let title = "UptimeKuma Monitor Down";
|
||||
return await this.postNotification(title, msg, barkEndpoint);
|
||||
}
|
||||
|
||||
if (msg != null) {
|
||||
let title = "UptimeKuma Message";
|
||||
return await this.postNotification(title, msg, barkEndpoint);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// add additional parameter for better on device styles (iOS 15 optimized)
|
||||
appendAdditionalParameters(postUrl) {
|
||||
// grouping all our notifications
|
||||
postUrl += "?group=" + barkNotificationGroup;
|
||||
// set icon to uptime kuma icon, 11kb should be fine
|
||||
postUrl += "&icon=" + barkNotificationAvatar;
|
||||
// picked a sound, this should follow system's mute status when arrival
|
||||
postUrl += "&sound=" + barkNotificationSound;
|
||||
return postUrl;
|
||||
}
|
||||
|
||||
// thrown if failed to check result, result code should be in range 2xx
|
||||
checkResult(result) {
|
||||
if (result.status == null) {
|
||||
throw new Error("Bark notification failed with invalid response!");
|
||||
}
|
||||
if (result.status < 200 || result.status >= 300) {
|
||||
throw new Error("Bark notification failed with status code " + result.status);
|
||||
}
|
||||
}
|
||||
|
||||
async postNotification(title, subtitle, endpoint) {
|
||||
// url encode title and subtitle
|
||||
title = encodeURIComponent(title);
|
||||
subtitle = encodeURIComponent(subtitle);
|
||||
let postUrl = endpoint + "/" + title + "/" + subtitle;
|
||||
postUrl = this.appendAdditionalParameters(postUrl);
|
||||
let result = await axios.get(postUrl);
|
||||
this.checkResult(result);
|
||||
if (result.statusText != null) {
|
||||
return "Bark notification succeed: " + result.statusText;
|
||||
}
|
||||
// because returned in range 200 ..< 300
|
||||
return successMessage;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Bark;
|
@ -0,0 +1,42 @@
|
||||
const NotificationProvider = require("./notification-provider");
|
||||
const axios = require("axios");
|
||||
|
||||
class ClickSendSMS extends NotificationProvider {
|
||||
|
||||
name = "clicksendsms";
|
||||
|
||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||
let okMsg = "Sent Successfully.";
|
||||
try {
|
||||
console.log({ notification });
|
||||
let config = {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": "Basic " + Buffer.from(notification.clicksendsmsLogin + ":" + notification.clicksendsmsPassword).toString('base64'),
|
||||
"Accept": "text/json",
|
||||
}
|
||||
};
|
||||
let data = {
|
||||
messages: [
|
||||
{
|
||||
"body": msg.replace(/[^\x00-\x7F]/g, ""),
|
||||
"to": notification.clicksendsmsToNumber,
|
||||
"source": "uptime-kuma",
|
||||
"from": notification.clicksendsmsSenderName,
|
||||
}
|
||||
]
|
||||
};
|
||||
let resp = await axios.post("https://rest.clicksend.com/v3/sms/send", data, config);
|
||||
if (resp.data.data.messages[0].status !== "SUCCESS") {
|
||||
let error = "Something gone wrong. Api returned " + resp.data.data.messages[0].status + ".";
|
||||
this.throwGeneralAxiosError(error);
|
||||
}
|
||||
|
||||
return okMsg;
|
||||
} catch (error) {
|
||||
this.throwGeneralAxiosError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ClickSendSMS;
|
@ -0,0 +1,37 @@
|
||||
const { checkLogin } = require("../util-server");
|
||||
const Database = require("../database");
|
||||
|
||||
module.exports = (socket) => {
|
||||
|
||||
// Post or edit incident
|
||||
socket.on("getDatabaseSize", async (callback) => {
|
||||
try {
|
||||
checkLogin(socket);
|
||||
callback({
|
||||
ok: true,
|
||||
size: Database.getSize(),
|
||||
});
|
||||
} catch (error) {
|
||||
callback({
|
||||
ok: false,
|
||||
msg: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
socket.on("shrinkDatabase", async (callback) => {
|
||||
try {
|
||||
checkLogin(socket);
|
||||
Database.shrink();
|
||||
callback({
|
||||
ok: true,
|
||||
});
|
||||
} catch (error) {
|
||||
callback({
|
||||
ok: false,
|
||||
msg: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
};
|
@ -0,0 +1,15 @@
|
||||
<template>
|
||||
<div class="mb-3">
|
||||
<label for="Bark Endpoint" class="form-label">{{ $t("Bark Endpoint") }}<span style="color: red;"><sup>*</sup></span></label>
|
||||
<input id="Bark Endpoint" v-model="$parent.notification.barkEndpoint" type="text" class="form-control" required>
|
||||
<div class="form-text">
|
||||
<p><span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}</p>
|
||||
</div>
|
||||
<i18n-t tag="div" keypath="wayToGetTeamsURL" class="form-text">
|
||||
<a
|
||||
href="https://github.com/Finb/Bark"
|
||||
target="_blank"
|
||||
>{{ $t("here") }}</a>
|
||||
</i18n-t>
|
||||
</div>
|
||||
</template>
|
@ -0,0 +1,38 @@
|
||||
<template>
|
||||
<div class="mb-3">
|
||||
<label for="clicksendsms-login" class="form-label">API Username</label>
|
||||
<div class="form-text">
|
||||
{{ $t("apiCredentials") }}
|
||||
<a href="http://dashboard.clicksend.com/account/subaccounts" target="_blank">here</a>
|
||||
</div>
|
||||
<input id="clicksendsms-login" v-model="$parent.notification.clicksendsmsLogin" type="text" class="form-control" required>
|
||||
<label for="clicksendsms-key" class="form-label">API Key</label>
|
||||
<HiddenInput id="clicksendsms-key" v-model="$parent.notification.clicksendsmsPassword" :required="true" autocomplete="one-time-code"></HiddenInput>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<div class="form-text">
|
||||
{{ $t("checkPrice", [$t("clicksendsms")]) }}
|
||||
<a href="https://www.clicksend.com/us/pricing" target="_blank">https://clicksend.com/us/pricing</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="clicksendsms-to-number" class="form-label">Recipient Number</label>
|
||||
<input id="clicksendsms-to-number" v-model="$parent.notification.clicksendsmsToNumber" type="text" minlength="8" maxlength="14" class="form-control" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="clicksendsms-sender-name" class="form-label">From Name/Number -
|
||||
<a href="https://help.clicksend.com/article/4kgj7krx00-what-is-a-sender-id-or-sender-number" target="_blank">More Info</a>
|
||||
</label>
|
||||
<input id="clicksendsms-sender-name" v-model="$parent.notification.clicksendsmsSenderName" type="text" minlength="3" maxlength="11" class="form-control">
|
||||
<div class="form-text">Leave blank to use a shared sender number.</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import HiddenInput from "../HiddenInput.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
HiddenInput,
|
||||
},
|
||||
};
|
||||
</script>
|
@ -1,285 +1,283 @@
|
||||
export default {
|
||||
languageName: "Vietnamese",
|
||||
checkEverySecond: "Kiểm tra mỗi {0} giây.",
|
||||
retryCheckEverySecond: "Thử lại mỗi {0} giây.",
|
||||
retriesDescription: "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo.",
|
||||
ignoreTLSError: "Bỏ qua lỗi TLS/SSL với các web HTTPS.",
|
||||
upsideDownModeDescription: "Trạng thái đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.",
|
||||
maxRedirectDescription: "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng",
|
||||
acceptedStatusCodesDescription: "Chọn mã code trạng thái được coi là phản hồi thành công.",
|
||||
passwordNotMatchMsg: "Mật khẩu nhập lại không khớp.",
|
||||
notificationDescription: "Vui lòng chỉ định một kênh thông báo.",
|
||||
keywordDescription: "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường",
|
||||
pauseDashboardHome: "Tạm dừng",
|
||||
deleteMonitorMsg: "Bạn chắc chắn muốn xóa monitor này chứ?",
|
||||
deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả monitor?",
|
||||
resoverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.",
|
||||
rrtypeDescription: "Hãy chọn RR-Type mà bạn muốn giám sát",
|
||||
pauseMonitorMsg: "Bạn chắc chắn muốn tạm dừng chứ?",
|
||||
enableDefaultNotificationDescription: "Bật làm mặc định cho mọi monitor mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng monitor.",
|
||||
clearEventsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho monitor này chứ?",
|
||||
clearHeartbeatsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho monitor này chứ?",
|
||||
confirmClearStatisticsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?",
|
||||
importHandleDescription: "Chọn 'Skip existing' nếu bạn muốn bỏ qua mọi monitor và kênh thông báo trùng tên. 'Overwrite' sẽ ghi đè lên tất cả các monitor và kênh thông báo.",
|
||||
confirmImportMsg: "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.",
|
||||
twoFAVerifyLabel: "Vui lòng nhập mã token của bạn để xác minh rằng 2FA đang hoạt động",
|
||||
tokenValidSettingsMsg: "Mã token hợp lệ! Bạn có thể lưu cài đặt 2FA bây giờ.",
|
||||
confirmEnableTwoFAMsg: "Bạn chắc chắn muốn bật 2FA chứ?",
|
||||
confirmDisableTwoFAMsg: "Bạn chắc chắn muốn tắt 2FA chứ?",
|
||||
Settings: "Cài đặt",
|
||||
Dashboard: "Dashboard",
|
||||
"New Update": "Bản cập nhật mới",
|
||||
Language: "Ngôn ngữ",
|
||||
Appearance: "Giao diện",
|
||||
Theme: "Theme",
|
||||
General: "Chung",
|
||||
Version: "Phiên bản",
|
||||
"Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub",
|
||||
List: "List",
|
||||
Add: "Thêm",
|
||||
"Add New Monitor": "Thêm mới Monitor",
|
||||
"Quick Stats": "Thống kê nhanh",
|
||||
Up: "Lên",
|
||||
Down: "Xuống",
|
||||
Pending: "Chờ xử lý",
|
||||
Unknown: "Không xác định",
|
||||
Pause: "Tạm dừng",
|
||||
Name: "Tên",
|
||||
Status: "Trạng thái",
|
||||
DateTime: "Ngày tháng",
|
||||
Message: "Tin nhắn",
|
||||
"No important events": "Không có sự kiện quan trọng nào",
|
||||
Resume: "Khôi phục",
|
||||
Edit: "Sửa",
|
||||
Delete: "Xoá",
|
||||
Current: "Hiện tại",
|
||||
Uptime: "Uptime",
|
||||
"Cert Exp.": "Cert hết hạn",
|
||||
days: "ngày",
|
||||
day: "ngày",
|
||||
"-day": "-ngày",
|
||||
hour: "giờ",
|
||||
"-hour": "-giờ",
|
||||
Response: "Phản hồi",
|
||||
Ping: "Ping",
|
||||
"Monitor Type": "Kiểu monitor",
|
||||
Keyword: "Từ khoá",
|
||||
"Friendly Name": "Tên dễ hiểu",
|
||||
URL: "URL",
|
||||
Hostname: "Hostname",
|
||||
Port: "Port",
|
||||
"Heartbeat Interval": "Tần suất heartbeat",
|
||||
Retries: "Thử lại",
|
||||
"Heartbeat Retry Interval": "Tần suất thử lại của Heartbeat",
|
||||
Advanced: "Nâng cao",
|
||||
"Upside Down Mode": "Trạng thái đảo ngược",
|
||||
"Max. Redirects": "Chuyển hướng tối đa",
|
||||
"Accepted Status Codes": "Codes trạng thái chấp nhận",
|
||||
Save: "Lưu",
|
||||
Notifications: "Thông báo",
|
||||
"Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.",
|
||||
"Setup Notification": "Cài đặt thông báo",
|
||||
Light: "Sáng",
|
||||
Dark: "Tối",
|
||||
Auto: "Tự động",
|
||||
"Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
|
||||
Normal: "Bình thường",
|
||||
Bottom: "Dưới",
|
||||
None: "Không có",
|
||||
Timezone: "Múi giờ",
|
||||
"Search Engine Visibility": "Hiển thị với các công cụ tìm kiếm",
|
||||
"Allow indexing": "Cho phép indexing",
|
||||
"Discourage search engines from indexing site": "Ngăn chặn các công cụ tìm kiếm indexing trang",
|
||||
"Change Password": "Thay đổi mật khẩu",
|
||||
"Current Password": "Mật khẩu hiện tại",
|
||||
"New Password": "Mật khẩu mới",
|
||||
"Repeat New Password": "Lặp lại mật khẩu mới",
|
||||
"Update Password": "Cập nhật mật khẩu",
|
||||
"Disable Auth": "Tắt xác minh",
|
||||
"Enable Auth": "Bật xác minh",
|
||||
Logout: "Đăng xuất",
|
||||
Leave: "Rời",
|
||||
"I understand, please disable": "Tôi hiểu, làm ơn hãy tắt!",
|
||||
Confirm: "Xác nhận",
|
||||
Yes: "Có",
|
||||
No: "Không",
|
||||
Username: "Tài khoản",
|
||||
Password: "Mật khẩu",
|
||||
"Remember me": "Lưu phiên đăng nhập",
|
||||
Login: "Đăng nhập",
|
||||
"No Monitors, please": "Không có monitor nào",
|
||||
"add one": "Thêm mới",
|
||||
"Notification Type": "Kiểu thông báo",
|
||||
Email: "Email",
|
||||
Test: "Thử",
|
||||
"Certificate Info": "Thông tin Certificate",
|
||||
"Resolver Server": "Máy chủ Resolver",
|
||||
"Resource Record Type": "Loại bản ghi",
|
||||
"Last Result": "Kết quả cuối cùng",
|
||||
"Create your admin account": "Tạo tài khoản quản trị",
|
||||
"Repeat Password": "Lặp lại mật khẩu",
|
||||
"Import Backup": "Khôi phục bản sao lưu",
|
||||
"Export Backup": "Xuất bản sao lưu",
|
||||
Export: "Xuất",
|
||||
Import: "Khôi phục",
|
||||
respTime: "Thời gian phản hồi (ms)",
|
||||
notAvailableShort: "N/A",
|
||||
"Default enabled": "Mặc định bật",
|
||||
"Apply on all existing monitors": "Áp dụng cho tất cả monitor đang có",
|
||||
Create: "Tạo",
|
||||
"Clear Data": "Xoá dữ liệu",
|
||||
Events: "Sự kiện",
|
||||
Heartbeats: "Heartbeats",
|
||||
"Auto Get": "Tự động lấy",
|
||||
backupDescription: "Bạn có thể sao lưu tất cả các màn hình và tất cả các thông báo vào một file JSON.",
|
||||
backupDescription2: "PS: Không bao gồm dữ liệu lịch sử các sự kiện.",
|
||||
backupDescription3: "Hãy lưu giữ file này cẩn thận vì trong file đó chứa cả các mã token thông báo.",
|
||||
alertNoFile: "Hãy chọn file để khôi phục.",
|
||||
alertWrongFileType: "Hãy chọn file JSON.",
|
||||
"Clear all statistics": "Xoá tất cả thống kê",
|
||||
"Skip existing": "Skip existing",
|
||||
Overwrite: "Ghi đè",
|
||||
Options: "Tuỳ chọn",
|
||||
"Keep both": "Giữ lại cả hai",
|
||||
"Verify Token": "Xác minh Token",
|
||||
"Setup 2FA": "Cài đặt 2FA",
|
||||
"Enable 2FA": "Bật 2FA",
|
||||
"Disable 2FA": "Tắt 2FA",
|
||||
"2FA Settings": "Cài đặt 2FA",
|
||||
"Two Factor Authentication": "Xác thực hai yếu tố",
|
||||
Active: "Hoạt động",
|
||||
Inactive: "Ngừng hoạt động",
|
||||
Token: "Token",
|
||||
"Show URI": "Hiển thị URI",
|
||||
Tags: "Tags",
|
||||
"Add New below or Select...": "Thêm mới ở dưới hoặc Chọn...",
|
||||
"Tag with this name already exist.": "Tag với tên đã tồn tại.",
|
||||
"Tag with this value already exist.": "Tag với value đã tồn tại.",
|
||||
color: "Màu sắc",
|
||||
"value (optional)": "Value (tuỳ chọn)",
|
||||
Gray: "Xám",
|
||||
Red: "Đỏ",
|
||||
Orange: "Cam",
|
||||
Green: "Xanh lá",
|
||||
Blue: "Xanh da trời",
|
||||
Indigo: "Chàm",
|
||||
Purple: "Tím",
|
||||
Pink: "Hồng",
|
||||
"Search...": "Tìm kiếm...",
|
||||
"Avg. Ping": "Ping Trung bình",
|
||||
"Avg. Response": "Phản hồi trung bình",
|
||||
"Entry Page": "Entry Page",
|
||||
statusPageNothing: "Không có gì, hãy thêm nhóm monitor hoặc monitor.",
|
||||
"No Services": "Không có dịch vụ",
|
||||
"All Systems Operational": "Tất cả các hệ thống hoạt động",
|
||||
"Partially Degraded Service": "Dịch vụ xuống cấp một phần",
|
||||
"Degraded Service": "Degraded Service",
|
||||
"Add Group": "Thêm nhóm",
|
||||
"Add a monitor": "Thêm monitor",
|
||||
"Edit Status Page": "Sửa trang trạng thái",
|
||||
"Go to Dashboard": "Đi tới Dashboard",
|
||||
"Status Page": "Trang trạng thái",
|
||||
// Start notification form
|
||||
defaultNotificationName: "My {notification} Alerts ({number})",
|
||||
here: "tại đây",
|
||||
"Required": "Bắt buộc",
|
||||
"telegram": "Telegram",
|
||||
"Bot Token": "Bot Token",
|
||||
"You can get a token from": "Bạn có thể lấy mã token từ",
|
||||
"Chat ID": "Chat ID",
|
||||
supportTelegramChatID: "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID",
|
||||
wayToGetTelegramChatID: "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:",
|
||||
"YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN",
|
||||
chatIDNotFound: "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước",
|
||||
"webhook": "Webhook",
|
||||
"Post URL": "URL đăng",
|
||||
"Content Type": "Loại nội dung",
|
||||
webhookJsonDesc: "{0} phù hợp với bất kỳ máy chủ http hiện đại nào như express.js",
|
||||
webhookFormDataDesc: "{multipart} phù hợp với PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}",
|
||||
"smtp": "Email (SMTP)",
|
||||
secureOptionNone: "None / STARTTLS (25, 587)",
|
||||
secureOptionTLS: "TLS (465)",
|
||||
"Ignore TLS Error": "Bỏ qua lỗi TLS",
|
||||
"From Email": "Từ Email",
|
||||
"To Email": "Tới Email",
|
||||
smtpCC: "CC",
|
||||
smtpBCC: "BCC",
|
||||
"discord": "Discord",
|
||||
"Discord Webhook URL": "Discord Webhook URL",
|
||||
wayToGetDiscordURL: "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook",
|
||||
"Bot Display Name": "Tên hiển thị của Bot",
|
||||
"Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn",
|
||||
"Hello @everyone is...": "Xin chào {'@'} mọi người đang...",
|
||||
"teams": "Microsoft Teams",
|
||||
"Webhook URL": "Webhook URL",
|
||||
wayToGetTeamsURL: "Bạn có thể học cách tạo webhook url {0}.",
|
||||
"signal": "Signal",
|
||||
"Number": "Số",
|
||||
"Recipients": "Người nhận",
|
||||
needSignalAPI: "Bạn cần một tín hiệu client với REST API.",
|
||||
wayToCheckSignalURL: "Bạn có thể kiểm tra url này để xem cách thiết lập:",
|
||||
signalImportant: "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!",
|
||||
"gotify": "Gotify",
|
||||
"Application Token": "Mã Token ứng dụng",
|
||||
"Server URL": "URL máy chủ",
|
||||
"Priority": "Mức ưu tiên",
|
||||
"slack": "Slack",
|
||||
"Icon Emoji": "Icon Emoji",
|
||||
"Channel Name": "Tên Channel",
|
||||
"Uptime Kuma URL": "Uptime Kuma URL",
|
||||
aboutWebhooks: "Thông tin thêm về webhook trên: {0}",
|
||||
aboutChannelName: "Nhập tên kênh trên {0} trường Channel Name nếu bạn muốn bỏ qua kênh webhook. vd: #other-channel",
|
||||
aboutKumaURL: "Nếu bạn để trống trường Uptime Kuma URL, mặc định sẽ là trang Project Github.",
|
||||
emojiCheatSheet: "Bảng tra cứu Emoji: {0}",
|
||||
"rocket.chat": "Rocket.chat",
|
||||
pushover: "Pushover",
|
||||
pushy: "Pushy",
|
||||
octopush: "Octopush",
|
||||
promosms: "PromoSMS",
|
||||
lunasea: "LunaSea",
|
||||
apprise: "Thông báo (Hỗ trợ 50+ dịch vụ thông báo)",
|
||||
pushbullet: "Pushbullet",
|
||||
line: "Line Messenger",
|
||||
mattermost: "Mattermost",
|
||||
"User Key": "User Key",
|
||||
"Device": "Thiết bị",
|
||||
"Message Title": "Tiêu đề tin nhắn",
|
||||
"Notification Sound": "Âm thanh thông báo",
|
||||
"More info on:": "Thông tin chi tiết tại: {0}",
|
||||
pushoverDesc1: "Mức ưu tiên khẩn cấp (2) có thời gian chờ mặc định là 30 giây giữa các lần thử lại và sẽ hết hạn sau 1 giờ.",
|
||||
pushoverDesc2: "Nếu bạn muốn gửi thông báo đến các thiết bị khác nhau, hãy điền vào trường Thiết bị.",
|
||||
"SMS Type": "SMS Type",
|
||||
octopushTypePremium: "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)",
|
||||
octopushTypeLowCost: "Giá rẻ (Chậm, thỉnh thoảng bị chặn)",
|
||||
"Check octopush prices": "Kiểm tra giá octopush {0}.",
|
||||
octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +33612345678) ",
|
||||
octopushSMSSender: "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)",
|
||||
"LunaSea Device ID": "LunaSea ID thiết bị",
|
||||
"Apprise URL": "Apprise URL",
|
||||
"Example:": "Ví dụ: {0}",
|
||||
"Read more:": "Đọc thêm: {0}",
|
||||
"Status:": "Trạng thái: {0}",
|
||||
"Read more": "Đọc thêm",
|
||||
appriseInstalled: "Đã cài đặt Apprise.",
|
||||
appriseNotInstalled: "Chưa cài đặt Apprise. {0}",
|
||||
"Access Token": "Token truy cập",
|
||||
"Channel access token": "Token kênh truy cập",
|
||||
"Line Developers Console": "Line Developers Console",
|
||||
lineDevConsoleTo: "Line Developers Console - {0}",
|
||||
"Basic Settings": "Cài đặt cơ bản",
|
||||
"User ID": "User ID",
|
||||
"Messaging API": "Messaging API",
|
||||
wayToGetLineChannelToken: "Trước tiên, hãy truy cập {0},tạo nhà cung cấp và kênh (Messaging API), sau đó bạn có thể nhận mã token truy cập kênh và id người dùng từ các mục menu được đề cập ở trên.",
|
||||
"Icon URL": "Icon URL",
|
||||
aboutIconURL: "Bạn có thể cung cấp liên kết đến ảnh trong \"Icon URL\" để ghi đè ảnh hồ sơ mặc định. Sẽ không được sử dụng nếu Biểu tượng cảm xúc được thiết lập.",
|
||||
aboutMattermostChannelName: "Bạn có thể ghi đè kênh mặc định mà webhook đăng lên bằng cách nhập tên kênh vào trường \"Channel Name\". Điều này cần được bật trong cài đặt Mattermost webhook. Ví dụ: #other-channel",
|
||||
"matrix": "Matrix",
|
||||
promosmsTypeEco: "SMS ECO - rẻ nhưng chậm và thường xuyên quá tải. Chỉ dành cho người Ba Lan.",
|
||||
promosmsTypeFlash: "SMS FLASH - Tin nhắn sẽ tự động hiển thị trên thiết bị của người nhận. Chỉ dành cho người Ba Lan.",
|
||||
promosmsTypeFull: "SMS FULL - SMS cao cấp, Bạn có thể sử dụng Tên Người gửi (Bạn cần đăng ký tên trước). Đáng tin cậy cho các cảnh báo.",
|
||||
promosmsTypeSpeed: "SMS SPEED - Ưu tiên cao nhất trong hệ thống. Rất nhanh chóng và đáng tin cậy nhưng tốn kém, (giá gấp đôi SMS FULL).",
|
||||
promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)",
|
||||
promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
||||
"Feishu WebHookUrl": "Feishu WebHookUrl",
|
||||
// End notification form
|
||||
};
|
||||
export default {
|
||||
languageName: "Vietnamese",
|
||||
checkEverySecond: "Kiểm tra mỗi {0} giây.",
|
||||
retryCheckEverySecond: "Thử lại mỗi {0} giây.",
|
||||
retriesDescription: "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo.",
|
||||
ignoreTLSError: "Bỏ qua lỗi TLS/SSL với các web HTTPS.",
|
||||
upsideDownModeDescription: "Trạng thái đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.",
|
||||
maxRedirectDescription: "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng",
|
||||
acceptedStatusCodesDescription: "Chọn mã code trạng thái được coi là phản hồi thành công.",
|
||||
passwordNotMatchMsg: "Mật khẩu nhập lại không khớp.",
|
||||
notificationDescription: "Vui lòng chỉ định một kênh thông báo.",
|
||||
keywordDescription: "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường",
|
||||
pauseDashboardHome: "Tạm dừng",
|
||||
deleteMonitorMsg: "Bạn chắc chắn muốn xóa monitor này chứ?",
|
||||
deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả monitor?",
|
||||
resoverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.",
|
||||
rrtypeDescription: "Hãy chọn RR-Type mà bạn muốn giám sát",
|
||||
pauseMonitorMsg: "Bạn chắc chắn muốn tạm dừng chứ?",
|
||||
enableDefaultNotificationDescription: "Bật làm mặc định cho mọi monitor mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng monitor.",
|
||||
clearEventsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho monitor này chứ?",
|
||||
clearHeartbeatsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho monitor này chứ?",
|
||||
confirmClearStatisticsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?",
|
||||
importHandleDescription: "Chọn 'Skip existing' nếu bạn muốn bỏ qua mọi monitor và kênh thông báo trùng tên. 'Overwrite' sẽ ghi đè lên tất cả các monitor và kênh thông báo.",
|
||||
confirmImportMsg: "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.",
|
||||
twoFAVerifyLabel: "Vui lòng nhập mã token của bạn để xác minh rằng 2FA đang hoạt động",
|
||||
tokenValidSettingsMsg: "Mã token hợp lệ! Bạn có thể lưu cài đặt 2FA bây giờ.",
|
||||
confirmEnableTwoFAMsg: "Bạn chắc chắn muốn bật 2FA chứ?",
|
||||
confirmDisableTwoFAMsg: "Bạn chắc chắn muốn tắt 2FA chứ?",
|
||||
Settings: "Cài đặt",
|
||||
Dashboard: "Dashboard",
|
||||
"New Update": "Bản cập nhật mới",
|
||||
Language: "Ngôn ngữ",
|
||||
Appearance: "Giao diện",
|
||||
Theme: "Theme",
|
||||
General: "Chung",
|
||||
Version: "Phiên bản",
|
||||
"Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub",
|
||||
List: "List",
|
||||
Add: "Thêm",
|
||||
"Add New Monitor": "Thêm mới Monitor",
|
||||
"Quick Stats": "Thống kê nhanh",
|
||||
Up: "Lên",
|
||||
Down: "Xuống",
|
||||
Pending: "Chờ xử lý",
|
||||
Unknown: "Không xác định",
|
||||
Pause: "Tạm dừng",
|
||||
Name: "Tên",
|
||||
Status: "Trạng thái",
|
||||
DateTime: "Ngày tháng",
|
||||
Message: "Tin nhắn",
|
||||
"No important events": "Không có sự kiện quan trọng nào",
|
||||
Resume: "Khôi phục",
|
||||
Edit: "Sửa",
|
||||
Delete: "Xoá",
|
||||
Current: "Hiện tại",
|
||||
Uptime: "Uptime",
|
||||
"Cert Exp.": "Cert hết hạn",
|
||||
days: "ngày",
|
||||
day: "ngày",
|
||||
"-day": "-ngày",
|
||||
hour: "giờ",
|
||||
"-hour": "-giờ",
|
||||
Response: "Phản hồi",
|
||||
Ping: "Ping",
|
||||
"Monitor Type": "Kiểu monitor",
|
||||
Keyword: "Từ khoá",
|
||||
"Friendly Name": "Tên dễ hiểu",
|
||||
URL: "URL",
|
||||
Hostname: "Hostname",
|
||||
Port: "Port",
|
||||
"Heartbeat Interval": "Tần suất heartbeat",
|
||||
Retries: "Thử lại",
|
||||
"Heartbeat Retry Interval": "Tần suất thử lại của Heartbeat",
|
||||
Advanced: "Nâng cao",
|
||||
"Upside Down Mode": "Trạng thái đảo ngược",
|
||||
"Max. Redirects": "Chuyển hướng tối đa",
|
||||
"Accepted Status Codes": "Codes trạng thái chấp nhận",
|
||||
Save: "Lưu",
|
||||
Notifications: "Thông báo",
|
||||
"Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.",
|
||||
"Setup Notification": "Cài đặt thông báo",
|
||||
Light: "Sáng",
|
||||
Dark: "Tối",
|
||||
Auto: "Tự động",
|
||||
"Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
|
||||
Normal: "Bình thường",
|
||||
Bottom: "Dưới",
|
||||
None: "Không có",
|
||||
Timezone: "Múi giờ",
|
||||
"Search Engine Visibility": "Hiển thị với các công cụ tìm kiếm",
|
||||
"Allow indexing": "Cho phép indexing",
|
||||
"Discourage search engines from indexing site": "Ngăn chặn các công cụ tìm kiếm indexing trang",
|
||||
"Change Password": "Thay đổi mật khẩu",
|
||||
"Current Password": "Mật khẩu hiện tại",
|
||||
"New Password": "Mật khẩu mới",
|
||||
"Repeat New Password": "Lặp lại mật khẩu mới",
|
||||
"Update Password": "Cập nhật mật khẩu",
|
||||
"Disable Auth": "Tắt xác minh",
|
||||
"Enable Auth": "Bật xác minh",
|
||||
Logout: "Đăng xuất",
|
||||
Leave: "Rời",
|
||||
"I understand, please disable": "Tôi hiểu, làm ơn hãy tắt!",
|
||||
Confirm: "Xác nhận",
|
||||
Yes: "Có",
|
||||
No: "Không",
|
||||
Username: "Tài khoản",
|
||||
Password: "Mật khẩu",
|
||||
"Remember me": "Lưu phiên đăng nhập",
|
||||
Login: "Đăng nhập",
|
||||
"No Monitors, please": "Không có monitor nào",
|
||||
"add one": "Thêm mới",
|
||||
"Notification Type": "Kiểu thông báo",
|
||||
Email: "Email",
|
||||
Test: "Thử",
|
||||
"Certificate Info": "Thông tin Certificate",
|
||||
"Resolver Server": "Máy chủ Resolver",
|
||||
"Resource Record Type": "Loại bản ghi",
|
||||
"Last Result": "Kết quả cuối cùng",
|
||||
"Create your admin account": "Tạo tài khoản quản trị",
|
||||
"Repeat Password": "Lặp lại mật khẩu",
|
||||
"Import Backup": "Khôi phục bản sao lưu",
|
||||
"Export Backup": "Xuất bản sao lưu",
|
||||
Export: "Xuất",
|
||||
Import: "Khôi phục",
|
||||
respTime: "Thời gian phản hồi (ms)",
|
||||
notAvailableShort: "N/A",
|
||||
"Default enabled": "Mặc định bật",
|
||||
"Apply on all existing monitors": "Áp dụng cho tất cả monitor đang có",
|
||||
Create: "Tạo",
|
||||
"Clear Data": "Xoá dữ liệu",
|
||||
Events: "Sự kiện",
|
||||
Heartbeats: "Heartbeats",
|
||||
"Auto Get": "Tự động lấy",
|
||||
backupDescription: "Bạn có thể sao lưu tất cả các màn hình và tất cả các thông báo vào một file JSON.",
|
||||
backupDescription2: "PS: Không bao gồm dữ liệu lịch sử các sự kiện.",
|
||||
backupDescription3: "Hãy lưu giữ file này cẩn thận vì trong file đó chứa cả các mã token thông báo.",
|
||||
alertNoFile: "Hãy chọn file để khôi phục.",
|
||||
alertWrongFileType: "Hãy chọn file JSON.",
|
||||
"Clear all statistics": "Xoá tất cả thống kê",
|
||||
"Skip existing": "Skip existing",
|
||||
Overwrite: "Ghi đè",
|
||||
Options: "Tuỳ chọn",
|
||||
"Keep both": "Giữ lại cả hai",
|
||||
"Verify Token": "Xác minh Token",
|
||||
"Setup 2FA": "Cài đặt 2FA",
|
||||
"Enable 2FA": "Bật 2FA",
|
||||
"Disable 2FA": "Tắt 2FA",
|
||||
"2FA Settings": "Cài đặt 2FA",
|
||||
"Two Factor Authentication": "Xác thực hai yếu tố",
|
||||
Active: "Hoạt động",
|
||||
Inactive: "Ngừng hoạt động",
|
||||
Token: "Token",
|
||||
"Show URI": "Hiển thị URI",
|
||||
Tags: "Tags",
|
||||
"Add New below or Select...": "Thêm mới ở dưới hoặc Chọn...",
|
||||
"Tag with this name already exist.": "Tag với tên đã tồn tại.",
|
||||
"Tag with this value already exist.": "Tag với value đã tồn tại.",
|
||||
color: "Màu sắc",
|
||||
"value (optional)": "Value (tuỳ chọn)",
|
||||
Gray: "Xám",
|
||||
Red: "Đỏ",
|
||||
Orange: "Cam",
|
||||
Green: "Xanh lá",
|
||||
Blue: "Xanh da trời",
|
||||
Indigo: "Chàm",
|
||||
Purple: "Tím",
|
||||
Pink: "Hồng",
|
||||
"Search...": "Tìm kiếm...",
|
||||
"Avg. Ping": "Ping Trung bình",
|
||||
"Avg. Response": "Phản hồi trung bình",
|
||||
"Entry Page": "Entry Page",
|
||||
statusPageNothing: "Không có gì, hãy thêm nhóm monitor hoặc monitor.",
|
||||
"No Services": "Không có dịch vụ",
|
||||
"All Systems Operational": "Tất cả các hệ thống hoạt động",
|
||||
"Partially Degraded Service": "Dịch vụ xuống cấp một phần",
|
||||
"Degraded Service": "Degraded Service",
|
||||
"Add Group": "Thêm nhóm",
|
||||
"Add a monitor": "Thêm monitor",
|
||||
"Edit Status Page": "Sửa trang trạng thái",
|
||||
"Go to Dashboard": "Đi tới Dashboard",
|
||||
"Status Page": "Trang trạng thái",
|
||||
defaultNotificationName: "My {notification} Alerts ({number})",
|
||||
here: "tại đây",
|
||||
Required: "Bắt buộc",
|
||||
telegram: "Telegram",
|
||||
"Bot Token": "Bot Token",
|
||||
"You can get a token from": "Bạn có thể lấy mã token từ",
|
||||
"Chat ID": "Chat ID",
|
||||
supportTelegramChatID: "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID",
|
||||
wayToGetTelegramChatID: "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:",
|
||||
"YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN",
|
||||
chatIDNotFound: "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước",
|
||||
webhook: "Webhook",
|
||||
"Post URL": "URL đăng",
|
||||
"Content Type": "Loại nội dung",
|
||||
webhookJsonDesc: "{0} phù hợp với bất kỳ máy chủ http hiện đại nào như express.js",
|
||||
webhookFormDataDesc: "{multipart} phù hợp với PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}",
|
||||
smtp: "Email (SMTP)",
|
||||
secureOptionNone: "None / STARTTLS (25, 587)",
|
||||
secureOptionTLS: "TLS (465)",
|
||||
"Ignore TLS Error": "Bỏ qua lỗi TLS",
|
||||
"From Email": "Từ Email",
|
||||
"To Email": "Tới Email",
|
||||
smtpCC: "CC",
|
||||
smtpBCC: "BCC",
|
||||
discord: "Discord",
|
||||
"Discord Webhook URL": "Discord Webhook URL",
|
||||
wayToGetDiscordURL: "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook",
|
||||
"Bot Display Name": "Tên hiển thị của Bot",
|
||||
"Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn",
|
||||
"Hello @everyone is...": "Xin chào {'@'} mọi người đang...",
|
||||
teams: "Microsoft Teams",
|
||||
"Webhook URL": "Webhook URL",
|
||||
wayToGetTeamsURL: "Bạn có thể học cách tạo webhook url {0}.",
|
||||
signal: "Signal",
|
||||
Number: "Số",
|
||||
Recipients: "Người nhận",
|
||||
needSignalAPI: "Bạn cần một tín hiệu client với REST API.",
|
||||
wayToCheckSignalURL: "Bạn có thể kiểm tra url này để xem cách thiết lập:",
|
||||
signalImportant: "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!",
|
||||
gotify: "Gotify",
|
||||
"Application Token": "Mã Token ứng dụng",
|
||||
"Server URL": "URL máy chủ",
|
||||
Priority: "Mức ưu tiên",
|
||||
slack: "Slack",
|
||||
"Icon Emoji": "Icon Emoji",
|
||||
"Channel Name": "Tên Channel",
|
||||
"Uptime Kuma URL": "Uptime Kuma URL",
|
||||
aboutWebhooks: "Thông tin thêm về webhook trên: {0}",
|
||||
aboutChannelName: "Nhập tên kênh trên {0} trường Channel Name nếu bạn muốn bỏ qua kênh webhook. vd: #other-channel",
|
||||
aboutKumaURL: "Nếu bạn để trống trường Uptime Kuma URL, mặc định sẽ là trang Project Github.",
|
||||
emojiCheatSheet: "Bảng tra cứu Emoji: {0}",
|
||||
"rocket.chat": "Rocket.chat",
|
||||
pushover: "Pushover",
|
||||
pushy: "Pushy",
|
||||
octopush: "Octopush",
|
||||
promosms: "PromoSMS",
|
||||
lunasea: "LunaSea",
|
||||
apprise: "Thông báo (Hỗ trợ 50+ dịch vụ thông báo)",
|
||||
pushbullet: "Pushbullet",
|
||||
line: "Line Messenger",
|
||||
mattermost: "Mattermost",
|
||||
"User Key": "User Key",
|
||||
Device: "Thiết bị",
|
||||
"Message Title": "Tiêu đề tin nhắn",
|
||||
"Notification Sound": "Âm thanh thông báo",
|
||||
"More info on:": "Thông tin chi tiết tại: {0}",
|
||||
pushoverDesc1: "Mức ưu tiên khẩn cấp (2) có thời gian chờ mặc định là 30 giây giữa các lần thử lại và sẽ hết hạn sau 1 giờ.",
|
||||
pushoverDesc2: "Nếu bạn muốn gửi thông báo đến các thiết bị khác nhau, hãy điền vào trường Thiết bị.",
|
||||
"SMS Type": "SMS Type",
|
||||
octopushTypePremium: "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)",
|
||||
octopushTypeLowCost: "Giá rẻ (Chậm, thỉnh thoảng bị chặn)",
|
||||
"Check octopush prices": "Kiểm tra giá octopush {0}.",
|
||||
octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +33612345678) ",
|
||||
octopushSMSSender: "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)",
|
||||
"LunaSea Device ID": "LunaSea ID thiết bị",
|
||||
"Apprise URL": "Apprise URL",
|
||||
"Example:": "Ví dụ: {0}",
|
||||
"Read more:": "Đọc thêm: {0}",
|
||||
"Status:": "Trạng thái: {0}",
|
||||
"Read more": "Đọc thêm",
|
||||
appriseInstalled: "Đã cài đặt Apprise.",
|
||||
appriseNotInstalled: "Chưa cài đặt Apprise. {0}",
|
||||
"Access Token": "Token truy cập",
|
||||
"Channel access token": "Token kênh truy cập",
|
||||
"Line Developers Console": "Line Developers Console",
|
||||
lineDevConsoleTo: "Line Developers Console - {0}",
|
||||
"Basic Settings": "Cài đặt cơ bản",
|
||||
"User ID": "User ID",
|
||||
"Messaging API": "Messaging API",
|
||||
wayToGetLineChannelToken: "Trước tiên, hãy truy cập {0},tạo nhà cung cấp và kênh (Messaging API), sau đó bạn có thể nhận mã token truy cập kênh và id người dùng từ các mục menu được đề cập ở trên.",
|
||||
"Icon URL": "Icon URL",
|
||||
aboutIconURL: "Bạn có thể cung cấp liên kết đến ảnh trong \"Icon URL\" để ghi đè ảnh hồ sơ mặc định. Sẽ không được sử dụng nếu Biểu tượng cảm xúc được thiết lập.",
|
||||
aboutMattermostChannelName: "Bạn có thể ghi đè kênh mặc định mà webhook đăng lên bằng cách nhập tên kênh vào trường \"Channel Name\". Điều này cần được bật trong cài đặt Mattermost webhook. Ví dụ: #other-channel",
|
||||
matrix: "Matrix",
|
||||
promosmsTypeEco: "SMS ECO - rẻ nhưng chậm và thường xuyên quá tải. Chỉ dành cho người Ba Lan.",
|
||||
promosmsTypeFlash: "SMS FLASH - Tin nhắn sẽ tự động hiển thị trên thiết bị của người nhận. Chỉ dành cho người Ba Lan.",
|
||||
promosmsTypeFull: "SMS FULL - SMS cao cấp, Bạn có thể sử dụng Tên Người gửi (Bạn cần đăng ký tên trước). Đáng tin cậy cho các cảnh báo.",
|
||||
promosmsTypeSpeed: "SMS SPEED - Ưu tiên cao nhất trong hệ thống. Rất nhanh chóng và đáng tin cậy nhưng tốn kém, (giá gấp đôi SMS FULL).",
|
||||
promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)",
|
||||
promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
||||
"Feishu WebHookUrl": "Feishu WebHookUrl",
|
||||
};
|
||||
|
Loading…
Reference in new issue