mirror of
https://github.com/gethomepage/homepage.git
synced 2026-04-03 08:41:21 -07:00
Compare commits
286 Commits
v1.4.3
...
feature/au
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82d1d31bab | ||
|
|
250c1a3bf0 | ||
|
|
1c9d7aa8c8 | ||
|
|
814d7b229b | ||
|
|
b908707e11 | ||
|
|
217fa73ef9 | ||
|
|
996778e164 | ||
|
|
36d799dec3 | ||
|
|
0b0d5d8428 | ||
|
|
f8f6f64b5a | ||
|
|
5e16e11419 | ||
|
|
caca855d4d | ||
|
|
fa119e65c4 | ||
|
|
769b980003 | ||
|
|
e44715ebb6 | ||
|
|
11a1f094fd | ||
|
|
d6e7e7e790 | ||
|
|
24cb274e03 | ||
|
|
af852e748a | ||
|
|
0ea5c3fb68 | ||
|
|
5ede96d6ce | ||
|
|
c50bc8601d | ||
|
|
463bb4e306 | ||
|
|
4c3c4805c8 | ||
|
|
a81ac47be9 | ||
|
|
36b909d4a4 | ||
|
|
a7fe80a399 | ||
|
|
0b61b6c1b8 | ||
|
|
02989a4366 | ||
|
|
bc6acf7fd1 | ||
|
|
7b552f5080 | ||
|
|
0f767d14bb | ||
|
|
ff4eaa2cd9 | ||
|
|
b37645b8d0 | ||
|
|
45af25d6ce | ||
|
|
ea9fca02d3 | ||
|
|
3fb2dcbc47 | ||
|
|
96e3c7ac45 | ||
|
|
f261879fcb | ||
|
|
495065a6fa | ||
|
|
d18bdb011a | ||
|
|
2b65a0df04 | ||
|
|
311f232686 | ||
|
|
9893c5e846 | ||
|
|
f70dcd6a03 | ||
|
|
657dc917b4 | ||
|
|
de0c8558fb | ||
|
|
daa1c27d9b | ||
|
|
6e850bfed8 | ||
|
|
02309211ac | ||
|
|
3d1be51ed4 | ||
|
|
75b01bec9a | ||
|
|
fadb03ad27 | ||
|
|
6bdea294c1 | ||
|
|
11de525fc0 | ||
|
|
ca67ba2e49 | ||
|
|
c069cb3333 | ||
|
|
34be817eb2 | ||
|
|
0598a27d60 | ||
|
|
be5ef3448e | ||
|
|
a4e29bc7a7 | ||
|
|
a7982bda06 | ||
|
|
f7c12ad642 | ||
|
|
a6639b04b9 | ||
|
|
6b3bff1f1d | ||
|
|
597059045f | ||
|
|
b676424d98 | ||
|
|
e87b62f3ac | ||
|
|
776f190aed | ||
|
|
71a524da89 | ||
|
|
9dea3a4d4f | ||
|
|
adc042fa8a | ||
|
|
f16878bca9 | ||
|
|
01b951f3ba | ||
|
|
94122ba078 | ||
|
|
fb88da5a5a | ||
|
|
de7e730283 | ||
|
|
b5b502b433 | ||
|
|
db9b2d0245 | ||
|
|
51d718a21a | ||
|
|
29e2502d74 | ||
|
|
d529f81cb4 | ||
|
|
1645c1b8a1 | ||
|
|
e3ca0adf11 | ||
|
|
614a87d768 | ||
|
|
862c5d9f38 | ||
|
|
d3374dc461 | ||
|
|
795e2505ca | ||
|
|
cb8421df0b | ||
|
|
152888d611 | ||
|
|
ea527e4fb1 | ||
|
|
09bab7637e | ||
|
|
597f6ecf16 | ||
|
|
fe0b214334 | ||
|
|
cdc96438cd | ||
|
|
ca7dfb56c8 | ||
|
|
95852d23c2 | ||
|
|
84231a1754 | ||
|
|
f4f54cea60 | ||
|
|
06595ef107 | ||
|
|
91b9aa479a | ||
|
|
08cde2f597 | ||
|
|
d62404f164 | ||
|
|
0ce175cda5 | ||
|
|
7f1de58e71 | ||
|
|
f729290e96 | ||
|
|
4974cd96b6 | ||
|
|
4450a6e1d0 | ||
|
|
ac11efc5c7 | ||
|
|
3c005d239e | ||
|
|
c4e77d4b1d | ||
|
|
9d415ac45d | ||
|
|
8b9720ca93 | ||
|
|
ad4ac465ae | ||
|
|
872a3600aa | ||
|
|
7d019185a3 | ||
|
|
99f1540d8c | ||
|
|
97e909ebf4 | ||
|
|
4d4fab391c | ||
|
|
1233b5e803 | ||
|
|
7e3fa97679 | ||
|
|
64c81615ec | ||
|
|
5c15466ac4 | ||
|
|
9cdb70527b | ||
|
|
062b1bcfbb | ||
|
|
4ebc24a1b4 | ||
|
|
79b63e4099 | ||
|
|
c86a007ed0 | ||
|
|
ca9506e485 | ||
|
|
1aec61811f | ||
|
|
6c945d6573 | ||
|
|
09893343a9 | ||
|
|
6b6090e303 | ||
|
|
d3f1832f70 | ||
|
|
f524531a13 | ||
|
|
d6dde5fc41 | ||
|
|
a08d79b5a9 | ||
|
|
f6584fda41 | ||
|
|
1c504bc350 | ||
|
|
4349f30169 | ||
|
|
9076cfd7e7 | ||
|
|
f9d920a8fb | ||
|
|
a2697bfec0 | ||
|
|
82d4d15622 | ||
|
|
b0bc9b6b2e | ||
|
|
3330954a44 | ||
|
|
392ff3833e | ||
|
|
03dfc964f1 | ||
|
|
e7acd66c6e | ||
|
|
77e67b34c4 | ||
|
|
a4ad00e27c | ||
|
|
0515f891ab | ||
|
|
08da8e66fd | ||
|
|
682e0cbc82 | ||
|
|
f7ad322d4c | ||
|
|
2b31c23b9e | ||
|
|
ae258b8276 | ||
|
|
ff296be4a4 | ||
|
|
51ae55e25e | ||
|
|
31da9ee417 | ||
|
|
be7a00d631 | ||
|
|
0d99a8766f | ||
|
|
e66b58dc53 | ||
|
|
1b32cbbbfd | ||
|
|
681a8a828b | ||
|
|
f8009a7067 | ||
|
|
1ed2f16cbf | ||
|
|
ba2b3eeb9e | ||
|
|
45ca94eb6d | ||
|
|
a07cc25441 | ||
|
|
0dcd25d5ad | ||
|
|
cd34796b9d | ||
|
|
0d788e3d06 | ||
|
|
ed1dafadde | ||
|
|
96ac9046b3 | ||
|
|
6d5f35f07e | ||
|
|
c77dfa4c64 | ||
|
|
307d7f4b2d | ||
|
|
fb9927ab0c | ||
|
|
d13165699b | ||
|
|
65ff248ee7 | ||
|
|
87e5643892 | ||
|
|
8887281246 | ||
|
|
5b50e8ff81 | ||
|
|
c36c6a9012 | ||
|
|
cf990063b9 | ||
|
|
610f1bd974 | ||
|
|
4031178831 | ||
|
|
b65c8399d8 | ||
|
|
6b63cfd491 | ||
|
|
196c51bf73 | ||
|
|
17c9b2631e | ||
|
|
1a21189643 | ||
|
|
b6b428363c | ||
|
|
e707fa46cf | ||
|
|
3d040362cb | ||
|
|
57b193b037 | ||
|
|
8a75c9b6e3 | ||
|
|
0dafc792f7 | ||
|
|
afc0fe29ee | ||
|
|
817a9bbce5 | ||
|
|
3ef7031eb0 | ||
|
|
6faf32eae9 | ||
|
|
455e86571a | ||
|
|
7d1e0c087a | ||
|
|
d48ef4c038 | ||
|
|
4a2eeaa8b9 | ||
|
|
faa2e6bb36 | ||
|
|
438543d8cd | ||
|
|
5a350cc9ce | ||
|
|
529814cf03 | ||
|
|
9b5275a854 | ||
|
|
e623196ac0 | ||
|
|
973b1f7aaf | ||
|
|
81a322cc99 | ||
|
|
36e82a8b90 | ||
|
|
1383e22acd | ||
|
|
a756a01d63 | ||
|
|
937efc9f1b | ||
|
|
fe6f32f072 | ||
|
|
226603770c | ||
|
|
2f48d21bfd | ||
|
|
4457baffa5 | ||
|
|
91d12c401c | ||
|
|
3f8da51aeb | ||
|
|
837717461f | ||
|
|
effedc28ed | ||
|
|
76b477572e | ||
|
|
6c6660b91b | ||
|
|
6886040798 | ||
|
|
1fb4850bef | ||
|
|
06cf76d724 | ||
|
|
7aeda56af4 | ||
|
|
2058b7fcae | ||
|
|
1e06e93e47 | ||
|
|
8f756d4084 | ||
|
|
02089a35ee | ||
|
|
f7a6b7dbf4 | ||
|
|
4028194830 | ||
|
|
4c04a7a45f | ||
|
|
ce344a9db5 | ||
|
|
8e90ece498 | ||
|
|
151ad552ca | ||
|
|
251cb65e12 | ||
|
|
8ebd0d0b2e | ||
|
|
c20f71738b | ||
|
|
78b73e8166 | ||
|
|
547ef0c4c5 | ||
|
|
11d148fff0 | ||
|
|
eb61d69626 | ||
|
|
876304cda5 | ||
|
|
65dce6d387 | ||
|
|
7b60a60d4e | ||
|
|
8d37cad871 | ||
|
|
cd25ae3258 | ||
|
|
a27cdbc284 | ||
|
|
e772ef0ad1 | ||
|
|
8cc00ae09a | ||
|
|
f4efc71350 | ||
|
|
b663e56174 | ||
|
|
5fe5a3869e | ||
|
|
a9ec5aa1e7 | ||
|
|
44405b4aae | ||
|
|
842cec2fee | ||
|
|
c6ad937619 | ||
|
|
a6ab095ff9 | ||
|
|
9a085bcb17 | ||
|
|
6d7be1c7f2 | ||
|
|
25cd51cee9 | ||
|
|
495de204d1 | ||
|
|
8e5f4d55c9 | ||
|
|
184fd65c76 | ||
|
|
15817f9b27 | ||
|
|
79671ac30e | ||
|
|
1d5db612fd | ||
|
|
d30016304b | ||
|
|
f0fd125e37 | ||
|
|
9ed4b85d5a | ||
|
|
f607d806d0 | ||
|
|
c0ddb5f816 | ||
|
|
fc563532e1 | ||
|
|
98248903c6 | ||
|
|
5870111d11 | ||
|
|
bb23c25690 | ||
|
|
4084c8dafc | ||
|
|
cb1dde1b79 |
21
.codecov.yml
Normal file
21
.codecov.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
codecov:
|
||||||
|
require_ci_to_pass: true
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
precision: 2
|
||||||
|
round: down
|
||||||
|
range: "0...100"
|
||||||
|
status:
|
||||||
|
project:
|
||||||
|
default:
|
||||||
|
target: 100%
|
||||||
|
threshold: 15%
|
||||||
|
patch:
|
||||||
|
default:
|
||||||
|
target: 100%
|
||||||
|
threshold: 10%
|
||||||
|
|
||||||
|
comment:
|
||||||
|
layout: "reach,diff,flags,files"
|
||||||
|
behavior: default
|
||||||
|
require_changes: false
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"next/core-web-vitals",
|
|
||||||
"prettier",
|
|
||||||
"plugin:react-hooks/recommended"
|
|
||||||
],
|
|
||||||
"plugins": ["prettier"],
|
|
||||||
"rules": {
|
|
||||||
"import/no-cycle": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"maxDepth": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"import/order": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"newlines-between": "always"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-else-return": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"allowElseIf": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"import/resolver": {
|
|
||||||
"node": {
|
|
||||||
"paths": ["src"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 6,
|
|
||||||
"sourceType": "module",
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"modules": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
title: "[Feature Request] "
|
title: "[Feature Request] "
|
||||||
labels: ["enhancement"]
|
labels: ["enhancement"]
|
||||||
body:
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### ⚠️ Don't forget to search [existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) and [discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions) (including closed ones!).
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: description
|
id: description
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
2
.github/DISCUSSION_TEMPLATE/support.yml
vendored
2
.github/DISCUSSION_TEMPLATE/support.yml
vendored
@@ -51,7 +51,7 @@ body:
|
|||||||
id: troubleshooting
|
id: troubleshooting
|
||||||
attributes:
|
attributes:
|
||||||
label: Troubleshooting
|
label: Troubleshooting
|
||||||
description: Please include output from your [troubleshooting steps](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
|
description: Please include output from your [troubleshooting steps](https://gethomepage.dev/troubleshooting/#service-widget-errors), if relevant.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: markdown
|
- type: markdown
|
||||||
|
|||||||
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -35,6 +35,8 @@ What type of change does your PR introduce to Homepage?
|
|||||||
## Checklist:
|
## Checklist:
|
||||||
|
|
||||||
- [ ] If applicable, I have added corresponding documentation changes.
|
- [ ] If applicable, I have added corresponding documentation changes.
|
||||||
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
- [ ] If applicable, I have added or updated tests for new features and bug fixes (see [testing](https://gethomepage.dev/widgets/authoring/getting-started/#testing)).
|
||||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/widgets/authoring/getting-started/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/widgets/authoring/getting-started/#service-widget-guidelines).
|
||||||
|
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/widgets/authoring/getting-started/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/widgets/authoring/getting-started/#code-linting).
|
||||||
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
||||||
|
- [ ] In the description above I have disclosed the use of AI tools in the coding of this PR.
|
||||||
|
|||||||
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
@@ -8,8 +8,12 @@ updates:
|
|||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "weekly"
|
||||||
|
cooldown:
|
||||||
|
default-days: 7
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "monthly"
|
interval: "monthly"
|
||||||
|
cooldown:
|
||||||
|
default-days: 7
|
||||||
|
|||||||
87
.github/release-drafter.yml
vendored
Normal file
87
.github/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
name-template: 'v$RESOLVED_VERSION'
|
||||||
|
tag-template: 'v$RESOLVED_VERSION'
|
||||||
|
change-template: '- $TITLE (#$NUMBER) @$AUTHOR'
|
||||||
|
change-title-escapes: '\\<*_&'
|
||||||
|
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- 'breaking-change'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'enhancement'
|
||||||
|
- 'feature'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'bug'
|
||||||
|
- 'fix'
|
||||||
|
- 'dependencies'
|
||||||
|
- 'translation'
|
||||||
|
- 'documentation'
|
||||||
|
default: patch
|
||||||
|
|
||||||
|
categories:
|
||||||
|
- title: '⚠️ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- 'breaking-change'
|
||||||
|
- title: '🚀 Features'
|
||||||
|
labels:
|
||||||
|
- 'enhancement'
|
||||||
|
- 'feature'
|
||||||
|
- title: '🐛 Fixes'
|
||||||
|
labels:
|
||||||
|
- 'bug'
|
||||||
|
- 'fix'
|
||||||
|
- title: '🧰 Maintenance'
|
||||||
|
labels:
|
||||||
|
- 'dependencies'
|
||||||
|
- 'ci'
|
||||||
|
- 'chore'
|
||||||
|
- title: '🌐 Translations'
|
||||||
|
labels:
|
||||||
|
- 'translation'
|
||||||
|
- title: '📚 Documentation'
|
||||||
|
labels:
|
||||||
|
- 'documentation'
|
||||||
|
|
||||||
|
autolabeler:
|
||||||
|
- label: 'documentation'
|
||||||
|
files:
|
||||||
|
- 'docs/**'
|
||||||
|
- '*.md'
|
||||||
|
- '.github/**/*.md'
|
||||||
|
|
||||||
|
- label: 'ci'
|
||||||
|
files:
|
||||||
|
- '.github/workflows/**'
|
||||||
|
|
||||||
|
- label: 'dependencies'
|
||||||
|
files:
|
||||||
|
- 'package.json'
|
||||||
|
- 'pnpm-lock.yaml'
|
||||||
|
- 'pyproject.toml'
|
||||||
|
- 'uv.lock'
|
||||||
|
|
||||||
|
- label: 'feature'
|
||||||
|
files:
|
||||||
|
- 'src/components/**'
|
||||||
|
- 'src/widgets/**'
|
||||||
|
- 'src/pages/**'
|
||||||
|
- 'src/utils/**'
|
||||||
|
|
||||||
|
- label: 'chore'
|
||||||
|
files:
|
||||||
|
- 'Dockerfile*'
|
||||||
|
- 'docker-entrypoint.sh'
|
||||||
|
- 'k3d/**'
|
||||||
|
|
||||||
|
- label: 'translation'
|
||||||
|
files:
|
||||||
|
- 'public/locales/**'
|
||||||
|
|
||||||
|
template: |
|
||||||
|
## What's Changed
|
||||||
|
|
||||||
|
$CHANGES
|
||||||
5
.github/workflows/crowdin.yml
vendored
5
.github/workflows/crowdin.yml
vendored
@@ -17,14 +17,15 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
- name: crowdin action
|
- name: crowdin action
|
||||||
uses: crowdin/github-action@v2
|
uses: crowdin/github-action@7ca9c452bfe9197d3bb7fa83a4d7e2b0c9ae835d # v2
|
||||||
with:
|
with:
|
||||||
upload_translations: false
|
upload_translations: false
|
||||||
download_translations: true
|
download_translations: true
|
||||||
crowdin_branch_name: dev
|
crowdin_branch_name: dev
|
||||||
localization_branch_name: l10n_dev
|
localization_branch_name: l10n_dev
|
||||||
|
pull_request_labels: translation
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||||
|
|||||||
56
.github/workflows/docker-publish.yml
vendored
56
.github/workflows/docker-publish.yml
vendored
@@ -17,43 +17,12 @@ env:
|
|||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pre-commit:
|
|
||||||
name: Linting Checks
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
|
|
||||||
- name: Check files
|
|
||||||
uses: pre-commit/action@v3.0.1
|
|
||||||
|
|
||||||
- name: Install pnpm
|
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
run_install: false
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
cache: 'pnpm'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pnpm install
|
|
||||||
|
|
||||||
- name: Lint frontend
|
|
||||||
run: pnpm run lint
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: Docker Build & Push
|
name: Docker Build & Push
|
||||||
if: github.repository == 'gethomepage/homepage'
|
if: github.repository == 'gethomepage/homepage'
|
||||||
runs-on: self-hosted
|
runs-on: ubuntu-22.04
|
||||||
needs: [ pre-commit ]
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
@@ -61,11 +30,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.IMAGE_NAME }}
|
${{ env.IMAGE_NAME }}
|
||||||
@@ -83,7 +52,7 @@ jobs:
|
|||||||
latest=auto
|
latest=auto
|
||||||
|
|
||||||
- name: Next.js build cache
|
- name: Next.js build cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
|
||||||
with:
|
with:
|
||||||
path: .next/cache
|
path: .next/cache
|
||||||
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
|
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
|
||||||
@@ -91,14 +60,15 @@ jobs:
|
|||||||
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||||
|
|
||||||
- name: Install pnpm
|
- name: Install pnpm
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@a8198c4bff370c8506180b035930dea56dbd5288 # v5
|
||||||
with:
|
with:
|
||||||
|
version: 10
|
||||||
run_install: false
|
run_install: false
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 24
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
@@ -113,7 +83,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -121,20 +91,20 @@ jobs:
|
|||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Setup QEMU
|
- name: Setup QEMU
|
||||||
uses: docker/setup-qemu-action@v3.6.0
|
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
74
.github/workflows/docs-publish.yml
vendored
74
.github/workflows/docs-publish.yml
vendored
@@ -9,70 +9,46 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pre-commit:
|
|
||||||
name: Linting Checks
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Install python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- name: Check files
|
|
||||||
uses: pre-commit/action@v3.0.1
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
name: Test Build Docs
|
name: Test Build Docs
|
||||||
if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request'
|
if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
|
||||||
- pre-commit
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version-file: ".python-version"
|
||||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
- name: Install uv
|
||||||
- uses: actions/cache@v4
|
uses: astral-sh/setup-uv@94527f2e458b27549849d47d273a16bec83a01e9 # v7
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
- run: sudo apt-get install pngquant
|
- run: sudo apt-get install pngquant
|
||||||
- run: pip install mkdocs-material mkdocs-redirects "mkdocs-material[imaging]"
|
|
||||||
- name: Test Docs Build
|
- name: Test Docs Build
|
||||||
run: MKINSIDERS=false mkdocs build
|
run: uv run --frozen zensical build --clean
|
||||||
deploy:
|
deploy:
|
||||||
name: Build & Deploy Docs
|
name: Build & Deploy Docs
|
||||||
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
|
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
environment:
|
||||||
- pre-commit
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5
|
||||||
- name: Configure Git Credentials
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
run: |
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||||
git config user.name github-actions[bot]
|
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
||||||
- uses: actions/setup-python@v5
|
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version-file: ".python-version"
|
||||||
- run: echo "cache_id=${{github.sha}}" >> $GITHUB_ENV
|
- name: Install uv
|
||||||
- uses: actions/cache@v4
|
uses: astral-sh/setup-uv@94527f2e458b27549849d47d273a16bec83a01e9 # v7
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
- run: sudo apt-get install pngquant
|
- run: sudo apt-get install pngquant
|
||||||
- run: pip install git+https://${GH_TOKEN}@github.com/benphelps/mkdocs-material-insiders.git
|
- name: Build Docs
|
||||||
- run: pip install mkdocs-redirects "mkdocs-material[imaging]"
|
run: uv run --frozen zensical build --clean
|
||||||
- name: Docs Deploy
|
- uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4
|
||||||
run: MKINSIDERS=true mkdocs gh-deploy --force
|
with:
|
||||||
env:
|
path: site
|
||||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
- uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
|
||||||
|
id: deployment
|
||||||
|
|||||||
41
.github/workflows/lint.yml
vendored
Normal file
41
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
merge_group:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
name: Linting Checks
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
|
|
||||||
|
- name: Install python
|
||||||
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Check files
|
||||||
|
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@a8198c4bff370c8506180b035930dea56dbd5288 # v5
|
||||||
|
with:
|
||||||
|
version: 10
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Lint frontend
|
||||||
|
run: pnpm run lint
|
||||||
18
.github/workflows/pr-quality.yml
vendored
Normal file
18
.github/workflows/pr-quality.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: PR Quality
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, reopened]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
anti-slop:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: peakoss/anti-slop@a5a4b2440c9de6f65b64f0718a0136a1fdb04f6f # v0
|
||||||
|
with:
|
||||||
|
max-failures: 4
|
||||||
2
.github/workflows/reaction-comments.yml
vendored
2
.github/workflows/reaction-comments.yml
vendored
@@ -15,4 +15,4 @@ jobs:
|
|||||||
action:
|
action:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/reaction-comments@v4
|
- uses: dessant/reaction-comments@e86d247c12bd5c043eec379a1a4453f20cadf913 # v4
|
||||||
|
|||||||
54
.github/workflows/release-drafter.yml
vendored
Normal file
54
.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
name: Release Drafter
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, reopened, synchronize]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "Optional explicit version override (for example: 2.0.0)"
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update_release_draft:
|
||||||
|
name: Update Release Draft
|
||||||
|
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: read
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != ''
|
||||||
|
uses: release-drafter/release-drafter@a6acf82562eee06318b77ab8cb0b11ed81c677a7 # v7
|
||||||
|
with:
|
||||||
|
config-name: release-drafter.yml
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- if: github.event_name != 'workflow_dispatch' || github.event.inputs.version == ''
|
||||||
|
uses: release-drafter/release-drafter@a6acf82562eee06318b77ab8cb0b11ed81c677a7 # v7
|
||||||
|
with:
|
||||||
|
config-name: release-drafter.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
auto_label:
|
||||||
|
name: Auto Label PR
|
||||||
|
if: github.event_name == 'pull_request_target'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter/autolabeler@ebb69bb56f1b0ebd19897745035726b19bef973e
|
||||||
|
with:
|
||||||
|
config-name: release-drafter.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
14
.github/workflows/repo-maintenance.yml
vendored
14
.github/workflows/repo-maintenance.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
name: 'Stale'
|
name: 'Stale'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10
|
||||||
with:
|
with:
|
||||||
days-before-stale: 7
|
days-before-stale: 7
|
||||||
days-before-close: 14
|
days-before-close: 14
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
name: 'Lock Old Threads'
|
name: 'Lock Old Threads'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v5
|
- uses: dessant/lock-threads@7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7 # v6
|
||||||
with:
|
with:
|
||||||
issue-inactive-days: '30'
|
issue-inactive-days: '30'
|
||||||
pr-inactive-days: '30'
|
pr-inactive-days: '30'
|
||||||
@@ -57,7 +57,7 @@ jobs:
|
|||||||
name: 'Close Answered Discussions'
|
name: 'Close Answered Discussions'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/github-script@v7
|
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
function sleep(ms) {
|
function sleep(ms) {
|
||||||
@@ -113,7 +113,7 @@ jobs:
|
|||||||
name: 'Close Outdated Discussions'
|
name: 'Close Outdated Discussions'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/github-script@v7
|
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
function sleep(ms) {
|
function sleep(ms) {
|
||||||
@@ -204,7 +204,7 @@ jobs:
|
|||||||
name: 'Close Unsupported Feature Requests'
|
name: 'Close Unsupported Feature Requests'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/github-script@v7
|
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
function sleep(ms) {
|
function sleep(ms) {
|
||||||
@@ -212,9 +212,9 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
const CUTOFF_1_DAYS = 180;
|
const CUTOFF_1_DAYS = 180;
|
||||||
const CUTOFF_1_COUNT = 10;
|
const CUTOFF_1_COUNT = 20;
|
||||||
const CUTOFF_2_DAYS = 365;
|
const CUTOFF_2_DAYS = 365;
|
||||||
const CUTOFF_2_COUNT = 20;
|
const CUTOFF_2_COUNT = 40;
|
||||||
|
|
||||||
const cutoff1Date = new Date();
|
const cutoff1Date = new Date();
|
||||||
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);
|
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);
|
||||||
|
|||||||
37
.github/workflows/test.yml
vendored
Normal file
37
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
vitest:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
shard: [1, 2, 3, 4]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@a8198c4bff370c8506180b035930dea56dbd5288 # v5
|
||||||
|
with:
|
||||||
|
version: 9
|
||||||
|
|
||||||
|
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: pnpm
|
||||||
|
|
||||||
|
- run: pnpm install --frozen-lockfile
|
||||||
|
# Run Vitest directly so `--shard` is parsed as an option
|
||||||
|
- run: pnpm -s exec vitest run --coverage --shard ${{ matrix.shard }}/4 --pool forks
|
||||||
|
- name: Upload coverage reports to Codecov
|
||||||
|
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
files: ./coverage/lcov.info
|
||||||
|
flags: vitest,shard-${{ matrix.shard }}
|
||||||
|
name: vitest-shard-${{ matrix.shard }}
|
||||||
|
fail_ci_if_error: true
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -46,7 +46,7 @@ next-env.d.ts
|
|||||||
# IDEs
|
# IDEs
|
||||||
/.idea/
|
/.idea/
|
||||||
|
|
||||||
# MkDocs documentation
|
# Zensical documentation
|
||||||
site*/
|
site*/
|
||||||
.cache/
|
.cache/
|
||||||
|
|
||||||
|
|||||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.13
|
||||||
1
.vscode/launch.json
vendored
1
.vscode/launch.json
vendored
@@ -3,6 +3,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Debug homepage",
|
"name": "Debug homepage",
|
||||||
"type": "node",
|
"type": "node",
|
||||||
|
"preLaunchTask": "pnpm install",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"runtimeExecutable": "pnpm",
|
"runtimeExecutable": "pnpm",
|
||||||
"runtimeArgs": ["run", "dev"],
|
"runtimeArgs": ["run", "dev"],
|
||||||
|
|||||||
21
.vscode/tasks.json
vendored
Normal file
21
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"label": "pnpm install",
|
||||||
|
"command": "pnpm install",
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
},
|
||||||
|
"presentation": {
|
||||||
|
"clear": true,
|
||||||
|
"panel": "shared",
|
||||||
|
"showReuseMessage": false
|
||||||
|
},
|
||||||
|
"problemMatcher": []
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -38,11 +38,11 @@ People _love_ thorough bug reports. I'm not even kidding.
|
|||||||
|
|
||||||
## Development Guidelines
|
## Development Guidelines
|
||||||
|
|
||||||
Please see the [documentation regarding development](https://gethomepage.dev/more/development/) and specifically the [guidelines for new service widgets](https://gethomepage.dev/more/development/#service-widget-guidelines) if you are considering making one.
|
Please see the [documentation regarding development](https://gethomepage.dev/widgets/authoring/getting-started/#development) and specifically the [guidelines for new service widgets](https://gethomepage.dev/widgets/authoring/getting-started/#service-widget-guidelines) if you are considering making one.
|
||||||
|
|
||||||
## Use a Consistent Coding Style
|
## Use a Consistent Coding Style
|
||||||
|
|
||||||
Please see information in the docs regarding [code formatting with pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks).
|
Please see information in the docs regarding [code formatting with pre-commit hooks](https://gethomepage.dev/widgets/authoring/getting-started/#code-formatting-with-pre-commit-hooks).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ The homepage team appreciates all effort and interest from the community in fili
|
|||||||
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
|
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
|
||||||
- Discussions with a marked answer will be automatically closed.
|
- Discussions with a marked answer will be automatically closed.
|
||||||
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
|
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
|
||||||
- Feature requests that do not meet the following thresholds will be closed: 10 "up-votes" after 180 days of inactivity or 20 "up-votes" after 365 days.
|
- Feature requests that do not meet the following thresholds will be closed: 20 "up-votes" after 180 days of inactivity or 40 "up-votes" after 365 days.
|
||||||
|
|
||||||
In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns.
|
In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns.
|
||||||
Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features.
|
Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features.
|
||||||
|
|||||||
@@ -51,8 +51,10 @@ COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static
|
|||||||
|
|
||||||
RUN apk add --no-cache su-exec iputils-ping shadow
|
RUN apk add --no-cache su-exec iputils-ping shadow
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV HOSTNAME=0.0.0.0
|
ENV HOSTNAME=::
|
||||||
ENV PORT=3000
|
ENV PORT=3000
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
|
|
||||||
|
|||||||
76
README.md
76
README.md
@@ -16,6 +16,8 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/gethomepage/homepage/docker-publish.yml"></a>
|
<a href="https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/gethomepage/homepage/docker-publish.yml"></a>
|
||||||
|
|
||||||
|
<a href="https://codecov.io/gh/gethomepage/homepage"><img src="https://codecov.io/gh/gethomepage/homepage/graph/badge.svg?token=7SKFL4D9K7"/></a>
|
||||||
|
|
||||||
<a href="https://crowdin.com/project/gethomepage" target="_blank"><img src="https://badges.crowdin.net/gethomepage/localized.svg"></a>
|
<a href="https://crowdin.com/project/gethomepage" target="_blank"><img src="https://badges.crowdin.net/gethomepage/localized.svg"></a>
|
||||||
|
|
||||||
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
|
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
|
||||||
@@ -25,13 +27,6 @@
|
|||||||
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
|
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.digitalocean.com/?refcode=df14bcb7c016&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://web-platforms.sfo2.cdn.digitaloceanspaces.com/WWW/Badge%201.svg" alt="DigitalOcean Referral Badge" /></a>
|
|
||||||
</p>
|
|
||||||
<p align="center">
|
|
||||||
<em>Homepage builds are kindly powered by DigitalOcean.</em>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
|
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
|
||||||
@@ -68,65 +63,14 @@ For configuration options, examples and more, [please check out the homepage doc
|
|||||||
|
|
||||||
## Security Notice 🔒
|
## Security Notice 🔒
|
||||||
|
|
||||||
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
|
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system). To keep your information private, if Homepage is reachable from any untrusted network, it:
|
||||||
|
|
||||||
## With Docker
|
1. **must** sit behind a reverse proxy (and/or VPN) that enforces authentication, TLS, and strictly validates Host headers.
|
||||||
|
2. An optional built-in OIDC login flow is available (opt-in) offering a simple “authenticated or not” guard.
|
||||||
|
|
||||||
Using docker compose:
|
## Installation
|
||||||
|
|
||||||
```yaml
|
See the [Installation](https://gethomepage.dev/installation/) section of the docs for instructions on installing Homepage via Docker, Kubernetes, Unraid, or from source.
|
||||||
services:
|
|
||||||
homepage:
|
|
||||||
image: ghcr.io/gethomepage/homepage:latest
|
|
||||||
container_name: homepage
|
|
||||||
environment:
|
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
|
||||||
PUID: 1000 # optional, your user id
|
|
||||||
PGID: 1000 # optional, your group id
|
|
||||||
ports:
|
|
||||||
- 3000:3000
|
|
||||||
volumes:
|
|
||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
|
|
||||||
restart: unless-stopped
|
|
||||||
```
|
|
||||||
|
|
||||||
or docker run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run --name homepage \
|
|
||||||
-e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev \
|
|
||||||
-e PUID=1000 \
|
|
||||||
-e PGID=1000 \
|
|
||||||
-p 3000:3000 \
|
|
||||||
-v /path/to/config:/app/config \
|
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
|
||||||
--restart unless-stopped \
|
|
||||||
ghcr.io/gethomepage/homepage:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
## From Source
|
|
||||||
|
|
||||||
First, clone the repository:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/gethomepage/homepage.git
|
|
||||||
```
|
|
||||||
|
|
||||||
Then install dependencies and build the production bundle:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pnpm install
|
|
||||||
pnpm build
|
|
||||||
```
|
|
||||||
|
|
||||||
If this is your first time starting, copy the `src/skeleton` directory to `config/` to populate initial example config files.
|
|
||||||
|
|
||||||
Finally, run the server in production mode:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pnpm start
|
|
||||||
```
|
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
@@ -154,16 +98,16 @@ This is a [Next.js](https://nextjs.org/) application, see their documentation fo
|
|||||||
|
|
||||||
The homepage documentation is available at [https://gethomepage.dev/](https://gethomepage.dev/).
|
The homepage documentation is available at [https://gethomepage.dev/](https://gethomepage.dev/).
|
||||||
|
|
||||||
Homepage uses Material for MkDocs for documentation. To run the documentation locally, first install the dependencies:
|
Homepage uses Zensical for documentation. To run the documentation locally, first install the dependencies:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
uv sync
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run the development server:
|
Then run the development server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdocs serve # or build, to build the static site
|
uv run zensical serve # or build, to build the static site
|
||||||
```
|
```
|
||||||
|
|
||||||
# Support & Suggestions
|
# Support & Suggestions
|
||||||
|
|||||||
@@ -12,8 +12,19 @@ export PGID=${PGID:-0}
|
|||||||
|
|
||||||
export HOMEPAGE_BUILDTIME=$(date +%s)
|
export HOMEPAGE_BUILDTIME=$(date +%s)
|
||||||
|
|
||||||
|
# Try IPv6 first (dual stack when available), but fall back to IPv4 if the bind fails
|
||||||
|
export HOSTNAME=${HOSTNAME:-::}
|
||||||
|
if [ "$HOSTNAME" = "::" ]; then
|
||||||
|
if ! node -e "const server = require('http').createServer(() => {}); const host = '::'; const port = process.env.PORT || 3000; server.once('error', (err) => { console.error('IPv6 bind failed:', err.message); process.exit(1); }); server.listen(port, host, () => server.close(() => process.exit(0)));"; then
|
||||||
|
echo "Falling back to IPv4 bind at 0.0.0.0"
|
||||||
|
export HOSTNAME=0.0.0.0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Check ownership before chown
|
# Check ownership before chown
|
||||||
if [ -e /app/config ]; then
|
if [ "$PUID" = "0" ]; then
|
||||||
|
echo "Skipping ownership changes for /app/config"
|
||||||
|
elif [ -e /app/config ]; then
|
||||||
CURRENT_UID=$(stat -c %u /app/config)
|
CURRENT_UID=$(stat -c %u /app/config)
|
||||||
CURRENT_GID=$(stat -c %g /app/config)
|
CURRENT_GID=$(stat -c %g /app/config)
|
||||||
|
|
||||||
@@ -30,7 +41,9 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure /app/config/logs exists and is owned
|
# Ensure /app/config/logs exists and is owned
|
||||||
if [ -n "$PUID" ] && [ -n "$PGID" ]; then
|
if [ "$PUID" = "0" ]; then
|
||||||
|
echo "Skipping ownership changes for /app/config/logs"
|
||||||
|
elif [ -n "$PUID" ] && [ -n "$PGID" ]; then
|
||||||
mkdir -p /app/config/logs 2>/dev/null || true
|
mkdir -p /app/config/logs 2>/dev/null || true
|
||||||
if [ -d /app/config/logs ]; then
|
if [ -d /app/config/logs ]; then
|
||||||
LOG_UID=$(stat -c %u /app/config/logs)
|
LOG_UID=$(stat -c %u /app/config/logs)
|
||||||
@@ -57,8 +70,8 @@ if [ -d /app/.next ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Drop privileges (when asked to) if root, otherwise run as current user
|
# Drop privileges (when asked to) if root, otherwise run as current user
|
||||||
if [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ]; then
|
if [ "$(id -u)" = "0" ] && [ "${PUID}" != "0" ]; then
|
||||||
su-exec ${PUID}:${PGID} "$@"
|
exec su-exec ${PUID}:${PGID} "$@"
|
||||||
else
|
else
|
||||||
exec "$@"
|
exec "$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -177,6 +177,16 @@ labels:
|
|||||||
- homepage.widget.fields=["field1","field2"] # optional
|
- homepage.widget.fields=["field1","field2"] # optional
|
||||||
```
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
|
||||||
|
If you use mapping syntax (`:`) for labels instead of list syntax (`-`), array values like `fields` must be wrapped in single quotes so they are passed as a string:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
labels:
|
||||||
|
...
|
||||||
|
homepage.widget.fields: '["field1","field2"]'
|
||||||
|
```
|
||||||
|
|
||||||
Multiple widgets can be specified by incrementing the index, e.g.
|
Multiple widgets can be specified by incrementing the index, e.g.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -189,6 +199,8 @@ labels: ...
|
|||||||
- homepage.widgets[1].slug=youreventslughere
|
- homepage.widgets[1].slug=youreventslughere
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To pass custom HTTP headers with a widget request when using labels, use the same dot-notation: `homepage.widget.headers.X-Auth-Key=secret` (or `homepage.widgets[0].headers.X-Auth-Key=secret` when multiple widgets are present).
|
||||||
|
|
||||||
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
|
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -271,4 +283,4 @@ You can show the docker stats by clicking the status indicator but this can also
|
|||||||
showStats: true
|
showStats: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Also see the settings for [show docker stats](settings.md#show-docker-stats).
|
Also see the settings for [show docker stats](settings.md#show-container-stats).
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ metadata:
|
|||||||
gethomepage.dev/name: Emby
|
gethomepage.dev/name: Emby
|
||||||
gethomepage.dev/widget.type: "emby"
|
gethomepage.dev/widget.type: "emby"
|
||||||
gethomepage.dev/widget.url: "https://emby.example.com"
|
gethomepage.dev/widget.url: "https://emby.example.com"
|
||||||
|
gethomepage.dev/widget.headers.X-Auth-Key: "your-secret-here"
|
||||||
gethomepage.dev/pod-selector: ""
|
gethomepage.dev/pod-selector: ""
|
||||||
gethomepage.dev/weight: 10 # optional
|
gethomepage.dev/weight: 10 # optional
|
||||||
gethomepage.dev/instance: "public" # optional
|
gethomepage.dev/instance: "public" # optional
|
||||||
@@ -178,3 +179,32 @@ See [ClusterRole and ClusterRoleBinding](../installation/k8s.md#clusterrole-and-
|
|||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
Similarly to Docker service discovery, there currently is no rigid ordering to discovered services and discovered services will be displayed above those specified in the `services.yaml`.
|
Similarly to Docker service discovery, there currently is no rigid ordering to discovered services and discovered services will be displayed above those specified in the `services.yaml`.
|
||||||
|
|
||||||
|
## Adding extra configuration files
|
||||||
|
|
||||||
|
Some Homepage features (for example, [Proxmox](../configs/proxmox.md)) require additional configuration files such as `proxmox.yaml`.
|
||||||
|
When running Homepage on Kubernetes, these files must be provided via a `ConfigMap` and mounted into the container at `/app/config`.
|
||||||
|
|
||||||
|
### ConfigMap example
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: homepage
|
||||||
|
data:
|
||||||
|
proxmox.yaml: |
|
||||||
|
pve:
|
||||||
|
url: https://proxmox.host.or.ip:8006
|
||||||
|
token: username@pam!Token ID
|
||||||
|
secret: secret
|
||||||
|
```
|
||||||
|
|
||||||
|
Mount the file into `/app/config` by updating the `Deployment`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /app/config/proxmox.yaml
|
||||||
|
name: homepage-config
|
||||||
|
subPath: proxmox.yaml
|
||||||
|
```
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ description: Proxmox Configuration
|
|||||||
---
|
---
|
||||||
|
|
||||||
The Proxmox connection is configured in the `proxmox.yaml` file. See [Create token](#create-token) section below for details on how to generate the required API token.
|
The Proxmox connection is configured in the `proxmox.yaml` file. See [Create token](#create-token) section below for details on how to generate the required API token.
|
||||||
|
To configure multiple nodes, ensure the key name in the `proxmox.yaml` matches the `proxmoxNode` field used in your service configuration.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
url: https://proxmox.host.or.ip:8006
|
pve: # must match your actual Proxmox node name
|
||||||
token: username@pam!Token ID
|
url: https://proxmox.host.or.ip:8006
|
||||||
secret: secret
|
token: username@pam!Token ID
|
||||||
|
secret: secret
|
||||||
```
|
```
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
@@ -17,7 +19,7 @@ Once the Proxmox connection is configured, individual services can be configured
|
|||||||
|
|
||||||
### Configuration Options
|
### Configuration Options
|
||||||
|
|
||||||
- `proxmoxNode`: The name of the Proxmox node where your VM/LXC is running
|
- `proxmoxNode`: The name of the Proxmox node where your VM/LXC is running, must match with a node configured in the `proxmox.yaml`
|
||||||
- `proxmoxVMID`: The ID of the Proxmox VM or LXC container
|
- `proxmoxVMID`: The ID of the Proxmox VM or LXC container
|
||||||
- `proxmoxType`: (Optional) The type of Proxmox virtual machine. Defaults to `qemu` for VMs, but can be set to `lxc` for LXC containers
|
- `proxmoxType`: (Optional) The type of Proxmox virtual machine. Defaults to `qemu` for VMs, but can be set to `lxc` for LXC containers
|
||||||
|
|
||||||
|
|||||||
@@ -101,6 +101,25 @@ Each service can have multiple widgets attached to it, for example:
|
|||||||
|
|
||||||
Multiple widgets per service are not yet supported with Kubernetes ingress annotations.
|
Multiple widgets per service are not yet supported with Kubernetes ingress annotations.
|
||||||
|
|
||||||
|
#### Custom HTTP headers
|
||||||
|
|
||||||
|
Widgets that make HTTP calls support extra request headers via `headers`. This is useful when a reverse proxy expects a secret header.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- UptimeRobot:
|
||||||
|
icon: uptimekuma.png
|
||||||
|
href: https://uptimerobot.com/
|
||||||
|
widget:
|
||||||
|
type: uptimerobot
|
||||||
|
url: https://api.uptimerobot.com
|
||||||
|
key: ${UPTIMEROBOT_API_KEY}
|
||||||
|
headers:
|
||||||
|
User-Agent: homepage
|
||||||
|
X-Auth-Key: your-secret-here
|
||||||
|
```
|
||||||
|
|
||||||
|
If you define services via Docker labels or Kubernetes annotations, use the same key with dot-notation (for example `homepage.widget.headers.X-Auth-Key=secret` or `gethomepage.dev/widget.headers.X-Auth-Key: "secret"`).
|
||||||
|
|
||||||
#### Field Visibility
|
#### Field Visibility
|
||||||
|
|
||||||
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
|
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
|
||||||
@@ -118,6 +137,60 @@ Each widget can optionally provide a list of which fields should be visible via
|
|||||||
key: apikeyapikeyapikeyapikeyapikey
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Block Highlighting
|
||||||
|
|
||||||
|
Widgets can tint their metric block text automatically based on rules defined alongside the service. Attach a `highlight` section to the widget configuration and map each block to one or more numeric or string rules using the field key (for example, `queued`, `lan_users`).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- Sonarr:
|
||||||
|
icon: sonarr.png
|
||||||
|
href: http://sonarr.host.or.ip
|
||||||
|
widget:
|
||||||
|
type: sonarr
|
||||||
|
url: http://sonarr.host.or.ip
|
||||||
|
key: ${SONARR_API_KEY}
|
||||||
|
highlight:
|
||||||
|
queued:
|
||||||
|
numeric:
|
||||||
|
- level: danger
|
||||||
|
when: gte
|
||||||
|
value: 20
|
||||||
|
- level: warn
|
||||||
|
when: gte
|
||||||
|
value: 5
|
||||||
|
- level: good
|
||||||
|
when: eq
|
||||||
|
value: 0
|
||||||
|
status:
|
||||||
|
string:
|
||||||
|
- level: danger
|
||||||
|
when: regex
|
||||||
|
value: "(failed|import) pending"
|
||||||
|
- level: good
|
||||||
|
when: equals
|
||||||
|
value: "All good"
|
||||||
|
status_code:
|
||||||
|
string:
|
||||||
|
- level: warn
|
||||||
|
when: regex
|
||||||
|
value: "^5\\d{2}$"
|
||||||
|
```
|
||||||
|
|
||||||
|
Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`.
|
||||||
|
|
||||||
|
#### Value Only Highlighting
|
||||||
|
|
||||||
|
You can optionally apply highlighting only to the value portion of a block (not the label) by setting `valueOnly: true` on the field configuration. This keeps the label visible while highlighting only the metric value itself.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- Sonarr:
|
||||||
|
...
|
||||||
|
highlight:
|
||||||
|
queued:
|
||||||
|
valueOnly: true
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
## Descriptions
|
## Descriptions
|
||||||
|
|
||||||
Services may have descriptions,
|
Services may have descriptions,
|
||||||
|
|||||||
@@ -109,6 +109,72 @@ color: slate
|
|||||||
|
|
||||||
Supported colors are: `slate`, `gray`, `zinc`, `neutral`, `stone`, `amber`, `yellow`, `lime`, `green`, `emerald`, `teal`, `cyan`, `sky`, `blue`, `indigo`, `violet`, `purple`, `fuchsia`, `pink`, `rose`, `red`, `white`
|
Supported colors are: `slate`, `gray`, `zinc`, `neutral`, `stone`, `amber`, `yellow`, `lime`, `green`, `emerald`, `teal`, `cyan`, `sky`, `blue`, `indigo`, `violet`, `purple`, `fuchsia`, `pink`, `rose`, `red`, `white`
|
||||||
|
|
||||||
|
## Block Highlight Levels
|
||||||
|
|
||||||
|
You can override the default Tailwind classes applied when a widget highlight rule resolves to the `good`, `warn`, or `danger` level.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
blockHighlights:
|
||||||
|
levels:
|
||||||
|
good: "bg-emerald-500/40 text-emerald-950 dark:bg-emerald-900/60 dark:text-emerald-400"
|
||||||
|
warn: "bg-amber-300/30 text-amber-900 dark:bg-amber-900/30 dark:text-amber-200"
|
||||||
|
danger: "bg-rose-700/45 text-rose-200 dark:bg-rose-950/70 dark:text-rose-400"
|
||||||
|
```
|
||||||
|
|
||||||
|
Any unspecified level falls back to the built-in defaults.
|
||||||
|
|
||||||
|
## Progressive Web App (PWA)
|
||||||
|
|
||||||
|
A progressive web app is an app that can be installed on a device and provide user experience like a native app. Homepage comes with built-in support for PWA with some default configurations, but you can customize them.
|
||||||
|
|
||||||
|
More information on PWAs can be found in [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps).
|
||||||
|
|
||||||
|
### App icons
|
||||||
|
|
||||||
|
You can set custom icons for installable apps. More information about how you can set them can be found in the [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/icons).
|
||||||
|
|
||||||
|
The default value is the Homepage icon in sizes 192x192 and 512x512.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
pwa:
|
||||||
|
icons:
|
||||||
|
- src: https://developer.mozilla.org/favicon-192x192.png
|
||||||
|
type: image/png
|
||||||
|
sizes: 192x192
|
||||||
|
- src: https://developer.mozilla.org/favicon-512x512.png
|
||||||
|
type: image/png
|
||||||
|
sizes: 512x512
|
||||||
|
```
|
||||||
|
|
||||||
|
For icon `src` you can pass either full URL or a local path relative to the `/app/public` directory. See [Background Image](#background-image) for more detailed information on how to provide your own files.
|
||||||
|
|
||||||
|
### Shortcuts
|
||||||
|
|
||||||
|
Shortcuts can be used to specify links to tabs, to be preselected when the homepage is opened as an app.
|
||||||
|
More information about how you can set them can be found in the [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/shortcuts).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
pwa:
|
||||||
|
shortcuts:
|
||||||
|
- name: First
|
||||||
|
url: "/#first" # opens the first tab
|
||||||
|
- name: Second
|
||||||
|
url: "/#second" # opens the second tab
|
||||||
|
- name: Third
|
||||||
|
url: "/#third" # opens the third tab
|
||||||
|
```
|
||||||
|
|
||||||
|
### Other PWA configurations
|
||||||
|
|
||||||
|
Homepage sets few other PWA configurations, that are based on global settings in `settings.yaml`:
|
||||||
|
|
||||||
|
- `name`, `short_name` - Both equal to the [`title`](#title) setting.
|
||||||
|
- `theme_color`, `background_color` - Both based on the [`color`](#color-palette) and [`theme`](#theme) settings.
|
||||||
|
- `display` - It is always set to "standalone".
|
||||||
|
- `start_url` - Equal to the [`startUrl`](#start-url) setting.
|
||||||
|
|
||||||
|
More information for wach of the PWA configurations can be found in the [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference).
|
||||||
|
|
||||||
## Layout
|
## Layout
|
||||||
|
|
||||||
You can configure service and bookmarks sections to be either "column" or "row" based layouts, like so:
|
You can configure service and bookmarks sections to be either "column" or "row" based layouts, like so:
|
||||||
@@ -264,7 +330,7 @@ fullWidth: true
|
|||||||
|
|
||||||
### Maximum Group Columns
|
### Maximum Group Columns
|
||||||
|
|
||||||
You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `stle: row`) by adding:
|
You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `style: row`) by adding:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8
|
maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8
|
||||||
@@ -382,7 +448,9 @@ Set your desired language using:
|
|||||||
language: fr
|
language: fr
|
||||||
```
|
```
|
||||||
|
|
||||||
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-CN, zh-Hant
|
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-Hans (Simplified), zh-Hant (Traditional)
|
||||||
|
|
||||||
|
`zh-CN` will still work and is automatically mapped to `zh-Hans` for backwards compatibility.
|
||||||
|
|
||||||
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
|
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
|
||||||
|
|
||||||
@@ -441,6 +509,7 @@ There are a few optional settings for the Quick Launch feature:
|
|||||||
- `showSearchSuggestions`: show search suggestions for the internet search. If this is not specified then the setting will be inherited from the search widget. If it is not specified there either, it will default to false. For custom providers the `suggestionUrl` needs to be set in order for this to work.
|
- `showSearchSuggestions`: show search suggestions for the internet search. If this is not specified then the setting will be inherited from the search widget. If it is not specified there either, it will default to false. For custom providers the `suggestionUrl` needs to be set in order for this to work.
|
||||||
- `provider`: search engine provider. If none is specified it will try to use the provider set for the Search Widget, if neither are present then internet search will be disabled.
|
- `provider`: search engine provider. If none is specified it will try to use the provider set for the Search Widget, if neither are present then internet search will be disabled.
|
||||||
- `hideVisitURL`: disable detecting and offering an option to open URLs. This is false by default, enabling the feature.
|
- `hideVisitURL`: disable detecting and offering an option to open URLs. This is false by default, enabling the feature.
|
||||||
|
- `mobileButtonPosition`: enables and sets the position of the mobile quicklaunch button. Options are `top-left`, `top-right`, `bottom-left`, `bottom-right`. This is empty by default, disabling the feature.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
quicklaunch:
|
quicklaunch:
|
||||||
@@ -485,9 +554,9 @@ logpath: /logfile/path
|
|||||||
|
|
||||||
By default, logs are sent both to `stdout` and to a file at the path specified. This can be changed by setting the `LOG_TARGETS` environment variable to one of `both` (default), `stdout` or `file`.
|
By default, logs are sent both to `stdout` and to a file at the path specified. This can be changed by setting the `LOG_TARGETS` environment variable to one of `both` (default), `stdout` or `file`.
|
||||||
|
|
||||||
## Show Docker Stats
|
## Show Container Stats
|
||||||
|
|
||||||
You can show all docker stats expanded in `settings.yaml`:
|
You can show all docker or proxmox stats expanded in `settings.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
showStats: true
|
showStats: true
|
||||||
@@ -556,3 +625,18 @@ or per service widget (`services.yaml`) with:
|
|||||||
```
|
```
|
||||||
|
|
||||||
If either value is set to true, the error message will be hidden.
|
If either value is set to true, the error message will be hidden.
|
||||||
|
|
||||||
|
## Disable Search Engine Indexing
|
||||||
|
|
||||||
|
You can request that search engines not to index your Homepage instance by enabling the `disableIndexing` setting.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
disableIndexing: true
|
||||||
|
```
|
||||||
|
|
||||||
|
When enabled, this will:
|
||||||
|
|
||||||
|
- Disallow all crawlers in `robots.txt`
|
||||||
|
- Add `<meta name="robots" content="noindex, nofollow">` tags to prevent indexing
|
||||||
|
|
||||||
|
By default this feature is disabled.
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ services:
|
|||||||
- 3000:3000
|
- 3000:3000
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
|
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations
|
||||||
environment:
|
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running as non-root
|
### Running as non-root
|
||||||
@@ -36,9 +34,8 @@ services:
|
|||||||
- 3000:3000
|
- 3000:3000
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
|
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations, see alternative methods
|
||||||
environment:
|
environment:
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
|
||||||
PUID: $PUID
|
PUID: $PUID
|
||||||
PGID: $PGID
|
PGID: $PGID
|
||||||
```
|
```
|
||||||
@@ -46,7 +43,7 @@ services:
|
|||||||
### With Docker Run
|
### With Docker Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -p 3000:3000 -e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
|
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
### Using Environment Secrets
|
### Using Environment Secrets
|
||||||
|
|||||||
@@ -27,14 +27,25 @@ You have a few options for deploying homepage, depending on your needs. We offer
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### `HOMEPAGE_ALLOWED_HOSTS`
|
### Security & Authentication
|
||||||
|
|
||||||
As of v1.0 there is one required environment variable to access homepage via a URL other than `localhost`, <code>HOMEPAGE_ALLOWED_HOSTS</code>. The setting helps prevent certain kinds of attacks when retrieving data from the homepage API proxy.
|
Public deployments of Homepage should be secured via a reverse proxy, VPN, or similar. As of version 2.0, Homepage supports a simple authorization gate with a password or OIDC. When enabled, Homepage will use password login by default unless OIDC variables are provided.
|
||||||
|
|
||||||
The value is a comma-separated (no spaces) list of allowed hosts (sometimes with the port) that can host your homepage install. See the [docker](docker.md), [kubernetes](k8s.md) and [source](source.md) installation pages for more information about where / how to set the variable.
|
Required environment variables for authentication:
|
||||||
|
|
||||||
`localhost:3000` and `127.0.0.1:3000` are always included, but you can add a domain or IP address to this list to allow that host such as `HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,192.168.1.2:1234`, etc.
|
- `HOMEPAGE_AUTH_ENABLED=true`
|
||||||
|
- `HOMEPAGE_AUTH_SECRET` (random string for signing/encrypting cookies)
|
||||||
|
|
||||||
If you are seeing errors about host validation, check the homepage logs and ensure that the host exactly as output in the logs is in the `HOMEPAGE_ALLOWED_HOSTS` list.
|
For password-only login:
|
||||||
|
|
||||||
This can be disabled by setting `HOMEPAGE_ALLOWED_HOSTS` to `*` but this is not recommended.
|
- `HOMEPAGE_AUTH_PASSWORD` (password-only login; required unless OIDC settings are provided)
|
||||||
|
|
||||||
|
For OIDC login (overrides password login):
|
||||||
|
|
||||||
|
- `HOMEPAGE_OIDC_ISSUER` (OIDC issuer URL, e.g., `https://auth.example.com/realms/homepage`)
|
||||||
|
- `HOMEPAGE_OIDC_CLIENT_ID`
|
||||||
|
- `HOMEPAGE_OIDC_CLIENT_SECRET`
|
||||||
|
- `HOMEPAGE_EXTERNAL_URL` (external URL to your Homepage instance; used for callbacks)
|
||||||
|
- Optional: `HOMEPAGE_OIDC_NAME` (display name), `HOMEPAGE_OIDC_SCOPE` (defaults to `openid email profile`)
|
||||||
|
|
||||||
|
All app pages and `/api` routes will require a signed-in session. Static assets remain public. Homepage still does not implement per-user dashboards or roles; authentication is a simple gate only.
|
||||||
|
|||||||
@@ -223,13 +223,31 @@ spec:
|
|||||||
- name: homepage
|
- name: homepage
|
||||||
image: "ghcr.io/gethomepage/homepage:latest"
|
image: "ghcr.io/gethomepage/homepage:latest"
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
env:
|
env:
|
||||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
- name: MY_POD_IP
|
||||||
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
containerPort: 3000
|
containerPort: 3000
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /api/healthcheck
|
||||||
|
port: http
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 15
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /app/config/custom.js
|
- mountPath: /app/config/custom.js
|
||||||
name: homepage-config
|
name: homepage-config
|
||||||
|
|||||||
@@ -27,9 +27,7 @@ If this is your first time starting, copy the `src/skeleton` directory to `confi
|
|||||||
Finally, run the server:
|
Finally, run the server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
|
pnpm start
|
||||||
```
|
```
|
||||||
|
|
||||||
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
|
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
|
||||||
|
|
||||||
See [HOMEPAGE_ALLOWED_HOSTS](index.md#homepage_allowed_hosts) for more information on this environment variable.
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ These companies help the Homepage project by providing services, tools, and reso
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="margin-bottom: 16px;">
|
<div style="margin-bottom: 16px;">
|
||||||
<a href="https://crowdin.com/project/homepage"><img src="https://support.crowdin.com/assets/logos/core-logo/png/crowdin-core-logo-cWhite.png" alt="Crowdin" style="max-width: 100%; height: 64px; display: block;" /></a>
|
<a href="https://crowdin.com/project/gethomepage"><img src="https://support.crowdin.com/assets/logos/core-logo/png/crowdin-core-logo-cWhite.png" alt="Crowdin" style="max-width: 100%; height: 64px; display: block;" /></a>
|
||||||
<p>
|
<p>
|
||||||
Crowdin provides the translation platform for the project. Making it easy to translate the project into multiple languages.
|
Crowdin provides the translation platform for the project. Making it easy to translate the project into multiple languages.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
background-image: url("https://raw.githubusercontent.com/gethomepage/homepage/main/docs/assets/blossom_valley.jpg");
|
background-image: url("https://raw.githubusercontent.com/gethomepage/homepage/main/docs/assets/blossom_valley_blur.jpg");
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
@@ -119,20 +119,6 @@ body[data-md-color-scheme="default"] {
|
|||||||
color: rgba(255, 255, 255, 1);
|
color: rgba(255, 255, 255, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.blur-overlay {
|
|
||||||
z-index: -1;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: hsl(0deg 0% 0% / 10%);
|
|
||||||
backdrop-filter: blur(128px);
|
|
||||||
-webkit-backdrop-filter: blur(128px);
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-md-color-scheme="default"] .blur-overlay {
|
|
||||||
background: hsla(0, 0%, 0%, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link,
|
.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link,
|
||||||
.md-nav--secondary .md-nav__title {
|
.md-nav--secondary .md-nav__title {
|
||||||
background: none;
|
background: none;
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ hide:
|
|||||||
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
|
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
|
||||||
- Check the browser error console, this can also sometimes provide useful information.
|
- Check the browser error console, this can also sometimes provide useful information.
|
||||||
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
|
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
|
||||||
- If certain widgets are failing when connecting to public APIs, consider [disabling IPv6](#disabling-ipv6).
|
|
||||||
|
|
||||||
## Service Widget Errors
|
## Service Widget Errors
|
||||||
|
|
||||||
@@ -67,17 +66,3 @@ All service widgets work essentially the same, that is, homepage makes a proxied
|
|||||||
## Missing custom icons
|
## Missing custom icons
|
||||||
|
|
||||||
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
|
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
|
||||||
|
|
||||||
## Disabling IPv6
|
|
||||||
|
|
||||||
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy.
|
|
||||||
|
|
||||||
Alternatively, you can use the `sysctls` option in your docker-compose file to disable IPv6 for the homepage container completely:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
homepage:
|
|
||||||
...
|
|
||||||
sysctls:
|
|
||||||
- net.ipv6.conf.all.disable_ipv6=1
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -33,6 +33,32 @@ Once dependencies have been installed you can lint your code with
|
|||||||
pnpm lint
|
pnpm lint
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Homepage uses [Vitest](https://vitest.dev/) for unit and component tests.
|
||||||
|
|
||||||
|
Run the test suite:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm test
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the test suite with coverage:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm test:coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
### What tests to include
|
||||||
|
|
||||||
|
- New or updated widgets should generally include a component test near the widget component (for example `src/widgets/<widget>/component.test.jsx`) that covers realistic behavior: loading/placeholder state, error state, and a representative "happy path" render.
|
||||||
|
- If you add or change a widget definition file (`src/widgets/<widget>/widget.js`), add/update its corresponding unit test (`src/widgets/<widget>/widget.test.js`) to cover the config/mapping behavior.
|
||||||
|
- If your widget requires a custom proxy (`src/widgets/<widget>/proxy.js`), add a proxy unit test (`src/widgets/<widget>/proxy.test.js`) that validates:
|
||||||
|
- request construction (URL, query params, headers/auth)
|
||||||
|
- response mapping (what the widget consumes)
|
||||||
|
- error pathways (upstream error, unexpected payloads)
|
||||||
|
- Avoid placing test files under `src/pages/**` (Next.js treats files there as routes). Page tests should live under `src/__tests__/pages/**`.
|
||||||
|
|
||||||
## Code formatting with pre-commit hooks
|
## Code formatting with pre-commit hooks
|
||||||
|
|
||||||
To ensure a consistent style and formatting across the project source, the project utilizes Git [`pre-commit`](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) hooks to perform some formatting and linting before a commit is allowed.
|
To ensure a consistent style and formatting across the project source, the project utilizes Git [`pre-commit`](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) hooks to perform some formatting and linting before a commit is allowed.
|
||||||
@@ -62,3 +88,4 @@ To ensure cohesiveness of various widgets, the following should be used as a gui
|
|||||||
- Minimize the number of API calls
|
- Minimize the number of API calls
|
||||||
- Avoid the use of custom proxy unless absolutely necessary
|
- Avoid the use of custom proxy unless absolutely necessary
|
||||||
- Widgets should be 'read-only', as in they should not make write changes using the relevant tool's API. Homepage widgets are designed to surface information, not to be a (usually worse) replacement for the tool itself.
|
- Widgets should be 'read-only', as in they should not make write changes using the relevant tool's API. Homepage widgets are designed to surface information, not to be a (usually worse) replacement for the tool itself.
|
||||||
|
- Widgets should not allow manually overriding the "refresh interval" setting, as misconfigured refresh intervals can easily lead to performance issues for users.
|
||||||
|
|||||||
@@ -201,3 +201,18 @@ export default async function customProxyHandler(req, res, map) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
Proxy handlers are a complex topic and require a good understanding of JavaScript and the Homepage codebase. If you are new to Homepage, we recommend using the built-in proxy handlers.
|
Proxy handlers are a complex topic and require a good understanding of JavaScript and the Homepage codebase. If you are new to Homepage, we recommend using the built-in proxy handlers.
|
||||||
|
|
||||||
|
## Testing proxy handlers
|
||||||
|
|
||||||
|
Proxy handlers are a common source of regressions because they deal with authentication, request formatting, and sometimes odd upstream API behavior.
|
||||||
|
|
||||||
|
When you add a new proxy handler or custom widget proxy, include tests that focus on behavior:
|
||||||
|
|
||||||
|
- **Request construction:** the correct URL/path, query params, headers, and auth (and that secrets are not accidentally logged).
|
||||||
|
- **Response mapping:** the payload shape expected by the widget/component (including optional/missing fields).
|
||||||
|
- **Error handling:** upstream non-200s, invalid JSON, timeouts, and unexpected payloads should produce a predictable result.
|
||||||
|
|
||||||
|
Test locations:
|
||||||
|
|
||||||
|
- Shared handlers live in `src/utils/proxy/handlers/*.js` with tests alongside them (for example `src/utils/proxy/handlers/generic.test.js`).
|
||||||
|
- Widget-specific proxies live in `src/widgets/<widget>/proxy.js` with tests in `src/widgets/<widget>/proxy.test.js`.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ More detail on configuring service widgets can be found in the [Service Widgets
|
|||||||
|
|
||||||
## Info Widgets
|
## Info Widgets
|
||||||
|
|
||||||
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined your `widgets.yaml` file. Here's an example:
|
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined in your `widgets.yaml` file. Here's an example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- openmeteo:
|
- openmeteo:
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ The Glances widget allows you to monitor the resources (CPU, memory, storage, te
|
|||||||
cpu: true # optional, enabled by default, disable by setting to false
|
cpu: true # optional, enabled by default, disable by setting to false
|
||||||
mem: true # optional, enabled by default, disable by setting to false
|
mem: true # optional, enabled by default, disable by setting to false
|
||||||
cputemp: true # disabled by default
|
cputemp: true # disabled by default
|
||||||
|
unit: imperial # optional for temp, default is metric
|
||||||
uptime: true # disabled by default
|
uptime: true # disabled by default
|
||||||
disk: / # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
|
disk: / # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
|
||||||
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
||||||
@@ -31,5 +32,3 @@ disk:
|
|||||||
- /boot
|
- /boot
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
_Added in v0.4.18, updated in v0.6.11, v0.6.21_
|
|
||||||
|
|||||||
@@ -7,13 +7,17 @@ You can include all or some of the available resources. If you do not want to se
|
|||||||
|
|
||||||
The disk path is the path reported by `df` (Mounted On), or the mount point of the disk.
|
The disk path is the path reported by `df` (Mounted On), or the mount point of the disk.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
|
||||||
|
Any disk you wish to access must be mounted to your container as a volume.
|
||||||
|
|
||||||
The cpu and memory resource information are the container's usage while [glances](glances.md) displays statistics for the host machine on which it is installed.
|
The cpu and memory resource information are the container's usage while [glances](glances.md) displays statistics for the host machine on which it is installed.
|
||||||
|
|
||||||
The resources widget primarily relies on a popular tool called [systeminformation](https://systeminformation.io). Thus, any limitiations of that software apply, for example, BRTFS RAID is not supported for the disk usage. In this case users may want to use the [glances widget](glances.md) instead.
|
The resources widget primarily relies on a popular tool called [systeminformation](https://systeminformation.io). Thus, any limitiations of that software apply, for example, BRTFS RAID is not supported for the disk usage. In this case users may want to use the [glances widget](glances.md) instead.
|
||||||
|
|
||||||
_Note: unfortunately, the package used for getting CPU temp ([systeminformation](https://systeminformation.io)) is not compatible with some setups and will not report any value(s) for CPU temp._
|
!!! warning
|
||||||
|
|
||||||
**Any disk you wish to access must be mounted to your container as a volume.**
|
The package used for getting CPU temp ([systeminformation](https://systeminformation.io)) is not compatible with some setups and will not report any value(s) for CPU temp.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- resources:
|
- resources:
|
||||||
@@ -75,3 +79,10 @@ You can additionally supply an optional `expanded` property set to true in order
|
|||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
To monitor a named host network interface in Docker (for example `network: eno1`), mount host `/sys` (read-only):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
volumes:
|
||||||
|
- /sys:/sys:ro
|
||||||
|
```
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ You can display general connectivity status from your Unifi (Network) Controller
|
|||||||
|
|
||||||
An optional 'site' parameter can be supplied, if it is not the widget will use the default site for the controller.
|
An optional 'site' parameter can be supplied, if it is not the widget will use the default site for the controller.
|
||||||
|
|
||||||
!!! hint
|
!!! tip
|
||||||
|
|
||||||
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container to clear the cache.
|
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container to clear the cache.
|
||||||
|
|
||||||
|
|||||||
18
docs/widgets/services/arcane.md
Normal file
18
docs/widgets/services/arcane.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: Arcane
|
||||||
|
description: Arcane Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Arcane](https://github.com/getarcaneapp/arcane).
|
||||||
|
|
||||||
|
**Allowed fields** (max 4): `running`, `stopped`, `total`, `images`, `images_used`, `images_unused`, `image_updates`.
|
||||||
|
**Default fields**: `running`, `stopped`, `total`, `image_updates`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: arcane
|
||||||
|
url: http://localhost:3552
|
||||||
|
env: 0 # required, 0 is Arcane default local environment
|
||||||
|
key: your-api-key
|
||||||
|
fields: ["running", "stopped", "total", "image_updates"] # optional
|
||||||
|
```
|
||||||
@@ -17,9 +17,15 @@ The account you made the API token for also needs the following **Assigned globa
|
|||||||
|
|
||||||
Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
|
Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
|
||||||
|
|
||||||
|
| Authentik Version | Homepage Widget Version |
|
||||||
|
| ----------------- | ----------------------- |
|
||||||
|
| < 2025.8.0 | 1 (default) |
|
||||||
|
| >= 2025.8.0 | 2 |
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: authentik
|
type: authentik
|
||||||
url: http://authentik.host.or.ip:port
|
url: http://authentik.host.or.ip:port
|
||||||
key: api_token
|
key: api_token
|
||||||
|
version: 2 # optional, default is 1
|
||||||
```
|
```
|
||||||
|
|||||||
17
docs/widgets/services/backrest.md
Normal file
17
docs/widgets/services/backrest.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: Backrest
|
||||||
|
description: Backrest Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
[Backrest](https://garethgeorge.github.io/backrest/) is a web-based frontend for
|
||||||
|
the [Restic](https://restic.net/) backup tool.
|
||||||
|
|
||||||
|
**Allowed fields:** `["num_success_latest","num_failure_latest","num_success_30","num_plans","num_failure_30","bytes_added_30"]`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: backrest
|
||||||
|
url: http://backrest.host.or.ip
|
||||||
|
username: admin # optional if auth is enabled in Backrest
|
||||||
|
password: admin # optional if auth is enabled in Backrest
|
||||||
|
```
|
||||||
16
docs/widgets/services/booklore.md
Normal file
16
docs/widgets/services/booklore.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
title: Booklore
|
||||||
|
description: Booklore Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Booklore](https://github.com/booklore-app/booklore).
|
||||||
|
|
||||||
|
The widget authenticates with your Booklore credentials to surface total libraries, books, and reading progress counts for your account.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: booklore
|
||||||
|
url: https://booklore.host.or.ip
|
||||||
|
username: username
|
||||||
|
password: password
|
||||||
|
```
|
||||||
@@ -8,6 +8,9 @@ Learn more about [Crowdsec](https://crowdsec.net).
|
|||||||
See the [crowdsec docs](https://docs.crowdsec.net/docs/local_api/intro/#machines) for information about registering a machine,
|
See the [crowdsec docs](https://docs.crowdsec.net/docs/local_api/intro/#machines) for information about registering a machine,
|
||||||
in most instances you can use the default credentials (`/etc/crowdsec/local_api_credentials.yaml`).
|
in most instances you can use the default credentials (`/etc/crowdsec/local_api_credentials.yaml`).
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Without the `limit24h` option, the widget will fetch all alerts which is limited to 100 by the API to avoid performance issues.
|
||||||
|
|
||||||
Allowed fields: `["alerts", "bans"]`.
|
Allowed fields: `["alerts", "bans"]`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -16,4 +19,5 @@ widget:
|
|||||||
url: http://crowdsechostorip:port
|
url: http://crowdsechostorip:port
|
||||||
username: localhost # machine_id in crowdsec
|
username: localhost # machine_id in crowdsec
|
||||||
password: password
|
password: password
|
||||||
|
limit24h: true # optional, limits alerts to last 24h. Default: false
|
||||||
```
|
```
|
||||||
|
|||||||
17
docs/widgets/services/dispatcharr.md
Normal file
17
docs/widgets/services/dispatcharr.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: Dispatcharr
|
||||||
|
description: Dispatcharr Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Dispatcharr](https://github.com/Dispatcharr/Dispatcharr).
|
||||||
|
|
||||||
|
Allowed fields: `["channels", "streams"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: dispatcharr
|
||||||
|
url: http://dispatcharr.host.or.ip
|
||||||
|
username: username
|
||||||
|
password: password
|
||||||
|
enableActiveStreams: true # optional, defaults to false
|
||||||
|
```
|
||||||
20
docs/widgets/services/dockhand.md
Normal file
20
docs/widgets/services/dockhand.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: Dockhand
|
||||||
|
description: Dockhand Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Dockhand](https://dockhand.pro/).
|
||||||
|
|
||||||
|
Note: The widget currently supports Dockhand's **local** authentication only.
|
||||||
|
|
||||||
|
**Allowed fields:** (max 4): `running`, `stopped`, `paused`, `total`, `cpu`, `memory`, `images`, `volumes`, `events_today`, `pending_updates`, `stacks`.
|
||||||
|
**Default fields:** `running`, `total`, `cpu`, `memory`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: dockhand
|
||||||
|
url: http://localhost:3001
|
||||||
|
environment: local # optional: name or id; aggregates all when omitted
|
||||||
|
username: your-user # required for local auth
|
||||||
|
password: your-pass # required for local auth
|
||||||
|
```
|
||||||
@@ -14,4 +14,6 @@ widget:
|
|||||||
type: frigate
|
type: frigate
|
||||||
url: http://frigate.host.or.ip:port
|
url: http://frigate.host.or.ip:port
|
||||||
enableRecentEvents: true # Optional, defaults to false
|
enableRecentEvents: true # Optional, defaults to false
|
||||||
|
username: username # optional
|
||||||
|
password: password # optional
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ title: Gatus
|
|||||||
description: Gatus Widget Configuration
|
description: Gatus Widget Configuration
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Learn more about [Gatus](https://github.com/TwiN/gatus).
|
||||||
|
|
||||||
Allowed fields: `["up", "down", "uptime"]`.
|
Allowed fields: `["up", "down", "uptime"]`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ See the [official docs](https://github.com/ghostfolio/ghostfolio#authorization-b
|
|||||||
|
|
||||||
_Note that the Bearer token is valid for 6 months, after which a new one must be generated._
|
_Note that the Bearer token is valid for 6 months, after which a new one must be generated._
|
||||||
|
|
||||||
Allowed fields: `["gross_percent_today", "gross_percent_1y", "gross_percent_max"]`
|
Allowed fields: `["gross_percent_today", "gross_percent_1y", "gross_percent_max", "net_worth"]`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
|
|||||||
@@ -12,11 +12,17 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
|
|||||||
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
||||||
Default fields: `["public_ip", "region", "country"]`.
|
Default fields: `["public_ip", "region", "country"]`.
|
||||||
|
|
||||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml.
|
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` (or `/v1/portforward`) to your Gluetun config.toml.
|
||||||
|
|
||||||
|
| Gluetun Version | Homepage Widget Version |
|
||||||
|
| --------------- | ----------------------- |
|
||||||
|
| < 3.40.1 | 1 (default) |
|
||||||
|
| >= 3.40.1 | 2 |
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: gluetun
|
type: gluetun
|
||||||
url: http://gluetun.host.or.ip:port
|
url: http://gluetun.host.or.ip:port
|
||||||
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
||||||
|
version: 2 # optional, default is 1
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ Learn more about [Immich](https://github.com/immich-app/immich).
|
|||||||
| < v1.118 | 1 (default) |
|
| < v1.118 | 1 (default) |
|
||||||
| >= v1.118 | 2 |
|
| >= v1.118 | 2 |
|
||||||
|
|
||||||
Find your API key under `Account Settings > API Keys`.
|
Find your API key under `Account Settings > API Keys`. The key should have the
|
||||||
|
`server.statistics` permission.
|
||||||
|
|
||||||
Allowed fields: `["users" ,"photos", "videos", "storage"]`.
|
Allowed fields: `["users" ,"photos", "videos", "storage"]`.
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,16 @@ You can also find a list of all available service widgets in the sidebar navigat
|
|||||||
|
|
||||||
- [Adguard Home](adguard-home.md)
|
- [Adguard Home](adguard-home.md)
|
||||||
- [APC UPS](apcups.md)
|
- [APC UPS](apcups.md)
|
||||||
|
- [Arcane](arcane.md)
|
||||||
- [ArgoCD](argocd.md)
|
- [ArgoCD](argocd.md)
|
||||||
- [Atsumeru](atsumeru.md)
|
- [Atsumeru](atsumeru.md)
|
||||||
- [Audiobookshelf](audiobookshelf.md)
|
- [Audiobookshelf](audiobookshelf.md)
|
||||||
- [Authentik](authentik.md)
|
- [Authentik](authentik.md)
|
||||||
- [Autobrr](autobrr.md)
|
- [Autobrr](autobrr.md)
|
||||||
- [Azure DevOps](azuredevops.md)
|
- [Azure DevOps](azuredevops.md)
|
||||||
|
- [Backrest](backrest.md)
|
||||||
- [Bazarr](bazarr.md)
|
- [Bazarr](bazarr.md)
|
||||||
|
- [Booklore](booklore.md)
|
||||||
- [Beszel](beszel.md)
|
- [Beszel](beszel.md)
|
||||||
- [Caddy](caddy.md)
|
- [Caddy](caddy.md)
|
||||||
- [Calendar](calendar.md)
|
- [Calendar](calendar.md)
|
||||||
@@ -30,6 +33,8 @@ You can also find a list of all available service widgets in the sidebar navigat
|
|||||||
- [Deluge](deluge.md)
|
- [Deluge](deluge.md)
|
||||||
- [DeveLanCacheUI](develancacheui.md)
|
- [DeveLanCacheUI](develancacheui.md)
|
||||||
- [DiskStation](diskstation.md)
|
- [DiskStation](diskstation.md)
|
||||||
|
- [Dispatcharr](dispatcharr.md)
|
||||||
|
- [Dockhand](dockhand.md)
|
||||||
- [DownloadStation](downloadstation.md)
|
- [DownloadStation](downloadstation.md)
|
||||||
- [Emby](emby.md)
|
- [Emby](emby.md)
|
||||||
- [ESPHome](esphome.md)
|
- [ESPHome](esphome.md)
|
||||||
@@ -62,7 +67,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
|||||||
- [Jackett](jackett.md)
|
- [Jackett](jackett.md)
|
||||||
- [JDownloader](jdownloader.md)
|
- [JDownloader](jdownloader.md)
|
||||||
- [Jellyfin](jellyfin.md)
|
- [Jellyfin](jellyfin.md)
|
||||||
- [Jellyseerr](jellyseerr.md)
|
- [Seerr](seerr.md)
|
||||||
- [Jellystat](jellystat.md)
|
- [Jellystat](jellystat.md)
|
||||||
- [Kavita](kavita.md)
|
- [Kavita](kavita.md)
|
||||||
- [Komga](komga.md)
|
- [Komga](komga.md)
|
||||||
@@ -96,7 +101,6 @@ You can also find a list of all available service widgets in the sidebar navigat
|
|||||||
- [OpenMediaVault](openmediavault.md)
|
- [OpenMediaVault](openmediavault.md)
|
||||||
- [OpenWRT](openwrt.md)
|
- [OpenWRT](openwrt.md)
|
||||||
- [OPNsense](opnsense.md)
|
- [OPNsense](opnsense.md)
|
||||||
- [Overseerr](overseerr.md)
|
|
||||||
- [PaperlessNGX](paperlessngx.md)
|
- [PaperlessNGX](paperlessngx.md)
|
||||||
- [Peanut](peanut.md)
|
- [Peanut](peanut.md)
|
||||||
- [pfSense](pfsense.md)
|
- [pfSense](pfsense.md)
|
||||||
@@ -139,10 +143,12 @@ You can also find a list of all available service widgets in the sidebar navigat
|
|||||||
- [TubeArchivist](tubearchivist.md)
|
- [TubeArchivist](tubearchivist.md)
|
||||||
- [UniFi Controller](unifi-controller.md)
|
- [UniFi Controller](unifi-controller.md)
|
||||||
- [Unmanic](unmanic.md)
|
- [Unmanic](unmanic.md)
|
||||||
|
- [Unraid](unraid.md)
|
||||||
- [Uptime Kuma](uptime-kuma.md)
|
- [Uptime Kuma](uptime-kuma.md)
|
||||||
- [UptimeRobot](uptimerobot.md)
|
- [UptimeRobot](uptimerobot.md)
|
||||||
- [UrBackup](urbackup.md)
|
- [UrBackup](urbackup.md)
|
||||||
- [Vikunja](vikunja.md)
|
- [Vikunja](vikunja.md)
|
||||||
|
- [Wallos](wallos.md)
|
||||||
- [Watchtower](watchtower.md)
|
- [Watchtower](watchtower.md)
|
||||||
- [WGEasy](wgeasy.md)
|
- [WGEasy](wgeasy.md)
|
||||||
- [WhatsUpDocker](whatsupdocker.md)
|
- [WhatsUpDocker](whatsupdocker.md)
|
||||||
|
|||||||
@@ -5,15 +5,21 @@ description: Jellyfin Widget Configuration
|
|||||||
|
|
||||||
Learn more about [Jellyfin](https://github.com/jellyfin/jellyfin).
|
Learn more about [Jellyfin](https://github.com/jellyfin/jellyfin).
|
||||||
|
|
||||||
You can create an API key from inside Jellyfin at `Settings > Advanced > Api Keys`.
|
You can create an API key from inside the Jellyfin Administration Dashboard under `Advanced > API Keys`.
|
||||||
|
|
||||||
As of v0.6.11 the widget supports fields `["movies", "series", "episodes", "songs"]`. These blocks are disabled by default but can be enabled with the `enableBlocks` option, and the "Now Playing" feature (enabled by default) can be disabled with the `enableNowPlaying` option.
|
As of v0.6.11 the widget supports fields `["movies", "series", "episodes", "songs"]`. These blocks are disabled by default but can be enabled with the `enableBlocks` option, and the "Now Playing" feature (enabled by default) can be disabled with the `enableNowPlaying` option.
|
||||||
|
|
||||||
|
| Jellyfin Version | Homepage Widget Version |
|
||||||
|
| ---------------- | ----------------------- |
|
||||||
|
| < 10.12 | 1 (default) |
|
||||||
|
| >= 10.12 | 2 |
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: jellyfin
|
type: jellyfin
|
||||||
url: http://jellyfin.host.or.ip
|
url: http://jellyfin.host.or.ip:port
|
||||||
key: apikeyapikeyapikeyapikeyapikey
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
version: 2 # optional, default is 1
|
||||||
enableBlocks: true # optional, defaults to false
|
enableBlocks: true # optional, defaults to false
|
||||||
enableNowPlaying: true # optional, defaults to true
|
enableNowPlaying: true # optional, defaults to true
|
||||||
enableUser: true # optional, defaults to false
|
enableUser: true # optional, defaults to false
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
title: Jellyseerr
|
|
||||||
description: Jellyseerr Widget Configuration
|
|
||||||
---
|
|
||||||
|
|
||||||
Learn more about [Jellyseerr](https://github.com/Fallenbagel/jellyseerr).
|
|
||||||
|
|
||||||
Find your API key under `Settings > General > API Key`.
|
|
||||||
|
|
||||||
Allowed fields: `["pending", "approved", "available"]`.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
widget:
|
|
||||||
type: jellyseerr
|
|
||||||
url: http://jellyseerr.host.or.ip
|
|
||||||
key: apikeyapikeyapikeyapikeyapikey
|
|
||||||
```
|
|
||||||
@@ -17,6 +17,6 @@ widget:
|
|||||||
url: http://komodo.hostname.or.ip:port
|
url: http://komodo.hostname.or.ip:port
|
||||||
key: K-xxxxxx...
|
key: K-xxxxxx...
|
||||||
secret: S-xxxxxx...
|
secret: S-xxxxxx...
|
||||||
showSummary: true # optional, default: false
|
showSummary: true # optional, default: false. Takes precedence over showStacks
|
||||||
showStacks: true # optional, default: false
|
showStacks: true # optional, default: false
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -9,11 +9,17 @@ _Note that the project was renamed from PiAlert to NetAlertX._
|
|||||||
|
|
||||||
Allowed fields: `["total", "connected", "new_devices", "down_alerts"]`.
|
Allowed fields: `["total", "connected", "new_devices", "down_alerts"]`.
|
||||||
|
|
||||||
If you have enabled a password on your NetAlertX instance, you will need to provide the `SYNC_api_token` as the `key` in your config.
|
Provide the `API_TOKEN` (f.k.a. `SYNC_api_token`) as the `key` in your config.
|
||||||
|
|
||||||
|
| NetAlertX Version | Homepage Widget Version |
|
||||||
|
| ----------------- | ----------------------- |
|
||||||
|
| < v26.1.17 | 1 (default) |
|
||||||
|
| > v26.1.17 | 2 |
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: netalertx
|
type: netalertx
|
||||||
url: http://ip:port
|
url: http://ip:port # use backend port for widget version 2+
|
||||||
key: netalertxsyncapitoken # optional, only if password is enabled
|
key: yournetalertxapitoken
|
||||||
|
version: 2 # optional, default is 1
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: Omada
|
|||||||
description: Omada Widget Configuration
|
description: Omada Widget Configuration
|
||||||
---
|
---
|
||||||
|
|
||||||
The widget supports controller versions 3, 4 and 5.
|
The widget supports controller versions 3, 4, 5 and 6.
|
||||||
|
|
||||||
Allowed fields: `["connectedAp", "activeUser", "alerts", "connectedGateways", "connectedSwitches"]`.
|
Allowed fields: `["connectedAp", "activeUser", "alerts", "connectedGateways", "connectedSwitches"]`.
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
title: Overseerr
|
|
||||||
description: Overseerr Widget Configuration
|
|
||||||
---
|
|
||||||
|
|
||||||
Learn more about [Overseerr](https://github.com/sct/overseerr).
|
|
||||||
|
|
||||||
Find your API key under `Settings > General`.
|
|
||||||
|
|
||||||
Allowed fields: `["pending", "approved", "available", "processing"]`.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
widget:
|
|
||||||
type: overseerr
|
|
||||||
url: http://overseerr.host.or.ip
|
|
||||||
key: apikeyapikeyapikeyapikeyapikey
|
|
||||||
```
|
|
||||||
29
docs/widgets/services/pangolin.md
Normal file
29
docs/widgets/services/pangolin.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Pangolin
|
||||||
|
description: Pangolin Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Pangolin](https://github.com/fosrl/pangolin).
|
||||||
|
|
||||||
|
This widget shows sites (online/total), resources (healthy/total), targets (healthy/total), and traffic statistics for a Pangolin organization. A resource is considered healthy if at least one of its targets is healthy, or if it has no targets.
|
||||||
|
|
||||||
|
Allowed fields: `["sites", "resources", "targets", "traffic", "in", "out"]` (maximum of 4).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: pangolin
|
||||||
|
url: https://api.pangolin.net
|
||||||
|
key: your-api-key
|
||||||
|
org: your-org-id
|
||||||
|
```
|
||||||
|
|
||||||
|
Find your organization ID in the URL when logged in (e.g., `https://app.pangolin.net/{org-id}/...`).
|
||||||
|
|
||||||
|
## API Key Setup
|
||||||
|
|
||||||
|
Create an API key with the following permissions:
|
||||||
|
|
||||||
|
- **List Sites**
|
||||||
|
- **List Resources**
|
||||||
|
|
||||||
|
**Self-Hosted:** Enable the [Integration API](https://docs.pangolin.net/self-host/advanced/integration-api) in your Pangolin configuration before creating the key.
|
||||||
@@ -12,7 +12,7 @@ Allowed fields: no configurable fields for this widget.
|
|||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: tautulli
|
type: tautulli
|
||||||
url: http://tautulli.host.or.ip
|
url: http://tautulli.host.or.ip:port
|
||||||
key: apikeyapikeyapikeyapikeyapikey
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
enableUser: true # optional, defaults to false
|
enableUser: true # optional, defaults to false
|
||||||
showEpisodeNumber: true # optional, defaults to false
|
showEpisodeNumber: true # optional, defaults to false
|
||||||
|
|||||||
@@ -16,4 +16,5 @@ widget:
|
|||||||
username: username
|
username: username
|
||||||
password: password
|
password: password
|
||||||
enableLeechProgress: true # optional, defaults to false
|
enableLeechProgress: true # optional, defaults to false
|
||||||
|
enableLeechSize: true # optional, defaults to false
|
||||||
```
|
```
|
||||||
|
|||||||
20
docs/widgets/services/seerr.md
Normal file
20
docs/widgets/services/seerr.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: Seerr Widget
|
||||||
|
description: Seerr Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Seerr](https://github.com/seerr-team/seerr).
|
||||||
|
|
||||||
|
Find your API key under `Settings > General > API Key`.
|
||||||
|
|
||||||
|
_Jellyseerr and Overseerr merged into Seerr. Use `type: seerr` (legacy `type: jellyseerr` and `type: overseerr` are aliased)._
|
||||||
|
|
||||||
|
Allowed fields: `["pending", "approved", "available", "completed", "processing", "issues"]`.
|
||||||
|
Default fields: `["pending", "approved", "completed"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: seerr
|
||||||
|
url: http://seerr.host.or.ip
|
||||||
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
```
|
||||||
15
docs/widgets/services/sparkyfitness.md
Normal file
15
docs/widgets/services/sparkyfitness.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
title: SparkyFitness
|
||||||
|
description: SparkyFitness Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [SparkyFitness](https://github.com/CodeWithCJ/SparkyFitness).
|
||||||
|
|
||||||
|
Allowed fields: `["eaten", "burned", "remaining", "steps"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: sparkyfitness
|
||||||
|
url: http://sparkyfitness.host.or.ip
|
||||||
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
```
|
||||||
21
docs/widgets/services/tracearr.md
Normal file
21
docs/widgets/services/tracearr.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: Tracearr
|
||||||
|
description: Tracearr Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Tracearr](https://www.tracearr.com/).
|
||||||
|
|
||||||
|
Provides detailed information about currently active streams across multiple servers.
|
||||||
|
|
||||||
|
Allowed fields (for summary view): `["streams", "transcodes", "directplay", "bitrate"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: tracearr
|
||||||
|
url: http://tracearr.host.or.ip:3000
|
||||||
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
view: both # optional, "summary", "details", or "both", defaults to "details"
|
||||||
|
enableUser: true # optional, defaults to false
|
||||||
|
showEpisodeNumber: true # optional, defaults to false
|
||||||
|
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||||
|
```
|
||||||
@@ -9,6 +9,8 @@ This widget is compatible with [TriliumNext](https://github.com/TriliumNext/Note
|
|||||||
|
|
||||||
Find (or create) your ETAPI key under `Options > ETAPI > Create new ETAPI token`.
|
Find (or create) your ETAPI key under `Options > ETAPI > Create new ETAPI token`.
|
||||||
|
|
||||||
|
Allowed fields: `["version", "notesCount", "dbSize"]`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: trilium
|
type: trilium
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ description: TrueNas Scale Widget Configuration
|
|||||||
|
|
||||||
Learn more about [TrueNas](https://www.truenas.com/).
|
Learn more about [TrueNas](https://www.truenas.com/).
|
||||||
|
|
||||||
|
| TrueNAS Version | Homepage widget version |
|
||||||
|
| ----------------------- | ----------------------- |
|
||||||
|
| < 26.04 (REST API) | 1 (default) |
|
||||||
|
| > 25.04 (Websocket API) | 2 |
|
||||||
|
|
||||||
Allowed fields: `["load", "uptime", "alerts"]`.
|
Allowed fields: `["load", "uptime", "alerts"]`.
|
||||||
|
|
||||||
To create an API Key, follow [the official TrueNAS documentation](https://www.truenas.com/docs/scale/scaletutorials/toptoolbar/managingapikeys/).
|
To create an API Key, follow [the official TrueNAS documentation](https://www.truenas.com/docs/scale/scaletutorials/toptoolbar/managingapikeys/).
|
||||||
@@ -17,6 +22,7 @@ To use the `enablePools` option with TrueNAS Core, the `nasType` parameter is re
|
|||||||
widget:
|
widget:
|
||||||
type: truenas
|
type: truenas
|
||||||
url: http://truenas.host.or.ip
|
url: http://truenas.host.or.ip
|
||||||
|
version: 2 # optional, defaults to 1
|
||||||
username: user # not required if using api key
|
username: user # not required if using api key
|
||||||
password: pass # not required if using api key
|
password: pass # not required if using api key
|
||||||
key: yourtruenasapikey # not required if using username / password
|
key: yourtruenasapikey # not required if using username / password
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ An optional 'site' parameter can be supplied, if it is not the widget will use t
|
|||||||
|
|
||||||
Allowed fields: `["uptime", "wan", "lan", "lan_users", "lan_devices", "wlan", "wlan_users", "wlan_devices"]` (maximum of four). Fields unsupported by the unifi device will not be shown.
|
Allowed fields: `["uptime", "wan", "lan", "lan_users", "lan_devices", "wlan", "wlan_users", "wlan_devices"]` (maximum of four). Fields unsupported by the unifi device will not be shown.
|
||||||
|
|
||||||
!!! hint
|
!!! tip
|
||||||
|
|
||||||
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container or restart the service to clear the cache.
|
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container or restart the service to clear the cache.
|
||||||
|
|
||||||
|
|||||||
24
docs/widgets/services/unifi-drive.md
Normal file
24
docs/widgets/services/unifi-drive.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
title: UniFi Drive
|
||||||
|
description: UniFi Drive Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [UniFi Drive](https://ui.com/integrations/network-storage).
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Displays storage statistics from your UniFi Network Attached Storage (UNAS) device. Requires a local UniFi account with at least read privileges.
|
||||||
|
|
||||||
|
Allowed fields: `["total", "used", "available", "status"]`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: unifi_drive
|
||||||
|
url: https://unifi.host.or.ip
|
||||||
|
username: your_username
|
||||||
|
password: your_password
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
|
||||||
|
If you enter incorrect credentials and receive an "API Error", you may need to recreate the container or restart the service to clear the cache.
|
||||||
28
docs/widgets/services/unraid.md
Normal file
28
docs/widgets/services/unraid.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
title: Unraid
|
||||||
|
description: Unraid Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Unraid](https://unraid.net/).
|
||||||
|
|
||||||
|
The Unraid widget allows you to monitor the resources of an Unraid server.
|
||||||
|
|
||||||
|
**Minimum Requirements:**
|
||||||
|
|
||||||
|
- Unraid 7.2 -or- Unraid Connect plugin 2025.08.19.1850
|
||||||
|
- API key with the **ADMIN** role: [Managing API Keys](https://docs.unraid.net/go/managing-api-keys)
|
||||||
|
|
||||||
|
The widget can display metrics for selected Unraid pools. If using one of the "pool" fields, you must also add the pool name to the settings.
|
||||||
|
|
||||||
|
**Allowed fields:** `["cpu","memoryPercent","memoryAvailable","memoryUsed","notifications","arrayFree","arrayUsedSpace","arrayUsedPercent","status","pool1UsedSpace","pool1FreeSpace","pool1UsedPercent","pool2UsedSpace","pool2FreeSpace","pool2UsedPercent","pool3UsedSpace","pool3FreeSpace","pool3UsedPercent","pool4UsedSpace","pool4FreeSpace","pool4UsedPercent"]`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: unraid
|
||||||
|
url: https://unraid.host.or.ip
|
||||||
|
key: api-key
|
||||||
|
pool1: pool1name # required only if using pool1 fields
|
||||||
|
pool2: pool2name # required only if using pool2 fields
|
||||||
|
pool3: pool3name # required only if using pool3 fields
|
||||||
|
pool4: pool4name # required only if using pool4 fields
|
||||||
|
```
|
||||||
@@ -9,10 +9,16 @@ Allowed fields: `["projects", "tasks7d", "tasksOverdue", "tasksInProgress"]`.
|
|||||||
|
|
||||||
A list of the next 5 tasks ordered by due date is disabled by default, but can be enabled with the `enableTaskList` option.
|
A list of the next 5 tasks ordered by due date is disabled by default, but can be enabled with the `enableTaskList` option.
|
||||||
|
|
||||||
|
| Vikunja Version | Homepage Widget Version |
|
||||||
|
| --------------- | ----------------------- |
|
||||||
|
| < v1.0.0-rc4 | 1 (default) |
|
||||||
|
| >= v1.0.0-rc4 | 2 |
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: vikunja
|
type: vikunja
|
||||||
url: http[s]://vikunja.host.or.ip[:port]
|
url: http[s]://vikunja.host.or.ip[:port]
|
||||||
key: vikunjaapikey
|
key: vikunjaapikey
|
||||||
enableTaskList: true # optional, defaults to false
|
enableTaskList: true # optional, defaults to false
|
||||||
|
version: 2 # optional, defaults to 1
|
||||||
```
|
```
|
||||||
|
|||||||
28
docs/widgets/services/yourspotify.md
Normal file
28
docs/widgets/services/yourspotify.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
title: Your Spotify
|
||||||
|
description: Your Spotify Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Your Spotify](https://github.com/Yooooomi/your_spotify).
|
||||||
|
|
||||||
|
Find your API key under `Settings > Account > Public token`, click `Generate` if not yet generated, copy key after
|
||||||
|
`?token=`.
|
||||||
|
|
||||||
|
Allowed fields: `["songs", "time", "artists"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: yourspotify
|
||||||
|
url: http://your-spotify-server.host.or.ip # if using lsio image, add /api/
|
||||||
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
interval: month # optional, defaults to week
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Interval
|
||||||
|
|
||||||
|
Allowed values for `interval`: `day`, `week`, `month`, `year`, `all`.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
|
||||||
|
`interval` is different from predefined intervals you see in `Your Spotify`'s UI.
|
||||||
|
For example, `This week` in UI means _from the start of this week_, here `week` means _past 7 days_.
|
||||||
78
eslint.config.mjs
Normal file
78
eslint.config.mjs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
|
import { fixupConfigRules } from "@eslint/compat";
|
||||||
|
import { FlatCompat } from "@eslint/eslintrc";
|
||||||
|
import js from "@eslint/js";
|
||||||
|
import prettier from "eslint-plugin-prettier";
|
||||||
|
import { defineConfig, globalIgnores } from "eslint/config";
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
recommendedConfig: js.configs.recommended,
|
||||||
|
allConfig: js.configs.all,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
{
|
||||||
|
extends: fixupConfigRules(compat.extends("next/core-web-vitals", "prettier", "plugin:react-hooks/recommended")),
|
||||||
|
|
||||||
|
plugins: {
|
||||||
|
prettier,
|
||||||
|
},
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 6,
|
||||||
|
sourceType: "module",
|
||||||
|
|
||||||
|
parserOptions: {
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
settings: {
|
||||||
|
"import/resolver": {
|
||||||
|
node: {
|
||||||
|
paths: ["src"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
"import/no-cycle": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
maxDepth: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
"import/order": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"newlines-between": "always",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
"no-else-return": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
allowElseIf: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// Vitest tests often intentionally place imports after `vi.mock(...)` to ensure
|
||||||
|
// modules under test see the mocked dependencies. `import/order` can't safely
|
||||||
|
// auto-fix those cases, so disable it for test files.
|
||||||
|
{
|
||||||
|
files: ["src/**/*.test.{js,jsx}", "src/**/*.spec.{js,jsx}"],
|
||||||
|
rules: {
|
||||||
|
"import/order": "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
globalIgnores(["./config/", "./coverage/", "./.venv/", "./.next/", "./site/"]),
|
||||||
|
]);
|
||||||
@@ -20,13 +20,13 @@ helm install my-release jameswynn/homepage
|
|||||||
Set the `mode` in the `kubernetes.yaml` to `cluster`.
|
Set the `mode` in the `kubernetes.yaml` to `cluster`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
mode: default
|
mode: cluster
|
||||||
```
|
```
|
||||||
|
|
||||||
To enable Kubernetes gateway-api compatibility, set `route` to `gateway`.
|
To enable Kubernetes gateway-api compatibility, set `gateway` to `true`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
route: gateway
|
gateway: true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Widgets
|
## Widgets
|
||||||
|
|||||||
15
mkdocs.yml
15
mkdocs.yml
@@ -33,13 +33,16 @@ nav:
|
|||||||
- widgets/services/index.md
|
- widgets/services/index.md
|
||||||
- widgets/services/adguard-home.md
|
- widgets/services/adguard-home.md
|
||||||
- widgets/services/apcups.md
|
- widgets/services/apcups.md
|
||||||
|
- widgets/services/arcane.md
|
||||||
- widgets/services/argocd.md
|
- widgets/services/argocd.md
|
||||||
- widgets/services/atsumeru.md
|
- widgets/services/atsumeru.md
|
||||||
- widgets/services/audiobookshelf.md
|
- widgets/services/audiobookshelf.md
|
||||||
- widgets/services/authentik.md
|
- widgets/services/authentik.md
|
||||||
- widgets/services/autobrr.md
|
- widgets/services/autobrr.md
|
||||||
- widgets/services/azuredevops.md
|
- widgets/services/azuredevops.md
|
||||||
|
- widgets/services/backrest.md
|
||||||
- widgets/services/bazarr.md
|
- widgets/services/bazarr.md
|
||||||
|
- widgets/services/booklore.md
|
||||||
- widgets/services/beszel.md
|
- widgets/services/beszel.md
|
||||||
- widgets/services/caddy.md
|
- widgets/services/caddy.md
|
||||||
- widgets/services/calendar.md
|
- widgets/services/calendar.md
|
||||||
@@ -54,6 +57,8 @@ nav:
|
|||||||
- widgets/services/deluge.md
|
- widgets/services/deluge.md
|
||||||
- widgets/services/develancacheui.md
|
- widgets/services/develancacheui.md
|
||||||
- widgets/services/diskstation.md
|
- widgets/services/diskstation.md
|
||||||
|
- widgets/services/dispatcharr.md
|
||||||
|
- widgets/services/dockhand.md
|
||||||
- widgets/services/downloadstation.md
|
- widgets/services/downloadstation.md
|
||||||
- widgets/services/emby.md
|
- widgets/services/emby.md
|
||||||
- widgets/services/esphome.md
|
- widgets/services/esphome.md
|
||||||
@@ -86,7 +91,6 @@ nav:
|
|||||||
- widgets/services/jackett.md
|
- widgets/services/jackett.md
|
||||||
- widgets/services/jdownloader.md
|
- widgets/services/jdownloader.md
|
||||||
- widgets/services/jellyfin.md
|
- widgets/services/jellyfin.md
|
||||||
- widgets/services/jellyseerr.md
|
|
||||||
- widgets/services/jellystat.md
|
- widgets/services/jellystat.md
|
||||||
- widgets/services/kavita.md
|
- widgets/services/kavita.md
|
||||||
- widgets/services/komga.md
|
- widgets/services/komga.md
|
||||||
@@ -120,7 +124,7 @@ nav:
|
|||||||
- widgets/services/openmediavault.md
|
- widgets/services/openmediavault.md
|
||||||
- widgets/services/opnsense.md
|
- widgets/services/opnsense.md
|
||||||
- widgets/services/openwrt.md
|
- widgets/services/openwrt.md
|
||||||
- widgets/services/overseerr.md
|
- widgets/services/pangolin.md
|
||||||
- widgets/services/paperlessngx.md
|
- widgets/services/paperlessngx.md
|
||||||
- widgets/services/peanut.md
|
- widgets/services/peanut.md
|
||||||
- widgets/services/pfsense.md
|
- widgets/services/pfsense.md
|
||||||
@@ -145,8 +149,10 @@ nav:
|
|||||||
- widgets/services/rutorrent.md
|
- widgets/services/rutorrent.md
|
||||||
- widgets/services/sabnzbd.md
|
- widgets/services/sabnzbd.md
|
||||||
- widgets/services/scrutiny.md
|
- widgets/services/scrutiny.md
|
||||||
|
- widgets/services/seerr.md
|
||||||
- widgets/services/slskd.md
|
- widgets/services/slskd.md
|
||||||
- widgets/services/sonarr.md
|
- widgets/services/sonarr.md
|
||||||
|
- widgets/services/sparkyfitness.md
|
||||||
- widgets/services/speedtest-tracker.md
|
- widgets/services/speedtest-tracker.md
|
||||||
- widgets/services/spoolman.md
|
- widgets/services/spoolman.md
|
||||||
- widgets/services/stash.md
|
- widgets/services/stash.md
|
||||||
@@ -159,20 +165,25 @@ nav:
|
|||||||
- widgets/services/technitium.md
|
- widgets/services/technitium.md
|
||||||
- widgets/services/tdarr.md
|
- widgets/services/tdarr.md
|
||||||
- widgets/services/traefik.md
|
- widgets/services/traefik.md
|
||||||
|
- widgets/services/tracearr.md
|
||||||
- widgets/services/transmission.md
|
- widgets/services/transmission.md
|
||||||
- widgets/services/trilium.md
|
- widgets/services/trilium.md
|
||||||
- widgets/services/truenas.md
|
- widgets/services/truenas.md
|
||||||
- widgets/services/tubearchivist.md
|
- widgets/services/tubearchivist.md
|
||||||
- widgets/services/unifi-controller.md
|
- widgets/services/unifi-controller.md
|
||||||
|
- widgets/services/unifi-drive.md
|
||||||
- widgets/services/unmanic.md
|
- widgets/services/unmanic.md
|
||||||
|
- widgets/services/unraid.md
|
||||||
- widgets/services/uptime-kuma.md
|
- widgets/services/uptime-kuma.md
|
||||||
- widgets/services/uptimerobot.md
|
- widgets/services/uptimerobot.md
|
||||||
- widgets/services/urbackup.md
|
- widgets/services/urbackup.md
|
||||||
- widgets/services/vikunja.md
|
- widgets/services/vikunja.md
|
||||||
|
- widgets/services/wallos.md
|
||||||
- widgets/services/watchtower.md
|
- widgets/services/watchtower.md
|
||||||
- widgets/services/wgeasy.md
|
- widgets/services/wgeasy.md
|
||||||
- widgets/services/whatsupdocker.md
|
- widgets/services/whatsupdocker.md
|
||||||
- widgets/services/xteve.md
|
- widgets/services/xteve.md
|
||||||
|
- widgets/services/yourspotify.md
|
||||||
- widgets/services/zabbix.md
|
- widgets/services/zabbix.md
|
||||||
- "Information Widgets":
|
- "Information Widgets":
|
||||||
- widgets/info/index.md
|
- widgets/info/index.md
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// prettyBytes taken from https://github.com/sindresorhus/pretty-bytes
|
// prettyBytes taken from https://github.com/sindresorhus/pretty-bytes
|
||||||
|
|
||||||
/* eslint-disable no-param-reassign */
|
|
||||||
const BYTE_UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
const BYTE_UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
||||||
|
|
||||||
const BIBYTE_UNITS = ["B", "kiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"];
|
const BIBYTE_UNITS = ["B", "kiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"];
|
||||||
@@ -37,7 +36,6 @@ function prettyBytes(number, options) {
|
|||||||
...options,
|
...options,
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line no-nested-ternary
|
|
||||||
const UNITS = options.bits ? (options.binary ? BIBIT_UNITS : BIT_UNITS) : options.binary ? BIBYTE_UNITS : BYTE_UNITS;
|
const UNITS = options.bits ? (options.binary ? BIBIT_UNITS : BIT_UNITS) : options.binary ? BIBYTE_UNITS : BYTE_UNITS;
|
||||||
|
|
||||||
if (options.signed && number === 0) {
|
if (options.signed && number === 0) {
|
||||||
@@ -45,7 +43,7 @@ function prettyBytes(number, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const isNegative = number < 0;
|
const isNegative = number < 0;
|
||||||
// eslint-disable-next-line no-nested-ternary
|
|
||||||
const prefix = isNegative ? "-" : options.signed ? "+" : "";
|
const prefix = isNegative ? "-" : options.signed ? "+" : "";
|
||||||
|
|
||||||
if (isNegative) {
|
if (isNegative) {
|
||||||
|
|||||||
@@ -5,7 +5,12 @@ const nextConfig = {
|
|||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
output: "standalone",
|
output: "standalone",
|
||||||
images: {
|
images: {
|
||||||
domains: ["cdn.jsdelivr.net"],
|
remotePatterns: [
|
||||||
|
{
|
||||||
|
protocol: "https",
|
||||||
|
hostname: "cdn.jsdelivr.net",
|
||||||
|
},
|
||||||
|
],
|
||||||
unoptimized: true,
|
unoptimized: true,
|
||||||
},
|
},
|
||||||
i18n,
|
i18n,
|
||||||
|
|||||||
80
package.json
80
package.json
@@ -1,77 +1,85 @@
|
|||||||
{
|
{
|
||||||
"name": "homepage",
|
"name": "homepage",
|
||||||
"version": "1.4.3",
|
"version": "1.12.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build --webpack",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "eslint .",
|
||||||
|
"test": "vitest run",
|
||||||
|
"test:coverage": "vitest run --coverage",
|
||||||
|
"test:watch": "vitest",
|
||||||
"telemetry": "next telemetry disable"
|
"telemetry": "next telemetry disable"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@headlessui/react": "^1.7.19",
|
"@headlessui/react": "^2.2.9",
|
||||||
"@kubernetes/client-node": "^1.0.0",
|
"@kubernetes/client-node": "^1.0.0",
|
||||||
"classnames": "^2.5.1",
|
"classnames": "^2.5.1",
|
||||||
"compare-versions": "^6.1.1",
|
"compare-versions": "^6.1.1",
|
||||||
"dockerode": "^4.0.7",
|
"dockerode": "^4.0.7",
|
||||||
"follow-redirects": "^1.15.11",
|
"follow-redirects": "^1.15.11",
|
||||||
"gamedig": "^5.2.0",
|
"gamedig": "^5.3.2",
|
||||||
"i18next": "^24.2.3",
|
"i18next": "^25.8.0",
|
||||||
"ical.js": "^2.1.0",
|
"ical.js": "^2.2.1",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.1",
|
||||||
"json-rpc-2.0": "^1.7.0",
|
"json-rpc-2.0": "^1.7.0",
|
||||||
"luxon": "^3.6.1",
|
"luxon": "^3.6.1",
|
||||||
"memory-cache": "^0.2.0",
|
"memory-cache": "^0.2.0",
|
||||||
"minecraftstatuspinger": "^1.2.2",
|
"minecraftstatuspinger": "^1.2.2",
|
||||||
"next": "^15.4.5",
|
"next": "^16.1.7",
|
||||||
"next-i18next": "^12.1.0",
|
"next-auth": "^4.24.10",
|
||||||
|
"next-i18next": "^15.4.3",
|
||||||
"ping": "^0.4.4",
|
"ping": "^0.4.4",
|
||||||
"pretty-bytes": "^6.1.1",
|
"pretty-bytes": "^7.1.0",
|
||||||
"raw-body": "^3.0.0",
|
"raw-body": "^3.0.2",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.4",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.4",
|
||||||
"react-i18next": "^15.5.3",
|
"react-i18next": "^15.5.3",
|
||||||
"react-icons": "^5.4.0",
|
"react-icons": "^5.6.0",
|
||||||
"recharts": "^2.15.3",
|
"recharts": "^3.1.2",
|
||||||
"swr": "^2.3.3",
|
"swr": "^2.4.1",
|
||||||
"systeminformation": "^5.27.7",
|
"systeminformation": "^5.30.8",
|
||||||
"tough-cookie": "^5.1.2",
|
"tough-cookie": "^6.0.0",
|
||||||
"urbackup-server-api": "^0.8.9",
|
"urbackup-server-api": "^0.92.2",
|
||||||
"winston": "^3.17.0",
|
"winston": "^3.19.0",
|
||||||
|
"ws": "^8.18.3",
|
||||||
"xml-js": "^1.6.11"
|
"xml-js": "^1.6.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@eslint/compat": "^2.0.2",
|
||||||
|
"@eslint/eslintrc": "^3.3.3",
|
||||||
|
"@eslint/js": "^9.39.2",
|
||||||
"@tailwindcss/forms": "^0.5.10",
|
"@tailwindcss/forms": "^0.5.10",
|
||||||
"@tailwindcss/postcss": "^4.0.9",
|
"@tailwindcss/postcss": "^4.1.18",
|
||||||
|
"@testing-library/jest-dom": "^6.8.0",
|
||||||
|
"@testing-library/react": "^16.3.0",
|
||||||
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
"eslint": "^9.25.1",
|
"eslint": "^9.25.1",
|
||||||
"eslint-config-next": "^15.2.4",
|
"eslint-config-next": "^15.5.11",
|
||||||
"eslint-config-prettier": "^10.1.1",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-plugin-import": "^2.32.0",
|
"eslint-plugin-import": "^2.32.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint-plugin-prettier": "^5.5.1",
|
"eslint-plugin-prettier": "^5.5.5",
|
||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
"eslint-plugin-react-hooks": "^5.2.0",
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
|
"jsdom": "^28.1.0",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.8.1",
|
||||||
"prettier-plugin-organize-imports": "^4.1.0",
|
"prettier-plugin-organize-imports": "^4.3.0",
|
||||||
"tailwind-scrollbar": "^4.0.2",
|
"tailwind-scrollbar": "^4.0.2",
|
||||||
"tailwindcss": "^4.0.9",
|
"tailwindcss": "^4.1.18",
|
||||||
"typescript": "^5.7.3"
|
"typescript": "^5.7.3",
|
||||||
|
"vitest": "^3.2.4"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"osx-temperature-sensor": "^1.0.8"
|
"osx-temperature-sensor": "^1.0.8"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@10.8.1",
|
|
||||||
"devEngines": {
|
|
||||||
"packageManager": {
|
|
||||||
"name": "pnpm",
|
|
||||||
"version": "10.8.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
|
"@tailwindcss/oxide",
|
||||||
|
"osx-temperature-sensor",
|
||||||
"sharp"
|
"sharp"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
3709
pnpm-lock.yaml
generated
3709
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Wag asseblief",
|
"wait": "Wag asseblief",
|
||||||
"empty_data": "Substelsel status onbekend"
|
"empty_data": "Substelsel status onbekend"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Liedjies"
|
"songs": "Liedjies"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Speel",
|
||||||
|
"transcoding": "Transkodering",
|
||||||
|
"bitrate": "Bistempo",
|
||||||
|
"no_active": "Geen Aktiewe Strome",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Reekse",
|
||||||
|
"episodes": "Episode",
|
||||||
|
"songs": "Liedjies"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Vanlyn af",
|
"offline": "Vanlyn af",
|
||||||
"offline_alt": "Vanlyn af",
|
"offline_alt": "Vanlyn af",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "Geen aktiewe strome nie",
|
"no_active": "Geen aktiewe strome nie",
|
||||||
"plex_connection_error": "Gaan Plex-verbinding Na"
|
"plex_connection_error": "Gaan Plex-verbinding Na"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "Geen Aktiewe Strome",
|
||||||
|
"streams": "Uitsendings",
|
||||||
|
"transcodes": "Transkodering",
|
||||||
|
"directplay": "Direkte Speel",
|
||||||
|
"bitrate": "Bistempo"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Gekoppelde APs",
|
"connectedAp": "Gekoppelde APs",
|
||||||
"activeUser": "Aktiewe toestelle",
|
"activeUser": "Aktiewe toestelle",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Goedgekeur",
|
"approved": "Goedgekeur",
|
||||||
"available": "Beskikbaar"
|
"available": "Beskikbaar"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Afwagtend",
|
"pending": "Afwagtend",
|
||||||
"approved": "Goedgekeur",
|
"approved": "Goedgekeur",
|
||||||
"available": "Beskikbaar"
|
"available": "Beskikbaar",
|
||||||
},
|
"completed": "Afgehandel",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Afwagtend",
|
|
||||||
"processing": "Verwerking",
|
"processing": "Verwerking",
|
||||||
"approved": "Goedgekeur",
|
"issues": "Oop Kwessies"
|
||||||
"available": "Beskikbaar"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Totaal",
|
"total": "Totaal",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Op",
|
"up": "Op",
|
||||||
"pending": "Afwagtend",
|
"pending": "Afwagtend",
|
||||||
"down": "Af"
|
"down": "Af",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Nuut",
|
"new": "Nuut",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inmandjie",
|
"inbox": "Inmandjie",
|
||||||
"total": "Totaal"
|
"total": "Totaal"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Bronne",
|
||||||
|
"targets": "Teikens",
|
||||||
|
"traffic": "Verkeer",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Uit"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Batterylading",
|
"battery_charge": "Batterylading",
|
||||||
"ups_load": "SVE-lading",
|
"ups_load": "SVE-lading",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Optyd",
|
"uptime": "Optyd",
|
||||||
"volumeAvailable": "Beskikbaar"
|
"volumeAvailable": "Beskikbaar"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Kanale",
|
||||||
|
"streams": "Uitsendings"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Reekse",
|
"series": "Reekse",
|
||||||
"issues": "Kwessies",
|
"issues": "Kwessies",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Vandag",
|
"gross_percent_today": "Vandag",
|
||||||
"gross_percent_1y": "Een jaar",
|
"gross_percent_1y": "Een jaar",
|
||||||
"gross_percent_max": "Alle tyd"
|
"gross_percent_max": "Alle tyd",
|
||||||
|
"net_worth": "Netto Waarde"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podsendinge",
|
"podcasts": "Podsendinge",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Kategorieë",
|
"categories": "Kategorieë",
|
||||||
"series": "Reekse"
|
"series": "Reekse"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Biblioteke",
|
||||||
|
"books": "Boeke",
|
||||||
|
"reading": "Lees",
|
||||||
|
"finished": "Klaar"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Tou",
|
"downloadCount": "Tou",
|
||||||
"downloadBytesRemaining": "Oorblywende",
|
"downloadBytesRemaining": "Oorblywende",
|
||||||
@@ -1073,15 +1113,77 @@
|
|||||||
"containers": "Houers"
|
"containers": "Houers"
|
||||||
},
|
},
|
||||||
"filebrowser": {
|
"filebrowser": {
|
||||||
"available": "Available",
|
"available": "Beskikbaar",
|
||||||
"used": "Used",
|
"used": "Gebruik",
|
||||||
"total": "Total"
|
"total": "Totaal"
|
||||||
},
|
},
|
||||||
"wallos": {
|
"wallos": {
|
||||||
"activeSubscriptions": "Subscriptions",
|
"activeSubscriptions": "Intekeninge",
|
||||||
"thisMonthlyCost": "This Month",
|
"thisMonthlyCost": "Hierdie Maand",
|
||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Volgende Maand",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Vorige Maand",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Volgende paaiement"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Begin",
|
||||||
|
"STOPPED": "Gestop",
|
||||||
|
"NEW_ARRAY": "Nuwe Skikking",
|
||||||
|
"RECON_DISK": "Rekonstruksie van Skyf",
|
||||||
|
"DISABLE_DISK": "Skyf Gedeaktiveer",
|
||||||
|
"SWAP_DSBL": "Ruil Gedeaktiveer",
|
||||||
|
"INVALID_EXPANSION": "Ongeldige Uitbreiding",
|
||||||
|
"PARITY_NOT_BIGGEST": "Pariteit nie die Grootste nie",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Te Veel Ontbrekende Skywe",
|
||||||
|
"NEW_DISK_TOO_SMALL": "Nuwe Skyf te Klein",
|
||||||
|
"NO_DATA_DISKS": "Geen Data Skywe",
|
||||||
|
"notifications": "Kennisgewings",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "SVE",
|
||||||
|
"memoryUsed": "Geheue Gebruik",
|
||||||
|
"memoryAvailable": "Geheue Beskikbaar",
|
||||||
|
"arrayUsed": "Skikking Gebruik",
|
||||||
|
"arrayFree": "Skikking Vry",
|
||||||
|
"poolUsed": "{{pool}} Gebruik",
|
||||||
|
"poolFree": "{{pool}} Vry"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Planne",
|
||||||
|
"num_success_30": "Suksesse",
|
||||||
|
"num_failure_30": "Mislukkings",
|
||||||
|
"num_success_latest": "Slaag",
|
||||||
|
"num_failure_latest": "Mislukking",
|
||||||
|
"bytes_added_30": "Grepe bygevoeg"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Liedjies",
|
||||||
|
"time": "Tyd",
|
||||||
|
"artists": "Kunstenaars"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Houers",
|
||||||
|
"images": "Beelde",
|
||||||
|
"image_updates": "Beeldopdaterings",
|
||||||
|
"images_unused": "Ongebruik",
|
||||||
|
"environment_required": "Omgewings-ID Vereis"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Lopend",
|
||||||
|
"stopped": "Gestop",
|
||||||
|
"cpu": "SVE",
|
||||||
|
"memory": "Geheue",
|
||||||
|
"images": "Beelde",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Vandag se byeenkomste",
|
||||||
|
"pending_updates": "Hangende opdaterings",
|
||||||
|
"stacks": "Stapels",
|
||||||
|
"paused": "Onderbreek",
|
||||||
|
"total": "Totaal",
|
||||||
|
"environment_not_found": "Omgewing Nie Gevind Nie"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Geëet",
|
||||||
|
"burned": "Verbrand",
|
||||||
|
"remaining": "Oorblywende",
|
||||||
|
"steps": "Stappe"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "حالة النظام الفرعي غير معروفة"
|
"empty_data": "حالة النظام الفرعي غير معروفة"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "استقبال",
|
"rx": "استقبال",
|
||||||
"tx": "ارسال",
|
"tx": "ارسال",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "حلقات",
|
"episodes": "حلقات",
|
||||||
"songs": "أغاني"
|
"songs": "أغاني"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "تحقق من الاتصال بـ Plex"
|
"plex_connection_error": "تحقق من الاتصال بـ Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "المتصلة APs",
|
"connectedAp": "المتصلة APs",
|
||||||
"activeUser": "الأجهزة النشطة",
|
"activeUser": "الأجهزة النشطة",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "مصدق",
|
"approved": "مصدق",
|
||||||
"available": "متاح"
|
"available": "متاح"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "معالجة",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "جديد(ة)",
|
"new": "جديد(ة)",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "صندوق الوارد",
|
"inbox": "صندوق الوارد",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "شحن البطارية",
|
"battery_charge": "شحن البطارية",
|
||||||
"ups_load": "حمل UPS",
|
"ups_load": "حمل UPS",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "المُشكِلات",
|
"issues": "المُشكِلات",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "سنة",
|
"gross_percent_1y": "سنة",
|
||||||
"gross_percent_max": "كل الوقت"
|
"gross_percent_max": "كل الوقت",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "بودكاست",
|
"podcasts": "بودكاست",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,9 +63,14 @@
|
|||||||
"wlan_users": "WLAN Потребители",
|
"wlan_users": "WLAN Потребители",
|
||||||
"up": "UP",
|
"up": "UP",
|
||||||
"down": "DOWN",
|
"down": "DOWN",
|
||||||
"wait": "Please wait",
|
"wait": "Моля изчакайте",
|
||||||
"empty_data": "Неизвестен статус на подсистема"
|
"empty_data": "Неизвестен статус на подсистема"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "ПЧ",
|
"rx": "ПЧ",
|
||||||
"tx": "ИЗ",
|
"tx": "ИЗ",
|
||||||
@@ -83,7 +88,7 @@
|
|||||||
"partial": "Частично"
|
"partial": "Частично"
|
||||||
},
|
},
|
||||||
"ping": {
|
"ping": {
|
||||||
"error": "Error",
|
"error": "Грешка",
|
||||||
"ping": "Пинг",
|
"ping": "Пинг",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
@@ -91,11 +96,11 @@
|
|||||||
},
|
},
|
||||||
"siteMonitor": {
|
"siteMonitor": {
|
||||||
"http_status": "HTTP статус",
|
"http_status": "HTTP статус",
|
||||||
"error": "Error",
|
"error": "Грешка",
|
||||||
"response": "Отговор",
|
"response": "Отговор",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"not_available": "Not Available"
|
"not_available": "Не е налично"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
"playing": "Възпроизвежда",
|
"playing": "Възпроизвежда",
|
||||||
@@ -107,11 +112,21 @@
|
|||||||
"episodes": "Епизоди",
|
"episodes": "Епизоди",
|
||||||
"songs": "Песни"
|
"songs": "Песни"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
"online": "Онлайн",
|
"online": "Онлайн",
|
||||||
"total": "Total",
|
"total": "Общо",
|
||||||
"unknown": "Unknown"
|
"unknown": "Unknown"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
@@ -133,7 +148,7 @@
|
|||||||
"unread": "Непрочетени"
|
"unread": "Непрочетени"
|
||||||
},
|
},
|
||||||
"fritzbox": {
|
"fritzbox": {
|
||||||
"connectionStatus": "Status",
|
"connectionStatus": "Статус",
|
||||||
"connectionStatusUnconfigured": "Неконфигуриран",
|
"connectionStatusUnconfigured": "Неконфигуриран",
|
||||||
"connectionStatusConnecting": "Свързване",
|
"connectionStatusConnecting": "Свързване",
|
||||||
"connectionStatusAuthenticating": "Удостоверяване",
|
"connectionStatusAuthenticating": "Удостоверяване",
|
||||||
@@ -141,7 +156,7 @@
|
|||||||
"connectionStatusDisconnecting": "Прекъсване на връзката",
|
"connectionStatusDisconnecting": "Прекъсване на връзката",
|
||||||
"connectionStatusDisconnected": "Не е свързан",
|
"connectionStatusDisconnected": "Не е свързан",
|
||||||
"connectionStatusConnected": "Свързан",
|
"connectionStatusConnected": "Свързан",
|
||||||
"uptime": "Uptime",
|
"uptime": "Време на работа",
|
||||||
"maxDown": "Макс сваляне",
|
"maxDown": "Макс сваляне",
|
||||||
"maxUp": "Макс качване",
|
"maxUp": "Макс качване",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
@@ -170,10 +185,17 @@
|
|||||||
"tautulli": {
|
"tautulli": {
|
||||||
"playing": "Playing",
|
"playing": "Playing",
|
||||||
"transcoding": "Transcoding",
|
"transcoding": "Transcoding",
|
||||||
"bitrate": "Bitrate",
|
"bitrate": "Битрейт",
|
||||||
"no_active": "No Active Streams",
|
"no_active": "Няма активни потоци",
|
||||||
"plex_connection_error": "Провери връзка с Plex"
|
"plex_connection_error": "Провери връзка с Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Свързани точки",
|
"connectedAp": "Свързани точки",
|
||||||
"activeUser": "Активни устройства",
|
"activeUser": "Активни устройства",
|
||||||
@@ -189,7 +211,7 @@
|
|||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Активни Потоци",
|
"streams": "Активни Потоци",
|
||||||
"albums": "Албуми",
|
"albums": "Албуми",
|
||||||
"movies": "Movies",
|
"movies": "Филми",
|
||||||
"tv": "Сериали"
|
"tv": "Сериали"
|
||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Одобрен",
|
"approved": "Одобрен",
|
||||||
"available": "Наличен"
|
"available": "Наличен"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -361,8 +380,8 @@
|
|||||||
},
|
},
|
||||||
"trilium": {
|
"trilium": {
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"notesCount": "Notes",
|
"notesCount": "Бележки",
|
||||||
"dbSize": "Database Size",
|
"dbSize": "Размер на базата данни",
|
||||||
"unknown": "Unknown"
|
"unknown": "Unknown"
|
||||||
},
|
},
|
||||||
"navidrome": {
|
"navidrome": {
|
||||||
@@ -372,7 +391,7 @@
|
|||||||
"npm": {
|
"npm": {
|
||||||
"enabled": "Активирано",
|
"enabled": "Активирано",
|
||||||
"disabled": "Деактивирано",
|
"disabled": "Деактивирано",
|
||||||
"total": "Total"
|
"total": "Общо"
|
||||||
},
|
},
|
||||||
"coinmarketcap": {
|
"coinmarketcap": {
|
||||||
"configure": "Настрой за следене една или повече крипто валути",
|
"configure": "Настрой за следене една или повече крипто валути",
|
||||||
@@ -383,7 +402,7 @@
|
|||||||
},
|
},
|
||||||
"gotify": {
|
"gotify": {
|
||||||
"apps": "Приложения",
|
"apps": "Приложения",
|
||||||
"clients": "Clients",
|
"clients": "Клиенти",
|
||||||
"messages": "Съобщения"
|
"messages": "Съобщения"
|
||||||
},
|
},
|
||||||
"prowlarr": {
|
"prowlarr": {
|
||||||
@@ -404,7 +423,7 @@
|
|||||||
"transferRate": "Rate"
|
"transferRate": "Rate"
|
||||||
},
|
},
|
||||||
"mastodon": {
|
"mastodon": {
|
||||||
"user_count": "Users",
|
"user_count": "Потребители",
|
||||||
"status_count": "Posts",
|
"status_count": "Posts",
|
||||||
"domain_count": "Domains"
|
"domain_count": "Domains"
|
||||||
},
|
},
|
||||||
@@ -415,17 +434,17 @@
|
|||||||
},
|
},
|
||||||
"minecraft": {
|
"minecraft": {
|
||||||
"players": "Играчи",
|
"players": "Играчи",
|
||||||
"version": "Version",
|
"version": "Версия",
|
||||||
"status": "Status",
|
"status": "Статус",
|
||||||
"up": "Online",
|
"up": "Онлайн",
|
||||||
"down": "Offline"
|
"down": "Офлайн"
|
||||||
},
|
},
|
||||||
"miniflux": {
|
"miniflux": {
|
||||||
"read": "Read",
|
"read": "Read",
|
||||||
"unread": "Unread"
|
"unread": "Unread"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Users",
|
"users": "Потребители",
|
||||||
"loginsLast24H": "Logins (24h)",
|
"loginsLast24H": "Logins (24h)",
|
||||||
"failedLoginsLast24H": "Failed Logins (24h)"
|
"failedLoginsLast24H": "Failed Logins (24h)"
|
||||||
},
|
},
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Нови",
|
"new": "Нови",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Входящи",
|
"inbox": "Входящи",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Заряд на батерията",
|
"battery_charge": "Заряд на батерията",
|
||||||
"ups_load": "Натоварване на UPS",
|
"ups_load": "Натоварване на UPS",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Издания",
|
"issues": "Издания",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "Една година",
|
"gross_percent_1y": "Една година",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Подкасти",
|
"podcasts": "Подкасти",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,11 +61,16 @@
|
|||||||
"wlan_devices": "Dispositius WLAN",
|
"wlan_devices": "Dispositius WLAN",
|
||||||
"lan_users": "Usuaris LAN",
|
"lan_users": "Usuaris LAN",
|
||||||
"wlan_users": "Usuaris WLAN",
|
"wlan_users": "Usuaris WLAN",
|
||||||
"up": "UP",
|
"up": "ACTIU",
|
||||||
"down": "INACTIU",
|
"down": "INACTIU",
|
||||||
"wait": "Si us plau espera",
|
"wait": "Si us plau espera",
|
||||||
"empty_data": "Estat del subsistema desconegut"
|
"empty_data": "Estat del subsistema desconegut"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "Rebut",
|
"rx": "Rebut",
|
||||||
"tx": "Transmès",
|
"tx": "Transmès",
|
||||||
@@ -93,8 +98,8 @@
|
|||||||
"http_status": "Estat HTTP",
|
"http_status": "Estat HTTP",
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
"response": "Resposta",
|
"response": "Resposta",
|
||||||
"down": "Down",
|
"down": "Inactiu",
|
||||||
"up": "Up",
|
"up": "Actiu",
|
||||||
"not_available": "No disponible"
|
"not_available": "No disponible"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
@@ -107,12 +112,22 @@
|
|||||||
"episodes": "Episodis",
|
"episodes": "Episodis",
|
||||||
"songs": "Cançons"
|
"songs": "Cançons"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Reproduïnt",
|
||||||
|
"transcoding": "Transcodificant",
|
||||||
|
"bitrate": "Taxa de bits",
|
||||||
|
"no_active": "Sense reproduccions actives",
|
||||||
|
"movies": "Pel·lícules",
|
||||||
|
"series": "Sèries",
|
||||||
|
"episodes": "Episodis",
|
||||||
|
"songs": "Cançons"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Desconnectat",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Desconnectat",
|
||||||
"online": "En línia",
|
"online": "En línia",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"unknown": "Unknown"
|
"unknown": "Desconegut"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Producció",
|
"pv_power": "Producció",
|
||||||
@@ -133,7 +148,7 @@
|
|||||||
"unread": "Sense llegir"
|
"unread": "Sense llegir"
|
||||||
},
|
},
|
||||||
"fritzbox": {
|
"fritzbox": {
|
||||||
"connectionStatus": "Status",
|
"connectionStatus": "Estat",
|
||||||
"connectionStatusUnconfigured": "Sense configurar",
|
"connectionStatusUnconfigured": "Sense configurar",
|
||||||
"connectionStatusConnecting": "Connectant",
|
"connectionStatusConnecting": "Connectant",
|
||||||
"connectionStatusAuthenticating": "Autenticant",
|
"connectionStatusAuthenticating": "Autenticant",
|
||||||
@@ -141,11 +156,11 @@
|
|||||||
"connectionStatusDisconnecting": "Desconnectant",
|
"connectionStatusDisconnecting": "Desconnectant",
|
||||||
"connectionStatusDisconnected": "Desconnectat",
|
"connectionStatusDisconnected": "Desconnectat",
|
||||||
"connectionStatusConnected": "Connectat",
|
"connectionStatusConnected": "Connectat",
|
||||||
"uptime": "Uptime",
|
"uptime": "Temps en funcionament",
|
||||||
"maxDown": "Màx. Descàrrega",
|
"maxDown": "Màx. Descàrrega",
|
||||||
"maxUp": "Màx. Càrrega",
|
"maxUp": "Màx. Càrrega",
|
||||||
"down": "Down",
|
"down": "Inactiu",
|
||||||
"up": "Up",
|
"up": "Actiu",
|
||||||
"received": "Rebuts",
|
"received": "Rebuts",
|
||||||
"sent": "Enviats",
|
"sent": "Enviats",
|
||||||
"externalIPAddress": "IP ext.",
|
"externalIPAddress": "IP ext.",
|
||||||
@@ -168,17 +183,24 @@
|
|||||||
"passes": "Aprovat"
|
"passes": "Aprovat"
|
||||||
},
|
},
|
||||||
"tautulli": {
|
"tautulli": {
|
||||||
"playing": "Playing",
|
"playing": "Reproduïnt",
|
||||||
"transcoding": "Transcoding",
|
"transcoding": "Transcodificant",
|
||||||
"bitrate": "Bitrate",
|
"bitrate": "Taxa de bits",
|
||||||
"no_active": "No Active Streams",
|
"no_active": "Sense reproduccions actives",
|
||||||
"plex_connection_error": "Comprova la connexió de Plex"
|
"plex_connection_error": "Comprova la connexió de Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "Sense reproduccions actives",
|
||||||
|
"streams": "Transmissions",
|
||||||
|
"transcodes": "Transcodificacions",
|
||||||
|
"directplay": "Reproducció directa",
|
||||||
|
"bitrate": "Taxa de bits"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "AP connectats",
|
"connectedAp": "AP connectats",
|
||||||
"activeUser": "Dispositius actius",
|
"activeUser": "Dispositius actius",
|
||||||
"alerts": "Alertes",
|
"alerts": "Alertes",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Pasarel·les connectades",
|
||||||
"connectedSwitches": "Conmutadors connectats"
|
"connectedSwitches": "Conmutadors connectats"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
@@ -189,24 +211,24 @@
|
|||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Transmissions actives",
|
"streams": "Transmissions actives",
|
||||||
"albums": "Àlbums",
|
"albums": "Àlbums",
|
||||||
"movies": "Movies",
|
"movies": "Pel·lícules",
|
||||||
"tv": "Sèries"
|
"tv": "Sèries"
|
||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
"rate": "Rate",
|
"rate": "Taxa",
|
||||||
"queue": "Cua",
|
"queue": "Cua",
|
||||||
"timeleft": "Temps restant"
|
"timeleft": "Temps restant"
|
||||||
},
|
},
|
||||||
"rutorrent": {
|
"rutorrent": {
|
||||||
"active": "Actiu",
|
"active": "Actiu",
|
||||||
"upload": "Upload",
|
"upload": "Pujada",
|
||||||
"download": "Download"
|
"download": "Baixada"
|
||||||
},
|
},
|
||||||
"transmission": {
|
"transmission": {
|
||||||
"download": "Download",
|
"download": "Baixada",
|
||||||
"upload": "Upload",
|
"upload": "Pujada",
|
||||||
"leech": "Leech",
|
"leech": "Sangonera",
|
||||||
"seed": "Seed"
|
"seed": "Sembrat"
|
||||||
},
|
},
|
||||||
"qbittorrent": {
|
"qbittorrent": {
|
||||||
"download": "Download",
|
"download": "Download",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Aprovat",
|
"approved": "Aprovat",
|
||||||
"available": "Disponible"
|
"available": "Disponible"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "Processant",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -312,10 +331,10 @@
|
|||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
"suwayomi": {
|
"suwayomi": {
|
||||||
"download": "Downloaded",
|
"download": "Descarregat",
|
||||||
"nondownload": "No descarregat",
|
"nondownload": "No descarregat",
|
||||||
"read": "Read",
|
"read": "Llegits",
|
||||||
"unread": "Unread",
|
"unread": "No llegits",
|
||||||
"downloadedread": "Descarregat i llegit",
|
"downloadedread": "Descarregat i llegit",
|
||||||
"downloadedunread": "Descarregat i per llegir",
|
"downloadedunread": "Descarregat i per llegir",
|
||||||
"nondownloadedread": "No descarregat i llegit",
|
"nondownloadedread": "No descarregat i llegit",
|
||||||
@@ -336,7 +355,7 @@
|
|||||||
"ago": "Fa {{value}}"
|
"ago": "Fa {{value}}"
|
||||||
},
|
},
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "Queries",
|
"totalQueries": "Consultes",
|
||||||
"totalNoError": "Èxits",
|
"totalNoError": "Èxits",
|
||||||
"totalServerFailure": "Fallades",
|
"totalServerFailure": "Fallades",
|
||||||
"totalNxDomain": "Dominis NX",
|
"totalNxDomain": "Dominis NX",
|
||||||
@@ -344,12 +363,12 @@
|
|||||||
"totalAuthoritative": "Autoritatiu",
|
"totalAuthoritative": "Autoritatiu",
|
||||||
"totalRecursive": "Recursiu",
|
"totalRecursive": "Recursiu",
|
||||||
"totalCached": "A la memòria cau",
|
"totalCached": "A la memòria cau",
|
||||||
"totalBlocked": "Blocked",
|
"totalBlocked": "Bloquejats",
|
||||||
"totalDropped": "Abandonat",
|
"totalDropped": "Abandonat",
|
||||||
"totalClients": "Clients"
|
"totalClients": "Clients"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
"queue": "Queue",
|
"queue": "Cua",
|
||||||
"processed": "Processat",
|
"processed": "Processat",
|
||||||
"errored": "Error",
|
"errored": "Error",
|
||||||
"saved": "Estalviat"
|
"saved": "Estalviat"
|
||||||
@@ -360,13 +379,13 @@
|
|||||||
"middleware": "Intermediari"
|
"middleware": "Intermediari"
|
||||||
},
|
},
|
||||||
"trilium": {
|
"trilium": {
|
||||||
"version": "Version",
|
"version": "Versió",
|
||||||
"notesCount": "Notes",
|
"notesCount": "Notes",
|
||||||
"dbSize": "Database Size",
|
"dbSize": "Tamany de la base de dades",
|
||||||
"unknown": "Unknown"
|
"unknown": "Desconegut"
|
||||||
},
|
},
|
||||||
"navidrome": {
|
"navidrome": {
|
||||||
"nothing_streaming": "No Active Streams",
|
"nothing_streaming": "Sense reproduccions actives",
|
||||||
"please_wait": "Espereu si us plau"
|
"please_wait": "Espereu si us plau"
|
||||||
},
|
},
|
||||||
"npm": {
|
"npm": {
|
||||||
@@ -389,43 +408,43 @@
|
|||||||
"prowlarr": {
|
"prowlarr": {
|
||||||
"enableIndexers": "Indexadors",
|
"enableIndexers": "Indexadors",
|
||||||
"numberOfGrabs": "Captures",
|
"numberOfGrabs": "Captures",
|
||||||
"numberOfQueries": "Queries",
|
"numberOfQueries": "Consultes",
|
||||||
"numberOfFailGrabs": "Captures fallides",
|
"numberOfFailGrabs": "Captures fallides",
|
||||||
"numberOfFailQueries": "Consultes fallides"
|
"numberOfFailQueries": "Consultes fallides"
|
||||||
},
|
},
|
||||||
"jackett": {
|
"jackett": {
|
||||||
"configured": "Configurat",
|
"configured": "Configurat",
|
||||||
"errored": "Errored"
|
"errored": "Errors"
|
||||||
},
|
},
|
||||||
"strelaysrv": {
|
"strelaysrv": {
|
||||||
"numActiveSessions": "Sessions",
|
"numActiveSessions": "Sessions",
|
||||||
"numConnections": "Connexions",
|
"numConnections": "Connexions",
|
||||||
"dataRelayed": "Transmès",
|
"dataRelayed": "Transmès",
|
||||||
"transferRate": "Rate"
|
"transferRate": "Taxa"
|
||||||
},
|
},
|
||||||
"mastodon": {
|
"mastodon": {
|
||||||
"user_count": "Users",
|
"user_count": "Usuaris",
|
||||||
"status_count": "Publicacions",
|
"status_count": "Publicacions",
|
||||||
"domain_count": "Dominis"
|
"domain_count": "Dominis"
|
||||||
},
|
},
|
||||||
"medusa": {
|
"medusa": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Volguts",
|
||||||
"queued": "Queued",
|
"queued": "Encuat",
|
||||||
"series": "Series"
|
"series": "Sèries"
|
||||||
},
|
},
|
||||||
"minecraft": {
|
"minecraft": {
|
||||||
"players": "Jugadors",
|
"players": "Jugadors",
|
||||||
"version": "Versió",
|
"version": "Versió",
|
||||||
"status": "Status",
|
"status": "Estat",
|
||||||
"up": "Online",
|
"up": "En línia",
|
||||||
"down": "Offline"
|
"down": "Fora de línia"
|
||||||
},
|
},
|
||||||
"miniflux": {
|
"miniflux": {
|
||||||
"read": "Llegit",
|
"read": "Llegit",
|
||||||
"unread": "Unread"
|
"unread": "No llegits"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Users",
|
"users": "Usuaris",
|
||||||
"loginsLast24H": "Inicis de sessió (24h)",
|
"loginsLast24H": "Inicis de sessió (24h)",
|
||||||
"failedLoginsLast24H": "Errors d'inici de sessió (24h)"
|
"failedLoginsLast24H": "Errors d'inici de sessió (24h)"
|
||||||
},
|
},
|
||||||
@@ -437,19 +456,19 @@
|
|||||||
},
|
},
|
||||||
"glances": {
|
"glances": {
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"load": "Load",
|
"load": "Càrrega",
|
||||||
"wait": "Please wait",
|
"wait": "Si us plau espera",
|
||||||
"temp": "TEMP",
|
"temp": "TEMP",
|
||||||
"_temp": "Temp",
|
"_temp": "Temp",
|
||||||
"warn": "Avís",
|
"warn": "Avís",
|
||||||
"uptime": "UP",
|
"uptime": "ACTIU",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Lliure",
|
||||||
"used": "Used",
|
"used": "Utilitzat",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h",
|
"hours": "h",
|
||||||
"crit": "Crític",
|
"crit": "Crític",
|
||||||
"read": "Read",
|
"read": "Lectura",
|
||||||
"write": "Escriptura",
|
"write": "Escriptura",
|
||||||
"gpu": "GPU",
|
"gpu": "GPU",
|
||||||
"mem": "Mem",
|
"mem": "Mem",
|
||||||
@@ -470,25 +489,25 @@
|
|||||||
"1-day": "Majorment assolellat",
|
"1-day": "Majorment assolellat",
|
||||||
"1-night": "Majorment clar",
|
"1-night": "Majorment clar",
|
||||||
"2-day": "Parcialment ennuvolat",
|
"2-day": "Parcialment ennuvolat",
|
||||||
"2-night": "Partly Cloudy",
|
"2-night": "Parcialment ennuvolat",
|
||||||
"3-day": "Ennuvolat",
|
"3-day": "Ennuvolat",
|
||||||
"3-night": "Cloudy",
|
"3-night": "Ennuvolat",
|
||||||
"45-day": "Boirós",
|
"45-day": "Boirós",
|
||||||
"45-night": "Foggy",
|
"45-night": "Emboirat",
|
||||||
"48-day": "Foggy",
|
"48-day": "Boirós",
|
||||||
"48-night": "Foggy",
|
"48-night": "Emboirat",
|
||||||
"51-day": "Ruixats lleugers",
|
"51-day": "Ruixats lleugers",
|
||||||
"51-night": "Light Drizzle",
|
"51-night": "Plugim lleuger",
|
||||||
"53-day": "Ruixat",
|
"53-day": "Ruixat",
|
||||||
"53-night": "Drizzle",
|
"53-night": "Plugim",
|
||||||
"55-day": "Ruixat intens",
|
"55-day": "Ruixat intens",
|
||||||
"55-night": "Heavy Drizzle",
|
"55-night": "Plovisqueig intens",
|
||||||
"56-day": "Lleuger ruixat gelat",
|
"56-day": "Lleuger ruixat gelat",
|
||||||
"56-night": "Light Freezing Drizzle",
|
"56-night": "Lleuger ruixat gelat",
|
||||||
"57-day": "Ruixat gelat",
|
"57-day": "Ruixat gelat",
|
||||||
"57-night": "Freezing Drizzle",
|
"57-night": "Plugim gelat",
|
||||||
"61-day": "Pluja lleugera",
|
"61-day": "Pluja lleugera",
|
||||||
"61-night": "Light Rain",
|
"61-night": "Pluja lleugera",
|
||||||
"63-day": "Pluja",
|
"63-day": "Pluja",
|
||||||
"63-night": "Rain",
|
"63-night": "Rain",
|
||||||
"65-day": "Pluja intensa",
|
"65-day": "Pluja intensa",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Nou",
|
"new": "Nou",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Safata d'entrada",
|
"inbox": "Safata d'entrada",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Càrrega de la bateria",
|
"battery_charge": "Càrrega de la bateria",
|
||||||
"ups_load": "Càrrega del SAI",
|
"ups_load": "Càrrega del SAI",
|
||||||
@@ -613,12 +642,12 @@
|
|||||||
"mikrotik": {
|
"mikrotik": {
|
||||||
"cpuLoad": "Càrrega de CPU",
|
"cpuLoad": "Càrrega de CPU",
|
||||||
"memoryUsed": "Memoria en ús",
|
"memoryUsed": "Memoria en ús",
|
||||||
"uptime": "Uptime",
|
"uptime": "Temps en funcionament",
|
||||||
"numberOfLeases": "IPs assignades"
|
"numberOfLeases": "IPs assignades"
|
||||||
},
|
},
|
||||||
"xteve": {
|
"xteve": {
|
||||||
"streams_all": "Tots els streams",
|
"streams_all": "Tots els streams",
|
||||||
"streams_active": "Active Streams",
|
"streams_active": "Transmissions actives",
|
||||||
"streams_xepg": "Canals XEPG"
|
"streams_xepg": "Canals XEPG"
|
||||||
},
|
},
|
||||||
"opendtu": {
|
"opendtu": {
|
||||||
@@ -628,7 +657,7 @@
|
|||||||
"limit": "Límit"
|
"limit": "Límit"
|
||||||
},
|
},
|
||||||
"opnsense": {
|
"opnsense": {
|
||||||
"cpu": "CPU Load",
|
"cpu": "Càrrega de CPU",
|
||||||
"memory": "Memòria activa",
|
"memory": "Memòria activa",
|
||||||
"wanUpload": "Pujada WAN",
|
"wanUpload": "Pujada WAN",
|
||||||
"wanDownload": "Baixada WAN"
|
"wanDownload": "Baixada WAN"
|
||||||
@@ -640,21 +669,21 @@
|
|||||||
"layers": "Capes"
|
"layers": "Capes"
|
||||||
},
|
},
|
||||||
"octoprint": {
|
"octoprint": {
|
||||||
"printer_state": "Status",
|
"printer_state": "Estat",
|
||||||
"temp_tool": "Temperatura capçal",
|
"temp_tool": "Temperatura capçal",
|
||||||
"temp_bed": "Temperatura llit",
|
"temp_bed": "Temperatura llit",
|
||||||
"job_completion": "Finalització"
|
"job_completion": "Finalització"
|
||||||
},
|
},
|
||||||
"cloudflared": {
|
"cloudflared": {
|
||||||
"origin_ip": "IP Origen",
|
"origin_ip": "IP Origen",
|
||||||
"status": "Status"
|
"status": "Estat"
|
||||||
},
|
},
|
||||||
"pfsense": {
|
"pfsense": {
|
||||||
"load": "Càrrega mitjana",
|
"load": "Càrrega mitjana",
|
||||||
"memory": "Ús Memòria",
|
"memory": "Ús Memòria",
|
||||||
"wanStatus": "Estat WAN",
|
"wanStatus": "Estat WAN",
|
||||||
"up": "Up",
|
"up": "Actiu",
|
||||||
"down": "Down",
|
"down": "Inactiu",
|
||||||
"temp": "Temp",
|
"temp": "Temp",
|
||||||
"disk": "Ús Disc",
|
"disk": "Ús Disc",
|
||||||
"wanIP": "IP WAN"
|
"wanIP": "IP WAN"
|
||||||
@@ -666,54 +695,58 @@
|
|||||||
"memory_usage": "Memòria"
|
"memory_usage": "Memòria"
|
||||||
},
|
},
|
||||||
"immich": {
|
"immich": {
|
||||||
"users": "Users",
|
"users": "Usuaris",
|
||||||
"photos": "Fotos",
|
"photos": "Fotos",
|
||||||
"videos": "Videos",
|
"videos": "Vídeos",
|
||||||
"storage": "Emmagatzematge"
|
"storage": "Emmagatzematge"
|
||||||
},
|
},
|
||||||
"uptimekuma": {
|
"uptimekuma": {
|
||||||
"up": "Actius",
|
"up": "Actius",
|
||||||
"down": "Caiguts",
|
"down": "Caiguts",
|
||||||
"uptime": "Uptime",
|
"uptime": "Temps en funcionament",
|
||||||
"incident": "Incidència",
|
"incident": "Incidència",
|
||||||
"m": "m"
|
"m": "m"
|
||||||
},
|
},
|
||||||
"atsumeru": {
|
"atsumeru": {
|
||||||
"series": "Series",
|
"series": "Sèries",
|
||||||
"archives": "Arxius",
|
"archives": "Arxius",
|
||||||
"chapters": "Capítols",
|
"chapters": "Capítols",
|
||||||
"categories": "Categories"
|
"categories": "Categories"
|
||||||
},
|
},
|
||||||
"komga": {
|
"komga": {
|
||||||
"libraries": "Biblioteques",
|
"libraries": "Biblioteques",
|
||||||
"series": "Series",
|
"series": "Sèries",
|
||||||
"books": "Books"
|
"books": "Llibres"
|
||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
"days": "Days",
|
"days": "Dies",
|
||||||
"uptime": "Uptime",
|
"uptime": "Temps en funcionament",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Disponible"
|
||||||
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Canals",
|
||||||
|
"streams": "Transmissions"
|
||||||
},
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Sèries",
|
||||||
"issues": "Problemes",
|
"issues": "Problemes",
|
||||||
"wanted": "Wanted"
|
"wanted": "Volguts"
|
||||||
},
|
},
|
||||||
"photoprism": {
|
"photoprism": {
|
||||||
"albums": "Albums",
|
"albums": "Àlbums",
|
||||||
"photos": "Photos",
|
"photos": "Fotos",
|
||||||
"videos": "Videos",
|
"videos": "Vídeos",
|
||||||
"people": "Gent"
|
"people": "Gent"
|
||||||
},
|
},
|
||||||
"fileflows": {
|
"fileflows": {
|
||||||
"queue": "Queue",
|
"queue": "Cua",
|
||||||
"processing": "Processing",
|
"processing": "Processant",
|
||||||
"processed": "Processed",
|
"processed": "Processat",
|
||||||
"time": "Temps"
|
"time": "Temps"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "Valor Net",
|
||||||
"budget": "Budget"
|
"budget": "Pressupost"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Taulells",
|
"dashboards": "Taulells",
|
||||||
@@ -730,11 +763,11 @@
|
|||||||
"numshares": "Elements compartits"
|
"numshares": "Elements compartits"
|
||||||
},
|
},
|
||||||
"kopia": {
|
"kopia": {
|
||||||
"status": "Status",
|
"status": "Estat",
|
||||||
"size": "Mida",
|
"size": "Mida",
|
||||||
"lastrun": "Darrera execució",
|
"lastrun": "Darrera execució",
|
||||||
"nextrun": "Següent execució",
|
"nextrun": "Següent execució",
|
||||||
"failed": "Failed"
|
"failed": "Error"
|
||||||
},
|
},
|
||||||
"unmanic": {
|
"unmanic": {
|
||||||
"active_workers": "Treballadors actius",
|
"active_workers": "Treballadors actius",
|
||||||
@@ -751,20 +784,21 @@
|
|||||||
"targets_total": "Objectius Totals"
|
"targets_total": "Objectius Totals"
|
||||||
},
|
},
|
||||||
"gatus": {
|
"gatus": {
|
||||||
"up": "Sites Up",
|
"up": "Actius",
|
||||||
"down": "Sites Down",
|
"down": "Caiguts",
|
||||||
"uptime": "Uptime"
|
"uptime": "Temps en funcionament"
|
||||||
},
|
},
|
||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Avui",
|
||||||
"gross_percent_1y": "Un any",
|
"gross_percent_1y": "Un any",
|
||||||
"gross_percent_max": "Sempre"
|
"gross_percent_max": "Sempre",
|
||||||
|
"net_worth": "Valor Net"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Pòdcasts",
|
"podcasts": "Pòdcasts",
|
||||||
"books": "Books",
|
"books": "Llibres",
|
||||||
"podcastsDuration": "Durada",
|
"podcastsDuration": "Durada",
|
||||||
"booksDuration": "Duration"
|
"booksDuration": "Durada"
|
||||||
},
|
},
|
||||||
"homeassistant": {
|
"homeassistant": {
|
||||||
"people_home": "Gent a casa",
|
"people_home": "Gent a casa",
|
||||||
@@ -773,17 +807,23 @@
|
|||||||
},
|
},
|
||||||
"whatsupdocker": {
|
"whatsupdocker": {
|
||||||
"monitoring": "Supervisió",
|
"monitoring": "Supervisió",
|
||||||
"updates": "Updates"
|
"updates": "Actualitzacions"
|
||||||
},
|
},
|
||||||
"calibreweb": {
|
"calibreweb": {
|
||||||
"books": "Books",
|
"books": "Llibres",
|
||||||
"authors": "Autors",
|
"authors": "Autors",
|
||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Sèries"
|
||||||
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Biblioteques",
|
||||||
|
"books": "Llibres",
|
||||||
|
"reading": "Llegint",
|
||||||
|
"finished": "Acabats"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Cua",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Restant",
|
||||||
"downloadTotalBytes": "Size",
|
"downloadTotalBytes": "Size",
|
||||||
"downloadSpeed": "Speed"
|
"downloadSpeed": "Speed"
|
||||||
},
|
},
|
||||||
@@ -955,17 +995,17 @@
|
|||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "Càmeres",
|
"cameras": "Càmeres",
|
||||||
"uptime": "Uptime",
|
"uptime": "Temps en funcionament",
|
||||||
"version": "Version"
|
"version": "Versió"
|
||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
"links": "Enllaços",
|
"links": "Enllaços",
|
||||||
"collections": "Col·leccions",
|
"collections": "Col·leccions",
|
||||||
"tags": "Tags"
|
"tags": "Etiquetes"
|
||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "No classificat",
|
"unclassified": "No classificat",
|
||||||
"information": "Information",
|
"information": "Informació",
|
||||||
"warning": "Avís",
|
"warning": "Avís",
|
||||||
"average": "Mitjana",
|
"average": "Mitjana",
|
||||||
"high": "Alt",
|
"high": "Alt",
|
||||||
@@ -986,22 +1026,22 @@
|
|||||||
"tasksInProgress": "Tasques en marxa"
|
"tasksInProgress": "Tasques en marxa"
|
||||||
},
|
},
|
||||||
"headscale": {
|
"headscale": {
|
||||||
"name": "Name",
|
"name": "Nom",
|
||||||
"address": "Address",
|
"address": "Adreça",
|
||||||
"last_seen": "Last Seen",
|
"last_seen": "Vist per darrera vegada",
|
||||||
"status": "Status",
|
"status": "Estat",
|
||||||
"online": "Online",
|
"online": "En línia",
|
||||||
"offline": "Offline"
|
"offline": "Desconnectat"
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Name",
|
"name": "Nom",
|
||||||
"systems": "Sistemes",
|
"systems": "Sistemes",
|
||||||
"up": "Up",
|
"up": "Actiu",
|
||||||
"down": "Down",
|
"down": "Inactiu",
|
||||||
"paused": "Paused",
|
"paused": "Pausat",
|
||||||
"pending": "Pending",
|
"pending": "Pendent",
|
||||||
"status": "Status",
|
"status": "Estat",
|
||||||
"updated": "Updated",
|
"updated": "Actualitzat",
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"memory": "MEM",
|
"memory": "MEM",
|
||||||
"disk": "Disc",
|
"disk": "Disc",
|
||||||
@@ -1011,34 +1051,34 @@
|
|||||||
"apps": "Apps",
|
"apps": "Apps",
|
||||||
"synced": "Sincronitzats",
|
"synced": "Sincronitzats",
|
||||||
"outOfSync": "Dessincronitzats",
|
"outOfSync": "Dessincronitzats",
|
||||||
"healthy": "Healthy",
|
"healthy": "Sa",
|
||||||
"degraded": "Degradats",
|
"degraded": "Degradats",
|
||||||
"progressing": "Progressant",
|
"progressing": "Progressant",
|
||||||
"missing": "Missing",
|
"missing": "Falten",
|
||||||
"suspended": "Suspesos"
|
"suspended": "Suspesos"
|
||||||
},
|
},
|
||||||
"spoolman": {
|
"spoolman": {
|
||||||
"loading": "Loading"
|
"loading": "Carregant"
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Grups",
|
"groups": "Grups",
|
||||||
"issues": "Issues",
|
"issues": "Problemes",
|
||||||
"merges": "Merge Requests",
|
"merges": "Merge Requests",
|
||||||
"projects": "Projectes"
|
"projects": "Projectes"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "Status",
|
"status": "Estat",
|
||||||
"load": "Load",
|
"load": "Càrrega",
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Càrrega de la bateria",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Temps restant"
|
||||||
},
|
},
|
||||||
"karakeep": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Marcadors",
|
||||||
"favorites": "Favorites",
|
"favorites": "Preferits",
|
||||||
"archived": "Archived",
|
"archived": "Arxivats",
|
||||||
"highlights": "Highlights",
|
"highlights": "Destacats",
|
||||||
"lists": "Lists",
|
"lists": "Llistes",
|
||||||
"tags": "Tags"
|
"tags": "Etiquetes"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
"slskStatus": "Network",
|
"slskStatus": "Network",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsystem status ukendt"
|
"empty_data": "Subsystem status ukendt"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episoder",
|
"episodes": "Episoder",
|
||||||
"songs": "Sange"
|
"songs": "Sange"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Tjek Plex-forbindelse"
|
"plex_connection_error": "Tjek Plex-forbindelse"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Forbundne APs",
|
"connectedAp": "Forbundne APs",
|
||||||
"activeUser": "Aktive enheder",
|
"activeUser": "Aktive enheder",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Godkendt",
|
"approved": "Godkendt",
|
||||||
"available": "Tilgængelig"
|
"available": "Tilgængelig"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "Behandler",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Ny",
|
"new": "Ny",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Indbakke",
|
"inbox": "Indbakke",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Batteriniveau",
|
"battery_charge": "Batteriniveau",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Problemer",
|
"issues": "Problemer",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "Et År",
|
"gross_percent_1y": "Et År",
|
||||||
"gross_percent_max": "Altid"
|
"gross_percent_max": "Altid",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,9 @@
|
|||||||
"free": "Frei",
|
"free": "Frei",
|
||||||
"used": "In Benutzung",
|
"used": "In Benutzung",
|
||||||
"load": "Last",
|
"load": "Last",
|
||||||
"temp": "TEMP",
|
"temp": "Temp",
|
||||||
"max": "Max",
|
"max": "Max",
|
||||||
"uptime": "BETRIEBSZEIT"
|
"uptime": "Betriebszeit"
|
||||||
},
|
},
|
||||||
"unifi": {
|
"unifi": {
|
||||||
"users": "Benutzer",
|
"users": "Benutzer",
|
||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Bitte warten",
|
"wait": "Bitte warten",
|
||||||
"empty_data": "Subsystem-Status unbekannt"
|
"empty_data": "Subsystem-Status unbekannt"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Gesund",
|
||||||
|
"degraded": "Beeinträchtigt",
|
||||||
|
"no_data": "Keine Speicherdaten verfügbar"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -93,8 +98,8 @@
|
|||||||
"http_status": "HTTP-Status",
|
"http_status": "HTTP-Status",
|
||||||
"error": "Fehler",
|
"error": "Fehler",
|
||||||
"response": "Antwort",
|
"response": "Antwort",
|
||||||
"down": "Online",
|
"down": "Offline",
|
||||||
"up": "Offline",
|
"up": "Online",
|
||||||
"not_available": "Nicht verfügbar"
|
"not_available": "Nicht verfügbar"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episoden",
|
"episodes": "Episoden",
|
||||||
"songs": "Songs"
|
"songs": "Songs"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Wiedergabe",
|
||||||
|
"transcoding": "Transkodierung",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "Keine aktiven Streams",
|
||||||
|
"movies": "Filme",
|
||||||
|
"series": "Serien",
|
||||||
|
"episodes": "Episoden",
|
||||||
|
"songs": "Titel"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "Keine aktiven Streams",
|
"no_active": "Keine aktiven Streams",
|
||||||
"plex_connection_error": "Prüfe Plex-Verbindung"
|
"plex_connection_error": "Prüfe Plex-Verbindung"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "Keine aktiven Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transkodieren",
|
||||||
|
"directplay": "Direkte Wiedergabe",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Verbundene APs",
|
"connectedAp": "Verbundene APs",
|
||||||
"activeUser": "Aktive Geräte",
|
"activeUser": "Aktive Geräte",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Genehmigt",
|
"approved": "Genehmigt",
|
||||||
"available": "Verfügbar"
|
"available": "Verfügbar"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Wartend",
|
"pending": "Ausstehend",
|
||||||
"approved": "Genehmigt",
|
"approved": "Bestätigt",
|
||||||
"available": "Verfügbar"
|
"available": "Verfügbar",
|
||||||
},
|
"completed": "Abgeschlossen",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Wartend",
|
|
||||||
"processing": "Wird verarbeitet",
|
"processing": "Wird verarbeitet",
|
||||||
"approved": "Genehmigt",
|
"issues": "Offene Probleme"
|
||||||
"available": "Verfügbar"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Online",
|
"up": "Online",
|
||||||
"pending": "Wartend",
|
"pending": "Wartend",
|
||||||
"down": "Offline"
|
"down": "Offline",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Neu",
|
"new": "Neu",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Posteingang",
|
"inbox": "Posteingang",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Seiten",
|
||||||
|
"resources": "Ressourcen",
|
||||||
|
"targets": "Ziele",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Akkuladung",
|
"battery_charge": "Akkuladung",
|
||||||
"ups_load": "USV-Auslastung",
|
"ups_load": "USV-Auslastung",
|
||||||
@@ -629,9 +658,9 @@
|
|||||||
},
|
},
|
||||||
"opnsense": {
|
"opnsense": {
|
||||||
"cpu": "CPU-Last",
|
"cpu": "CPU-Last",
|
||||||
"memory": "Aktiver RAM",
|
"memory": "RAM aktiv",
|
||||||
"wanUpload": "WAN-Upload",
|
"wanUpload": "WAN Up",
|
||||||
"wanDownload": "WAN-Download"
|
"wanDownload": "WAN Down"
|
||||||
},
|
},
|
||||||
"moonraker": {
|
"moonraker": {
|
||||||
"printer_state": "Druckerstatus",
|
"printer_state": "Druckerstatus",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Betriebszeit",
|
"uptime": "Betriebszeit",
|
||||||
"volumeAvailable": "Verfügbar"
|
"volumeAvailable": "Verfügbar"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Kanäle",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Serien",
|
"series": "Serien",
|
||||||
"issues": "Probleme",
|
"issues": "Probleme",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Heute",
|
"gross_percent_today": "Heute",
|
||||||
"gross_percent_1y": "Ein Jahr",
|
"gross_percent_1y": "Ein Jahr",
|
||||||
"gross_percent_max": "Gesamt"
|
"gross_percent_max": "Gesamt",
|
||||||
|
"net_worth": ""
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,11 +815,17 @@
|
|||||||
"categories": "Kategorien",
|
"categories": "Kategorien",
|
||||||
"series": "Serien"
|
"series": "Serien"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Bibliotheken",
|
||||||
|
"books": "Bücher",
|
||||||
|
"reading": "Am Lesen",
|
||||||
|
"finished": "Fertig"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Warteschlange",
|
"downloadCount": "Warteschlange",
|
||||||
"downloadBytesRemaining": "Verbleibend",
|
"downloadBytesRemaining": "Verbleibend",
|
||||||
"downloadTotalBytes": "Größe",
|
"downloadTotalBytes": "Größe",
|
||||||
"downloadSpeed": "Geschwindigkeit"
|
"downloadSpeed": "Datenrate"
|
||||||
},
|
},
|
||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Serien",
|
"seriesCount": "Serien",
|
||||||
@@ -996,8 +1036,8 @@
|
|||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"systems": "Systeme",
|
"systems": "Systeme",
|
||||||
"up": "Offline",
|
"up": "Up",
|
||||||
"down": "Offline",
|
"down": "Down",
|
||||||
"paused": "Pausiert",
|
"paused": "Pausiert",
|
||||||
"pending": "Wartend",
|
"pending": "Wartend",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Nächster Monat",
|
"nextMonthlyCost": "Nächster Monat",
|
||||||
"previousMonthlyCost": "Vorh. Monat",
|
"previousMonthlyCost": "Vorh. Monat",
|
||||||
"nextRenewingSubscription": "Nächste Zahlung"
|
"nextRenewingSubscription": "Nächste Zahlung"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Gestartet",
|
||||||
|
"STOPPED": "Angehalten",
|
||||||
|
"NEW_ARRAY": "Neues Array",
|
||||||
|
"RECON_DISK": "Festplatte wird neu aufgebaut",
|
||||||
|
"DISABLE_DISK": "Festplatte deaktiviert",
|
||||||
|
"SWAP_DSBL": "Swap deaktivieren",
|
||||||
|
"INVALID_EXPANSION": "Üngültige Erweiterung",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Zu viele fehlende Festplatten",
|
||||||
|
"NEW_DISK_TOO_SMALL": "Neue Festplatte zu klein",
|
||||||
|
"NO_DATA_DISKS": "Keine Datenträger",
|
||||||
|
"notifications": "Mitteilungen",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Speichernutzung",
|
||||||
|
"memoryAvailable": "Verfügbarer Speicher",
|
||||||
|
"arrayUsed": "Array verwendet",
|
||||||
|
"arrayFree": "Array frei",
|
||||||
|
"poolUsed": "{{pool}} verwendet",
|
||||||
|
"poolFree": "{{pool}} frei"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Pläne",
|
||||||
|
"num_success_30": "Erfolgreich",
|
||||||
|
"num_failure_30": "Fehlerhaft",
|
||||||
|
"num_success_latest": "Erfolgreich",
|
||||||
|
"num_failure_latest": "Fehlgeschlagen",
|
||||||
|
"bytes_added_30": "Bytes hinzugefügt"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Titel",
|
||||||
|
"time": "Zeit",
|
||||||
|
"artists": "Künstler"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Container",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image-Updates",
|
||||||
|
"images_unused": "Ungenutzt",
|
||||||
|
"environment_required": "Umgebungs-ID erforderlich"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Wird ausgeführt",
|
||||||
|
"stopped": "Gestoppt",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "RAM",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Heutige Ereignisse",
|
||||||
|
"pending_updates": "Ausstehende Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Pausiert",
|
||||||
|
"total": "Gesamt",
|
||||||
|
"environment_not_found": "Umgebung nicht gefunden"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "",
|
||||||
|
"burned": "Verbrannt",
|
||||||
|
"remaining": "Verbleibend",
|
||||||
|
"steps": "Schritte"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Άγνωστη κατάσταση υποσυστήματος"
|
"empty_data": "Άγνωστη κατάσταση υποσυστήματος"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Επεισόδια",
|
"episodes": "Επεισόδια",
|
||||||
"songs": "Τραγούδια"
|
"songs": "Τραγούδια"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Έλεγχος Σύνδεσης με Plex"
|
"plex_connection_error": "Έλεγχος Σύνδεσης με Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Συνδεδεμένα APs",
|
"connectedAp": "Συνδεδεμένα APs",
|
||||||
"activeUser": "Ενεργές συσκευές",
|
"activeUser": "Ενεργές συσκευές",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Εγκρίθηκε",
|
"approved": "Εγκρίθηκε",
|
||||||
"available": "Διαθέσιμο"
|
"available": "Διαθέσιμο"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "Σε επεξεργασία",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Εισερχόμενα",
|
"inbox": "Εισερχόμενα",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Issues",
|
"issues": "Issues",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "Ένας χρόνος",
|
"gross_percent_1y": "Ένας χρόνος",
|
||||||
"gross_percent_max": "Διαχρονικά"
|
"gross_percent_max": "Διαχρονικά",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Subsystem status unknown"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Songs"
|
"songs": "Songs"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Check Plex Connection"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Connected APs",
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Active devices",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Issues",
|
"issues": "Issues",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "One year",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsistemostatuso nekonata"
|
"empty_data": "Subsistemostatuso nekonata"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Epizodoj",
|
"episodes": "Epizodoj",
|
||||||
"songs": "Kantoj"
|
"songs": "Kantoj"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Check Plex Connection"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Connected APs",
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Active devices",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Aprobita",
|
"approved": "Aprobita",
|
||||||
"available": "Havebla"
|
"available": "Havebla"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Issues",
|
"issues": "Issues",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "One year",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Subsystem status unknown"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Abestiak"
|
"songs": "Abestiak"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Check Plex Connection"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Connected APs",
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Active devices",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Arazoak",
|
"issues": "Arazoak",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "One year",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Subsystem status unknown"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Songs"
|
"songs": "Songs"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Check Plex Connection"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Connected APs",
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Active devices",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Hyväksytty",
|
"approved": "Hyväksytty",
|
||||||
"available": "Saatavilla"
|
"available": "Saatavilla"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Issues",
|
"issues": "Issues",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "One year",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Veuillez patienter",
|
"wait": "Veuillez patienter",
|
||||||
"empty_data": "Statut du sous-système inconnu"
|
"empty_data": "Statut du sous-système inconnu"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "Rx",
|
"rx": "Rx",
|
||||||
"tx": "Tx",
|
"tx": "Tx",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Épisodes",
|
"episodes": "Épisodes",
|
||||||
"songs": "Morceaux"
|
"songs": "Morceaux"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "En cours",
|
||||||
|
"transcoding": "En cours d'encodage",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Hors ligne",
|
"offline": "Hors ligne",
|
||||||
"offline_alt": "Hors ligne",
|
"offline_alt": "Hors ligne",
|
||||||
@@ -142,8 +157,8 @@
|
|||||||
"connectionStatusDisconnected": "Déconnecté",
|
"connectionStatusDisconnected": "Déconnecté",
|
||||||
"connectionStatusConnected": "Connecté",
|
"connectionStatusConnected": "Connecté",
|
||||||
"uptime": "Démarré depuis",
|
"uptime": "Démarré depuis",
|
||||||
"maxDown": "Réception max.",
|
"maxDown": "Réception max",
|
||||||
"maxUp": "Envoi max.",
|
"maxUp": "Envoi max",
|
||||||
"down": "Réception",
|
"down": "Réception",
|
||||||
"up": "Envoi",
|
"up": "Envoi",
|
||||||
"received": "Reçu",
|
"received": "Reçu",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "Aucune lecture en cours",
|
"no_active": "Aucune lecture en cours",
|
||||||
"plex_connection_error": "Vérifier la connexion à Plex"
|
"plex_connection_error": "Vérifier la connexion à Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "APs connectées",
|
"connectedAp": "APs connectées",
|
||||||
"activeUser": "Périphériques actifs",
|
"activeUser": "Périphériques actifs",
|
||||||
@@ -229,7 +251,7 @@
|
|||||||
"seed": "En partage"
|
"seed": "En partage"
|
||||||
},
|
},
|
||||||
"develancacheui": {
|
"develancacheui": {
|
||||||
"cachehitbytes": "Cache Hit (B)",
|
"cachehitbytes": "Octets acquis du cache",
|
||||||
"cachemissbytes": "Cache Miss (B)"
|
"cachemissbytes": "Cache Miss (B)"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Approuvé",
|
"approved": "Approuvé",
|
||||||
"available": "Disponible"
|
"available": "Disponible"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "En attente",
|
"pending": "Pending",
|
||||||
"approved": "Approuvé",
|
"approved": "Approved",
|
||||||
"available": "Disponible"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "En attente",
|
"issues": "Open Issues"
|
||||||
"processing": "En cours de traitement",
|
|
||||||
"approved": "Approuvé",
|
|
||||||
"available": "Disponible"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -293,7 +312,7 @@
|
|||||||
"queries": "Requêtes",
|
"queries": "Requêtes",
|
||||||
"blocked": "Bloqué",
|
"blocked": "Bloqué",
|
||||||
"blocked_percent": "% bloqué",
|
"blocked_percent": "% bloqué",
|
||||||
"gravity": "Listes dom. bloqués"
|
"gravity": "Listes dom. Bloqués"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Requêtes",
|
"queries": "Requêtes",
|
||||||
@@ -439,8 +458,8 @@
|
|||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"load": "Charge",
|
"load": "Charge",
|
||||||
"wait": "Veuillez patienter",
|
"wait": "Veuillez patienter",
|
||||||
"temp": "Température",
|
"temp": "TEMP",
|
||||||
"_temp": "Température",
|
"_temp": "Temp",
|
||||||
"warn": "Alerte",
|
"warn": "Alerte",
|
||||||
"uptime": "Démarré depuis",
|
"uptime": "Démarré depuis",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "En ligne",
|
"up": "En ligne",
|
||||||
"pending": "En attente",
|
"pending": "En attente",
|
||||||
"down": "Hors ligne"
|
"down": "Hors ligne",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Nouveau",
|
"new": "Nouveau",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Boîte de réception",
|
"inbox": "Boîte de réception",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Ressources",
|
||||||
|
"targets": "Cibles",
|
||||||
|
"traffic": "Trafique",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Charge de la batterie",
|
"battery_charge": "Charge de la batterie",
|
||||||
"ups_load": "Charge de l’ASI",
|
"ups_load": "Charge de l’ASI",
|
||||||
@@ -655,7 +684,7 @@
|
|||||||
"wanStatus": "Statut WAN",
|
"wanStatus": "Statut WAN",
|
||||||
"up": "Haut",
|
"up": "Haut",
|
||||||
"down": "Bas",
|
"down": "Bas",
|
||||||
"temp": "Température",
|
"temp": "Temp",
|
||||||
"disk": "Util. Disque",
|
"disk": "Util. Disque",
|
||||||
"wanIP": "IP WAN"
|
"wanIP": "IP WAN"
|
||||||
},
|
},
|
||||||
@@ -691,9 +720,13 @@
|
|||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
"days": "Jours",
|
"days": "Jours",
|
||||||
"uptime": "Disponibilité",
|
"uptime": "Démarré depuis",
|
||||||
"volumeAvailable": "Disponible"
|
"volumeAvailable": "Disponible"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Séries",
|
"series": "Séries",
|
||||||
"issues": "Anomalies",
|
"issues": "Anomalies",
|
||||||
@@ -718,7 +751,7 @@
|
|||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Tableau de bord",
|
"dashboards": "Tableau de bord",
|
||||||
"datasources": "Sources données",
|
"datasources": "Sources données",
|
||||||
"totalalerts": "Total alertes",
|
"totalalerts": "Alertes totales",
|
||||||
"alertstriggered": "Alertes déclenchées"
|
"alertstriggered": "Alertes déclenchées"
|
||||||
},
|
},
|
||||||
"nextcloud": {
|
"nextcloud": {
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Aujourd'hui",
|
"gross_percent_today": "Aujourd'hui",
|
||||||
"gross_percent_1y": "Un an",
|
"gross_percent_1y": "Un an",
|
||||||
"gross_percent_max": "Depuis le début"
|
"gross_percent_max": "Depuis le début",
|
||||||
|
"net_worth": "Patrimoine net"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Catégories",
|
"categories": "Catégories",
|
||||||
"series": "Séries"
|
"series": "Séries"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "File d'attente",
|
"downloadCount": "File d'attente",
|
||||||
"downloadBytesRemaining": "Restant",
|
"downloadBytesRemaining": "Restant",
|
||||||
@@ -910,7 +950,7 @@
|
|||||||
"studios": "Studios",
|
"studios": "Studios",
|
||||||
"movies": "Films",
|
"movies": "Films",
|
||||||
"tags": "Tags",
|
"tags": "Tags",
|
||||||
"oCount": "0 Compte"
|
"oCount": "O-mètre"
|
||||||
},
|
},
|
||||||
"tandoor": {
|
"tandoor": {
|
||||||
"users": "Utilisateurs",
|
"users": "Utilisateurs",
|
||||||
@@ -965,11 +1005,11 @@
|
|||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "Non classé",
|
"unclassified": "Non classé",
|
||||||
"information": "Informations",
|
"information": "Information",
|
||||||
"warning": "Attention",
|
"warning": "Avertissement",
|
||||||
"average": "Moyenne",
|
"average": "Moyen",
|
||||||
"high": "Élevé",
|
"high": "Haut",
|
||||||
"disaster": ""
|
"disaster": "Désastre"
|
||||||
},
|
},
|
||||||
"lubelogger": {
|
"lubelogger": {
|
||||||
"vehicle": "Véhicule",
|
"vehicle": "Véhicule",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Mois prochain",
|
"nextMonthlyCost": "Mois prochain",
|
||||||
"previousMonthlyCost": "Mois précédent",
|
"previousMonthlyCost": "Mois précédent",
|
||||||
"nextRenewingSubscription": "Prochain paiement"
|
"nextRenewingSubscription": "Prochain paiement"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Commencé",
|
||||||
|
"STOPPED": "Arrêté",
|
||||||
|
"NEW_ARRAY": "Nouveau tableau",
|
||||||
|
"RECON_DISK": "Reconstruction du disque",
|
||||||
|
"DISABLE_DISK": "Disque désactivé",
|
||||||
|
"SWAP_DSBL": "Désactiver le swap",
|
||||||
|
"INVALID_EXPANSION": "Extension invalide",
|
||||||
|
"PARITY_NOT_BIGGEST": "La parité n'est pas la plus grande",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Trop de disques manquants",
|
||||||
|
"NEW_DISK_TOO_SMALL": "Nouveau disque trop petit",
|
||||||
|
"NO_DATA_DISKS": "Aucun disque de données",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "État",
|
||||||
|
"cpu": "UCT",
|
||||||
|
"memoryUsed": "Mémoire Utilisé",
|
||||||
|
"memoryAvailable": "Mémoire Disponible",
|
||||||
|
"arrayUsed": "RAID utilisé",
|
||||||
|
"arrayFree": "RAID libre",
|
||||||
|
"poolUsed": "{{pool}} Utilisé",
|
||||||
|
"poolFree": "{{pool}} Libre"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Abonnements",
|
||||||
|
"num_success_30": "Succès",
|
||||||
|
"num_failure_30": "Échecs",
|
||||||
|
"num_success_latest": "Réussi",
|
||||||
|
"num_failure_latest": "Échoué",
|
||||||
|
"bytes_added_30": "Octets ajoutés"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Musiques",
|
||||||
|
"time": "Durée",
|
||||||
|
"artists": "Artistes"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "נא להמתין",
|
"wait": "נא להמתין",
|
||||||
"empty_data": "מצב תת-מערכת לא ידוע"
|
"empty_data": "מצב תת-מערכת לא ידוע"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "פרקים",
|
"episodes": "פרקים",
|
||||||
"songs": "שירים"
|
"songs": "שירים"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "מכובה",
|
"offline": "מכובה",
|
||||||
"offline_alt": "מכובה",
|
"offline_alt": "מכובה",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "אין הזרמות פעילות",
|
"no_active": "אין הזרמות פעילות",
|
||||||
"plex_connection_error": "בדוק חיבור ל-Plex"
|
"plex_connection_error": "בדוק חיבור ל-Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "נקודות גישה מחוברות",
|
"connectedAp": "נקודות גישה מחוברות",
|
||||||
"activeUser": "מכשירים פעילים",
|
"activeUser": "מכשירים פעילים",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "מאושר",
|
"approved": "מאושר",
|
||||||
"available": "זמין"
|
"available": "זמין"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "ממתין לאישור",
|
"pending": "Pending",
|
||||||
"approved": "מאושר",
|
"approved": "Approved",
|
||||||
"available": "זמין"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "ממתין לאישור",
|
"issues": "Open Issues"
|
||||||
"processing": "מעבד",
|
|
||||||
"approved": "מאושר",
|
|
||||||
"available": "זמין"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "סה\"כ",
|
"total": "סה\"כ",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "למעלה",
|
"up": "למעלה",
|
||||||
"pending": "ממתין",
|
"pending": "ממתין",
|
||||||
"down": "למטה"
|
"down": "למטה",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "חדש",
|
"new": "חדש",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "תיבת דואר נכנס",
|
"inbox": "תיבת דואר נכנס",
|
||||||
"total": "סה\"כ"
|
"total": "סה\"כ"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "טעינת סוללה",
|
"battery_charge": "טעינת סוללה",
|
||||||
"ups_load": "עומס UPS",
|
"ups_load": "עומס UPS",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "זמן פעילות",
|
"uptime": "זמן פעילות",
|
||||||
"volumeAvailable": "זמין"
|
"volumeAvailable": "זמין"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "סדרות",
|
"series": "סדרות",
|
||||||
"issues": "גיליונות",
|
"issues": "גיליונות",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "היום",
|
"gross_percent_today": "היום",
|
||||||
"gross_percent_1y": "שנה",
|
"gross_percent_1y": "שנה",
|
||||||
"gross_percent_max": "כל הזמן"
|
"gross_percent_max": "כל הזמן",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "פודקאסטים",
|
"podcasts": "פודקאסטים",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "קטגוריות",
|
"categories": "קטגוריות",
|
||||||
"series": "סדרות"
|
"series": "סדרות"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "תור",
|
"downloadCount": "תור",
|
||||||
"downloadBytesRemaining": "נותר",
|
"downloadBytesRemaining": "נותר",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "חודש הבא",
|
"nextMonthlyCost": "חודש הבא",
|
||||||
"previousMonthlyCost": "חודש קודם",
|
"previousMonthlyCost": "חודש קודם",
|
||||||
"nextRenewingSubscription": "תשלום הבא"
|
"nextRenewingSubscription": "תשלום הבא"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Subsystem status unknown"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Songs"
|
"songs": "Songs"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Check Plex Connection"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Connected APs",
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Active devices",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
|
||||||
"pending": "Pending",
|
|
||||||
"processing": "Processing",
|
"processing": "Processing",
|
||||||
"approved": "Approved",
|
"issues": "Open Issues"
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Battery Charge",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "UPS Load",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Issues",
|
"issues": "Issues",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "One year",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "All time",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcasts",
|
"podcasts": "Podcasts",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -61,16 +61,21 @@
|
|||||||
"wlan_devices": "WLAN Eszközök",
|
"wlan_devices": "WLAN Eszközök",
|
||||||
"lan_users": "LAN Felhasználók",
|
"lan_users": "LAN Felhasználók",
|
||||||
"wlan_users": "WLAN Felhasználók",
|
"wlan_users": "WLAN Felhasználók",
|
||||||
"up": "UP",
|
"up": "FUT",
|
||||||
"down": "ÁLL",
|
"down": "ÁLL",
|
||||||
"wait": "Please wait",
|
"wait": "Kérjük várjon",
|
||||||
"empty_data": "Az alrendszer állapota ismeretlen"
|
"empty_data": "Az alrendszer állapota ismeretlen"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
"mem": "MEM",
|
"mem": "MEM",
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"running": "Futó",
|
"running": "Futó",
|
||||||
"offline": "Nem elérhető",
|
"offline": "Nem elérhető",
|
||||||
"error": "Hiba",
|
"error": "Hiba",
|
||||||
@@ -93,8 +98,8 @@
|
|||||||
"http_status": "HTTP állapot",
|
"http_status": "HTTP állapot",
|
||||||
"error": "Hiba",
|
"error": "Hiba",
|
||||||
"response": "Válasz",
|
"response": "Válasz",
|
||||||
"down": "Down",
|
"down": "Leállt",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"not_available": "Nem elérhető"
|
"not_available": "Nem elérhető"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
@@ -107,11 +112,21 @@
|
|||||||
"episodes": "Epizód",
|
"episodes": "Epizód",
|
||||||
"songs": "Zeneszám"
|
"songs": "Zeneszám"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Nem elérhető",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Nem elérhető",
|
||||||
"online": "Csatlakozva",
|
"online": "Csatlakozva",
|
||||||
"total": "Total",
|
"total": "Összes",
|
||||||
"unknown": "Ismeretlen"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
@@ -133,7 +148,7 @@
|
|||||||
"unread": "Olvasatlan"
|
"unread": "Olvasatlan"
|
||||||
},
|
},
|
||||||
"fritzbox": {
|
"fritzbox": {
|
||||||
"connectionStatus": "Status",
|
"connectionStatus": "Státusz",
|
||||||
"connectionStatusUnconfigured": "Nem beállított",
|
"connectionStatusUnconfigured": "Nem beállított",
|
||||||
"connectionStatusConnecting": "Kapcsolódás",
|
"connectionStatusConnecting": "Kapcsolódás",
|
||||||
"connectionStatusAuthenticating": "Hitelesítés",
|
"connectionStatusAuthenticating": "Hitelesítés",
|
||||||
@@ -141,16 +156,16 @@
|
|||||||
"connectionStatusDisconnecting": "Kapcsolat bontása",
|
"connectionStatusDisconnecting": "Kapcsolat bontása",
|
||||||
"connectionStatusDisconnected": "Kapcsolat bontva",
|
"connectionStatusDisconnected": "Kapcsolat bontva",
|
||||||
"connectionStatusConnected": "Csatlakozva",
|
"connectionStatusConnected": "Csatlakozva",
|
||||||
"uptime": "Uptime",
|
"uptime": "Működési idő",
|
||||||
"maxDown": "Max let.",
|
"maxDown": "Max let.",
|
||||||
"maxUp": "Max felt.",
|
"maxUp": "Max felt.",
|
||||||
"down": "Down",
|
"down": "Leállt",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"received": "Fogadott",
|
"received": "Fogadott",
|
||||||
"sent": "Küldött",
|
"sent": "Küldött",
|
||||||
"externalIPAddress": "Külső IP cím",
|
"externalIPAddress": "Külső IP cím",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "Küls. IPv6",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Küls. IPv6-Prefix"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstreamek",
|
"upstreams": "Upstreamek",
|
||||||
@@ -168,17 +183,24 @@
|
|||||||
"passes": "Engedélyek"
|
"passes": "Engedélyek"
|
||||||
},
|
},
|
||||||
"tautulli": {
|
"tautulli": {
|
||||||
"playing": "Playing",
|
"playing": "Lejátszás",
|
||||||
"transcoding": "Transcoding",
|
"transcoding": "Transzkódolás",
|
||||||
"bitrate": "Bitrate",
|
"bitrate": "Bitráta",
|
||||||
"no_active": "No Active Streams",
|
"no_active": "Nincs aktív lejátszás",
|
||||||
"plex_connection_error": "Plex kapcsolat ellenőrzése"
|
"plex_connection_error": "Plex kapcsolat ellenőrzése"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "Csatlakoztatott AP-k",
|
"connectedAp": "Csatlakoztatott AP-k",
|
||||||
"activeUser": "Aktív eszközök",
|
"activeUser": "Aktív eszközök",
|
||||||
"alerts": "Riasztások",
|
"alerts": "Riasztások",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Csatlakoztatott gateway-ek",
|
||||||
"connectedSwitches": "Csatlakoztatott switch-ek"
|
"connectedSwitches": "Csatlakoztatott switch-ek"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
@@ -189,11 +211,11 @@
|
|||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Aktív Stream-ek",
|
"streams": "Aktív Stream-ek",
|
||||||
"albums": "Albumok",
|
"albums": "Albumok",
|
||||||
"movies": "Movies",
|
"movies": "Filmek",
|
||||||
"tv": "TV műsorok"
|
"tv": "TV műsorok"
|
||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
"rate": "Rate",
|
"rate": "Ráta",
|
||||||
"queue": "Sor",
|
"queue": "Sor",
|
||||||
"timeleft": "Hátralévő idő"
|
"timeleft": "Hátralévő idő"
|
||||||
},
|
},
|
||||||
@@ -233,34 +255,34 @@
|
|||||||
"cachemissbytes": "Gyorsítótárban Hibás Bitek"
|
"cachemissbytes": "Gyorsítótárban Hibás Bitek"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "Download",
|
"download": "Letöltés",
|
||||||
"upload": "Upload",
|
"upload": "Feltöltés",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"sonarr": {
|
"sonarr": {
|
||||||
"wanted": "Keresett",
|
"wanted": "Keresett",
|
||||||
"queued": "Sorban áll",
|
"queued": "Sorban áll",
|
||||||
"series": "Series",
|
"series": "Sorozatok",
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"radarr": {
|
"radarr": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Keresett",
|
||||||
"missing": "Hiányzik",
|
"missing": "Hiányzik",
|
||||||
"queued": "Queued",
|
"queued": "Sorban áll",
|
||||||
"movies": "Movies",
|
"movies": "Filmek",
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Keresett",
|
||||||
"queued": "Queued",
|
"queued": "Sorban áll",
|
||||||
"artists": "Előadók"
|
"artists": "Előadók"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Keresett",
|
||||||
"queued": "Queued",
|
"queued": "Sorban áll",
|
||||||
"books": "Könyvek"
|
"books": "Könyvek"
|
||||||
},
|
},
|
||||||
"bazarr": {
|
"bazarr": {
|
||||||
@@ -272,20 +294,17 @@
|
|||||||
"approved": "Engedélyezett",
|
"approved": "Engedélyezett",
|
||||||
"available": "Elérhető"
|
"available": "Elérhető"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "Feldolgozás",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Összes",
|
||||||
"connected": "Connected",
|
"connected": "Csatlakoztatott",
|
||||||
"new_devices": "Új eszközök",
|
"new_devices": "Új eszközök",
|
||||||
"down_alerts": "Leállási riasztások"
|
"down_alerts": "Leállási riasztások"
|
||||||
},
|
},
|
||||||
@@ -296,26 +315,26 @@
|
|||||||
"gravity": "Gravitáció"
|
"gravity": "Gravitáció"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Queries",
|
"queries": "Lekérdezések",
|
||||||
"blocked": "Blocked",
|
"blocked": "Blokkolt",
|
||||||
"filtered": "Szűrt",
|
"filtered": "Szűrt",
|
||||||
"latency": "Késleltetés"
|
"latency": "Késleltetés"
|
||||||
},
|
},
|
||||||
"speedtest": {
|
"speedtest": {
|
||||||
"upload": "Upload",
|
"upload": "Feltöltés",
|
||||||
"download": "Download",
|
"download": "Letöltés",
|
||||||
"ping": "Ping"
|
"ping": "Ping"
|
||||||
},
|
},
|
||||||
"portainer": {
|
"portainer": {
|
||||||
"running": "Running",
|
"running": "Folyamatban",
|
||||||
"stopped": "Megállított",
|
"stopped": "Megállított",
|
||||||
"total": "Total"
|
"total": "Összes"
|
||||||
},
|
},
|
||||||
"suwayomi": {
|
"suwayomi": {
|
||||||
"download": "Downloaded",
|
"download": "Letöltött",
|
||||||
"nondownload": "Nem Letöltött",
|
"nondownload": "Nem Letöltött",
|
||||||
"read": "Read",
|
"read": "Olvasott",
|
||||||
"unread": "Unread",
|
"unread": "Olvasatlan",
|
||||||
"downloadedread": "Letöltött & Olvasott",
|
"downloadedread": "Letöltött & Olvasott",
|
||||||
"downloadedunread": "Letöltött & Olvasatlan",
|
"downloadedunread": "Letöltött & Olvasatlan",
|
||||||
"nondownloadedread": "Nem Letöltött & Olvasatlan",
|
"nondownloadedread": "Nem Letöltött & Olvasatlan",
|
||||||
@@ -336,7 +355,7 @@
|
|||||||
"ago": "{{value}} Ezelőtt"
|
"ago": "{{value}} Ezelőtt"
|
||||||
},
|
},
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "Queries",
|
"totalQueries": "Lekérdezések",
|
||||||
"totalNoError": "Sikerek",
|
"totalNoError": "Sikerek",
|
||||||
"totalServerFailure": "Hibák",
|
"totalServerFailure": "Hibák",
|
||||||
"totalNxDomain": "NX Domainek",
|
"totalNxDomain": "NX Domainek",
|
||||||
@@ -344,12 +363,12 @@
|
|||||||
"totalAuthoritative": "Irányadó",
|
"totalAuthoritative": "Irányadó",
|
||||||
"totalRecursive": "Rekurzív",
|
"totalRecursive": "Rekurzív",
|
||||||
"totalCached": "Gyorsítótárazott",
|
"totalCached": "Gyorsítótárazott",
|
||||||
"totalBlocked": "Blocked",
|
"totalBlocked": "Blokkolt",
|
||||||
"totalDropped": "Eldobott",
|
"totalDropped": "Eldobott",
|
||||||
"totalClients": "Kliensek"
|
"totalClients": "Kliensek"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"processed": "Feldolgozott",
|
"processed": "Feldolgozott",
|
||||||
"errored": "Hibás",
|
"errored": "Hibás",
|
||||||
"saved": "Mentett"
|
"saved": "Mentett"
|
||||||
@@ -360,19 +379,19 @@
|
|||||||
"middleware": "Közvetítő"
|
"middleware": "Közvetítő"
|
||||||
},
|
},
|
||||||
"trilium": {
|
"trilium": {
|
||||||
"version": "Version",
|
"version": "Verzió",
|
||||||
"notesCount": "Notes",
|
"notesCount": "Jegyzetek",
|
||||||
"dbSize": "Database Size",
|
"dbSize": "Adatbázis mérete",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"navidrome": {
|
"navidrome": {
|
||||||
"nothing_streaming": "No Active Streams",
|
"nothing_streaming": "Nincs aktív lejátszás",
|
||||||
"please_wait": "Kérjük Várjon"
|
"please_wait": "Kérjük Várjon"
|
||||||
},
|
},
|
||||||
"npm": {
|
"npm": {
|
||||||
"enabled": "Bekapcsolva",
|
"enabled": "Bekapcsolva",
|
||||||
"disabled": "Kikapcsolva",
|
"disabled": "Kikapcsolva",
|
||||||
"total": "Total"
|
"total": "Összes"
|
||||||
},
|
},
|
||||||
"coinmarketcap": {
|
"coinmarketcap": {
|
||||||
"configure": "Állíts be egy vagy több Cryptovalutát a követéshez",
|
"configure": "Állíts be egy vagy több Cryptovalutát a követéshez",
|
||||||
@@ -383,73 +402,73 @@
|
|||||||
},
|
},
|
||||||
"gotify": {
|
"gotify": {
|
||||||
"apps": "Applikációk",
|
"apps": "Applikációk",
|
||||||
"clients": "Clients",
|
"clients": "Kliensek",
|
||||||
"messages": "Üzenetek"
|
"messages": "Üzenetek"
|
||||||
},
|
},
|
||||||
"prowlarr": {
|
"prowlarr": {
|
||||||
"enableIndexers": "Indexerek",
|
"enableIndexers": "Indexerek",
|
||||||
"numberOfGrabs": "Fogott",
|
"numberOfGrabs": "Fogott",
|
||||||
"numberOfQueries": "Queries",
|
"numberOfQueries": "Lekérdezések",
|
||||||
"numberOfFailGrabs": "Hibás fogások",
|
"numberOfFailGrabs": "Hibás fogások",
|
||||||
"numberOfFailQueries": "Hibás lekérdezések"
|
"numberOfFailQueries": "Hibás lekérdezések"
|
||||||
},
|
},
|
||||||
"jackett": {
|
"jackett": {
|
||||||
"configured": "Beállított",
|
"configured": "Beállított",
|
||||||
"errored": "Errored"
|
"errored": "Hibák"
|
||||||
},
|
},
|
||||||
"strelaysrv": {
|
"strelaysrv": {
|
||||||
"numActiveSessions": "Munkamenetek",
|
"numActiveSessions": "Munkamenetek",
|
||||||
"numConnections": "Csatlakozások",
|
"numConnections": "Csatlakozások",
|
||||||
"dataRelayed": "Átirányított",
|
"dataRelayed": "Átirányított",
|
||||||
"transferRate": "Rate"
|
"transferRate": "Ráta"
|
||||||
},
|
},
|
||||||
"mastodon": {
|
"mastodon": {
|
||||||
"user_count": "Users",
|
"user_count": "Felhasználók",
|
||||||
"status_count": "Posztok",
|
"status_count": "Posztok",
|
||||||
"domain_count": "Domainek"
|
"domain_count": "Domainek"
|
||||||
},
|
},
|
||||||
"medusa": {
|
"medusa": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Keresett",
|
||||||
"queued": "Queued",
|
"queued": "Sorban áll",
|
||||||
"series": "Series"
|
"series": "Sorozatok"
|
||||||
},
|
},
|
||||||
"minecraft": {
|
"minecraft": {
|
||||||
"players": "Lejátszók",
|
"players": "Lejátszók",
|
||||||
"version": "Verzió",
|
"version": "Verzió",
|
||||||
"status": "Status",
|
"status": "Státusz",
|
||||||
"up": "Online",
|
"up": "Kapcsolódva",
|
||||||
"down": "Offline"
|
"down": "Nem elérhető"
|
||||||
},
|
},
|
||||||
"miniflux": {
|
"miniflux": {
|
||||||
"read": "Olvasott",
|
"read": "Olvasott",
|
||||||
"unread": "Unread"
|
"unread": "Olvasatlan"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Users",
|
"users": "Felhasználók",
|
||||||
"loginsLast24H": "Bejelentkezések (24 óra)",
|
"loginsLast24H": "Bejelentkezések (24 óra)",
|
||||||
"failedLoginsLast24H": "Sikertelen bejelentkezések (24h)"
|
"failedLoginsLast24H": "Sikertelen bejelentkezések (24h)"
|
||||||
},
|
},
|
||||||
"proxmox": {
|
"proxmox": {
|
||||||
"mem": "MEM",
|
"mem": "MEM",
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"lxc": "LXC-k",
|
"lxc": "LXC-k",
|
||||||
"vms": "VM-ek"
|
"vms": "VM-ek"
|
||||||
},
|
},
|
||||||
"glances": {
|
"glances": {
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"load": "Load",
|
"load": "Terhelés",
|
||||||
"wait": "Please wait",
|
"wait": "Kérem várjon",
|
||||||
"temp": "TEMP",
|
"temp": "HŐM",
|
||||||
"_temp": "Hőmérséklet",
|
"_temp": "Hőmérséklet",
|
||||||
"warn": "Figyelmeztet",
|
"warn": "Figyelmeztet",
|
||||||
"uptime": "UP",
|
"uptime": "FUT",
|
||||||
"total": "Total",
|
"total": "Összes",
|
||||||
"free": "Free",
|
"free": "Szabad",
|
||||||
"used": "Used",
|
"used": "Felhasznált",
|
||||||
"days": "d",
|
"days": "n",
|
||||||
"hours": "h",
|
"hours": "ó",
|
||||||
"crit": "Kritikus",
|
"crit": "Kritikus",
|
||||||
"read": "Read",
|
"read": "Olvasott",
|
||||||
"write": "Írás",
|
"write": "Írás",
|
||||||
"gpu": "GPU",
|
"gpu": "GPU",
|
||||||
"mem": "Memória",
|
"mem": "Memória",
|
||||||
@@ -470,57 +489,57 @@
|
|||||||
"1-day": "Többnyire napos",
|
"1-day": "Többnyire napos",
|
||||||
"1-night": "Többnyire derült",
|
"1-night": "Többnyire derült",
|
||||||
"2-day": "Részben felhős",
|
"2-day": "Részben felhős",
|
||||||
"2-night": "Partly Cloudy",
|
"2-night": "Részben felhős",
|
||||||
"3-day": "Felhős",
|
"3-day": "Felhős",
|
||||||
"3-night": "Cloudy",
|
"3-night": "Felhős",
|
||||||
"45-day": "Ködös",
|
"45-day": "Ködös",
|
||||||
"45-night": "Foggy",
|
"45-night": "Ködös",
|
||||||
"48-day": "Foggy",
|
"48-day": "Ködös",
|
||||||
"48-night": "Foggy",
|
"48-night": "Ködös",
|
||||||
"51-day": "Enyhe szitálás",
|
"51-day": "Enyhe szitálás",
|
||||||
"51-night": "Light Drizzle",
|
"51-night": "Enyhe szitálás",
|
||||||
"53-day": "Szitálás",
|
"53-day": "Szitálás",
|
||||||
"53-night": "Drizzle",
|
"53-night": "Szitálás",
|
||||||
"55-day": "Erős szitálás",
|
"55-day": "Erős szitálás",
|
||||||
"55-night": "Heavy Drizzle",
|
"55-night": "Erős szitálás",
|
||||||
"56-day": "Enyhe fagyos szitálás",
|
"56-day": "Enyhe fagyos szitálás",
|
||||||
"56-night": "Light Freezing Drizzle",
|
"56-night": "Enyhe fagyos szitálás",
|
||||||
"57-day": "Fagyos szitálás",
|
"57-day": "Fagyos szitálás",
|
||||||
"57-night": "Freezing Drizzle",
|
"57-night": "Fagyos szitálás",
|
||||||
"61-day": "Enyhe eső",
|
"61-day": "Enyhe eső",
|
||||||
"61-night": "Light Rain",
|
"61-night": "Enyhe eső",
|
||||||
"63-day": "Eső",
|
"63-day": "Eső",
|
||||||
"63-night": "Rain",
|
"63-night": "Eső",
|
||||||
"65-day": "Heves eső",
|
"65-day": "Heves eső",
|
||||||
"65-night": "Heavy Rain",
|
"65-night": "Heves eső",
|
||||||
"66-day": "Ónos eső",
|
"66-day": "Ónos eső",
|
||||||
"66-night": "Freezing Rain",
|
"66-night": "Ónos eső",
|
||||||
"67-day": "Freezing Rain",
|
"67-day": "Ónos eső",
|
||||||
"67-night": "Freezing Rain",
|
"67-night": "Ónos eső",
|
||||||
"71-day": "Enyhe havazás",
|
"71-day": "Enyhe havazás",
|
||||||
"71-night": "Light Snow",
|
"71-night": "Enyhe havazás",
|
||||||
"73-day": "Hó",
|
"73-day": "Hó",
|
||||||
"73-night": "Snow",
|
"73-night": "Havazás",
|
||||||
"75-day": "Erős havazás",
|
"75-day": "Erős havazás",
|
||||||
"75-night": "Heavy Snow",
|
"75-night": "Erős havazás",
|
||||||
"77-day": "Hódara",
|
"77-day": "Hódara",
|
||||||
"77-night": "Snow Grains",
|
"77-night": "Hódara",
|
||||||
"80-day": "Enyhe záporok",
|
"80-day": "Enyhe záporok",
|
||||||
"80-night": "Light Showers",
|
"80-night": "Enyhe záporok",
|
||||||
"81-day": "Záporok",
|
"81-day": "Záporok",
|
||||||
"81-night": "Showers",
|
"81-night": "Záporok",
|
||||||
"82-day": "Heves záporok",
|
"82-day": "Heves záporok",
|
||||||
"82-night": "Heavy Showers",
|
"82-night": "Heves záporok",
|
||||||
"85-day": "Hózáporok",
|
"85-day": "Hózáporok",
|
||||||
"85-night": "Snow Showers",
|
"85-night": "Hózáporok",
|
||||||
"86-day": "Snow Showers",
|
"86-day": "Hózáporok",
|
||||||
"86-night": "Snow Showers",
|
"86-night": "Hózáporok",
|
||||||
"95-day": "Zivatar",
|
"95-day": "Zivatar",
|
||||||
"95-night": "Thunderstorm",
|
"95-night": "Vihar",
|
||||||
"96-day": "Zivatar jégesővel",
|
"96-day": "Zivatar jégesővel",
|
||||||
"96-night": "Thunderstorm With Hail",
|
"96-night": "Zivatar jégesővel",
|
||||||
"99-day": "Thunderstorm With Hail",
|
"99-day": "Zivatar jégesővel",
|
||||||
"99-night": "Thunderstorm With Hail"
|
"99-night": "Zivatar jégesővel"
|
||||||
},
|
},
|
||||||
"homebridge": {
|
"homebridge": {
|
||||||
"available_update": "Rendszer",
|
"available_update": "Rendszer",
|
||||||
@@ -529,17 +548,18 @@
|
|||||||
"up_to_date": "Naprakész",
|
"up_to_date": "Naprakész",
|
||||||
"child_bridges": "Gyerek Hidak",
|
"child_bridges": "Gyerek Hidak",
|
||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"pending": "Pending",
|
"pending": "Függőben lévő",
|
||||||
"down": "Down"
|
"down": "Leállt",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Új",
|
"new": "Új",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"grace": "Türelmi idő alatt",
|
"grace": "Türelmi idő alatt",
|
||||||
"down": "Down",
|
"down": "Leállt",
|
||||||
"paused": "Szünetel",
|
"paused": "Szünetel",
|
||||||
"status": "Status",
|
"status": "Státusz",
|
||||||
"last_ping": "Legutóbbi Ping",
|
"last_ping": "Legutóbbi Ping",
|
||||||
"never": "Még nincsenek ping-ek"
|
"never": "Még nincsenek ping-ek"
|
||||||
},
|
},
|
||||||
@@ -549,21 +569,21 @@
|
|||||||
"containers_failed": "Sikertelen"
|
"containers_failed": "Sikertelen"
|
||||||
},
|
},
|
||||||
"autobrr": {
|
"autobrr": {
|
||||||
"approvedPushes": "Approved",
|
"approvedPushes": "Jóváhagyott",
|
||||||
"rejectedPushes": "Elutasított",
|
"rejectedPushes": "Elutasított",
|
||||||
"filters": "Szűrők",
|
"filters": "Szűrők",
|
||||||
"indexers": "Indexers"
|
"indexers": "Indexerek"
|
||||||
},
|
},
|
||||||
"tubearchivist": {
|
"tubearchivist": {
|
||||||
"downloads": "Queue",
|
"downloads": "Várólista",
|
||||||
"videos": "Videók",
|
"videos": "Videók",
|
||||||
"channels": "Csatornák",
|
"channels": "Csatornák",
|
||||||
"playlists": "Lejátszási listák"
|
"playlists": "Lejátszási listák"
|
||||||
},
|
},
|
||||||
"truenas": {
|
"truenas": {
|
||||||
"load": "Rendszerterhelés",
|
"load": "Rendszerterhelés",
|
||||||
"uptime": "Uptime",
|
"uptime": "Működési idő",
|
||||||
"alerts": "Alerts"
|
"alerts": "Figyelmeztetések"
|
||||||
},
|
},
|
||||||
"pyload": {
|
"pyload": {
|
||||||
"speed": "Sebesség",
|
"speed": "Sebesség",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Beérkezett",
|
"inbox": "Beérkezett",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Akku töltöttsége",
|
"battery_charge": "Akku töltöttsége",
|
||||||
"ups_load": "UPS terheltsége",
|
"ups_load": "UPS terheltsége",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Problémák",
|
"issues": "Problémák",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "Egy év",
|
"gross_percent_1y": "Egy év",
|
||||||
"gross_percent_max": "Mindig"
|
"gross_percent_max": "Mindig",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcast",
|
"podcasts": "Podcast",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"empty_data": "Status subsistem tdk diketahui"
|
"empty_data": "Status subsistem tdk diketahui"
|
||||||
},
|
},
|
||||||
|
"unifi_drive": {
|
||||||
|
"healthy": "Healthy",
|
||||||
|
"degraded": "Degraded",
|
||||||
|
"no_data": "No storage data available"
|
||||||
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
@@ -107,6 +112,16 @@
|
|||||||
"episodes": "Episode",
|
"episodes": "Episode",
|
||||||
"songs": "Lagu"
|
"songs": "Lagu"
|
||||||
},
|
},
|
||||||
|
"jellyfin": {
|
||||||
|
"playing": "Playing",
|
||||||
|
"transcoding": "Transcoding",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"movies": "Movies",
|
||||||
|
"series": "Series",
|
||||||
|
"episodes": "Episodes",
|
||||||
|
"songs": "Songs"
|
||||||
|
},
|
||||||
"esphome": {
|
"esphome": {
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"offline_alt": "Offline",
|
"offline_alt": "Offline",
|
||||||
@@ -174,6 +189,13 @@
|
|||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"plex_connection_error": "Cek Koneksi ke Plex"
|
"plex_connection_error": "Cek Koneksi ke Plex"
|
||||||
},
|
},
|
||||||
|
"tracearr": {
|
||||||
|
"no_active": "No Active Streams",
|
||||||
|
"streams": "Streams",
|
||||||
|
"transcodes": "Transcodes",
|
||||||
|
"directplay": "Direct Play",
|
||||||
|
"bitrate": "Bitrate"
|
||||||
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"connectedAp": "AP Tersambung",
|
"connectedAp": "AP Tersambung",
|
||||||
"activeUser": "Perangakat yang Aktif",
|
"activeUser": "Perangakat yang Aktif",
|
||||||
@@ -272,16 +294,13 @@
|
|||||||
"approved": "Tersetujui",
|
"approved": "Tersetujui",
|
||||||
"available": "Tersedia"
|
"available": "Tersedia"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"seerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available",
|
||||||
},
|
"completed": "Completed",
|
||||||
"overseerr": {
|
"processing": "Processing",
|
||||||
"pending": "Pending",
|
"issues": "Open Issues"
|
||||||
"processing": "Memproses",
|
|
||||||
"approved": "Approved",
|
|
||||||
"available": "Available"
|
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
@@ -531,7 +550,8 @@
|
|||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Down",
|
||||||
|
"ok": "Ok"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Baru",
|
"new": "Baru",
|
||||||
@@ -598,6 +618,15 @@
|
|||||||
"inbox": "Kotak Masuk",
|
"inbox": "Kotak Masuk",
|
||||||
"total": "Total"
|
"total": "Total"
|
||||||
},
|
},
|
||||||
|
"pangolin": {
|
||||||
|
"orgs": "Orgs",
|
||||||
|
"sites": "Sites",
|
||||||
|
"resources": "Resources",
|
||||||
|
"targets": "Targets",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"in": "In",
|
||||||
|
"out": "Out"
|
||||||
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Sisa Baterai",
|
"battery_charge": "Sisa Baterai",
|
||||||
"ups_load": "Beban UPS",
|
"ups_load": "Beban UPS",
|
||||||
@@ -694,6 +723,10 @@
|
|||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
|
"dispatcharr": {
|
||||||
|
"channels": "Channels",
|
||||||
|
"streams": "Streams"
|
||||||
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
"issues": "Isu",
|
"issues": "Isu",
|
||||||
@@ -758,7 +791,8 @@
|
|||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Today",
|
||||||
"gross_percent_1y": "Satu Tahun",
|
"gross_percent_1y": "Satu Tahun",
|
||||||
"gross_percent_max": "Sepanjang Masa"
|
"gross_percent_max": "Sepanjang Masa",
|
||||||
|
"net_worth": "Net Worth"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcast",
|
"podcasts": "Podcast",
|
||||||
@@ -781,6 +815,12 @@
|
|||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
|
"booklore": {
|
||||||
|
"libraries": "Libraries",
|
||||||
|
"books": "Books",
|
||||||
|
"reading": "Reading",
|
||||||
|
"finished": "Finished"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -1083,5 +1123,67 @@
|
|||||||
"nextMonthlyCost": "Next Month",
|
"nextMonthlyCost": "Next Month",
|
||||||
"previousMonthlyCost": "Prev. Month",
|
"previousMonthlyCost": "Prev. Month",
|
||||||
"nextRenewingSubscription": "Next Payment"
|
"nextRenewingSubscription": "Next Payment"
|
||||||
|
},
|
||||||
|
"unraid": {
|
||||||
|
"STARTED": "Started",
|
||||||
|
"STOPPED": "Stopped",
|
||||||
|
"NEW_ARRAY": "New Array",
|
||||||
|
"RECON_DISK": "Reconstructing Disk",
|
||||||
|
"DISABLE_DISK": "Disk Disabled",
|
||||||
|
"SWAP_DSBL": "Swap Disable",
|
||||||
|
"INVALID_EXPANSION": "Invalid Expansion",
|
||||||
|
"PARITY_NOT_BIGGEST": "Parity Not Biggest",
|
||||||
|
"TOO_MANY_MISSING_DISKS": "Too Many Missing Disks",
|
||||||
|
"NEW_DISK_TOO_SMALL": "New Disk Too Small",
|
||||||
|
"NO_DATA_DISKS": "No Data Disks",
|
||||||
|
"notifications": "Notifications",
|
||||||
|
"status": "Status",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memoryUsed": "Memory Used",
|
||||||
|
"memoryAvailable": "Memory Available",
|
||||||
|
"arrayUsed": "Array Used",
|
||||||
|
"arrayFree": "Array Free",
|
||||||
|
"poolUsed": "{{pool}} Used",
|
||||||
|
"poolFree": "{{pool}} Free"
|
||||||
|
},
|
||||||
|
"backrest": {
|
||||||
|
"num_plans": "Plans",
|
||||||
|
"num_success_30": "Successes",
|
||||||
|
"num_failure_30": "Failures",
|
||||||
|
"num_success_latest": "Succeeding",
|
||||||
|
"num_failure_latest": "Failing",
|
||||||
|
"bytes_added_30": "Bytes Added"
|
||||||
|
},
|
||||||
|
"yourspotify": {
|
||||||
|
"songs": "Songs",
|
||||||
|
"time": "Time",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"arcane": {
|
||||||
|
"containers": "Containers",
|
||||||
|
"images": "Images",
|
||||||
|
"image_updates": "Image Updates",
|
||||||
|
"images_unused": "Unused",
|
||||||
|
"environment_required": "Environment ID Required"
|
||||||
|
},
|
||||||
|
"dockhand": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"memory": "Memory",
|
||||||
|
"images": "Images",
|
||||||
|
"volumes": "Volumes",
|
||||||
|
"events_today": "Events Today",
|
||||||
|
"pending_updates": "Pending Updates",
|
||||||
|
"stacks": "Stacks",
|
||||||
|
"paused": "Paused",
|
||||||
|
"total": "Total",
|
||||||
|
"environment_not_found": "Environment Not Found"
|
||||||
|
},
|
||||||
|
"sparkyfitness": {
|
||||||
|
"eaten": "Eaten",
|
||||||
|
"burned": "Burned",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"steps": "Steps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user