mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-06-13 08:02:35 +02:00
Merge branch 'louislam:master' into master
This commit is contained in:
commit
f3a823c0b0
22 changed files with 427 additions and 96 deletions
3
.github/ISSUE_TEMPLATE/ask-for-help.md
vendored
3
.github/ISSUE_TEMPLATE/ask-for-help.md
vendored
|
@ -9,9 +9,8 @@ assignees: ''
|
||||||
**Is it a duplicate question?**
|
**Is it a duplicate question?**
|
||||||
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=
|
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=
|
||||||
|
|
||||||
|
|
||||||
**Describe your problem**
|
**Describe your problem**
|
||||||
|
Please describe what you are asking for
|
||||||
|
|
||||||
**Info**
|
**Info**
|
||||||
Uptime Kuma Version:
|
Uptime Kuma Version:
|
||||||
|
|
|
@ -6,7 +6,7 @@ The project was created with vite.js (vue3). Then I created a sub-directory call
|
||||||
|
|
||||||
The frontend code build into "dist" directory. The server (express.js) exposes the "dist" directory as root of the endpoint. This is how production is working.
|
The frontend code build into "dist" directory. The server (express.js) exposes the "dist" directory as root of the endpoint. This is how production is working.
|
||||||
|
|
||||||
# Key Technical Skills
|
## Key Technical Skills
|
||||||
|
|
||||||
- Node.js (You should know what are promise, async/await and arrow function etc.)
|
- Node.js (You should know what are promise, async/await and arrow function etc.)
|
||||||
- Socket.io
|
- Socket.io
|
||||||
|
@ -15,7 +15,7 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
|
||||||
- Bootstrap
|
- Bootstrap
|
||||||
- SQLite
|
- SQLite
|
||||||
|
|
||||||
# Directories
|
## Directories
|
||||||
|
|
||||||
- data (App data)
|
- data (App data)
|
||||||
- dist (Frontend build)
|
- dist (Frontend build)
|
||||||
|
@ -25,41 +25,41 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
|
||||||
- src (Frontend source code)
|
- src (Frontend source code)
|
||||||
- test (unit test)
|
- test (unit test)
|
||||||
|
|
||||||
# Can I create a pull request for Uptime Kuma?
|
## 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 into the master branch once it is tested.
|
Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge into the master branch once it is tested.
|
||||||
|
|
||||||
If you are not sure, feel free to create an empty pull request draft first.
|
If you are not sure, feel free to create an empty pull request draft first.
|
||||||
|
|
||||||
## Pull Request Examples
|
### Pull Request Examples
|
||||||
|
|
||||||
### ✅ High - Medium Priority
|
#### ✅ High - Medium Priority
|
||||||
|
|
||||||
- Add a new notification
|
- Add a new notification
|
||||||
- Add a chart
|
- Add a chart
|
||||||
- Fix a bug
|
- Fix a bug
|
||||||
- Translations
|
- Translations
|
||||||
|
|
||||||
### *️⃣ Requires one more reviewer
|
#### *️⃣ Requires one more reviewer
|
||||||
|
|
||||||
I do not have such knowledge to test it.
|
I do not have such knowledge to test it.
|
||||||
|
|
||||||
- Add k8s supports
|
- Add k8s supports
|
||||||
|
|
||||||
### *️⃣ Low Priority
|
#### *️⃣ Low Priority
|
||||||
|
|
||||||
It changed my current workflow and require further studies.
|
It changed my current workflow and require further studies.
|
||||||
|
|
||||||
- Change my release approach
|
- Change my release approach
|
||||||
|
|
||||||
### ❌ Won't Merge
|
#### ❌ Won't Merge
|
||||||
|
|
||||||
- Duplicated pull request
|
- Duplicated pull request
|
||||||
- Buggy
|
- Buggy
|
||||||
- Existing logic is completely modified or deleted
|
- Existing logic is completely modified or deleted
|
||||||
- A function that is completely out of scope
|
- A function that is completely out of scope
|
||||||
|
|
||||||
# Project Styles
|
## 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.
|
I personally do not like something need to learn so much and need to config so much before you can finally start the app.
|
||||||
|
|
||||||
|
@ -68,32 +68,32 @@ I personally do not like something need to learn so much and need to config so m
|
||||||
- Settings should be configurable in the frontend. Env var is not encouraged.
|
- Settings should be configurable in the frontend. Env var is not encouraged.
|
||||||
- Easy to use
|
- Easy to use
|
||||||
|
|
||||||
# Coding Styles
|
## Coding Styles
|
||||||
|
|
||||||
- 4 spaces indentation
|
- 4 spaces indentation
|
||||||
- Follow `.editorconfig`
|
- Follow `.editorconfig`
|
||||||
- Follow ESLint
|
- Follow ESLint
|
||||||
|
|
||||||
# Name convention
|
## Name convention
|
||||||
|
|
||||||
- Javascript/Typescript: camelCaseType
|
- Javascript/Typescript: camelCaseType
|
||||||
- SQLite: underscore_type
|
- SQLite: underscore_type
|
||||||
- CSS/SCSS: dash-type
|
- CSS/SCSS: dash-type
|
||||||
|
|
||||||
# Tools
|
## Tools
|
||||||
|
|
||||||
- Node.js >= 14
|
- Node.js >= 14
|
||||||
- Git
|
- Git
|
||||||
- IDE that supports ESLint and EditorConfig (I am using Intellji Idea)
|
- IDE that supports ESLint and EditorConfig (I am using Intellji Idea)
|
||||||
- A SQLite tool (SQLite Expert Personal is suggested)
|
- A SQLite tool (SQLite Expert Personal is suggested)
|
||||||
|
|
||||||
# Install dependencies
|
## Install dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm ci
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
# How to start the Backend Dev Server
|
## How to start the Backend Dev Server
|
||||||
|
|
||||||
(2021-09-23 Update)
|
(2021-09-23 Update)
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ npm run start-server-dev
|
||||||
|
|
||||||
It binds to `0.0.0.0:3001` by default.
|
It binds to `0.0.0.0:3001` by default.
|
||||||
|
|
||||||
## Backend Details
|
### Backend Details
|
||||||
|
|
||||||
It is mainly a socket.io app + express.js.
|
It is mainly a socket.io app + express.js.
|
||||||
|
|
||||||
|
@ -116,24 +116,26 @@ express.js is just used for serving the frontend built files (index.html, .js an
|
||||||
- scoket-handler (Socket.io Handlers)
|
- scoket-handler (Socket.io Handlers)
|
||||||
- server.js (Server main logic)
|
- server.js (Server main logic)
|
||||||
|
|
||||||
# How to start the Frontend Dev Server
|
## How to start the Frontend Dev Server
|
||||||
|
|
||||||
1. Set the env var `NODE_ENV` to "development".
|
1. Set the env var `NODE_ENV` to "development".
|
||||||
2. Start the frontend dev server by the following command.
|
2. Start the frontend dev server by the following command.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
It binds to `0.0.0.0:3000` by default.
|
It binds to `0.0.0.0:3000` by default.
|
||||||
|
|
||||||
You can use Vue.js devtools Chrome extension for debugging.
|
You can use Vue.js devtools Chrome extension for debugging.
|
||||||
|
|
||||||
## Build the frontend
|
### Build the frontend
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Frontend Details
|
### Frontend Details
|
||||||
|
|
||||||
Uptime Kuma Frontend is a single page application (SPA). Most paths are handled by Vue Router.
|
Uptime Kuma Frontend is a single page application (SPA). Most paths are handled by Vue Router.
|
||||||
|
|
||||||
|
@ -143,24 +145,23 @@ As you can see, most data in frontend is stored in root level, even though you c
|
||||||
|
|
||||||
The data and socket logic are in `src/mixins/socket.js`.
|
The data and socket logic are in `src/mixins/socket.js`.
|
||||||
|
|
||||||
|
## Database Migration
|
||||||
# Database Migration
|
|
||||||
|
|
||||||
1. Create `patch-{name}.sql` in `./db/`
|
1. Create `patch-{name}.sql` in `./db/`
|
||||||
2. Add your patch filename in the `patchList` list in `./server/database.js`
|
2. Add your patch filename in the `patchList` list in `./server/database.js`
|
||||||
|
|
||||||
# Unit Test
|
## Unit Test
|
||||||
|
|
||||||
It is an end-to-end testing. It is using Jest and Puppeteer.
|
It is an end-to-end testing. It is using Jest and Puppeteer.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
npm run build
|
npm run build
|
||||||
npm test
|
npm test
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, the Chromium window will be shown up during the test. Specifying `HEADLESS_TEST=1` for terminal environments.
|
By default, the Chromium window will be shown up during the test. Specifying `HEADLESS_TEST=1` for terminal environments.
|
||||||
|
|
||||||
# Update Dependencies
|
## Update Dependencies
|
||||||
|
|
||||||
Install `ncu`
|
Install `ncu`
|
||||||
https://github.com/raineorshine/npm-check-updates
|
https://github.com/raineorshine/npm-check-updates
|
||||||
|
@ -170,10 +171,10 @@ ncu -u -t patch
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
Since previously updating vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.
|
Since previously updating vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.
|
||||||
|
|
||||||
Patch release = the third digit
|
Patch release = the third digit ([Semantic Versioning](https://semver.org/))
|
||||||
|
|
||||||
# Translations
|
## Translations
|
||||||
|
|
||||||
Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages
|
Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
<a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/stars/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/pulls/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/v/louislam/uptime-kuma/latest?label=docker%20image%20ver." /></a> <a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/last-commit/louislam/uptime-kuma" /></a> <a target="_blank" href="https://opencollective.com/uptime-kuma"><img src="https://opencollective.com/uptime-kuma/total/badge.svg?label=Backers&color=brightgreen" /></a>
|
<a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/stars/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/pulls/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/v/louislam/uptime-kuma/latest?label=docker%20image%20ver." /></a> <a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/last-commit/louislam/uptime-kuma" /></a> <a target="_blank" href="https://opencollective.com/uptime-kuma"><img src="https://opencollective.com/uptime-kuma/total/badge.svg?label=Backers&color=brightgreen" /></a>
|
||||||
|
|
||||||
|
|
||||||
<div align="center" width="100%">
|
<div align="center" width="100%">
|
||||||
<img src="./public/icon.svg" width="128" alt="" />
|
<img src="./public/icon.svg" width="128" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -119,9 +118,11 @@ If you love this project, please consider giving me a ⭐.
|
||||||
## 🗣️ Discussion
|
## 🗣️ Discussion
|
||||||
|
|
||||||
### Issues Page
|
### Issues Page
|
||||||
|
|
||||||
You can discuss or ask for help in [Issues](https://github.com/louislam/uptime-kuma/issues).
|
You can discuss or ask for help in [Issues](https://github.com/louislam/uptime-kuma/issues).
|
||||||
|
|
||||||
### Subreddit
|
### Subreddit
|
||||||
|
|
||||||
My Reddit account: louislamlam
|
My Reddit account: louislamlam
|
||||||
You can mention me if you ask question on Reddit.
|
You can mention me if you ask question on Reddit.
|
||||||
https://www.reddit.com/r/UptimeKuma/
|
https://www.reddit.com/r/UptimeKuma/
|
||||||
|
|
|
@ -5,13 +5,15 @@
|
||||||
Use this section to tell people about which versions of your project are
|
Use this section to tell people about which versions of your project are
|
||||||
currently being supported with security updates.
|
currently being supported with security updates.
|
||||||
|
|
||||||
#### Uptime Kuma Versions:
|
### Uptime Kuma Versions
|
||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 1.7.X | :white_check_mark: |
|
| 1.7.X | :white_check_mark: |
|
||||||
| < 1.7 | ❌ |
|
| < 1.7 | ❌ |
|
||||||
|
|
||||||
#### Upgradable Docker Tags:
|
### Upgradable Docker Tags
|
||||||
|
|
||||||
| Tag | Supported |
|
| Tag | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 1 | :white_check_mark: |
|
| 1 | :white_check_mark: |
|
||||||
|
@ -23,6 +25,7 @@ currently being supported with security updates.
|
||||||
| All other tags | ❌ |
|
| All other tags | ❌ |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
Please report security issues to uptime@kuma.pet.
|
Please report security issues to uptime@kuma.pet.
|
||||||
|
|
||||||
Do not use the issue tracker or discuss it in the public as it will cause more damage.
|
Do not use the issue tracker or discuss it in the public as it will cause more damage.
|
||||||
|
|
|
@ -4,4 +4,8 @@ if (process.env.TEST_FRONTEND) {
|
||||||
config.presets = ["@babel/preset-env"];
|
config.presets = ["@babel/preset-env"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (process.env.TEST_BACKEND) {
|
||||||
|
config.plugins = ["babel-plugin-rewire"];
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = config;
|
module.exports = config;
|
||||||
|
|
5
config/jest-backend.config.js
Normal file
5
config/jest-backend.config.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
"rootDir": "..",
|
||||||
|
"testRegex": "./test/backend.spec.js",
|
||||||
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"rootDir": ".",
|
"rootDir": "..",
|
||||||
"testRegex": "./test/frontend.spec.js",
|
"testRegex": "./test/frontend.spec.js",
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@ module.exports = {
|
||||||
"__DEV__": true
|
"__DEV__": true
|
||||||
},
|
},
|
||||||
"testRegex": "./test/e2e.spec.js",
|
"testRegex": "./test/e2e.spec.js",
|
||||||
"rootDir": ".",
|
"rootDir": "..",
|
||||||
"testTimeout": 30000,
|
"testTimeout": 30000,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import legacy from "@vitejs/plugin-legacy"
|
import legacy from "@vitejs/plugin-legacy";
|
||||||
import vue from "@vitejs/plugin-vue"
|
import vue from "@vitejs/plugin-vue";
|
||||||
import { defineConfig } from "vite"
|
import { defineConfig } from "vite";
|
||||||
|
|
||||||
const postCssScss = require("postcss-scss")
|
const postCssScss = require("postcss-scss");
|
||||||
const postcssRTLCSS = require('postcss-rtlcss');
|
const postcssRTLCSS = require("postcss-rtlcss");
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
@ -20,5 +20,5 @@ export default defineConfig({
|
||||||
"map": false,
|
"map": false,
|
||||||
"plugins": [postcssRTLCSS]
|
"plugins": [postcssRTLCSS]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
});
|
|
@ -47,5 +47,5 @@ RUN chmod +x /app/extra/upload-github-release-asset.sh
|
||||||
|
|
||||||
# Dist only
|
# Dist only
|
||||||
RUN cd /app && tar -zcvf $DIST dist
|
RUN cd /app && tar -zcvf $DIST dist
|
||||||
RUN /app/extra/upload-github-release-asset.sh github_api_token=$GITHUB_TOKEN owner=louislam repo=uptime-kuma tag=$VERSION filename=$DIST
|
RUN /app/extra/upload-github-release-asset.sh github_api_token=$GITHUB_TOKEN owner=louislam repo=uptime-kuma tag=$VERSION filename=/app/$DIST
|
||||||
|
|
17
package-lock.json
generated
17
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "uptime-kuma",
|
"name": "uptime-kuma",
|
||||||
"version": "1.7.3",
|
"version": "1.8.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "uptime-kuma",
|
"name": "uptime-kuma",
|
||||||
"version": "1.7.3",
|
"version": "1.8.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "~1.2.36",
|
"@fortawesome/fontawesome-svg-core": "~1.2.36",
|
||||||
|
@ -64,6 +64,7 @@
|
||||||
"@vitejs/plugin-legacy": "~1.6.1",
|
"@vitejs/plugin-legacy": "~1.6.1",
|
||||||
"@vitejs/plugin-vue": "~1.9.2",
|
"@vitejs/plugin-vue": "~1.9.2",
|
||||||
"@vue/compiler-sfc": "~3.2.19",
|
"@vue/compiler-sfc": "~3.2.19",
|
||||||
|
"babel-plugin-rewire": "^1.2.0",
|
||||||
"core-js": "~3.18.1",
|
"core-js": "~3.18.1",
|
||||||
"cross-env": "~7.0.3",
|
"cross-env": "~7.0.3",
|
||||||
"dns2": "~2.0.1",
|
"dns2": "~2.0.1",
|
||||||
|
@ -3331,6 +3332,12 @@
|
||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/babel-plugin-rewire": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/babel-preset-current-node-syntax": {
|
"node_modules/babel-preset-current-node-syntax": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
|
||||||
|
@ -14722,6 +14729,12 @@
|
||||||
"@babel/helper-define-polyfill-provider": "^0.2.2"
|
"@babel/helper-define-polyfill-provider": "^0.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"babel-plugin-rewire": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"babel-preset-current-node-syntax": {
|
"babel-preset-current-node-syntax": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
|
||||||
|
|
20
package.json
20
package.json
|
@ -15,25 +15,26 @@
|
||||||
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
|
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
|
||||||
"lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore",
|
"lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore",
|
||||||
"lint": "npm run lint:js && npm run lint:style",
|
"lint": "npm run lint:js && npm run lint:style",
|
||||||
"dev": "vite --host",
|
"dev": "vite --host --config ./config/vite.config.js",
|
||||||
"start": "npm run start-server",
|
"start": "npm run start-server",
|
||||||
"start-server": "node server/server.js",
|
"start-server": "node server/server.js",
|
||||||
"start-server-dev": "cross-env NODE_ENV=development node server/server.js",
|
"start-server-dev": "cross-env NODE_ENV=development node server/server.js",
|
||||||
"build": "vite build",
|
"build": "vite build --config ./config/vite.config.js",
|
||||||
"test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --test",
|
"test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --test",
|
||||||
"test-with-build": "npm run build && npm test",
|
"test-with-build": "npm run build && npm test",
|
||||||
"jest": "node test/prepare-jest.js && npm run jest-frontend && jest ",
|
"jest": "node test/prepare-jest.js && npm run jest-frontend && npm run jest-backend && jest --config=./config/jest.config.js",
|
||||||
"jest-frontend": "cross-env TEST_FRONTEND=1 jest --config=./jest-frontend.config.js",
|
"jest-frontend": "cross-env TEST_FRONTEND=1 jest --config=./config/jest-frontend.config.js",
|
||||||
|
"jest-backend": "cross-env TEST_BACKEND=1 jest --config=./config/jest-backend.config.js",
|
||||||
"tsc": "tsc",
|
"tsc": "tsc",
|
||||||
"vite-preview-dist": "vite preview --host",
|
"vite-preview-dist": "vite preview --host --config ./config/vite.config.js",
|
||||||
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
|
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
|
||||||
"build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push",
|
"build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push",
|
||||||
"build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push",
|
"build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push",
|
||||||
"build-docker-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.8.0-alpine --target release . --push",
|
"build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.8.0-alpine --target release . --push",
|
||||||
"build-docker-debian": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.8.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.8.0-debian --target release . --push",
|
"build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.8.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.8.0-debian --target release . --push",
|
||||||
"build-docker-nightly": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
|
"build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
|
||||||
"build-docker-nightly-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push",
|
"build-docker-nightly-alpine": "docker buildx build -f dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push",
|
||||||
"build-docker-nightly-amd64": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
|
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
|
||||||
"upload-artifacts": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
|
"upload-artifacts": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
|
||||||
"setup": "git checkout 1.8.0 && npm ci --production && npm run download-dist",
|
"setup": "git checkout 1.8.0 && npm ci --production && npm run download-dist",
|
||||||
"download-dist": "node extra/download-dist.js",
|
"download-dist": "node extra/download-dist.js",
|
||||||
|
@ -59,6 +60,7 @@
|
||||||
"@popperjs/core": "~2.10.2",
|
"@popperjs/core": "~2.10.2",
|
||||||
"args-parser": "~1.3.0",
|
"args-parser": "~1.3.0",
|
||||||
"axios": "~0.21.4",
|
"axios": "~0.21.4",
|
||||||
|
"babel-plugin-rewire": "~1.2.0",
|
||||||
"bcryptjs": "~2.4.3",
|
"bcryptjs": "~2.4.3",
|
||||||
"bootstrap": "~5.1.1",
|
"bootstrap": "~5.1.1",
|
||||||
"chart.js": "~3.5.1",
|
"chart.js": "~3.5.1",
|
||||||
|
|
|
@ -8,6 +8,7 @@ import fa from "./languages/fa";
|
||||||
import frFR from "./languages/fr-FR";
|
import frFR from "./languages/fr-FR";
|
||||||
import hu from "./languages/hu";
|
import hu from "./languages/hu";
|
||||||
import itIT from "./languages/it-IT";
|
import itIT from "./languages/it-IT";
|
||||||
|
import idID from "./languages/id-ID";
|
||||||
import ja from "./languages/ja";
|
import ja from "./languages/ja";
|
||||||
import koKR from "./languages/ko-KR";
|
import koKR from "./languages/ko-KR";
|
||||||
import nlNL from "./languages/nl-NL";
|
import nlNL from "./languages/nl-NL";
|
||||||
|
@ -36,6 +37,7 @@ const languageList = {
|
||||||
"fr-FR": frFR,
|
"fr-FR": frFR,
|
||||||
"hu": hu,
|
"hu": hu,
|
||||||
"it-IT": itIT,
|
"it-IT": itIT,
|
||||||
|
"id-ID" : idID,
|
||||||
"ja": ja,
|
"ja": ja,
|
||||||
"da-DK": daDK,
|
"da-DK": daDK,
|
||||||
"sr": sr,
|
"sr": sr,
|
||||||
|
|
|
@ -8,7 +8,7 @@ export default {
|
||||||
Theme: "Thema",
|
Theme: "Thema",
|
||||||
General: "Allgemein",
|
General: "Allgemein",
|
||||||
Version: "Version",
|
Version: "Version",
|
||||||
"Check Update On GitHub": "Auf Github nach Updates suchen",
|
"Check Update On GitHub": "Auf GitHub nach Updates suchen",
|
||||||
List: "Liste",
|
List: "Liste",
|
||||||
Add: "Hinzufügen",
|
Add: "Hinzufügen",
|
||||||
"Add New Monitor": "Neuer Monitor",
|
"Add New Monitor": "Neuer Monitor",
|
||||||
|
@ -38,7 +38,7 @@ export default {
|
||||||
checkEverySecond: "Überprüfe alle {0} Sekunden",
|
checkEverySecond: "Überprüfe alle {0} Sekunden",
|
||||||
Response: "Antwortzeit",
|
Response: "Antwortzeit",
|
||||||
Ping: "Ping",
|
Ping: "Ping",
|
||||||
"Monitor Type": "Monitor Typ",
|
"Monitor Type": "Monitor-Typ",
|
||||||
Keyword: "Suchwort",
|
Keyword: "Suchwort",
|
||||||
"Friendly Name": "Anzeigename",
|
"Friendly Name": "Anzeigename",
|
||||||
URL: "URL",
|
URL: "URL",
|
||||||
|
@ -48,11 +48,11 @@ export default {
|
||||||
Retries: "Wiederholungen",
|
Retries: "Wiederholungen",
|
||||||
retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
|
retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.",
|
||||||
Advanced: "Erweitert",
|
Advanced: "Erweitert",
|
||||||
ignoreTLSError: "Ignoriere TLS/SSL Fehler von Webseiten",
|
ignoreTLSError: "Ignoriere TLS-/SSL-Fehler von Webseiten",
|
||||||
"Upside Down Mode": "Invertierter Modus",
|
"Upside Down Mode": "Invertierter Modus",
|
||||||
upsideDownModeDescription: "Im invertierten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
|
upsideDownModeDescription: "Im invertierten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.",
|
||||||
"Max. Redirects": "Max. Weiterleitungen",
|
"Max. Redirects": "Max. Weiterleitungen",
|
||||||
maxRedirectDescription: "Maximale Anzahl von Weiterleitungen denen gefolgt werden soll. Auf 0 setzen um Weiterleitungen zu deaktivieren.",
|
maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.",
|
||||||
"Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
|
"Accepted Status Codes": "Erlaubte HTTP-Statuscodes",
|
||||||
acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gewertet werden sollen.",
|
acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gewertet werden sollen.",
|
||||||
Save: "Speichern",
|
Save: "Speichern",
|
||||||
|
@ -82,7 +82,7 @@ export default {
|
||||||
notificationDescription: "Weise den Monitor(en) eine Benachrichtigung zu, damit diese Funktion greift.",
|
notificationDescription: "Weise den Monitor(en) eine Benachrichtigung zu, damit diese Funktion greift.",
|
||||||
Leave: "Verlassen",
|
Leave: "Verlassen",
|
||||||
"I understand, please disable": "Ich verstehe, bitte deaktivieren",
|
"I understand, please disable": "Ich verstehe, bitte deaktivieren",
|
||||||
Confirm: "Bestätige",
|
Confirm: "Bestätigen",
|
||||||
Yes: "Ja",
|
Yes: "Ja",
|
||||||
No: "Nein",
|
No: "Nein",
|
||||||
Username: "Benutzername",
|
Username: "Benutzername",
|
||||||
|
@ -95,7 +95,7 @@ export default {
|
||||||
Email: "E-Mail",
|
Email: "E-Mail",
|
||||||
Test: "Test",
|
Test: "Test",
|
||||||
"Certificate Info": "Zertifikatsinfo",
|
"Certificate Info": "Zertifikatsinfo",
|
||||||
keywordDescription: "Ein Suchwort in der HTML oder JSON Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.",
|
keywordDescription: "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.",
|
||||||
deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?",
|
deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?",
|
||||||
deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
|
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.",
|
resoverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.",
|
||||||
|
@ -108,13 +108,13 @@ export default {
|
||||||
"Clear Data": "Lösche Daten",
|
"Clear Data": "Lösche Daten",
|
||||||
Events: "Ereignisse",
|
Events: "Ereignisse",
|
||||||
Heartbeats: "Statistiken",
|
Heartbeats: "Statistiken",
|
||||||
confirmClearStatisticsMsg: "Bist du dir wirklich sicher, dass du ALLE Statistiken löschen möchtest?",
|
confirmClearStatisticsMsg: "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?",
|
||||||
"Create your admin account": "Erstelle dein Admin Konto",
|
"Create your admin account": "Erstelle dein Admin-Konto",
|
||||||
"Repeat Password": "Wiederhole das Passwort",
|
"Repeat Password": "Wiederhole das Passwort",
|
||||||
"Resource Record Type": "Resource Record Type",
|
"Resource Record Type": "Resource Record Type",
|
||||||
Export: "Export",
|
Export: "Export",
|
||||||
Import: "Import",
|
Import: "Import",
|
||||||
respTime: "Antw. Zeit (ms)",
|
respTime: "Antw.-Zeit (ms)",
|
||||||
notAvailableShort: "N/A",
|
notAvailableShort: "N/A",
|
||||||
"Default enabled": "Standardmäßig aktiviert",
|
"Default enabled": "Standardmäßig aktiviert",
|
||||||
"Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
|
"Apply on all existing monitors": "Auf alle existierenden Monitore anwenden",
|
||||||
|
@ -125,34 +125,34 @@ export default {
|
||||||
backupDescription2: "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
|
backupDescription2: "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.",
|
||||||
backupDescription3: "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
|
backupDescription3: "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.",
|
||||||
alertNoFile: "Bitte wähle eine Datei zum Importieren aus.",
|
alertNoFile: "Bitte wähle eine Datei zum Importieren aus.",
|
||||||
alertWrongFileType: "Bitte wähle eine JSON Datei aus.",
|
alertWrongFileType: "Bitte wähle eine JSON-Datei aus.",
|
||||||
"Clear all statistics": "Lösche alle Statistiken",
|
"Clear all statistics": "Lösche alle Statistiken",
|
||||||
importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
|
importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.",
|
||||||
"Skip existing": "Vorhandene überspringen",
|
"Skip existing": "Vorhandene überspringen",
|
||||||
Overwrite: "Überschreiben",
|
Overwrite: "Überschreiben",
|
||||||
Options: "Optionen",
|
Options: "Optionen",
|
||||||
confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import Option ausgewählt ist.",
|
confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.",
|
||||||
"Keep both": "Beide behalten",
|
"Keep both": "Beide behalten",
|
||||||
twoFAVerifyLabel: "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert",
|
twoFAVerifyLabel: "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert",
|
||||||
"Verify Token": "Token verifizieren",
|
"Verify Token": "Token verifizieren",
|
||||||
"Setup 2FA": "2FA einrichten",
|
"Setup 2FA": "2FA einrichten",
|
||||||
"Enable 2FA": "2FA aktivieren",
|
"Enable 2FA": "2FA aktivieren",
|
||||||
"Disable 2FA": "2FA deaktivieren",
|
"Disable 2FA": "2FA deaktivieren",
|
||||||
"2FA Settings": "2FA Einstellungen",
|
"2FA Settings": "2FA-Einstellungen",
|
||||||
confirmEnableTwoFAMsg: "Bist du sicher, dass du 2FA aktivieren möchtest?",
|
confirmEnableTwoFAMsg: "Bist du sicher, dass du 2FA aktivieren möchtest?",
|
||||||
confirmDisableTwoFAMsg: "Bist du sicher, dass du 2FA deaktivieren möchtest?",
|
confirmDisableTwoFAMsg: "Bist du sicher, dass du 2FA deaktivieren möchtest?",
|
||||||
tokenValidSettingsMsg: "Token gültig! Du kannst jetzt die 2FA Einstellungen speichern.",
|
tokenValidSettingsMsg: "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.",
|
||||||
"Two Factor Authentication": "Zwei Faktor Authentifizierung",
|
"Two Factor Authentication": "Zwei-Faktor-Authentifizierung",
|
||||||
Active: "Aktiv",
|
Active: "Aktiv",
|
||||||
Inactive: "Inaktiv",
|
Inactive: "Inaktiv",
|
||||||
Token: "Token",
|
Token: "Token",
|
||||||
"Show URI": "URI Anzeigen",
|
"Show URI": "URI anzeigen",
|
||||||
Tags: "Tags",
|
Tags: "Tags",
|
||||||
"Add New below or Select...": "Bestehenden Tag auswählen oder neuen hinzufügen...",
|
"Add New below or Select...": "Bestehenden Tag auswählen oder neuen hinzufügen...",
|
||||||
"Tag with this name already exist.": "Ein Tag mit dem Namen existiert bereits.",
|
"Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.",
|
||||||
"Tag with this value already exist.": "Ein Tag mit dem Wert existiert bereits.",
|
"Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.",
|
||||||
color: "Farbe",
|
color: "Farbe",
|
||||||
"value (optional)": "Wert (Optional)",
|
"value (optional)": "Wert (optional)",
|
||||||
Gray: "Grau",
|
Gray: "Grau",
|
||||||
Red: "Rot",
|
Red: "Rot",
|
||||||
Orange: "Orange",
|
Orange: "Orange",
|
||||||
|
@ -176,9 +176,9 @@ export default {
|
||||||
"Degraded Service": "Eingeschränkter Dienst",
|
"Degraded Service": "Eingeschränkter Dienst",
|
||||||
"Add Group": "Gruppe hinzufügen",
|
"Add Group": "Gruppe hinzufügen",
|
||||||
"Add a monitor": "Monitor hinzufügen",
|
"Add a monitor": "Monitor hinzufügen",
|
||||||
"Edit Status Page": "Bearbeite Status Seite",
|
"Edit Status Page": "Bearbeite Status-Seite",
|
||||||
"Go to Dashboard": "Gehe zum Dashboard",
|
"Go to Dashboard": "Gehe zum Dashboard",
|
||||||
"Status Page": "Status Seite",
|
"Status Page": "Status-Seite",
|
||||||
telegram: "Telegram",
|
telegram: "Telegram",
|
||||||
webhook: "Webhook",
|
webhook: "Webhook",
|
||||||
smtp: "E-Mail (SMTP)",
|
smtp: "E-Mail (SMTP)",
|
||||||
|
|
|
@ -19,7 +19,7 @@ export default {
|
||||||
enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.",
|
enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.",
|
||||||
clearEventsMsg: "Are you sure want to delete all events for this monitor?",
|
clearEventsMsg: "Are you sure want to delete all events for this monitor?",
|
||||||
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?",
|
clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?",
|
||||||
confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?",
|
confirmClearStatisticsMsg: "Are you sure you want to delete ALL statistics?",
|
||||||
importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
|
importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
|
||||||
confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
|
confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
|
||||||
twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
|
twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
|
||||||
|
|
285
src/languages/id-ID.js
Normal file
285
src/languages/id-ID.js
Normal file
|
@ -0,0 +1,285 @@
|
||||||
|
export default {
|
||||||
|
languageName: "Indonesia",
|
||||||
|
checkEverySecond: "Cek Setiap {0} detik.",
|
||||||
|
retryCheckEverySecond: "Coba lagi setiap {0} detik.",
|
||||||
|
retriesDescription: "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim",
|
||||||
|
ignoreTLSError: "Abaikan kesalahan TLS/SSL untuk situs web HTTPS",
|
||||||
|
upsideDownModeDescription: "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.",
|
||||||
|
maxRedirectDescription: "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.",
|
||||||
|
acceptedStatusCodesDescription: "Pilih kode status yang dianggap sebagai respons yang berhasil.",
|
||||||
|
passwordNotMatchMsg: "Sandi kedua tidak cocok.",
|
||||||
|
notificationDescription: "Harap atur notifikasi ke monitor agar berfungsi.",
|
||||||
|
keywordDescription: "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh",
|
||||||
|
pauseDashboardHome: "Jeda",
|
||||||
|
deleteMonitorMsg: "Apakah anda mau menghapus monitor ini?",
|
||||||
|
deleteNotificationMsg: "Apakah anda mau menghapus notifikasi ini untuk semua monitor?",
|
||||||
|
resoverserverDescription: "Cloudflare adalah server default, Anda dapat mengubah server resolver kapan saja.",
|
||||||
|
rrtypeDescription: "Pilih RR-Type yang mau anda monitor",
|
||||||
|
pauseMonitorMsg: "Apakah anda yakin mau menjeda?",
|
||||||
|
enableDefaultNotificationDescription: "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara default. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.",
|
||||||
|
clearEventsMsg: "Apakah anda yakin mau menghapus semua event di monitor ini?",
|
||||||
|
clearHeartbeatsMsg: "Apakah anda yakin mau menghapus semua heartbeats di monitor ini?",
|
||||||
|
confirmClearStatisticsMsg: "Apakah anda yakin mau menghapus semua statistik?",
|
||||||
|
importHandleDescription: "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.",
|
||||||
|
confirmImportMsg: "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.",
|
||||||
|
twoFAVerifyLabel: "Silakan ketik token Anda untuk memverifikasi bahwa 2FA berfungsi",
|
||||||
|
tokenValidSettingsMsg: "Tokennya valid! Anda sekarang dapat menyimpan pengaturan 2FA.",
|
||||||
|
confirmEnableTwoFAMsg: "Apakah Anda yakin ingin mengaktifkan 2FA?",
|
||||||
|
confirmDisableTwoFAMsg: "Apakah Anda yakin ingin menonaktifkan 2FA?",
|
||||||
|
Settings: "Pengaturan",
|
||||||
|
Dashboard: "Dashboard",
|
||||||
|
"New Update": "Update Baru",
|
||||||
|
Language: "Bahasa",
|
||||||
|
Appearance: "Tampilan",
|
||||||
|
Theme: "Tema",
|
||||||
|
General: "General",
|
||||||
|
Version: "Versi",
|
||||||
|
"Check Update On GitHub": "Cek Update di GitHub",
|
||||||
|
List: "List",
|
||||||
|
Add: "Tambah",
|
||||||
|
"Add New Monitor": "Tambah Monitor Baru",
|
||||||
|
"Quick Stats": "Statistik Cepat",
|
||||||
|
Up: "Aktif",
|
||||||
|
Down: "Tidak Aktif",
|
||||||
|
Pending: "Tertunda",
|
||||||
|
Unknown: "Tidak diketahui",
|
||||||
|
Pause: "Jeda",
|
||||||
|
Name: "Nama",
|
||||||
|
Status: "Status",
|
||||||
|
DateTime: "Tanggal Waktu",
|
||||||
|
Message: "Pesan",
|
||||||
|
"No important events": "Tidak ada Event penting",
|
||||||
|
Resume: "Melanjutkan",
|
||||||
|
Edit: "Rubah",
|
||||||
|
Delete: "Hapus",
|
||||||
|
Current: "Saat ini",
|
||||||
|
Uptime: "Waktu aktif",
|
||||||
|
"Cert Exp.": "Cert Exp.",
|
||||||
|
days: "hari-hari",
|
||||||
|
day: "hari",
|
||||||
|
"-day": "-hari",
|
||||||
|
hour: "Jam",
|
||||||
|
"-hour": "-Jam",
|
||||||
|
Response: "Respon",
|
||||||
|
Ping: "Ping",
|
||||||
|
"Monitor Type": "Tipe Monitor",
|
||||||
|
Keyword: "Keyword",
|
||||||
|
"Friendly Name": "Friendly Name",
|
||||||
|
URL: "URL",
|
||||||
|
Hostname: "Hostname",
|
||||||
|
Port: "Port",
|
||||||
|
"Heartbeat Interval": "Interval Heartbeat ",
|
||||||
|
Retries: "Retries",
|
||||||
|
"Heartbeat Retry Interval": "Interval Heartbeat Mencoba kembali ",
|
||||||
|
Advanced: "Advanced",
|
||||||
|
"Upside Down Mode": "Mode Terbalik",
|
||||||
|
"Max. Redirects": "Maksimal Redirect/Pengalihan",
|
||||||
|
"Accepted Status Codes": "Kode Status yang Diterima",
|
||||||
|
Save: "Simpan",
|
||||||
|
Notifications: "Notifikasi",
|
||||||
|
"Not available, please setup.": "Tidak tersedia, silakan atur.",
|
||||||
|
"Setup Notification": "Setel Notifikasi",
|
||||||
|
Light: "Terang",
|
||||||
|
Dark: "Gelap",
|
||||||
|
Auto: "Automatis",
|
||||||
|
"Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
|
||||||
|
Normal: "Normal",
|
||||||
|
Bottom: "Bawah",
|
||||||
|
None: "Tidak ada",
|
||||||
|
Timezone: "Zona Waktu",
|
||||||
|
"Search Engine Visibility": "Visibilitas Mesin Pencari",
|
||||||
|
"Allow indexing": "Mengizinkan untuk diindex",
|
||||||
|
"Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex site",
|
||||||
|
"Change Password": "Ganti Sandi",
|
||||||
|
"Current Password": "Sandi Lama",
|
||||||
|
"New Password": "Sandi Baru",
|
||||||
|
"Repeat New Password": "Ulangi Sandi Baru",
|
||||||
|
"Update Password": "Perbarui Kata Sandi",
|
||||||
|
"Disable Auth": "Nonaktifkan auth",
|
||||||
|
"Enable Auth": "Aktifkan Auth",
|
||||||
|
Logout: "Keluar",
|
||||||
|
Leave: "Pergi",
|
||||||
|
"I understand, please disable": "Saya mengerti, silahkan dinonaktifkan",
|
||||||
|
Confirm: "Konfirmasi",
|
||||||
|
Yes: "Ya",
|
||||||
|
No: "Tidak",
|
||||||
|
Username: "Nama Pengguna",
|
||||||
|
Password: "Sandi",
|
||||||
|
"Remember me": "Ingat saya",
|
||||||
|
Login: "Masuk",
|
||||||
|
"No Monitors, please": "Tidak ada monitor, silahkan",
|
||||||
|
"add one": "tambah baru",
|
||||||
|
"Notification Type": "Tipe Notifikasi",
|
||||||
|
Email: "Email",
|
||||||
|
Test: "Test",
|
||||||
|
"Certificate Info": "Info Sertifikasi ",
|
||||||
|
"Resolver Server": "Resolver Server",
|
||||||
|
"Resource Record Type": "Resource Record Type",
|
||||||
|
"Last Result": "Hasil Terakhir",
|
||||||
|
"Create your admin account": "Buat admin akun anda",
|
||||||
|
"Repeat Password": "Ulangi Sandi",
|
||||||
|
"Import Backup": "Impor Backup",
|
||||||
|
"Export Backup": "Expor Backup",
|
||||||
|
Export: "Expor",
|
||||||
|
Import: "Impor",
|
||||||
|
respTime: "Tanggapan. Waktu (milidetik)",
|
||||||
|
notAvailableShort: "N/A",
|
||||||
|
"Default enabled": "Default diaktifkan",
|
||||||
|
"Apply on all existing monitors": "Terapkan pada semua monitor yang ada",
|
||||||
|
Create: "Buat",
|
||||||
|
"Clear Data": "Bersihkan Data",
|
||||||
|
Events: "Event",
|
||||||
|
Heartbeats: "Heartbeats",
|
||||||
|
"Auto Get": "Auto Get",
|
||||||
|
backupDescription: "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam file JSON.",
|
||||||
|
backupDescription2: "Catatan: Data sejarah dan event tidak disertakan.",
|
||||||
|
backupDescription3: "Data sensitif seperti notifikasi token disertakan dalam file ekspor, harap simpan dengan hati-hati.",
|
||||||
|
alertNoFile: "Silakan pilih file untuk diimpor.",
|
||||||
|
alertWrongFileType: "Silakan pilih file JSON .",
|
||||||
|
"Clear all statistics": "Hapus semua statistik",
|
||||||
|
"Skip existing": "Lewati yang ada",
|
||||||
|
Overwrite: "Timpa",
|
||||||
|
Options: "Opsi",
|
||||||
|
"Keep both": "Simpan keduanya",
|
||||||
|
"Verify Token": "Verifikasi Token",
|
||||||
|
"Setup 2FA": "Pengaturan 2FA",
|
||||||
|
"Enable 2FA": "Aktifkan 2FA",
|
||||||
|
"Disable 2FA": "Nonaktifkan 2FA",
|
||||||
|
"2FA Settings": "Settings 2FA",
|
||||||
|
"Two Factor Authentication": "Otentikasi Dua Faktor",
|
||||||
|
Active: "Aktif",
|
||||||
|
Inactive: "Tidak Aktif",
|
||||||
|
Token: "Token",
|
||||||
|
"Show URI": "Lihat URI",
|
||||||
|
Tags: "Tag",
|
||||||
|
"Add New below or Select...": "Tambahkan Baru di bawah atau Pilih...",
|
||||||
|
"Tag with this name already exist.": "Tag dengan nama ini sudah ada.",
|
||||||
|
"Tag with this value already exist.": "Tag dengan nilai ini sudah ada.",
|
||||||
|
color: "warna",
|
||||||
|
"value (optional)": "nilai (harus diisi)",
|
||||||
|
Gray: "Abu Abu",
|
||||||
|
Red: "Merah",
|
||||||
|
Orange: "Oranye",
|
||||||
|
Green: "Hijau",
|
||||||
|
Blue: "Biru",
|
||||||
|
Indigo: "Indigo",
|
||||||
|
Purple: "Ungu",
|
||||||
|
Pink: "Merah Muda",
|
||||||
|
"Search...": "Cari...",
|
||||||
|
"Avg. Ping": "Rata-rata. Ping",
|
||||||
|
"Avg. Response": "Rata-rata. Respon",
|
||||||
|
"Entry Page": "Halaman Masuk",
|
||||||
|
statusPageNothing: "Tidak ada di sini, silakan tambahkan grup atau monitor.",
|
||||||
|
"No Services": "Tidak ada Layanan",
|
||||||
|
"All Systems Operational": "Semua Sistem Berfungsi",
|
||||||
|
"Partially Degraded Service": "Layanan Terdegradasi Sebagian",
|
||||||
|
"Degraded Service": "Layanan Terdegradasi",
|
||||||
|
"Add Group": "Tambah Grup",
|
||||||
|
"Add a monitor": "Tambah monitor",
|
||||||
|
"Edit Status Page": "Edit Halaman Status",
|
||||||
|
"Go to Dashboard": "Lihat Dashboard",
|
||||||
|
"Status Page": "Halaman Status",
|
||||||
|
// Start notification form
|
||||||
|
defaultNotificationName: "{notification} saya Peringatan ({number})",
|
||||||
|
here: "di sini",
|
||||||
|
"Required": "Dibutuhkan",
|
||||||
|
"telegram": "Telegram",
|
||||||
|
"Bot Token": "Bot Token",
|
||||||
|
"You can get a token from": "Anda bisa mendapatkan token dari",
|
||||||
|
"Chat ID": "Chat ID",
|
||||||
|
supportTelegramChatID: "Mendukung Obrolan Langsung / Grup / Channel Chat ID",
|
||||||
|
wayToGetTelegramChatID: "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:",
|
||||||
|
"YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI",
|
||||||
|
chatIDNotFound: "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu",
|
||||||
|
"webhook": "Webhook",
|
||||||
|
"Post URL": "Post URL",
|
||||||
|
"Content Type": "Tipe konten",
|
||||||
|
webhookJsonDesc: "{0} bagus untuk server http modern seperti express.js",
|
||||||
|
webhookFormDataDesc: "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}",
|
||||||
|
"smtp": "Email (SMTP)",
|
||||||
|
secureOptionNone: "None / STARTTLS (25, 587)",
|
||||||
|
secureOptionTLS: "TLS (465)",
|
||||||
|
"Ignore TLS Error": "Ignore TLS Error",
|
||||||
|
"From Email": "From Email",
|
||||||
|
"To Email": "To Email",
|
||||||
|
smtpCC: "CC",
|
||||||
|
smtpBCC: "BCC",
|
||||||
|
"discord": "Discord",
|
||||||
|
"Discord Webhook URL": "Discord Webhook URL",
|
||||||
|
wayToGetDiscordURL: "Anda bisa mendapatkan ini dengan pergi ke Server Settings -> Integrations -> Create Webhook",
|
||||||
|
"Bot Display Name": "Nama Bot",
|
||||||
|
"Prefix Custom Message": "Prefix Pesan",
|
||||||
|
"Hello @everyone is...": "Hallo {'@'}everyone is...",
|
||||||
|
"teams": "Microsoft Teams",
|
||||||
|
"Webhook URL": "Webhook URL",
|
||||||
|
wayToGetTeamsURL: "Anda dapat mempelajari cara membuat url webhook {0}.",
|
||||||
|
"signal": "Sinyal",
|
||||||
|
"Number": "Nomer",
|
||||||
|
"Recipients": "Penerima",
|
||||||
|
needSignalAPI: "Anda harus memiliki klien sinyal dengan REST API.",
|
||||||
|
wayToCheckSignalURL: "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:",
|
||||||
|
signalImportant: "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!",
|
||||||
|
"gotify": "Gotify",
|
||||||
|
"Application Token": "Token Aplikasi",
|
||||||
|
"Server URL": "Server URL",
|
||||||
|
"Priority": "Prioritas",
|
||||||
|
"slack": "Slack",
|
||||||
|
"Icon Emoji": "Icon Emoji",
|
||||||
|
"Channel Name": "Nama Channel",
|
||||||
|
"Uptime Kuma URL": "Uptime Kuma URL",
|
||||||
|
aboutWebhooks: "Info lain tentang webhook: {0}",
|
||||||
|
aboutChannelName: "Masukan nama channel di {0} Kolom Nama Channel jika Anda ingin melewati channel webhook. Contoh: #other-channel",
|
||||||
|
aboutKumaURL: "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi default ke halaman Project Github.",
|
||||||
|
emojiCheatSheet: "Emoji cheat sheet: {0}",
|
||||||
|
"rocket.chat": "Rocket.chat",
|
||||||
|
pushover: "Pushover",
|
||||||
|
pushy: "Pushy",
|
||||||
|
octopush: "Octopush",
|
||||||
|
promosms: "PromoSMS",
|
||||||
|
lunasea: "LunaSea",
|
||||||
|
apprise: "Apprise (Mendukung 50+ layanan notifikasi)",
|
||||||
|
pushbullet: "Pushbullet",
|
||||||
|
line: "Line Messenger",
|
||||||
|
mattermost: "Mattermost",
|
||||||
|
"User Key": "Kunci pengguna",
|
||||||
|
"Device": "Perangkat",
|
||||||
|
"Message Title": "Judul Pesan",
|
||||||
|
"Notification Sound": "Suara Nofifikasi",
|
||||||
|
"More info on:": "Info lebih lanjut tentang: {0}",
|
||||||
|
pushoverDesc1: "Prioritas darurat (2) memiliki batas waktu default 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.",
|
||||||
|
pushoverDesc2: "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.",
|
||||||
|
"SMS Type": "Tipe SMS",
|
||||||
|
octopushTypePremium: "Premium (Cepat - direkomendasikan untuk mengingatkan)",
|
||||||
|
octopushTypeLowCost: "Low Cost (Lambat, terkadang diblokir oleh operator)",
|
||||||
|
"Check octopush prices": "Cek harga octopush {0}.",
|
||||||
|
octopushPhoneNumber: "Nomer Telpon/HP (format internasional, contoh : +33612345678) ",
|
||||||
|
octopushSMSSender: "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)",
|
||||||
|
"LunaSea Device ID": "LunaSea Device ID",
|
||||||
|
"Apprise URL": "Apprise URL",
|
||||||
|
"Example:": "Contoh: {0}",
|
||||||
|
"Read more:": "Baca lebih lajut: {0}",
|
||||||
|
"Status:": "Status: {0}",
|
||||||
|
"Read more": "Baca lebih lajut",
|
||||||
|
appriseInstalled: "Apprise diinstall.",
|
||||||
|
appriseNotInstalled: "Apprise tidak diinstall. {0}",
|
||||||
|
"Access Token": "Access Token",
|
||||||
|
"Channel access token": "Channel access token",
|
||||||
|
"Line Developers Console": "Line Developers Console",
|
||||||
|
lineDevConsoleTo: "Line Developers Console - {0}",
|
||||||
|
"Basic Settings": "Pengaturan dasar",
|
||||||
|
"User ID": "User ID",
|
||||||
|
"Messaging API": "Messaging API",
|
||||||
|
wayToGetLineChannelToken: "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.",
|
||||||
|
"Icon URL": "Icon URL",
|
||||||
|
aboutIconURL: "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil default. Tidak akan digunakan jika Ikon Emoji diset.",
|
||||||
|
aboutMattermostChannelName: "Anda dapat mengganti channel default tujuan posting webhook dengan memasukkan nama channel ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel",
|
||||||
|
"matrix": "Matrix",
|
||||||
|
promosmsTypeEco: "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.",
|
||||||
|
promosmsTypeFlash: "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.",
|
||||||
|
promosmsTypeFull: "SMS FULL - SMS tingkat premium, Anda dapat menggunakan Nama Pengirim Anda (Anda harus mendaftarkan nama terlebih dahulu). Dapat diandalkan untuk peringatan.",
|
||||||
|
promosmsTypeSpeed: "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).",
|
||||||
|
promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)",
|
||||||
|
promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu default: InfoSMS, Info SMS, MaxSMS, INFO, SMS",
|
||||||
|
"Feishu WebHookUrl": "Feishu WebHookUrl",
|
||||||
|
// End notification form
|
||||||
|
};
|
|
@ -4,8 +4,8 @@ export default {
|
||||||
retryCheckEverySecond: "{0}초마다 다시 확인해요.",
|
retryCheckEverySecond: "{0}초마다 다시 확인해요.",
|
||||||
retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수",
|
retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수",
|
||||||
ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 에러 무시하기",
|
ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 에러 무시하기",
|
||||||
upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거에요.",
|
upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거예요.",
|
||||||
maxRedirectDescription: "최대 리다이렉트 횟수에요. 0을 입력하면 리다이렉트를 꺼요.",
|
maxRedirectDescription: "최대 리다이렉트 횟수예요. 0을 입력하면 리다이렉트를 꺼요.",
|
||||||
acceptedStatusCodesDescription: "응답 성공으로 간주할 상태 코드를 정해요.",
|
acceptedStatusCodesDescription: "응답 성공으로 간주할 상태 코드를 정해요.",
|
||||||
passwordNotMatchMsg: "비밀번호 재입력이 일치하지 않아요.",
|
passwordNotMatchMsg: "비밀번호 재입력이 일치하지 않아요.",
|
||||||
notificationDescription: "모니터링에 알림을 설정할 수 있어요.",
|
notificationDescription: "모니터링에 알림을 설정할 수 있어요.",
|
||||||
|
@ -13,9 +13,9 @@ export default {
|
||||||
pauseDashboardHome: "일시 정지",
|
pauseDashboardHome: "일시 정지",
|
||||||
deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?",
|
deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?",
|
||||||
deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?",
|
deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?",
|
||||||
resoverserverDescription: "Cloudflare가 기본 서버에요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.",
|
resoverserverDescription: "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.",
|
||||||
rrtypeDescription: "모니터링할 RR-Type을 선택해요.",
|
rrtypeDescription: "모니터링할 RR-Type을 선택해요.",
|
||||||
pauseMonitorMsg: "정말 이 모니터링을 일시 정지 할까요?",
|
pauseMonitorMsg: "정말 이 모니터링을 일시 정지할까요?",
|
||||||
enableDefaultNotificationDescription: "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.",
|
enableDefaultNotificationDescription: "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.",
|
||||||
clearEventsMsg: "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?",
|
clearEventsMsg: "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?",
|
||||||
clearHeartbeatsMsg: "정말 이 모니터링에 대한 모든 하트비트를 삭제할까요?",
|
clearHeartbeatsMsg: "정말 이 모니터링에 대한 모든 하트비트를 삭제할까요?",
|
||||||
|
@ -24,8 +24,8 @@ export default {
|
||||||
confirmImportMsg: "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.",
|
confirmImportMsg: "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.",
|
||||||
twoFAVerifyLabel: "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요.",
|
twoFAVerifyLabel: "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요.",
|
||||||
tokenValidSettingsMsg: "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.",
|
tokenValidSettingsMsg: "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.",
|
||||||
confirmEnableTwoFAMsg: "정말 2단계 인증을 활성화 할까요?",
|
confirmEnableTwoFAMsg: "정말 2단계 인증을 활성화할까요?",
|
||||||
confirmDisableTwoFAMsg: "정말 2단계 인증을 비활성화 할까요?",
|
confirmDisableTwoFAMsg: "정말 2단계 인증을 비활성화할까요?",
|
||||||
Settings: "설정",
|
Settings: "설정",
|
||||||
Dashboard: "대시보드",
|
Dashboard: "대시보드",
|
||||||
"New Update": "새로운 업데이트",
|
"New Update": "새로운 업데이트",
|
||||||
|
@ -77,7 +77,7 @@ export default {
|
||||||
"Accepted Status Codes": "응답 성공 상태 코드",
|
"Accepted Status Codes": "응답 성공 상태 코드",
|
||||||
Save: "저장",
|
Save: "저장",
|
||||||
Notifications: "알림",
|
Notifications: "알림",
|
||||||
"Not available, please setup.": "존재하지 않아요, 새로운거 하나 만드는건 어때요?",
|
"Not available, please setup.": "존재하지 않아요, 새로운 거 하나 만드는 건 어때요?",
|
||||||
"Setup Notification": "알림 설정",
|
"Setup Notification": "알림 설정",
|
||||||
Light: "라이트",
|
Light: "라이트",
|
||||||
Dark: "다크",
|
Dark: "다크",
|
||||||
|
@ -158,10 +158,10 @@ export default {
|
||||||
color: "색상",
|
color: "색상",
|
||||||
"value (optional)": "값 (선택)",
|
"value (optional)": "값 (선택)",
|
||||||
Gray: "회색",
|
Gray: "회색",
|
||||||
Red: "빨강색",
|
Red: "빨간색",
|
||||||
Orange: "주황색",
|
Orange: "주황색",
|
||||||
Green: "초록색",
|
Green: "초록색",
|
||||||
Blue: "파랑색",
|
Blue: "파란색",
|
||||||
Indigo: "남색",
|
Indigo: "남색",
|
||||||
Purple: "보라색",
|
Purple: "보라색",
|
||||||
Pink: "핑크색",
|
Pink: "핑크색",
|
||||||
|
@ -175,9 +175,9 @@ export default {
|
||||||
"Partially Degraded Service": "일부 시스템 비정상",
|
"Partially Degraded Service": "일부 시스템 비정상",
|
||||||
"Degraded Service": "모든 시스템 비정상",
|
"Degraded Service": "모든 시스템 비정상",
|
||||||
"Add Group": "그룹 추가",
|
"Add Group": "그룹 추가",
|
||||||
"Add a monitor": "모니터링 추가r",
|
"Add a monitor": "모니터링 추가",
|
||||||
"Edit Status Page": "상태 페이지 수정",
|
"Edit Status Page": "상태 페이지 수정",
|
||||||
"Go to Dashboard": "대쉬보드로 가기",
|
"Go to Dashboard": "대시보드로 가기",
|
||||||
"Status Page": "상태 페이지",
|
"Status Page": "상태 페이지",
|
||||||
defaultNotificationName: "내 {notification} 알림 ({number})",
|
defaultNotificationName: "내 {notification} 알림 ({number})",
|
||||||
here: "여기",
|
here: "여기",
|
||||||
|
@ -194,7 +194,7 @@ export default {
|
||||||
"Post URL": "Post URL",
|
"Post URL": "Post URL",
|
||||||
"Content Type": "Content Type",
|
"Content Type": "Content Type",
|
||||||
webhookJsonDesc: "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.",
|
webhookJsonDesc: "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.",
|
||||||
webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.",
|
webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 돼요.",
|
||||||
smtp: "Email (SMTP)",
|
smtp: "Email (SMTP)",
|
||||||
secureOptionNone: "없음 / STARTTLS (25, 587)",
|
secureOptionNone: "없음 / STARTTLS (25, 587)",
|
||||||
secureOptionTLS: "TLS (465)",
|
secureOptionTLS: "TLS (465)",
|
||||||
|
@ -245,11 +245,11 @@ export default {
|
||||||
"Message Title": "메시지 제목",
|
"Message Title": "메시지 제목",
|
||||||
"Notification Sound": "알림음",
|
"Notification Sound": "알림음",
|
||||||
"More info on:": "자세한 정보: {0}",
|
"More info on:": "자세한 정보: {0}",
|
||||||
pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.",
|
pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료돼요.",
|
||||||
pushoverDesc2: "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.",
|
pushoverDesc2: "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.",
|
||||||
"SMS Type": "SMS 종류",
|
"SMS Type": "SMS 종류",
|
||||||
octopushTypePremium: "프리미엄 (빠름) - 알림 기능에 적합해요)",
|
octopushTypePremium: "프리미엄 (빠름) - 알림 기능에 적합해요)",
|
||||||
octopushTypeLowCost: "저렴한 요금 (느림, 가끔 차단될 수 있어요)",
|
octopushTypeLowCost: "저렴한 요금 (느림) - 가끔 차단될 수 있어요)",
|
||||||
"Check octopush prices": "{0}에서 Octopush 가격을 확인할 수 있어요.",
|
"Check octopush prices": "{0}에서 Octopush 가격을 확인할 수 있어요.",
|
||||||
octopushPhoneNumber: "휴대전화 번호 (intl format, eg : +33612345678) ",
|
octopushPhoneNumber: "휴대전화 번호 (intl format, eg : +33612345678) ",
|
||||||
octopushSMSSender: "보내는 사람 이름 : 3-11개의 영숫자 및 여백공간 (a-z, A-Z, 0-9)",
|
octopushSMSSender: "보내는 사람 이름 : 3-11개의 영숫자 및 여백공간 (a-z, A-Z, 0-9)",
|
||||||
|
@ -259,24 +259,24 @@ export default {
|
||||||
"Read more:": "더 보기: {0}",
|
"Read more:": "더 보기: {0}",
|
||||||
"Status:": "상태: {0}",
|
"Status:": "상태: {0}",
|
||||||
"Read more": "더 보기",
|
"Read more": "더 보기",
|
||||||
appriseInstalled: "Apprise가 설치되어있어요..",
|
appriseInstalled: "Apprise가 설치되어있어요.",
|
||||||
appriseNotInstalled: "Apprise 가 설치되어있지 않아요. {0}",
|
appriseNotInstalled: "Apprise가 설치되어있지 않아요. {0}",
|
||||||
"Access Token": "액세스 토큰",
|
"Access Token": "액세스 토큰",
|
||||||
"Channel access token": "채널 엑세스 토큰",
|
"Channel access token": "채널 액세스 토큰",
|
||||||
"Line Developers Console": "Line 개발자 콘솔",
|
"Line Developers Console": "Line 개발자 콘솔",
|
||||||
lineDevConsoleTo: "Line 개발자 콘솔 - {0}",
|
lineDevConsoleTo: "Line 개발자 콘솔 - {0}",
|
||||||
"Basic Settings": "기본 설정 메뉴",
|
"Basic Settings": "기본 설정 메뉴",
|
||||||
"User ID": "사용자 ID",
|
"User ID": "사용자 ID",
|
||||||
"Messaging API": "Messaging API 메뉴",
|
"Messaging API": "Messaging API 메뉴",
|
||||||
wayToGetLineChannelToken: "먼저 {0}에 엑세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.",
|
wayToGetLineChannelToken: "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.",
|
||||||
"Icon URL": "아이콘 URL",
|
"Icon URL": "아이콘 URL",
|
||||||
aboutIconURL: "\"Icon URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을거에요.",
|
aboutIconURL: "\"Icon URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.",
|
||||||
aboutMattermostChannelName: "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널",
|
aboutMattermostChannelName: "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널",
|
||||||
matrix: "매트릭스",
|
matrix: "매트릭스",
|
||||||
promosmsTypeEco: "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ",
|
promosmsTypeEco: "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ",
|
||||||
promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.",
|
promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시돼요. 폴란드 수신자만 사용할 수 있어요.",
|
||||||
promosmsTypeFull: "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.",
|
promosmsTypeFull: "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.",
|
||||||
promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위에요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).",
|
promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).",
|
||||||
promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)",
|
promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)",
|
||||||
promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나에요: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
||||||
};
|
};
|
||||||
|
|
|
@ -333,6 +333,12 @@
|
||||||
<p>Utilizzare con attenzione.</p>
|
<p>Utilizzare con attenzione.</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template v-else-if="$i18n.locale === 'id-ID' ">
|
||||||
|
<p> Apakah Anda yakin ingin <strong>menonaktifkan autentikasi</strong>? </p>
|
||||||
|
<p> Ini untuk <strong>mereka yang memiliki otentikasi pihak ketiga</strong> diletakkan di depan Uptime Kuma, misalnya akses Cloudflare. </p>
|
||||||
|
<p> Gunakan dengan hati-hati. </p>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template v-else-if="$i18n.locale === 'ru-RU' ">
|
<template v-else-if="$i18n.locale === 'ru-RU' ">
|
||||||
<p>Вы уверены, что хотите <strong>отключить авторизацию</strong>?</p>
|
<p>Вы уверены, что хотите <strong>отключить авторизацию</strong>?</p>
|
||||||
<p>Это подходит для <strong>тех, у кого стоит другая авторизация</strong> перед открытием Uptime Kuma, например Cloudflare Access.</p>
|
<p>Это подходит для <strong>тех, у кого стоит другая авторизация</strong> перед открытием Uptime Kuma, например Cloudflare Access.</p>
|
||||||
|
|
10
test/backend.spec.js
Normal file
10
test/backend.spec.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
beforeAll(() => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("", () => {
|
||||||
|
|
||||||
|
it("should ", () => {
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Reference in a new issue