Compare commits
459 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bfa8ac982 | ||
|
|
bbe6d0bcc4 | ||
|
|
75ad912d04 | ||
|
|
703b6c30aa | ||
|
|
f377ee03ed | ||
|
|
8cba5e4683 | ||
|
|
6b254b10ae | ||
|
|
82c6e8ab21 | ||
|
|
61612b2bf7 | ||
|
|
7da3ba5981 | ||
|
|
a307287d36 | ||
|
|
7eabc9a62f | ||
|
|
ba659b6247 | ||
|
|
240747307d | ||
|
|
3dd03fb7e0 | ||
|
|
a8b9327bd7 | ||
|
|
2d7d386e8b | ||
|
|
a2c71caa89 | ||
|
|
0180c39c5c | ||
|
|
e92e8397c2 | ||
|
|
a23fc22dc9 | ||
|
|
64aacaf464 | ||
|
|
cee5911259 | ||
|
|
7cb094e127 | ||
|
|
69927dfcab | ||
|
|
dc92c9acda | ||
|
|
165275cc34 | ||
|
|
4702c83415 | ||
|
|
50eaa8ebcc | ||
|
|
2973104f98 | ||
|
|
3ce24239e2 | ||
|
|
cec8bd82ff | ||
|
|
ae9027d6e1 | ||
|
|
6b01cf4efc | ||
|
|
64f30fcbd4 | ||
|
|
ebb226dda9 | ||
|
|
389df03b83 | ||
|
|
24a4429c7b | ||
|
|
6c786c0ac2 | ||
|
|
a5d96a8457 | ||
|
|
e2a6418a71 | ||
|
|
f7aae89f5b | ||
|
|
97fa1e6dad | ||
|
|
059d2b3377 | ||
|
|
dcea858e0e | ||
|
|
db6d5a6075 | ||
|
|
aa0bb92a20 | ||
|
|
b50dcfe022 | ||
|
|
bdf61fa35f | ||
|
|
ccff2061f1 | ||
|
|
fec53846d3 | ||
|
|
b4d6420952 | ||
|
|
da8bf32b96 | ||
|
|
32c8d3dcb1 | ||
|
|
72dd59661d | ||
|
|
d3b495b489 | ||
|
|
a54f03df1f | ||
|
|
173b40684c | ||
|
|
ca878eced9 | ||
|
|
11659dde78 | ||
|
|
0a7292106d | ||
|
|
12e09c683a | ||
|
|
faecf3bcbf | ||
|
|
ad1ab2a66d | ||
|
|
fb3feaebbe | ||
|
|
c337a0492a | ||
|
|
a72ec68b6f | ||
|
|
0af6e04ce3 | ||
|
|
fd66c620b9 | ||
|
|
c42aed14dd | ||
|
|
15f5d74e09 | ||
|
|
8876537cc0 | ||
|
|
6a876ca309 | ||
|
|
48d3c7cc92 | ||
|
|
336aff13cc | ||
|
|
f8e0ffabd4 | ||
|
|
cd6b812a38 | ||
|
|
e63321f5ad | ||
|
|
d615f49f47 | ||
|
|
4da32832b9 | ||
|
|
b0503e1995 | ||
|
|
a7f99c7366 | ||
|
|
fb52c4b003 | ||
|
|
85dfb5bb58 | ||
|
|
bc267d3e8b | ||
|
|
3133e07fc7 | ||
|
|
f1fcd071a8 | ||
|
|
2a384d47b0 | ||
|
|
cead7d2355 | ||
|
|
7ab8c14c5c | ||
|
|
eb2a8ba997 | ||
|
|
ba8ef4a844 | ||
|
|
3e6413d9f2 | ||
|
|
d0180b1f87 | ||
|
|
04564c22ae | ||
|
|
48448e273c | ||
|
|
d84a2c3e51 | ||
|
|
48c348d83d | ||
|
|
5f5c914b63 | ||
|
|
7b81a3bc43 | ||
|
|
1c80e13cf8 | ||
|
|
2ce5547c90 | ||
|
|
8284c3bab6 | ||
|
|
ea950d6445 | ||
|
|
1bff6ed225 | ||
|
|
841cd6ab28 | ||
|
|
80b40426cc | ||
|
|
052a8c9489 | ||
|
|
96584485b5 | ||
|
|
109e53df5d | ||
|
|
a8ea56543b | ||
|
|
83b171cd4e | ||
|
|
6facd4b10e | ||
|
|
c21e54e620 | ||
|
|
dca15f8723 | ||
|
|
2288ab37d9 | ||
|
|
cbb1fe789e | ||
|
|
b8ea9dbb39 | ||
|
|
be5c60fa3e | ||
|
|
ec08953514 | ||
|
|
f8dcd40286 | ||
|
|
f717f4e8d6 | ||
|
|
329c38c989 | ||
|
|
a4d6c278db | ||
|
|
7aa6f90e17 | ||
|
|
c788f6bc1e | ||
|
|
b1d49e3a9e | ||
|
|
04918865ea | ||
|
|
f4b610e5a3 | ||
|
|
76b5b3024d | ||
|
|
7371bb5559 | ||
|
|
b9a43aeaad | ||
|
|
a6441056fe | ||
|
|
954eabc217 | ||
|
|
03eb843a2f | ||
|
|
c195987564 | ||
|
|
631864dfaf | ||
|
|
03f07dbd81 | ||
|
|
3bda652f4b | ||
|
|
9924d5a80b | ||
|
|
bdf7a40713 | ||
|
|
8d1bb71a22 | ||
|
|
5e3f0da581 | ||
|
|
7f49ca7983 | ||
|
|
29d0b63f40 | ||
|
|
bea4e86167 | ||
|
|
6f48cafd42 | ||
|
|
dc7e860263 | ||
|
|
b35bbedb77 | ||
|
|
141004c39f | ||
|
|
96713f5223 | ||
|
|
3770fdb05f | ||
|
|
1f6858ee8b | ||
|
|
165eb74c9d | ||
|
|
5d34ef3544 | ||
|
|
44b48ce475 | ||
|
|
d713d5f7e4 | ||
|
|
45db7dfcb0 | ||
|
|
a982773c0d | ||
|
|
27c0ef608e | ||
|
|
9f2517cce1 | ||
|
|
0c7d64c8e6 | ||
|
|
37342a54be | ||
|
|
830adad22f | ||
|
|
c52acd2913 | ||
|
|
194da2b6e5 | ||
|
|
599ccda1ed | ||
|
|
9f4f3794b0 | ||
|
|
c2c0d0bb55 | ||
|
|
6901c985fd | ||
|
|
86913d2244 | ||
|
|
f34d1d0096 | ||
|
|
3efe18d06f | ||
|
|
92e8d79c5a | ||
|
|
6ad799efe8 | ||
|
|
e6c4b1e78c | ||
|
|
81292a8b5a | ||
|
|
c71c36f6b3 | ||
|
|
20f3dc3b3f | ||
|
|
400c5d1229 | ||
|
|
a0ad61beb8 | ||
|
|
1c0c9cc282 | ||
|
|
50aba040e4 | ||
|
|
678c8d0018 | ||
|
|
5c61f81c03 | ||
|
|
85e90700a6 | ||
|
|
e2426ed6e5 | ||
|
|
7c6ac76ace | ||
|
|
815d4d6a62 | ||
|
|
59238ae2a6 | ||
|
|
39c89c3f6d | ||
|
|
9b45e24584 | ||
|
|
cd433b0e3c | ||
|
|
f4df411d47 | ||
|
|
2494ee6a34 | ||
|
|
d1b7ef3707 | ||
|
|
cd9fa354ec | ||
|
|
f308e64788 | ||
|
|
da2dcf821c | ||
|
|
5a6c039f5b | ||
|
|
f4d936e3e5 | ||
|
|
2ed085831b | ||
|
|
e7731651f2 | ||
|
|
8c752a01a8 | ||
|
|
e14ff314c7 | ||
|
|
42b7254a94 | ||
|
|
a18c8df664 | ||
|
|
252651c1fb | ||
|
|
543113292b | ||
|
|
ec76c10fdc | ||
|
|
cad111de6d | ||
|
|
66d7bb414e | ||
|
|
f94266c1ad | ||
|
|
75cf90c7ea | ||
|
|
1f044a0172 | ||
|
|
5ae6b39fa9 | ||
|
|
632a9967fd | ||
|
|
fb9a8ed094 | ||
|
|
e8cc9cc338 | ||
|
|
02f187914c | ||
|
|
0ac591d353 | ||
|
|
049492917a | ||
|
|
530b158f4e | ||
|
|
76479503ad | ||
|
|
e8179d01af | ||
|
|
d920c6319f | ||
|
|
b45a614cd8 | ||
|
|
5a46ecc901 | ||
|
|
3850bc2dbe | ||
|
|
afbb0e6944 | ||
|
|
6b3fe8951a | ||
|
|
2e0478b2a7 | ||
|
|
3977885c9a | ||
|
|
31a0b5553f | ||
|
|
972aff26f7 | ||
|
|
984292482a | ||
|
|
648f60fab4 | ||
|
|
c1463b3aa6 | ||
|
|
42ce621197 | ||
|
|
18c84e7e1e | ||
|
|
31a80f5588 | ||
|
|
9d51e2ce52 | ||
|
|
1a7ae434b7 | ||
|
|
1930a4c1f6 | ||
|
|
0c99b77843 | ||
|
|
405219c081 | ||
|
|
54aa5f7f4d | ||
|
|
6811388991 | ||
|
|
7cf6fe53fc | ||
|
|
217e5b861f | ||
|
|
f1e39ba911 | ||
|
|
56e824267d | ||
|
|
2fc4adfbb0 | ||
|
|
b2f04937b9 | ||
|
|
2c9fbb5a1b | ||
|
|
5a41de0eb9 | ||
|
|
69dd4ea75c | ||
|
|
e2311fedc0 | ||
|
|
77c8cb8f9e | ||
|
|
18d58ad4e7 | ||
|
|
8c59ab0846 | ||
|
|
525985b1dc | ||
|
|
43dc1cd70c | ||
|
|
66f9dd51dd | ||
|
|
1652f6e368 | ||
|
|
e8d82c866e | ||
|
|
4c13e8c2f0 | ||
|
|
51a1156e68 | ||
|
|
13531a007c | ||
|
|
41e142634f | ||
|
|
ca47f2d240 | ||
|
|
0506cd542c | ||
|
|
3f44c59e00 | ||
|
|
497e22830e | ||
|
|
e966fdad71 | ||
|
|
64e8e85aac | ||
|
|
964b65477c | ||
|
|
39a4e89d66 | ||
|
|
c7317c7278 | ||
|
|
31f562a223 | ||
|
|
577e467048 | ||
|
|
8d1ebba2e1 | ||
|
|
fdeac8eb29 | ||
|
|
b87cfb4853 | ||
|
|
64dec6ce3f | ||
|
|
a114e6c623 | ||
|
|
c2af38caab | ||
|
|
0d6346c73a | ||
|
|
e0eb195097 | ||
|
|
94f13b805c | ||
|
|
c507a8892f | ||
|
|
b923f8261b | ||
|
|
13670c5626 | ||
|
|
59504ff6c4 | ||
|
|
3bb0f20066 | ||
|
|
850375767e | ||
|
|
ed159ea3c3 | ||
|
|
c799d507d2 | ||
|
|
4c9d1a1c01 | ||
|
|
6633d21788 | ||
|
|
9aebcf0c69 | ||
|
|
63f82971c8 | ||
|
|
4c28a77e00 | ||
|
|
c41f547af3 | ||
|
|
b3aae68469 | ||
|
|
2063adc6c0 | ||
|
|
04a304dcd6 | ||
|
|
0b237f27f7 | ||
|
|
5ed363146f | ||
|
|
77bad9d6b3 | ||
|
|
464b9d4142 | ||
|
|
4a856c6267 | ||
|
|
47cb9cd5b6 | ||
|
|
13999e44eb | ||
|
|
749f492034 | ||
|
|
c6fa03ba8c | ||
|
|
b78ed7fb04 | ||
|
|
c8ef6bae1a | ||
|
|
457e9cf2bd | ||
|
|
68cea4b6a8 | ||
|
|
85120e3816 | ||
|
|
c6d8bcd574 | ||
|
|
1aeee38c0d | ||
|
|
387f155b29 | ||
|
|
5dae500ac3 | ||
|
|
caa625c3ec | ||
|
|
faf5d11900 | ||
|
|
5c183e83f3 | ||
|
|
ab212e36d0 | ||
|
|
402f05f265 | ||
|
|
46938db8f3 | ||
|
|
1dd205c441 | ||
|
|
f906214fa9 | ||
|
|
e734af0109 | ||
|
|
8850e3a027 | ||
|
|
0b7f407b8c | ||
|
|
6f7692c086 | ||
|
|
623bfe58bd | ||
|
|
05423440f3 | ||
|
|
fddcfb3f06 | ||
|
|
f56f4b33ce | ||
|
|
f5686fbf2c | ||
|
|
2c1b329dfd | ||
|
|
f1b3949f15 | ||
|
|
334947dd04 | ||
|
|
596bcefbbc | ||
|
|
b738fa8463 | ||
|
|
27fac54da4 | ||
|
|
d157e986a1 | ||
|
|
ca50cffe82 | ||
|
|
0ee70f3881 | ||
|
|
d8931644d8 | ||
|
|
4c2c2fb564 | ||
|
|
368707ed76 | ||
|
|
2a5a0a7699 | ||
|
|
dc69930eab | ||
|
|
1f8a71ef6d | ||
|
|
47ea22e411 | ||
|
|
9929cf64ac | ||
|
|
89182ec4bc | ||
|
|
c56f90d43c | ||
|
|
3e0cf2ded1 | ||
|
|
9b53b49159 | ||
|
|
725007f88f | ||
|
|
b767040760 | ||
|
|
16a77cdf25 | ||
|
|
4c52980d25 | ||
|
|
f910e3fe97 | ||
|
|
1460a979c0 | ||
|
|
1047b73d58 | ||
|
|
4208ac44cf | ||
|
|
7ae7e50634 | ||
|
|
4f652c71ba | ||
|
|
023e44f523 | ||
|
|
85beb7fe43 | ||
|
|
62d9888889 | ||
|
|
10e3718cb8 | ||
|
|
fef47b96ee | ||
|
|
2e242256cc | ||
|
|
a05e80bf26 | ||
|
|
06d72d679b | ||
|
|
edb13ae716 | ||
|
|
793ab4db7a | ||
|
|
84db1aeaf7 | ||
|
|
fab018a10e | ||
|
|
ba3f841ba3 | ||
|
|
0b07fdd380 | ||
|
|
b3b24e4800 | ||
|
|
e897c21aa2 | ||
|
|
a2f376aed8 | ||
|
|
bb010ff54a | ||
|
|
58d42ea00c | ||
|
|
ebd0802003 | ||
|
|
2530d71534 | ||
|
|
a8dea274f3 | ||
|
|
63f1a64893 | ||
|
|
2539e8cec1 | ||
|
|
5296ce88d2 | ||
|
|
cc9317b31c | ||
|
|
2588134b58 | ||
|
|
e27aa51b4d | ||
|
|
1569a01b27 | ||
|
|
3bd5495d2a | ||
|
|
eff73d233a | ||
|
|
61333d6c3d | ||
|
|
32462ccdea | ||
|
|
949fd7cea8 | ||
|
|
1e117cbe7b | ||
|
|
2abe81e590 | ||
|
|
6485a8fd96 | ||
|
|
f805eb17e2 | ||
|
|
5382da6998 | ||
|
|
6995396af4 | ||
|
|
868b0017b9 | ||
|
|
766418ce53 | ||
|
|
3af176e90d | ||
|
|
6fe9fb9718 | ||
|
|
d926e518fe | ||
|
|
789bfd6f06 | ||
|
|
a533aad7b9 | ||
|
|
49b17c2fd7 | ||
|
|
24973c5bbb | ||
|
|
37672e4b15 | ||
|
|
8a50fcffa2 | ||
|
|
e89a65c8dc | ||
|
|
b459b0fe89 | ||
|
|
2b20cecb79 | ||
|
|
e20149a93c | ||
|
|
2b76ae83b1 | ||
|
|
dfa623d98f | ||
|
|
6586cdd060 | ||
|
|
87909c27c0 | ||
|
|
e9eebadce6 | ||
|
|
fd7a73c1e7 | ||
|
|
f28f0b98a0 | ||
|
|
84a6c38d9c | ||
|
|
561055d5d6 | ||
|
|
1977c7478e | ||
|
|
1ffd984eb3 | ||
|
|
53012da946 | ||
|
|
cf45b4c82c | ||
|
|
67ee1bfb9d | ||
|
|
dabb7c2409 | ||
|
|
52a1dc5523 | ||
|
|
118e310884 | ||
|
|
2d31696820 | ||
|
|
653f8c6fd8 | ||
|
|
2c2f3ea5f4 | ||
|
|
79906b4e15 | ||
|
|
2d00f9229c | ||
|
|
d1f09ea684 | ||
|
|
e1179820b7 | ||
|
|
3e57534b45 | ||
|
|
b94488175e | ||
|
|
f2e16b49fd | ||
|
|
51e5e2c6e5 | ||
|
|
a16866b269 | ||
|
|
b770b06ed8 | ||
|
|
9d566330be |
10
.deepsource.toml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
version = 1
|
||||||
|
|
||||||
|
[[analyzers]]
|
||||||
|
name = "javascript"
|
||||||
|
|
||||||
|
[analyzers.meta]
|
||||||
|
plugins = ["react"]
|
||||||
|
|
||||||
|
[[transformers]]
|
||||||
|
name = "prettier"
|
||||||
12
.eslintrc.js
@@ -2,12 +2,12 @@ module.exports = {
|
|||||||
extends: [
|
extends: [
|
||||||
'mantine',
|
'mantine',
|
||||||
'plugin:@next/next/recommended',
|
'plugin:@next/next/recommended',
|
||||||
'plugin:jest/recommended',
|
|
||||||
'eslint:recommended',
|
'eslint:recommended',
|
||||||
'plugin:@typescript-eslint/eslint-recommended',
|
'plugin:@typescript-eslint/eslint-recommended',
|
||||||
'plugin:@typescript-eslint/recommended',
|
'plugin:@typescript-eslint/recommended',
|
||||||
|
'plugin:vitest/recommended',
|
||||||
],
|
],
|
||||||
plugins: ['testing-library', 'jest', 'react-hooks', 'react', 'unused-imports'],
|
plugins: ['testing-library', 'react-hooks', 'react', 'unused-imports', 'vitest'],
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: ['**/?(*.)+(spec|test).[jt]s?(x)'],
|
files: ['**/?(*.)+(spec|test).[jt]s?(x)'],
|
||||||
@@ -31,5 +31,13 @@ module.exports = {
|
|||||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||||
'no-continue': 'off',
|
'no-continue': 'off',
|
||||||
'linebreak-style': 0,
|
'linebreak-style': 0,
|
||||||
|
'import/extensions': 'off',
|
||||||
|
'vitest/max-nested-describe': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
max: 3,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'testing-library/no-node-access': ['error', { allowContainerFirstChild: true }],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
19
.github/ISSUE_TEMPLATE/bug.yml
vendored
@@ -32,8 +32,15 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: logs
|
id: logs
|
||||||
attributes:
|
attributes:
|
||||||
label: Additional info
|
label: Logs
|
||||||
description: Logs? Screenshots? More info?
|
description: Provide your Homarr logs so we can investigate what's going on
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Context
|
||||||
|
description: Screenshots? More info?
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
@@ -42,9 +49,11 @@ body:
|
|||||||
label: Please tick the boxes
|
label: Please tick the boxes
|
||||||
description: Before submitting, please ensure that
|
description: Before submitting, please ensure that
|
||||||
options:
|
options:
|
||||||
- label: You've read the [docs](https://github.com/ajnart/homarr#readme)
|
- label: I confirm that I attached the proper logs
|
||||||
required: true
|
required: true
|
||||||
- label: You've checked for [duplicate issues](https://github.com/ajnart/homarr/issues)
|
- label: I've read the [docs](https://github.com/ajnart/homarr#readme)
|
||||||
required: true
|
required: true
|
||||||
- label: You've tried to debug yourself
|
- label: I've checked for [duplicate issues](https://github.com/ajnart/homarr/issues)
|
||||||
|
required: true
|
||||||
|
- label: I've tried to debug myself
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
7
.github/workflows/docker.yml
vendored
@@ -19,6 +19,9 @@ env:
|
|||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
# github.repository as <account>/<repo>
|
# github.repository as <account>/<repo>
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Push image to GitHub Packages.
|
# Push image to GitHub Packages.
|
||||||
@@ -49,7 +52,7 @@ jobs:
|
|||||||
${{ runner.os }}-yarn-
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
- name: Restore NextJS cache
|
- name: Restore NextJS cache
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
||||||
path: |
|
path: |
|
||||||
@@ -89,7 +92,7 @@ jobs:
|
|||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
context: .
|
context: .
|
||||||
|
|||||||
133
.github/workflows/docker_dev.yml
vendored
@@ -1,8 +1,5 @@
|
|||||||
name: Development CI
|
name: Development CI
|
||||||
# This workflow uses actions that are not certified by GitHub.
|
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [dev]
|
branches: [dev]
|
||||||
@@ -19,16 +16,27 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
description: 'Tag to deploy to'
|
description: 'Tag to deploy to'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# Use docker.io for Docker Hub if empty
|
# Use docker.io for Docker Hub if empty
|
||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
# github.repository as <account>/<repo>
|
# github.repository as <account>/<repo>
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # for checkout repository
|
||||||
|
actions: read # for fetching base branch bundle stats
|
||||||
|
pull-requests: write # for comments
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Push image to GitHub Packages.
|
# Push image to GitHub Packages.
|
||||||
# See also https://docs.docker.com/docker-hub/builds/
|
# See also https://docs.docker.com/docker-hub/builds/
|
||||||
yarn_install_and_build:
|
yarn_install_and_build_dev:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
packages: write
|
packages: write
|
||||||
@@ -53,21 +61,20 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-yarn-
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
- name: Restore NextJS cache
|
- name: Restore next build
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
|
id: restore-build-cache
|
||||||
|
env:
|
||||||
|
cache-name: cache-next-build
|
||||||
with:
|
with:
|
||||||
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
path: .next/cache
|
||||||
path: |
|
key: ${{ runner.os }}-build-${{ env.cache-name }}
|
||||||
${{ github.workspace }}/.next/cache
|
|
||||||
# Generate a new cache whenever packages or source files change.
|
|
||||||
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
|
|
||||||
# If source files changed but packages didn't, rebuild from a prior cache.
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
|
|
||||||
|
|
||||||
- run: yarn install --immutable
|
- run: yarn install --immutable
|
||||||
|
|
||||||
- run: yarn build
|
- run: yarn turbo build
|
||||||
|
|
||||||
|
- run: yarn test:run
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
@@ -98,7 +105,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
context: .
|
context: .
|
||||||
@@ -107,3 +114,95 @@ jobs:
|
|||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
analyze:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install Node.js
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
id: yarn-cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
|
- name: Restore next build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
id: restore-build-cache
|
||||||
|
env:
|
||||||
|
cache-name: cache-next-build
|
||||||
|
with:
|
||||||
|
# if you use a custom build directory, replace all instances of `.next` in this file with your build directory
|
||||||
|
# ex: if your app builds to `dist`, replace `.next` with `dist`
|
||||||
|
path: .next/cache
|
||||||
|
# change this if you prefer a more strict cache
|
||||||
|
key: ${{ runner.os }}-build-${{ env.cache-name }}
|
||||||
|
|
||||||
|
- run: yarn install
|
||||||
|
|
||||||
|
- name: Build next.js app
|
||||||
|
# change this if your site requires a custom build command
|
||||||
|
run: yarn turbo build
|
||||||
|
|
||||||
|
# Here's the first place where next-bundle-analysis' own script is used
|
||||||
|
# This step pulls the raw bundle stats for the current bundle
|
||||||
|
- name: Analyze bundle
|
||||||
|
run: npx -p nextjs-bundle-analysis report
|
||||||
|
|
||||||
|
- name: Upload bundle
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: bundle
|
||||||
|
path: .next/analyze/__bundle_analysis.json
|
||||||
|
|
||||||
|
- name: Download base branch bundle stats
|
||||||
|
uses: dawidd6/action-download-artifact@v2
|
||||||
|
continue-on-error: true
|
||||||
|
if: success() && github.event.number
|
||||||
|
with:
|
||||||
|
workflow: nextjs_bundle_analysis.yml
|
||||||
|
branch: ${{ github.event.pull_request.base.ref }}
|
||||||
|
path: .next/analyze/base
|
||||||
|
|
||||||
|
# And here's the second place - this runs after we have both the current and
|
||||||
|
# base branch bundle stats, and will compare them to determine what changed.
|
||||||
|
# There are two configurable arguments that come from package.json:
|
||||||
|
#
|
||||||
|
# - budget: optional, set a budget (bytes) against which size changes are measured
|
||||||
|
# it's set to 350kb here by default, as informed by the following piece:
|
||||||
|
# https://infrequently.org/2021/03/the-performance-inequality-gap/
|
||||||
|
#
|
||||||
|
# - red-status-percentage: sets the percent size increase where you get a red
|
||||||
|
# status indicator, defaults to 20%
|
||||||
|
#
|
||||||
|
# Either of these arguments can be changed or removed by editing the `nextBundleAnalysis`
|
||||||
|
# entry in your package.json file.
|
||||||
|
- name: Compare with base branch bundle
|
||||||
|
if: success() && github.event.number
|
||||||
|
run: ls -laR .next/analyze/base && npx -p nextjs-bundle-analysis compare
|
||||||
|
|
||||||
|
- name: Get Comment Body
|
||||||
|
id: get-comment-body
|
||||||
|
if: success() && github.event.number
|
||||||
|
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
|
||||||
|
run: |
|
||||||
|
echo "body<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "$(cat .next/analyze/__bundle_analysis_comment.txt)" >> $GITHUB_OUTPUT
|
||||||
|
echo EOF >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Comment
|
||||||
|
uses: marocchino/sticky-pull-request-comment@v2
|
||||||
|
with:
|
||||||
|
header: next-touched-pages
|
||||||
|
message: ${{ steps.get-comment-body.outputs.body }}
|
||||||
11
.gitignore
vendored
@@ -25,6 +25,7 @@ yarn-debug.log*
|
|||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
|
.env
|
||||||
.env.local
|
.env.local
|
||||||
.env.development.local
|
.env.development.local
|
||||||
.env.test.local
|
.env.test.local
|
||||||
@@ -32,6 +33,7 @@ yarn-error.log*
|
|||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
.turbo
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
|
||||||
# storybook
|
# storybook
|
||||||
@@ -46,4 +48,11 @@ data/configs
|
|||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
!.yarn/sdks
|
!.yarn/sdks
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
|
#envfiles
|
||||||
|
.env
|
||||||
|
|
||||||
|
#Languages other than 'en'
|
||||||
|
public/locales/*
|
||||||
|
!public/locales/en
|
||||||
786
.yarn/releases/yarn-3.2.1.cjs
vendored
874
.yarn/releases/yarn-3.6.0.cjs
vendored
Executable file
5
.yarnrc
@@ -1,5 +0,0 @@
|
|||||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
||||||
# yarn lockfile v1
|
|
||||||
|
|
||||||
|
|
||||||
yarn-path ".yarn/releases/yarn-1.22.19.cjs"
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
nodeLinker: node-modules
|
nodeLinker: node-modules
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-3.2.1.cjs
|
yarnPath: .yarn/releases/yarn-3.6.0.cjs
|
||||||
|
|||||||
@@ -104,3 +104,11 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/ajnart
|
|||||||
Homarr uses [GitMoji](https://gitmoji.dev/).
|
Homarr uses [GitMoji](https://gitmoji.dev/).
|
||||||
We would appreciate it if everyone keeps their commit messages withing these rulings.
|
We would appreciate it if everyone keeps their commit messages withing these rulings.
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
> Components should be tested using unit tests. A unit is the smallest isolated part of the component. Unit tests must not have any dependencies and must be isolated.
|
||||||
|
|
||||||
|
- Place testfiles directly at the root of the unit
|
||||||
|
- Only test a single unit of work inside a unit test
|
||||||
|
- You may test multiple units inside one test file
|
||||||
|
- Testnames do not begin with ``should`` or the unit name
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
FROM node:16-alpine
|
FROM node:20-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
ENV NEXT_TELEMETRY_DISABLED 1
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
ENV NODE_OPTIONS '--no-experimental-fetch'
|
||||||
|
|
||||||
COPY next.config.js ./
|
COPY next.config.js ./
|
||||||
COPY public ./public
|
COPY public ./public
|
||||||
COPY package.json ./package.json
|
COPY package.json ./package.json
|
||||||
|
|
||||||
# Automatically leverage output traces to reduce image size
|
# Automatically leverage output traces to reduce image size
|
||||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||||
COPY .next/standalone ./
|
COPY .next/standalone ./
|
||||||
COPY .next/static ./.next/static
|
COPY .next/static ./.next/static
|
||||||
|
|||||||
183
README.md
@@ -1,148 +1,123 @@
|
|||||||
|
|
||||||
<!-- Project Title -->
|
<!-- Project Title -->
|
||||||
<h1 align="center">Homarr</h1>
|

|
||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars&style=flat-square?branch=master&kill_cache=1%22">
|
<img src="https://img.shields.io/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars&style=flat-square?branch=master&kill_cache=1%22">
|
||||||
<a href="https://github.com/ajnart/homarr/releases/latest">
|
<a href="https://github.com/ajnart/homarr/releases/latest">
|
||||||
<img alt="Latest Release (Semver)" src="https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release">
|
<img alt="Latest Release (Semver)" src="https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/ajnart/homarr/actions/workflows/docker.yml">
|
<a href="https://github.com/ajnart/homarr/actions/workflows/docker.yml">
|
||||||
<img title="Docker CI Status" src="https://github.com/ajnart/homarr/actions/workflows/docker.yml/badge.svg" alt="CI Status">
|
<img title="Docker CI Status" src="https://github.com/ajnart/homarr/actions/workflows/docker.yml/badge.svg" alt="CI Status">
|
||||||
</a>
|
</a>
|
||||||
<a href=https://crowdin.com/project/homarr>
|
<a href=https://crowdin.com/project/homarr>
|
||||||
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
|
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://discord.gg/aCsmEV5RgA">
|
<a href="https://discord.gg/aCsmEV5RgA">
|
||||||
<img title="Discord" src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield">
|
<img title="Discord" src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- Links -->
|
<!-- Links -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<i>Join the discord! — Don't forget to star the repo if you are enjoying the project!</i>
|
<a href="https://demo.homarr.dev/">
|
||||||
</p>
|
<strong>Demo ✨</strong>
|
||||||
<h3 align="center"><a href="https://homarr.dev">Read the Docs</a></h3>
|
</a>
|
||||||
<p align="center">
|
•
|
||||||
<a href="https://demo.homarr.dev/"><strong> Demo ↗️ </strong></a> • <a href="https://homarr.dev/docs/introduction/installation"><strong> Install ➡️ </strong></a>
|
<a href="https://homarr.dev/docs/introduction/installation">
|
||||||
|
<strong>Install 💻</strong>
|
||||||
|
</a> •
|
||||||
|
<a href="https://crowdin.com/project/homarr">
|
||||||
|
<strong>Translations 🈺</strong>
|
||||||
|
</a> •
|
||||||
|
<a href="https://discord.com/invite/aCsmEV5RgA">
|
||||||
|
<strong>Discord 👋</strong>
|
||||||
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
Simplify the management of your server with Homarr - a sleek, modern dashboard that puts all of your apps and services at your fingertips. With Homarr, you can access and control everything in one convenient location. Homarr seamlessly integrates with the apps you've added, providing you with valuable information and giving you complete control. Installation is a breeze, and Homarr supports a wide range of deployment methods.
|
||||||
|
|
||||||
<!-- Homarr Description -->
|
<br/>
|
||||||
<img align="right" width=150 src="public/imgs/logo/logo-color.svg" />
|
<br/>
|
||||||
|
|
||||||
Homarr is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place.
|

|
||||||
|
|
||||||
It integrates with the services you use to display information on the homepage (E.g. Show upcoming Sonarr/Radarr releases).
|
- 🖌️ Highly customizable with an extensive drag and drop grid system
|
||||||
|
- ✨ Integrates seamlessly with your favorite self-hosted applications
|
||||||
|
- 📌 Easy and fast app management - no YAML involved
|
||||||
|
- 🙊 Advanced secrets' management system for enhanced security
|
||||||
|
- 📄 Detailed documentation and active community
|
||||||
|
- 🔍 Search through the web or supported integrations in an instant
|
||||||
|
- 🏴 Monitor your application with a built-in status system
|
||||||
|
- 🦞 Comprehensive built-in icon picker with over 7000 icons
|
||||||
|
- 🐳 Easy deployment with Docker, unRAID, and Synology
|
||||||
|
- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...)
|
||||||
|
- 💵 Free and Open-Source - your data stays on your device. No telemetry data.
|
||||||
|
|
||||||
For a full list of integrations, [head over to our documentation](https://homarr.dev/docs/integrations/).
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
If you have any questions about Homarr or want to share information with us, please go to one of the following places:
|

|
||||||
|
|
||||||
- [Github Discussions](https://github.com/ajnart/homarr/discussions)
|
Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/integrations/), that connect to your applications and enable you to control them directly from the dashboard.
|
||||||
- [Discord Server](https://discord.gg/aCsmEV5RgA)
|
Each widget and integration has a comprehensive documentation for your comfort.
|
||||||
|
Homarr will integrate with the following applications of yours:
|
||||||
|
|
||||||
**For more information, [read the documentation!](https://homarr.dev/docs/about)**
|
- 📥 Torrent clients
|
||||||
|
- [Deluge](https://homarr.dev/docs/integrations/#deluge)
|
||||||
|
- [Transmission](https://homarr.dev/docs/integrations/#transmission)
|
||||||
|
- [qBittorent](https://homarr.dev/docs/integrations/#qbittorrent-integration)
|
||||||
|
- 📥 Usenet clients
|
||||||
|
- [SABnzbd](https://homarr.dev/docs/integrations/#sabnzbd)
|
||||||
|
- [NZBGet](https://homarr.dev/docs/integrations/#nzbget)
|
||||||
|
- 📚 Media collection managers
|
||||||
|
- [Sonarr](https://homarr.dev/docs/integrations/#sonarr)
|
||||||
|
- [Radarr](https://homarr.dev/docs/integrations/#radarr)
|
||||||
|
- [Lidarr](https://homarr.dev/docs/integrations/#lidarr)
|
||||||
|
- [Readarr](https://homarr.dev/docs/integrations/#readarr)
|
||||||
|
- 🎞️ Media request managers
|
||||||
|
- [Overseerr](https://homarr.dev/docs/integrations/#overseerr--jellyseerr)
|
||||||
|
- [Jellyseerr](https://homarr.dev/docs/integrations/#overseerr--jellyseerr)
|
||||||
|
- 🔌 [Dash.](https://homarr.dev/docs/integrations/#dash)
|
||||||
|
- 🐳 [Docker](https://homarr.dev/docs/integrations/#docker)
|
||||||
|
|
||||||
<details>
|
We're constantly adding new integrations and widgets, which will enhance your experience even further.
|
||||||
<summary><b>Table of Contents</b></summary>
|
|
||||||
<p>
|
|
||||||
|
|
||||||
- [✨ Features](#-features)
|
<br/>
|
||||||
- [👀 Preview](#-preview)
|
<br/>
|
||||||
- [🛠️ Running a dev environment](#️-running-a-dev-environment)
|
|
||||||
- [💖 Contributing](#-contributing)
|
|
||||||
- [📜 License](#-license)
|
|
||||||
|
|
||||||
</p>
|

|
||||||
</details>
|
|
||||||
|
|
||||||
---
|
https://user-images.githubusercontent.com/30572287/217098893-5880e7de-13d0-42c5-b505-f7921593396f.mp4
|
||||||
|
|
||||||
## ✨ Features
|
<br/>
|
||||||
- Integrates with services you use.
|
<br/>
|
||||||
- Search the web directly from your homepage.
|
|
||||||
- Real-time status indicator for every service.
|
|
||||||
- Automatically finds icons while you type the name of a service.
|
|
||||||
- Widgets that can display all types of information.
|
|
||||||
- Easy deployment with Docker.
|
|
||||||
- Very light-weight and fast.
|
|
||||||
- Free and Open-Source.
|
|
||||||
- And more...
|
|
||||||
|
|
||||||
**[⤴️ Back to Top](#homarr)**
|

|
||||||
|
|
||||||
---
|
Since we are updating Homarr very frequently, we recommend reading our official installation guides:
|
||||||
|
|
||||||
## 👀 Preview
|
<a href="https://homarr.dev/docs/introduction/installation">
|
||||||
<img alt="Homarr Preview" align="center" width="100%" src="https://user-images.githubusercontent.com/71191962/169860380-856634fb-4f41-47cb-ba54-6a9e7b3b9c81.gif" />
|
<img src="docs/installation-button.png" width="200" />
|
||||||
|
</a>
|
||||||
|
|
||||||
**[⤴️ Back to Top](#homarr)**
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
---
|

|
||||||
|
Homarr is maintained by motivated developers in their free-time.
|
||||||
|
We work for fun and learning on this project.
|
||||||
|
|
||||||
### 🛠️ Running a dev environment
|
Hence, we're glad for all the help and support we can get.
|
||||||
|
Although a donation is appreciated, there are other ways you can support us.
|
||||||
|
|
||||||
_Requirements_:
|
<a href="https://ko-fi.com/ajnart">
|
||||||
- [Git](https://git-scm.com/downloads)
|
<img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=3" width="200" />
|
||||||
- [NodeJS](https://nodejs.org/en/) _(Latest or LTS)_
|
</a>
|
||||||
- [Yarn](https://yarnpkg.com/)
|
|
||||||
|
|
||||||
**Installing**
|
You can also support us by helping with [translating the entire project](https://homarr.dev/docs/community/translations) to as many language as possible or contributing directly to the code or documentation.
|
||||||
|
|
||||||
- Clone the GitHub repo: `git clone https://github.com/ajnart/homarr.git` & `cd homarr`
|
|
||||||
- Install all dependencies: `yarn install`
|
|
||||||
- Build the source: `yarn build`
|
|
||||||
- Start the NextJS web server: ``yarn start``
|
|
||||||
- *Note: If you want to update the code in real time, launch with ``yarn dev``*
|
|
||||||
|
|
||||||
**[⤴️ Back to Top](#homarr)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 💖 Contributing
|
|
||||||
**Please read our [Contribution Guidelines](/CONTRIBUTING.md)**
|
**Please read our [Contribution Guidelines](/CONTRIBUTING.md)**
|
||||||
|
|
||||||
All contributions are highly appreciated.
|
All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️
|
||||||
|
|
||||||
**[⤴️ Back to Top](#homarr)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## 📜 License
|
|
||||||
Homarr is Licensed under [MIT](https://en.wikipedia.org/wiki/MIT_License)
|
|
||||||
|
|
||||||
```txt
|
|
||||||
Copyright © 2022 Thomas "ajnart" Camlong
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
```
|
|
||||||
|
|
||||||
**[⤴️ Back to Top](#homarr)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<i>Thank you for visiting! <b>For more information <a href="https://homarr.dev">read the documentation!</a></b></i>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
</p>
|
|
||||||
|
|||||||
44
checkly.config.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import { defineConfig } from 'checkly'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See https://www.checklyhq.com/docs/cli/project-structure/
|
||||||
|
*/
|
||||||
|
const config = defineConfig({
|
||||||
|
/* A human friendly name for your project */
|
||||||
|
projectName: 'homarr',
|
||||||
|
/** A logical ID that needs to be unique across your Checkly account,
|
||||||
|
* See https://www.checklyhq.com/docs/cli/constructs/ to learn more about logical IDs.
|
||||||
|
*/
|
||||||
|
logicalId: 'homarr',
|
||||||
|
/* An optional URL to your Git repo */
|
||||||
|
repoUrl: 'https://github.com/checkly/checkly-cli',
|
||||||
|
/* Sets default values for Checks */
|
||||||
|
checks: {
|
||||||
|
/* A default for how often your Check should run in minutes */
|
||||||
|
frequency: 10,
|
||||||
|
/* Checkly data centers to run your Checks as monitors */
|
||||||
|
locations: ['us-east-1', 'eu-west-1'],
|
||||||
|
/* An optional array of tags to organize your Checks */
|
||||||
|
tags: ['mac'],
|
||||||
|
/** The Checkly Runtime identifier, determining npm packages and the Node.js version available at runtime.
|
||||||
|
* See https://www.checklyhq.com/docs/cli/npm-packages/
|
||||||
|
*/
|
||||||
|
runtimeId: '2023.02',
|
||||||
|
/* A glob pattern that matches the Checks inside your repo, see https://www.checklyhq.com/docs/cli/using-check-test-match/ */
|
||||||
|
checkMatch: '**/__checks__/**/*.check.ts',
|
||||||
|
browserChecks: {
|
||||||
|
/* A glob pattern matches any Playwright .spec.ts files and automagically creates a Browser Check. This way, you
|
||||||
|
* can just write native Playwright code. See https://www.checklyhq.com/docs/cli/using-check-test-match/
|
||||||
|
* */
|
||||||
|
testMatch: '**/__checks__/**/*.spec.ts',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cli: {
|
||||||
|
/* The default datacenter location to use when running npx checkly test */
|
||||||
|
runLocation: 'eu-west-1',
|
||||||
|
/* An array of default reporters to use when a reporter is not specified with the "--reporter" flag */
|
||||||
|
reporters: ['list'],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export default config
|
||||||
@@ -1,387 +1,389 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"configProperties": {
|
"configProperties": {
|
||||||
"name": "default"
|
"name": "default"
|
||||||
},
|
},
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f",
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f",
|
||||||
"position": 1,
|
"position": 1,
|
||||||
"name": "Welcome to Homarr 🎉",
|
"name": "Welcome to Homarr 🎉",
|
||||||
"type": "category"
|
"type": "category"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"wrappers": [
|
||||||
|
{
|
||||||
|
"id": "default",
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a326",
|
||||||
|
"position": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"apps": [
|
||||||
|
{
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a337",
|
||||||
|
"name": "Discord",
|
||||||
|
"url": "https://discord.com/invite/aCsmEV5RgA",
|
||||||
|
"behaviour": {
|
||||||
|
"onClickUrl": "https://discord.com/invite/aCsmEV5RgA",
|
||||||
|
"isOpeningNewTab": true,
|
||||||
|
"externalUrl": "https://discord.com/invite/aCsmEV5RgA"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"enabledStatusChecker": false,
|
||||||
|
"statusCodes": [
|
||||||
|
"200"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"appearance": {
|
||||||
|
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/discord.png"
|
||||||
|
},
|
||||||
|
"integration": {
|
||||||
|
"type": null,
|
||||||
|
"properties": []
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 3,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 3,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a990",
|
||||||
|
"name": "Donate",
|
||||||
|
"url": "https://ko-fi.com/ajnart",
|
||||||
|
"behaviour": {
|
||||||
|
"onClickUrl": "https://ko-fi.com/ajnart",
|
||||||
|
"externalUrl": "https://ko-fi.com/ajnart",
|
||||||
|
"isOpeningNewTab": true
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"enabledStatusChecker": false,
|
||||||
|
"statusCodes": [
|
||||||
|
"200"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"appearance": {
|
||||||
|
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ko-fi.png"
|
||||||
|
},
|
||||||
|
"integration": {
|
||||||
|
"type": null,
|
||||||
|
"properties": []
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 3,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a330",
|
||||||
|
"name": "Contribute",
|
||||||
|
"url": "https://github.com/ajnart/homarr",
|
||||||
|
"behaviour": {
|
||||||
|
"onClickUrl": "https://github.com/ajnart/homarr",
|
||||||
|
"externalUrl": "https://github.com/ajnart/homarr",
|
||||||
|
"isOpeningNewTab": true
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"enabledStatusChecker": false,
|
||||||
|
"statusCodes": []
|
||||||
|
},
|
||||||
|
"appearance": {
|
||||||
|
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/github.png"
|
||||||
|
},
|
||||||
|
"integration": {
|
||||||
|
"type": null,
|
||||||
|
"properties": []
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 4,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5df743d9-5cb1-457c-85d2-64ff86855652",
|
||||||
|
"name": "Documentation",
|
||||||
|
"url": "https://homarr.dev",
|
||||||
|
"behaviour": {
|
||||||
|
"onClickUrl": "https://homarr.dev",
|
||||||
|
"externalUrl": "https://homarr.dev",
|
||||||
|
"isOpeningNewTab": true
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"enabledStatusChecker": false,
|
||||||
|
"statusCodes": [
|
||||||
|
"200"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"appearance": {
|
||||||
|
"iconUrl": "/imgs/logo/logo.png"
|
||||||
|
},
|
||||||
|
"integration": {
|
||||||
|
"type": null,
|
||||||
|
"properties": []
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 1,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"id": "971aa859-8570-49a1-8d34-dd5c7b3638d1",
|
||||||
|
"type": "date",
|
||||||
|
"properties": {
|
||||||
|
"display24HourFormat": true
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 4,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e3004052-6b83-480e-b458-56e8ccdca5f0",
|
||||||
|
"type": "weather",
|
||||||
|
"properties": {
|
||||||
|
"displayInFahrenheit": false,
|
||||||
|
"location": "Paris"
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "category",
|
||||||
|
"properties": {
|
||||||
|
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shape": {
|
||||||
|
"md": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sm": {
|
||||||
|
"location": {
|
||||||
|
"x": 1,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lg": {
|
||||||
|
"location": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"width": 2,
|
||||||
|
"height": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"common": {
|
||||||
|
"searchEngine": {
|
||||||
|
"type": "google",
|
||||||
|
"properties": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"customization": {
|
||||||
|
"layout": {
|
||||||
|
"enabledLeftSidebar": false,
|
||||||
|
"enabledRightSidebar": false,
|
||||||
|
"enabledDocker": false,
|
||||||
|
"enabledPing": false,
|
||||||
|
"enabledSearchbar": true
|
||||||
|
},
|
||||||
|
"pageTitle": "Homarr v0.12 ⭐️",
|
||||||
|
"logoImageUrl": "/imgs/logo/logo.png",
|
||||||
|
"faviconUrl": "/imgs/favicon/favicon-squared.png",
|
||||||
|
"backgroundImageUrl": "",
|
||||||
|
"customCss": "",
|
||||||
|
"colors": {
|
||||||
|
"primary": "red",
|
||||||
|
"secondary": "yellow",
|
||||||
|
"shade": 7
|
||||||
|
},
|
||||||
|
"appOpacity": 100
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
}
|
||||||
"wrappers": [
|
|
||||||
{
|
|
||||||
"id": "default",
|
|
||||||
"position": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a326",
|
|
||||||
"position": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"apps": [
|
|
||||||
{
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a337",
|
|
||||||
"name": "Discord",
|
|
||||||
"url": "https://discord.com/invite/aCsmEV5RgA",
|
|
||||||
"behaviour": {
|
|
||||||
"onClickUrl": "https://discord.com/invite/aCsmEV5RgA",
|
|
||||||
"isOpeningNewTab": true,
|
|
||||||
"externalUrl": "https://discord.com/invite/aCsmEV5RgA"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"enabledStatusChecker": false,
|
|
||||||
"okStatus": [
|
|
||||||
200
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"appearance": {
|
|
||||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/discord.png"
|
|
||||||
},
|
|
||||||
"integration": {
|
|
||||||
"type": null,
|
|
||||||
"properties": []
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 3,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a990",
|
|
||||||
"name": "Donate",
|
|
||||||
"url": "https://ko-fi.com/ajnart",
|
|
||||||
"behaviour": {
|
|
||||||
"onClickUrl": "https://ko-fi.com/ajnart",
|
|
||||||
"externalUrl": "https://ko-fi.com/ajnart",
|
|
||||||
"isOpeningNewTab": true
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"enabledStatusChecker": false,
|
|
||||||
"okStatus": [
|
|
||||||
200
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"appearance": {
|
|
||||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ko-fi.png"
|
|
||||||
},
|
|
||||||
"integration": {
|
|
||||||
"type": null,
|
|
||||||
"properties": []
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 2
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a330",
|
|
||||||
"name": "Contribute",
|
|
||||||
"url": "https://github.com/ajnart/homarr",
|
|
||||||
"behaviour": {
|
|
||||||
"onClickUrl": "https://github.com/ajnart/homarr",
|
|
||||||
"externalUrl": "https://github.com/ajnart/homarr",
|
|
||||||
"isOpeningNewTab": true
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"enabledStatusChecker": false,
|
|
||||||
"okStatus": []
|
|
||||||
},
|
|
||||||
"appearance": {
|
|
||||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/github.png"
|
|
||||||
},
|
|
||||||
"integration": {
|
|
||||||
"type": null,
|
|
||||||
"properties": []
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 2
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "5df743d9-5cb1-457c-85d2-64ff86855652",
|
|
||||||
"name": "Documentation",
|
|
||||||
"url": "https://homarr.dev",
|
|
||||||
"behaviour": {
|
|
||||||
"onClickUrl": "https://homarr.dev",
|
|
||||||
"externalUrl": "https://homarr.dev",
|
|
||||||
"isOpeningNewTab": true
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"enabledStatusChecker": false,
|
|
||||||
"okStatus": [
|
|
||||||
200
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"appearance": {
|
|
||||||
"iconUrl": "/imgs/logo/logo.png"
|
|
||||||
},
|
|
||||||
"integration": {
|
|
||||||
"type": null,
|
|
||||||
"properties": []
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 1,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"widgets": [
|
|
||||||
{
|
|
||||||
"id": "date",
|
|
||||||
"properties": {
|
|
||||||
"display24HourFormat": true
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "weather",
|
|
||||||
"properties": {
|
|
||||||
"displayInFahrenheit": false,
|
|
||||||
"location": "Paris"
|
|
||||||
},
|
|
||||||
"area": {
|
|
||||||
"type": "category",
|
|
||||||
"properties": {
|
|
||||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shape": {
|
|
||||||
"md": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sm": {
|
|
||||||
"location": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lg": {
|
|
||||||
"location": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"width": 2,
|
|
||||||
"height": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"common": {
|
|
||||||
"searchEngine": {
|
|
||||||
"type": "google",
|
|
||||||
"properties": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"customization": {
|
|
||||||
"layout": {
|
|
||||||
"enabledLeftSidebar": false,
|
|
||||||
"enabledRightSidebar": false,
|
|
||||||
"enabledDocker": false,
|
|
||||||
"enabledPing": false,
|
|
||||||
"enabledSearchbar": true
|
|
||||||
},
|
|
||||||
"pageTitle": "Homarr v0.11 ⭐️",
|
|
||||||
"logoImageUrl": "/imgs/logo/logo.png",
|
|
||||||
"faviconUrl": "/imgs/favicon/favicon-squared",
|
|
||||||
"backgroundImageUrl": "",
|
|
||||||
"customCss": "",
|
|
||||||
"colors": {
|
|
||||||
"primary": "red",
|
|
||||||
"secondary": "yellow",
|
|
||||||
"shade": 7
|
|
||||||
},
|
|
||||||
"appOpacity": 100
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
export const REPO_URL = 'ajnart/homarr';
|
export const REPO_URL = 'ajnart/homarr';
|
||||||
export const CURRENT_VERSION = 'v0.11.2';
|
|
||||||
export const ICON_PICKER_SLICE_LIMIT = 36;
|
export const ICON_PICKER_SLICE_LIMIT = 36;
|
||||||
|
|||||||
BIN
docs/banner.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
docs/banner.xcf
Normal file
BIN
docs/installation-button.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
docs/section-contribute.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/section-features.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
docs/section-installation.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/section-preview.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/section-template.xcf
Normal file
BIN
docs/section-widgets-and-integrations.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
@@ -25,11 +25,17 @@ module.exports = {
|
|||||||
'uk',
|
'uk',
|
||||||
'zh',
|
'zh',
|
||||||
'el',
|
'el',
|
||||||
|
'sk',
|
||||||
|
'no',
|
||||||
|
'tr',
|
||||||
|
'lv'
|
||||||
],
|
],
|
||||||
localePath: path.resolve('./public/locales'),
|
|
||||||
fallbackLng: 'en',
|
|
||||||
localeDetection: true,
|
localeDetection: true,
|
||||||
returnEmptyString: false,
|
|
||||||
},
|
},
|
||||||
|
returnEmptyString: false,
|
||||||
|
appendNamespaceToCIMode: true,
|
||||||
reloadOnPrerender: process.env.NODE_ENV === 'development',
|
reloadOnPrerender: process.env.NODE_ENV === 'development',
|
||||||
|
fallbackLng: 'en',
|
||||||
|
localePath: path.resolve('./public/locales'),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,4 +11,5 @@ module.exports = withBundleAnalyzer({
|
|||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
output: 'standalone',
|
output: 'standalone',
|
||||||
i18n,
|
i18n,
|
||||||
|
transpilePackages: ['@jellyfin/sdk'],
|
||||||
});
|
});
|
||||||
|
|||||||
143
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "homarr",
|
"name": "homarr",
|
||||||
"version": "0.11.2",
|
"version": "0.12.3",
|
||||||
"description": "Homarr - A homepage for your server.",
|
"description": "Homarr - A homepage for your server.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -11,96 +11,137 @@
|
|||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"analyze": "ANALYZE=true next build",
|
"analyze": "ANALYZE=true next build",
|
||||||
|
"turbo": "turbo run build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"export": "next build && next export",
|
"export": "next build && next export",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
"jest": "jest",
|
|
||||||
"jest:watch": "jest --watch",
|
|
||||||
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
|
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
|
||||||
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
|
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
|
||||||
"test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest",
|
"test": "vitest",
|
||||||
"ci": "yarn test && yarn lint --fix && yarn typecheck && yarn prettier:write"
|
"test:ui": "vitest --ui",
|
||||||
|
"test:run": "vitest run",
|
||||||
|
"test:coverage": "vitest run --coverage"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ctrl/deluge": "^4.1.0",
|
"@ctrl/deluge": "^4.1.0",
|
||||||
"@ctrl/qbittorrent": "^4.1.0",
|
"@ctrl/qbittorrent": "^6.0.0",
|
||||||
"@ctrl/shared-torrent": "^4.1.1",
|
"@ctrl/shared-torrent": "^4.1.1",
|
||||||
"@ctrl/transmission": "^4.1.1",
|
"@ctrl/transmission": "^4.1.1",
|
||||||
"@dnd-kit/core": "^6.0.5",
|
"@emotion/react": "^11.10.6",
|
||||||
"@dnd-kit/sortable": "^7.0.1",
|
|
||||||
"@dnd-kit/utilities": "^3.2.0",
|
|
||||||
"@emotion/react": "^11.10.5",
|
|
||||||
"@emotion/server": "^11.10.0",
|
"@emotion/server": "^11.10.0",
|
||||||
"@mantine/carousel": "^5.9.3",
|
"@jellyfin/sdk": "^0.8.0",
|
||||||
"@mantine/core": "^5.9.3",
|
"@mantine/core": "^6.0.0",
|
||||||
"@mantine/dates": "^5.9.3",
|
"@mantine/dates": "^6.0.0",
|
||||||
"@mantine/dropzone": "^5.9.3",
|
"@mantine/dropzone": "^6.0.0",
|
||||||
"@mantine/form": "^5.9.3",
|
"@mantine/form": "^6.0.0",
|
||||||
"@mantine/hooks": "^5.9.3",
|
"@mantine/hooks": "^6.0.0",
|
||||||
"@mantine/modals": "^5.9.3",
|
"@mantine/modals": "^6.0.0",
|
||||||
"@mantine/next": "^5.9.3",
|
"@mantine/next": "^6.0.0",
|
||||||
"@mantine/notifications": "^5.9.3",
|
"@mantine/notifications": "^6.0.0",
|
||||||
"@mantine/prism": "^5.9.3",
|
"@nivo/core": "^0.83.0",
|
||||||
"@nivo/core": "^0.79.0",
|
"@nivo/line": "^0.83.0",
|
||||||
"@nivo/line": "^0.79.1",
|
"@react-native-async-storage/async-storage": "^1.18.1",
|
||||||
"@tabler/icons": "^1.106.0",
|
"@tabler/icons-react": "^2.18.0",
|
||||||
|
"@tanstack/query-async-storage-persister": "^4.27.1",
|
||||||
|
"@tanstack/query-sync-storage-persister": "^4.27.1",
|
||||||
"@tanstack/react-query": "^4.2.1",
|
"@tanstack/react-query": "^4.2.1",
|
||||||
"axios": "^0.27.2",
|
"@tanstack/react-query-devtools": "^4.24.4",
|
||||||
"consola": "^2.15.3",
|
"@tanstack/react-query-persist-client": "^4.28.0",
|
||||||
|
"@vitejs/plugin-react": "^4.0.0",
|
||||||
|
"axios": "^1.0.0",
|
||||||
|
"consola": "^3.0.0",
|
||||||
"cookies-next": "^2.1.1",
|
"cookies-next": "^2.1.1",
|
||||||
"dayjs": "^1.11.6",
|
"dayjs": "^1.11.7",
|
||||||
"dockerode": "^3.3.2",
|
"dockerode": "^3.3.2",
|
||||||
"embla-carousel-react": "^7.0.0",
|
|
||||||
"fily-publish-gridstack": "^0.0.13",
|
"fily-publish-gridstack": "^0.0.13",
|
||||||
"framer-motion": "^6.5.1",
|
"framer-motion": "^10.0.0",
|
||||||
"i18next": "^21.9.1",
|
"html-entities": "^2.3.3",
|
||||||
"i18next-browser-languagedetector": "^6.1.5",
|
"i18next": "^22.5.1",
|
||||||
"i18next-http-backend": "^1.4.1",
|
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"next": "12.2.0",
|
"next": "^13.4.2",
|
||||||
"next-i18next": "^11.3.0",
|
"next-i18next": "^13.0.0",
|
||||||
"nzbget-api": "^0.0.3",
|
"nzbget-api": "^0.0.3",
|
||||||
"ping": "^0.4.2",
|
"prismjs": "^1.29.0",
|
||||||
"prism-react-renderer": "^1.3.5",
|
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
|
"react-i18next": "^12.3.1",
|
||||||
|
"react-simple-code-editor": "^0.13.1",
|
||||||
|
"rss-parser": "^3.12.0",
|
||||||
"sabnzbd-api": "^1.5.0",
|
"sabnzbd-api": "^1.5.0",
|
||||||
"sharp": "^0.30.7",
|
"uuid": "^9.0.0",
|
||||||
"systeminformation": "^5.12.1",
|
"xml-js": "^1.6.11",
|
||||||
"uuid": "^8.3.2",
|
"xss": "^1.0.14",
|
||||||
"yarn": "^1.22.19",
|
"yarn": "^1.22.19",
|
||||||
"zustand": "^4.1.4"
|
"zod": "^3.21.4",
|
||||||
|
"zustand": "^4.3.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@next/bundle-analyzer": "^12.1.4",
|
"@next/bundle-analyzer": "^13.0.0",
|
||||||
"@next/eslint-plugin-next": "^12.1.4",
|
"@next/eslint-plugin-next": "^13.0.0",
|
||||||
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
|
"@testing-library/react": "^14.0.0",
|
||||||
"@types/dockerode": "^3.3.9",
|
"@types/dockerode": "^3.3.9",
|
||||||
"@types/node": "17.0.1",
|
"@types/node": "18.16.17",
|
||||||
"@types/ping": "^0.4.1",
|
"@types/prismjs": "^1.26.0",
|
||||||
"@types/react": "17.0.1",
|
"@types/react": "17.0.60",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^9.0.0",
|
||||||
|
"@types/video.js": "^7.3.51",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.30.7",
|
"@typescript-eslint/eslint-plugin": "^5.30.7",
|
||||||
"@typescript-eslint/parser": "^5.30.7",
|
"@typescript-eslint/parser": "^5.30.7",
|
||||||
|
"@vitest/coverage-c8": "^0.32.0",
|
||||||
|
"@vitest/ui": "^0.32.0",
|
||||||
|
"checkly": "latest",
|
||||||
"eslint": "^8.20.0",
|
"eslint": "^8.20.0",
|
||||||
"eslint-config-airbnb": "^19.0.4",
|
"eslint-config-airbnb": "^19.0.4",
|
||||||
"eslint-config-airbnb-typescript": "^17.0.0",
|
"eslint-config-airbnb-typescript": "^17.0.0",
|
||||||
"eslint-config-mantine": "^2.0.0",
|
"eslint-config-mantine": "^2.0.0",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-jest": "^26.6.0",
|
|
||||||
"eslint-plugin-jsx-a11y": "^6.6.1",
|
"eslint-plugin-jsx-a11y": "^6.6.1",
|
||||||
"eslint-plugin-react": "^7.30.1",
|
"eslint-plugin-react": "^7.30.1",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-testing-library": "^5.5.1",
|
"eslint-plugin-testing-library": "^5.5.1",
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
"eslint-plugin-unused-imports": "^2.0.0",
|
||||||
"jest": "^28.1.3",
|
"eslint-plugin-vitest": "^0.2.0",
|
||||||
|
"happy-dom": "^9.0.0",
|
||||||
|
"node-mocks-http": "^1.12.2",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"sass": "^1.56.1",
|
"sass": "^1.56.1",
|
||||||
"typescript": "^4.7.4"
|
"ts-node": "latest",
|
||||||
|
"turbo": "latest",
|
||||||
|
"typescript": "^5.0.4",
|
||||||
|
"video.js": "^8.0.3",
|
||||||
|
"vitest": "^0.32.0",
|
||||||
|
"vitest-fetch-mock": "^0.2.2"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@types/react": "17.0.2",
|
"@types/react": "17.0.60",
|
||||||
"@types/react-dom": "17.0.2"
|
"@types/react-dom": "17.0.20"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@3.2.1"
|
"packageManager": "yarn@3.6.0",
|
||||||
|
"nextBundleAnalysis": {
|
||||||
|
"budget": null,
|
||||||
|
"budgetPercentIncreaseRed": 20,
|
||||||
|
"minimumChangeThreshold": 0,
|
||||||
|
"showDetails": true
|
||||||
|
},
|
||||||
|
"renovate": {
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:base"
|
||||||
|
],
|
||||||
|
"commitMessagePrefix": "⬆️",
|
||||||
|
"lockFileMaintenance": {
|
||||||
|
"automerge": true
|
||||||
|
},
|
||||||
|
"minor": {
|
||||||
|
"automerge": true
|
||||||
|
},
|
||||||
|
"patch": {
|
||||||
|
"automerge": true
|
||||||
|
},
|
||||||
|
"pin": {
|
||||||
|
"automerge": true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,15 @@
|
|||||||
"delete": "Slet",
|
"delete": "Slet",
|
||||||
"ok": "OK",
|
"ok": "OK",
|
||||||
"edit": "Rediger",
|
"edit": "Rediger",
|
||||||
|
"enabled": "Aktiveret",
|
||||||
|
"disabled": "Deaktiveret",
|
||||||
|
"enableAll": "Aktiver alle",
|
||||||
|
"disableAll": "Deaktiver alle",
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"changePosition": "Ændre placering",
|
"changePosition": "Ændre placering",
|
||||||
"remove": "Fjern",
|
"remove": "Fjern",
|
||||||
"removeConfirm": "Er du sikker på, at du ønsker at fjerne {{item}} ?",
|
"removeConfirm": "Er du sikker på, at du ønsker at fjerne {{item}}?",
|
||||||
|
"createItem": "+ opret {{item}}",
|
||||||
"sections": {
|
"sections": {
|
||||||
"settings": "Indstillinger",
|
"settings": "Indstillinger",
|
||||||
"dangerZone": "Farezone"
|
"dangerZone": "Farezone"
|
||||||
@@ -24,5 +29,11 @@
|
|||||||
"seconds": "sekunder",
|
"seconds": "sekunder",
|
||||||
"minutes": "minutter",
|
"minutes": "minutter",
|
||||||
"hours": "timer"
|
"hours": "timer"
|
||||||
|
},
|
||||||
|
"loading": "Indlæser...",
|
||||||
|
"breakPoints": {
|
||||||
|
"small": "lille",
|
||||||
|
"medium": "mellem",
|
||||||
|
"large": "stor"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
18
public/locales/da/layout/common.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"modals": {
|
||||||
|
"blockedPopups": {
|
||||||
|
"title": "Popups blokeret",
|
||||||
|
"text": "Din browser har blokeret Homarr fra at få adgang til dens API. Dette er oftest forårsaget af AdBlockers eller nægtede tilladelser. Homarr kan ikke anmode om tilladelser automatisk.",
|
||||||
|
"list": {
|
||||||
|
"browserPermission": "Klik på ikonet ved siden af URL'en, og tjek tilladelserne. Tillad popups og vinduer",
|
||||||
|
"adBlockers": "Deaktiver annonceblokkere og sikkerhedsværktøjer fra din browser",
|
||||||
|
"otherBrowser": "Prøv en anden browser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"category": {
|
||||||
|
"openAllInNewTab": "Åbn alle i nye faneblade"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,10 +7,5 @@
|
|||||||
"popover": {
|
"popover": {
|
||||||
"title": "Redigeringstilstand er aktiveret for <1>{{size}}</1> størrelse",
|
"title": "Redigeringstilstand er aktiveret for <1>{{size}}</1> størrelse",
|
||||||
"text": "Du kan justere og konfigurere dine apps nu. Ændringer er <strong>ikke gemt</strong> indtil du forlader redigeringstilstanden"
|
"text": "Du kan justere og konfigurere dine apps nu. Ændringer er <strong>ikke gemt</strong> indtil du forlader redigeringstilstanden"
|
||||||
},
|
|
||||||
"screenSizes": {
|
|
||||||
"small": "lille",
|
|
||||||
"medium": "mellem",
|
|
||||||
"large": "stor"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
{
|
{
|
||||||
"description": "Homarr er et <strong>elegant</strong>, <strong>moderne</strong> dashboard, der giver dig alle dine apps og tjenester lige ved hånden. Med Homarr kan du få adgang til og styre alt på ét praktisk sted. Homarr integrerer problemfrit med de apps, du har tilføjet, og giver dig værdifulde oplysninger og fuld kontrol. Installationen er en leg, og Homarr understøtter en lang række implementeringsmetoder.",
|
"description": "Homarr er et <strong>elegant</strong>, <strong>moderne</strong> dashboard, der giver dig alle dine apps og tjenester lige ved hånden. Med Homarr kan du få adgang til og styre alt på ét praktisk sted. Homarr integrerer problemfrit med de apps, du har tilføjet, og giver dig værdifulde oplysninger og fuld kontrol. Installationen er en leg, og Homarr understøtter en lang række implementeringsmetoder.",
|
||||||
"i18n": "Indlæst I18n oversættelse navnerum",
|
|
||||||
"locales": "Konfigurerede I18n landestandarder",
|
|
||||||
"contact": "Har du problemer eller spørgsmål? Kontakt os!",
|
"contact": "Har du problemer eller spørgsmål? Kontakt os!",
|
||||||
"addToDashboard": "Tilføj til dashboard"
|
"addToDashboard": "Tilføj til dashboard",
|
||||||
}
|
"tip": "Mod henviser til din modificeringstast, det er Ctrl og Command/Super/Windows-tasten",
|
||||||
|
"key": "Genvejstast",
|
||||||
|
"action": "Handling",
|
||||||
|
"keybinds": "Genvejstaster",
|
||||||
|
"metrics": {
|
||||||
|
"configurationSchemaVersion": "Konfigurationsskema version",
|
||||||
|
"configurationsCount": "Tilgængelige konfigurationer",
|
||||||
|
"version": "Version",
|
||||||
|
"nodeEnvironment": "Node miljø",
|
||||||
|
"i18n": "Indlæste I18n-oversættelsesnavneområder",
|
||||||
|
"locales": "Konfigurerede I18n landestandarder",
|
||||||
|
"experimental_disableEditMode": "<b>EKSPERIMENTAL</b>: Deaktivér redigeringstilstand"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,7 +39,15 @@
|
|||||||
"appearance": {
|
"appearance": {
|
||||||
"icon": {
|
"icon": {
|
||||||
"label": "App Ikon",
|
"label": "App Ikon",
|
||||||
"description": "Det ikon, der vises på dashboarded."
|
"description": "Begynd at skrive for at finde et ikon. Du kan også indsætte en billed-URL for at bruge et brugerdefineret ikon.",
|
||||||
|
"autocomplete": {
|
||||||
|
"title": "Ingen resultater fundet",
|
||||||
|
"text": "Prøv at bruge et mere specifikt søgeord. Hvis du ikke kan finde det ønskede ikon, kan du indsætte billedets URL ovenfor for at få et brugerdefineret ikon"
|
||||||
|
},
|
||||||
|
"noItems": {
|
||||||
|
"title": "Indlæser eksterne ikoner",
|
||||||
|
"text": "Dette kan tage nogle sekunder"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"integration": {
|
"integration": {
|
||||||
|
|||||||
7
public/locales/da/layout/modals/icon-picker.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"iconPicker": {
|
||||||
|
"textInputPlaceholder": "Søger efter noget...",
|
||||||
|
"searchLimitationTitle": "Begrænset til 30 resultater",
|
||||||
|
"searchLimitationMessage": "Søgeresultaterne blev begrænset til 30, fordi der var for mange matchende resultater"
|
||||||
|
}
|
||||||
|
}
|
||||||
21
public/locales/da/modules/bookmark.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Bogmærke",
|
||||||
|
"description": "Viser en statisk liste over strenge eller links",
|
||||||
|
"settings": {
|
||||||
|
"title": "Bogmærke indstillinger",
|
||||||
|
"items": {
|
||||||
|
"label": "Elementer"
|
||||||
|
},
|
||||||
|
"layout": {
|
||||||
|
"label": "Layout"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"noneFound": {
|
||||||
|
"title": "Bogmærkelisten er tom",
|
||||||
|
"text": "Tilføj nye elementer til denne liste i redigeringstilstand"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
"description": "Viser en kalender med kommende udgivelser fra understøttede integrationer.",
|
"description": "Viser en kalender med kommende udgivelser fra understøttede integrationer.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Indstillinger for kalender widget",
|
"title": "Indstillinger for kalender widget",
|
||||||
|
"useSonarrv4": {
|
||||||
|
"label": "Brug Sonarr v4 API"
|
||||||
|
},
|
||||||
"sundayStart": {
|
"sundayStart": {
|
||||||
"label": "Søndag første ugedag"
|
"label": "Søndag første ugedag"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unmappedOptions": {
|
"unmappedOptions": {
|
||||||
"text": "<b>Der er fundet en ubrugt parameter i konfigurationen</b><br /><code>{{key}}</code>. Homarr kan ikke fortolke og bruge denne parameter. For at undgå uventet adfærd skal du sikkerhedskopiere din konfiguration og rette konfigurationen."
|
"text": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,80 @@
|
|||||||
"description": "Viser graferne for en ekstern Dash. instans i Homarr.",
|
"description": "Viser graferne for en ekstern Dash. instans i Homarr.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Indstillinger for Dash. widget",
|
"title": "Indstillinger for Dash. widget",
|
||||||
"cpuMultiView": {
|
"dashName": {
|
||||||
"label": "CPU Multikerne Visning"
|
"label": "Dash. Navn"
|
||||||
},
|
|
||||||
"storageMultiView": {
|
|
||||||
"label": "Multidrevet Lagervisning"
|
|
||||||
},
|
|
||||||
"useCompactView": {
|
|
||||||
"label": "Brug kompakt tilstand"
|
|
||||||
},
|
|
||||||
"graphs": {
|
|
||||||
"label": "Grafer"
|
|
||||||
},
|
},
|
||||||
"url": {
|
"url": {
|
||||||
"label": "Dash. URL"
|
"label": "Dash. URL"
|
||||||
|
},
|
||||||
|
"usePercentages": {
|
||||||
|
"label": "Vis procentdele"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"label": "Vis kolonner"
|
||||||
|
},
|
||||||
|
"graphHeight": {
|
||||||
|
"label": "Højde af grafer"
|
||||||
|
},
|
||||||
|
"graphsOrder": {
|
||||||
|
"label": "Grafer (rækkefølge)",
|
||||||
|
"storage": {
|
||||||
|
"label": "Lager",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Vis i widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Kolonne spændvidde"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Vis som tekst (kompakt)"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Vis som multi-drevvisning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"label": "Netværk",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Vis i widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Kolonne spændvidde"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Vis som tekst (kompakt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"label": "CPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Vis i widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Kolonne spændvidde"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Vis som multi-core-visning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ram": {
|
||||||
|
"label": "RAM",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Vis i widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Kolonne spændvidde"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gpu": {
|
||||||
|
"label": "GPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Vis i widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Kolonne spændvidde"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -25,7 +85,11 @@
|
|||||||
"title": "Dash.",
|
"title": "Dash.",
|
||||||
"errors": {
|
"errors": {
|
||||||
"noService": "Ingen Dash. service fundet. Tilføj venligst en til dit Homarr-dashboard eller indstil en Dash. URL i modulindstillingerne",
|
"noService": "Ingen Dash. service fundet. Tilføj venligst en til dit Homarr-dashboard eller indstil en Dash. URL i modulindstillingerne",
|
||||||
"noInformation": "Kan ikke hente information fra dash. - kører du den nyeste version?"
|
"noInformation": "Kan ikke hente information fra dash. - kører du den nyeste version?",
|
||||||
|
"protocolDowngrade": {
|
||||||
|
"title": "Registreret protokolnedgradering",
|
||||||
|
"text": "Forbindelsen til din Dash.-instans bruger HTTP. Dette er en sikkerhedsrisiko, fordi HTTP er ukrypteret, og angribere kan misbruge denne forbindelse. Sørg for, at Dash. bruger HTTPS, eller nedgrader Homarr til HTTP (anbefales ikke)."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"graphs": {
|
"graphs": {
|
||||||
"storage": {
|
"storage": {
|
||||||
@@ -43,7 +107,7 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"title": "CPU"
|
"title": "CPU"
|
||||||
},
|
},
|
||||||
"memory": {
|
"ram": {
|
||||||
"title": "RAM"
|
"title": "RAM"
|
||||||
},
|
},
|
||||||
"gpu": {
|
"gpu": {
|
||||||
|
|||||||
6
public/locales/da/modules/dns-hole-controls.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "DNS hole kontrol",
|
||||||
|
"description": "Kontroller PiHole eller AdGuard fra dit dashboard"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
public/locales/da/modules/dns-hole-summary.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "DNS hole oversigt",
|
||||||
|
"description": "Viser vigtige data fra PiHole eller AdGuard",
|
||||||
|
"settings": {
|
||||||
|
"title": "Indstillinger for DNS Hole oversigt",
|
||||||
|
"usePiHoleColors": {
|
||||||
|
"label": "Brug farver fra PiHole"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"metrics": {
|
||||||
|
"domainsOnAdlist": "Domæner på adlister",
|
||||||
|
"queriesToday": "Forespørgsler i dag",
|
||||||
|
"queriesBlockedTodayPercentage": "blokeret i dag",
|
||||||
|
"queriesBlockedToday": "blokeret i dag"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
public/locales/da/modules/iframe.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "indlejret dokument (iframe)",
|
||||||
|
"description": "Indlejr ethvert indhold fra internettet. Nogle websteder kan begrænse adgang.",
|
||||||
|
"settings": {
|
||||||
|
"title": "iFrame indstillinger",
|
||||||
|
"embedUrl": {
|
||||||
|
"label": "Indlejr URL"
|
||||||
|
},
|
||||||
|
"allowFullScreen": {
|
||||||
|
"label": "Tillad fuld skærm"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"errors": {
|
||||||
|
"noUrl": {
|
||||||
|
"title": "",
|
||||||
|
"text": "Sørg for, at du har indtastet en gyldig adresse i konfigurationen af din widget"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
public/locales/da/modules/media-requests-list.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Medieforespørgsler",
|
||||||
|
"description": "Se en liste over alle medieforespørgsler fra din Overseerr eller Jellyseerr instans",
|
||||||
|
"settings": {
|
||||||
|
"title": "Liste over medieforespørgsler",
|
||||||
|
"replaceLinksWithExternalHost": {
|
||||||
|
"label": "Udskift links med ekstern vært"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noRequests": "Ingen anmodninger fundet. Kontroller, at du har konfigureret dine apps korrekt.",
|
||||||
|
"pending": "Der er {{countPendingApproval}} anmodninger, der venter på godkendelse.",
|
||||||
|
"nonePending": "Der er i øjeblikket ingen godkendelser, der er under behandling. Du er i mål!",
|
||||||
|
"state": {
|
||||||
|
"approved": "Godkendt",
|
||||||
|
"pendingApproval": "Afventer godkendelse",
|
||||||
|
"declined": "Afvist"
|
||||||
|
},
|
||||||
|
"tooltips": {
|
||||||
|
"approve": "Godkend anmodninger",
|
||||||
|
"decline": "Afvis alle anmodninger"
|
||||||
|
}
|
||||||
|
}
|
||||||
14
public/locales/da/modules/media-requests-stats.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Statistik for medieanmodning",
|
||||||
|
"description": "Statistik over dine medieanmodninger",
|
||||||
|
"settings": {
|
||||||
|
"title": "Statistikker over medieanmodninger"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"pending": "Afventer godkendelse",
|
||||||
|
"tvRequests": "TV-anmodninger",
|
||||||
|
"movieRequests": "Film anmodninger"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
public/locales/da/modules/media-server.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Medieserver",
|
||||||
|
"description": "Interagere med din Jellyfin- eller Plex-medieserver",
|
||||||
|
"settings": {
|
||||||
|
"title": "Indstillinger for medieserver widget"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"table": {
|
||||||
|
"header": {
|
||||||
|
"session": "Session",
|
||||||
|
"user": "Bruger",
|
||||||
|
"currentlyPlaying": "Afspiller i øjeblikket"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"general": {
|
||||||
|
"title": "Kunne ikke indlæse indholdet",
|
||||||
|
"text": "Det er ikke muligt at hente oplysninger fra serveren. Se venligst logfilerne for at få flere oplysninger"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"descriptor": {
|
"descriptor": {
|
||||||
"name": "Ping",
|
"name": "Ping",
|
||||||
"description": "Viser en statusindikator afhængig af HTTP-svarkoden for en given URL."
|
"description": "Viser en statusindikator afhængigt af HTTP-svarkoden for en given URL."
|
||||||
},
|
},
|
||||||
"states": {
|
"states": {
|
||||||
"online": "Online {{response}}",
|
"online": "Online {{response}}",
|
||||||
|
|||||||
30
public/locales/da/modules/rss.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "RSS Widget",
|
||||||
|
"description": "",
|
||||||
|
"settings": {
|
||||||
|
"title": "Indstillinger for RSS-widget",
|
||||||
|
"rssFeedUrl": {
|
||||||
|
"label": "RSS-feed URL'er",
|
||||||
|
"description": "URL'erne for de RSS-feeds, du vil vise fra."
|
||||||
|
},
|
||||||
|
"refreshInterval": {
|
||||||
|
"label": "Opdateringsinterval (i minutter)"
|
||||||
|
},
|
||||||
|
"dangerousAllowSanitizedItemContent": {
|
||||||
|
"label": "Farligt: Tillad renset genstands-indhold"
|
||||||
|
},
|
||||||
|
"settings.textLinesClamp": {
|
||||||
|
"label": "Klemme til tekstlinjer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"errors": {
|
||||||
|
"general": {
|
||||||
|
"title": "Det er ikke muligt at hente RSS-feed",
|
||||||
|
"text": "Der var et problem med at hente RSS-feedet. Sørg for, at du har konfigureret RSS-feedet korrekt ved hjælp af en gyldig URL. URL'er skal stemme overens med den officielle specifikation. Når du har opdateret feed'et, skal du muligvis opdatere dashboardet."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,13 @@
|
|||||||
},
|
},
|
||||||
"displayStaleTorrents": {
|
"displayStaleTorrents": {
|
||||||
"label": "Vis torrents uden aktivitet"
|
"label": "Vis torrents uden aktivitet"
|
||||||
|
},
|
||||||
|
"labelFilterIsWhitelist": {
|
||||||
|
"label": "Etiketlisten er en whitelist (i stedet for en blackliste)"
|
||||||
|
},
|
||||||
|
"labelFilter": {
|
||||||
|
"label": "Etiket liste",
|
||||||
|
"description": "Når \"er whitelist\" er markeret, fungerer dette som en whitelist. Hvis det ikke er markeret, er det en blackliste. Gør ikke noget, hvis den er tom"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -33,7 +40,8 @@
|
|||||||
"text": "Administreret af {{appName}}, {{ratio}} ratio"
|
"text": "Administreret af {{appName}}, {{ratio}} ratio"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"nothingFound": "Ingen torrents fundet"
|
"nothingFound": "Ingen torrents fundet",
|
||||||
|
"filterHidingItems": "{{count}} poster er skjult af dine filtre"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lineChart": {
|
"lineChart": {
|
||||||
|
|||||||
24
public/locales/da/modules/video-stream.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Video Stream",
|
||||||
|
"description": "Indlejr en video stream eller video fra et kamera eller et website",
|
||||||
|
"settings": {
|
||||||
|
"title": "Indstillinger for video stream widget",
|
||||||
|
"FeedUrl": {
|
||||||
|
"label": "Feed URL"
|
||||||
|
},
|
||||||
|
"autoPlay": {
|
||||||
|
"label": "Auto-afspilning"
|
||||||
|
},
|
||||||
|
"muted": {
|
||||||
|
"label": "Slå lyden fra"
|
||||||
|
},
|
||||||
|
"controls": {
|
||||||
|
"label": "Video afspilnings kontrol"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"invalidStream": "Ugyldig stream"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,11 +9,20 @@
|
|||||||
"configTip": "Upload din konfigurationsfil ved at trække og slippe den på siden!"
|
"configTip": "Upload din konfigurationsfil ved at trække og slippe den på siden!"
|
||||||
},
|
},
|
||||||
"credits": {
|
"credits": {
|
||||||
"madeWithLove": "Lavet med ❤️ af @"
|
"madeWithLove": "Lavet med ❤️ af @",
|
||||||
|
"thirdPartyContent": "Se indhold fra tredjepart",
|
||||||
|
"thirdPartyContentTable": {
|
||||||
|
"dependencyName": "Afhængighed",
|
||||||
|
"dependencyVersion": "Version"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"grow": "Forøg gitteret (udnyt al pladsen)",
|
"grow": "Forøg gitteret (udnyt al pladsen)",
|
||||||
"layout": {
|
"layout": {
|
||||||
"title": "Dashboard layout",
|
"preview": {
|
||||||
|
"title": "Forhåndsvisning",
|
||||||
|
"subtitle": "Ændringer vil blive gemt automatisk"
|
||||||
|
},
|
||||||
|
"divider": "Layout indstillinger",
|
||||||
"main": "Primær",
|
"main": "Primær",
|
||||||
"sidebar": "Sidepanel",
|
"sidebar": "Sidepanel",
|
||||||
"cannotturnoff": "Kan ikke slås fra",
|
"cannotturnoff": "Kan ikke slås fra",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
|
"colors": "Farver",
|
||||||
"suffix": "{{color}} farve"
|
"suffix": "{{color}} farve"
|
||||||
}
|
}
|
||||||
21
public/locales/da/settings/customization/general.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"text": "Tilpasninger giver dig mulighed for at konfigurere og justere din oplevelse med Homarr til dine præferencer.",
|
||||||
|
"accordeon": {
|
||||||
|
"layout": {
|
||||||
|
"name": "Layout",
|
||||||
|
"description": "Aktiver og deaktiver elementer på din header og dashboard felter"
|
||||||
|
},
|
||||||
|
"gridstack": {
|
||||||
|
"name": "Gridstack",
|
||||||
|
"description": "Tilpas adfærd og kolonner i dit dashboardområde"
|
||||||
|
},
|
||||||
|
"pageMetadata": {
|
||||||
|
"name": "Metadata om siden",
|
||||||
|
"description": "Juster titler, logo og PWA"
|
||||||
|
},
|
||||||
|
"appereance": {
|
||||||
|
"name": "Udseende",
|
||||||
|
"description": "Tilpas baggrunden, farverne og appenes udseende"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
public/locales/da/settings/customization/gridstack.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"columnsCount": {
|
||||||
|
"labelPreset": "Kolonner i {{size}} størrelse",
|
||||||
|
"descriptionPreset": "Antal kolonner, når skærmen er mindre end {{pixels}} pixel bred",
|
||||||
|
"descriptionExceedsPreset": "Antal kolonner, når skærmstørrelsen er større end {{pixels}} pixels"
|
||||||
|
},
|
||||||
|
"unsavedChanges": "Du har ændringer, der ikke er gemt. Klik på knappen Anvend ændringer nedenfor for at anvende og gemme.",
|
||||||
|
"applyChanges": "Anvend ændringer",
|
||||||
|
"defaultValues": "Standardværdier"
|
||||||
|
}
|
||||||
@@ -1,22 +1,28 @@
|
|||||||
{
|
{
|
||||||
"pageTitle": {
|
"pageTitle": {
|
||||||
"label": "Sidetitel"
|
"label": "Sidetitel",
|
||||||
|
"description": "Dashboardets titel øverst til venstre"
|
||||||
},
|
},
|
||||||
"metaTitle": {
|
"metaTitle": {
|
||||||
"label": "Metatitel"
|
"label": "Metatitel",
|
||||||
|
"description": "Den titel, der vises i fanen i din browser"
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
"label": "Logo"
|
"label": "Logo",
|
||||||
|
"description": "Logoet, der vises øverst til venstre"
|
||||||
},
|
},
|
||||||
"favicon": {
|
"favicon": {
|
||||||
"label": "Favicon"
|
"label": "Favicon",
|
||||||
|
"description": "Det ikon, der vises i fanen i din browser"
|
||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
"label": "Baggrund"
|
"label": "Baggrund"
|
||||||
},
|
},
|
||||||
"customCSS": {
|
"customCSS": {
|
||||||
"label": "Tilpasset CSS",
|
"label": "Tilpasset CSS",
|
||||||
"placeholder": "Brugerdefineret CSS vil blive anvendt sidst"
|
"description": "Yderligere, tilpasse dit dashboard ved hjælp af CSS, anbefales kun til erfarne brugere",
|
||||||
|
"placeholder": "Brugerdefineret CSS vil blive anvendt sidst",
|
||||||
|
"applying": "Anvender CSS..."
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"submit": "Indsend"
|
"submit": "Indsend"
|
||||||
|
|||||||
7
public/locales/da/widgets/draggable-list.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"noEntries": {
|
||||||
|
"title": "Ingen poster",
|
||||||
|
"text": "Brug knapperne nedenfor til at tilføje flere elementer"
|
||||||
|
},
|
||||||
|
"buttonAdd": "Tilføj"
|
||||||
|
}
|
||||||
14
public/locales/da/widgets/error-boundary.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"card": {
|
||||||
|
"title": "Ups, der opstod en fejl!",
|
||||||
|
"buttons": {
|
||||||
|
"details": "Detaljer",
|
||||||
|
"tryAgain": "Prøv igen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"text": "Der er opstået en uventet fejl. Tjek venligst din konfiguration. Rapporter venligst dette problem, hvis du mener, at det er en fejl.",
|
||||||
|
"label": "Din fejl",
|
||||||
|
"reportButton": "Rapportér denne fejl"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,16 +6,21 @@
|
|||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
"ok": "OK",
|
"ok": "OK",
|
||||||
"edit": "Bearbeiten",
|
"edit": "Bearbeiten",
|
||||||
|
"enabled": "Aktiviert",
|
||||||
|
"disabled": "Deaktiviert",
|
||||||
|
"enableAll": "Alle aktivieren",
|
||||||
|
"disableAll": "Alles deaktivieren",
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"changePosition": "Position wechseln",
|
"changePosition": "Position wechseln",
|
||||||
"remove": "Entfernen",
|
"remove": "Entfernen",
|
||||||
"removeConfirm": "Sind Sie sicher, dass Sie {{item}} entfernen möchten?",
|
"removeConfirm": "Sind Sie sicher, dass Sie {{item}} entfernen möchten?",
|
||||||
|
"createItem": "+ Erstelle {{item}}",
|
||||||
"sections": {
|
"sections": {
|
||||||
"settings": "Einstellungen",
|
"settings": "Einstellungen",
|
||||||
"dangerZone": "Gefahrenzone"
|
"dangerZone": "Gefahrenzone"
|
||||||
},
|
},
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"apiKey": "API-Schlüssel",
|
"apiKey": "API Schlüssel",
|
||||||
"username": "Benutzername",
|
"username": "Benutzername",
|
||||||
"password": "Passwort"
|
"password": "Passwort"
|
||||||
},
|
},
|
||||||
@@ -24,5 +29,11 @@
|
|||||||
"seconds": "Sekunden",
|
"seconds": "Sekunden",
|
||||||
"minutes": "Minuten",
|
"minutes": "Minuten",
|
||||||
"hours": "Stunden"
|
"hours": "Stunden"
|
||||||
|
},
|
||||||
|
"loading": "Wird geladen...",
|
||||||
|
"breakPoints": {
|
||||||
|
"small": "Klein",
|
||||||
|
"medium": "Mittel",
|
||||||
|
"large": "Groß"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
18
public/locales/de/layout/common.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"modals": {
|
||||||
|
"blockedPopups": {
|
||||||
|
"title": "Popup blockiert",
|
||||||
|
"text": "Ihr Browser hat den Zugriff von Homarr auf seine API blockiert. Dies wird am häufigsten durch AdBlocker oder verweigerte Berechtigungen verursacht. Homarr ist nicht in der Lage, Berechtigungen automatisch anzufordern.",
|
||||||
|
"list": {
|
||||||
|
"browserPermission": "Klicken Sie auf das Symbol neben der URL und prüfen Sie die Berechtigungen. Popups und Fenster zulassen",
|
||||||
|
"adBlockers": "Deaktivieren Sie Werbeblocker und Sicherheitstools in Ihrem Browser",
|
||||||
|
"otherBrowser": "Versuche es mit einem anderen Browser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"category": {
|
||||||
|
"openAllInNewTab": "Alle Lesezeichen öffnen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,10 +7,5 @@
|
|||||||
"popover": {
|
"popover": {
|
||||||
"title": "Der Bearbeitungsmodus ist für die Kategorie <1>{{size}}</1> aktiviert",
|
"title": "Der Bearbeitungsmodus ist für die Kategorie <1>{{size}}</1> aktiviert",
|
||||||
"text": "Sie können Ihre Apps jetzt anpassen und konfigurieren. Änderungen werden <strong>nicht gespeichert</strong> bis Sie den Bearbeitungsmodus verlassen"
|
"text": "Sie können Ihre Apps jetzt anpassen und konfigurieren. Änderungen werden <strong>nicht gespeichert</strong> bis Sie den Bearbeitungsmodus verlassen"
|
||||||
},
|
|
||||||
"screenSizes": {
|
|
||||||
"small": "Klein",
|
|
||||||
"medium": "Mittel",
|
|
||||||
"large": "Groß"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
{
|
{
|
||||||
"description": "Homarr ist ein <strong>schlankes</strong>, <strong>modernes</strong> Dashboard, das alle Ihre Apps und Dienste auf Knopfdruck zur Verfügung stellt. Mittels Homarr können Sie von einem einzigen Ort aus auf alles zugreifen und steuern. Es lässt sich nahtlos in die von Ihnen bevorzugten Apps integrieren und versorgt Sie mit wertvollen Informationen und der vollständige Kontrolle. Die Installation ist ein Kinderspiel, und es werden eine breite Palette von Konfigurations unterstützt.",
|
"description": "Homarr ist ein <strong>schlankes</strong> und <strong>modernes</strong> Dashboard, das alle Ihre Apps und Dienste auf Knopfdruck zur Verfügung stellt. Mittels Homarr können Sie von einem einzigen Ort aus auf alles zugreifen und steuern. Es lässt sich nahtlos in die von Ihnen bevorzugten Apps integrieren und versorgt Sie mit wertvollen Informationen und der vollständige Kontrolle. Die Installation ist ein Kinderspiel, und es werden eine breite Palette von Konfigurations unterstützt.",
|
||||||
"i18n": "Geladene I18n Übersetzungs Namensräume",
|
|
||||||
"locales": "Konfigurierte I18n Sprachumgebungen",
|
|
||||||
"contact": "Haben Sie Probleme oder Fragen? Nehmen Sie Kontakt mit uns auf!",
|
"contact": "Haben Sie Probleme oder Fragen? Nehmen Sie Kontakt mit uns auf!",
|
||||||
"addToDashboard": "Zum Dashboard hinzufügen"
|
"addToDashboard": "Zum Dashboard hinzufügen",
|
||||||
}
|
"tip": "Mod bezieht sich auf die Modifikator Taste, d. h. Strg und Befehl/Super/Windows-Taste",
|
||||||
|
"key": "Kurzbefehl Taste",
|
||||||
|
"action": "Aktion",
|
||||||
|
"keybinds": "Tastenbelegung",
|
||||||
|
"metrics": {
|
||||||
|
"configurationSchemaVersion": "Version des Konfigurationsschemas",
|
||||||
|
"configurationsCount": "Verfügbare Konfigurationen",
|
||||||
|
"version": "Version",
|
||||||
|
"nodeEnvironment": "Node-Umgebung",
|
||||||
|
"i18n": "Geladene I18n Übersetzungs Namensräume",
|
||||||
|
"locales": "Konfigurierte I18n Sprachumgebungen",
|
||||||
|
"experimental_disableEditMode": "<b>EXPERIMENTAL</b>: Bearbeitungsmodus deaktivieren"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"network": {
|
"network": {
|
||||||
"statusChecker": {
|
"statusChecker": {
|
||||||
"label": "Statusprüfer",
|
"label": "Statusprüfer",
|
||||||
"description": "Prüft, ob Ihre Anwendung online und mittels einer einfachen HTTP(S)-Anfrage erreichbar ist."
|
"description": "Prüft, ob Ihre Anwendung mittels einer einfachen HTTP(S)-Anfrage erreichbar ist."
|
||||||
},
|
},
|
||||||
"statusCodes": {
|
"statusCodes": {
|
||||||
"label": "HTTP Statuscodes",
|
"label": "HTTP Statuscodes",
|
||||||
@@ -39,7 +39,15 @@
|
|||||||
"appearance": {
|
"appearance": {
|
||||||
"icon": {
|
"icon": {
|
||||||
"label": "App Symbol",
|
"label": "App Symbol",
|
||||||
"description": "Das Symbol, das auf dem Dashboard angezeigt werden soll."
|
"description": "Beginnen Sie zu tippen, um ein Symbol zu finden. Sie können auch eine Bild-URL einfügen, um ein benutzerdefiniertes Symbol zu verwenden.",
|
||||||
|
"autocomplete": {
|
||||||
|
"title": "Die Suche ergab keine Treffer",
|
||||||
|
"text": "Versuchen Sie, einen spezifischeren Suchbegriff zu verwenden. Wenn Sie das gewünschte Symbol nicht finden können, fügen Sie die obige Bild-URL für ein benutzerdefiniertes Symbol ein"
|
||||||
|
},
|
||||||
|
"noItems": {
|
||||||
|
"title": "Lade externe Icons",
|
||||||
|
"text": "Dies kann einige Sekunden dauern…"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"integration": {
|
"integration": {
|
||||||
@@ -55,11 +63,11 @@
|
|||||||
"explanationPublic": "Ein öffentliche Phrase wird immer an den Client gesendet und ist über die API zugänglich. Es sollte keine vertraulichen Werte wie Benutzernamen, Passwörter, Token, Zertifikate und ähnliches enthalten!"
|
"explanationPublic": "Ein öffentliche Phrase wird immer an den Client gesendet und ist über die API zugänglich. Es sollte keine vertraulichen Werte wie Benutzernamen, Passwörter, Token, Zertifikate und ähnliches enthalten!"
|
||||||
},
|
},
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"description": "Um eine Phrase zu aktualisieren, geben Sie einen Wert ein und klicken Sie auf Speichern. Um eine Phrase zu entfernen, klicken Sie auf die Schaltfläche Löschen.",
|
"description": "Um eine geheime Phrase zu aktualisieren, geben Sie einen Wert ein und klicken Sie auf Speichern. Um eine geheime Phrase zu entfernen, klicken Sie auf die Schaltfläche Löschen.",
|
||||||
"warning": "Ihre Anmeldedaten dienen als Zugang für Homarr und sie sollten diese <strong>niemals</strong> an andere Personen weitergeben. Das Homarr-Team wird Sie niemals nach Ihren Zugangsdaten fragen. Stellen Sie sicher, dass sie ihre <strong>Zugangsdaten sicher aufbewahren und verwalten</strong>.",
|
"warning": "Ihre Anmeldedaten dienen als Zugang für Homarr und sie sollten diese <strong>niemals</strong> an andere Personen weitergeben. Das Homarr-Team wird Sie niemals nach Ihren Zugangsdaten fragen. Stellen Sie sicher, dass sie ihre <strong>Zugangsdaten sicher aufbewahren und verwalten</strong>.",
|
||||||
"clear": "Phrase löschen",
|
"clear": "Geheime Phrase löschen",
|
||||||
"save": "Phrase speichern",
|
"save": "Geheime Phrase speichern",
|
||||||
"update": "Phrase ändern"
|
"update": "Geheime Phrase ändern"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
|
|||||||
7
public/locales/de/layout/modals/icon-picker.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"iconPicker": {
|
||||||
|
"textInputPlaceholder": "Nach etwas suchen...",
|
||||||
|
"searchLimitationTitle": "Begrenzt auf 30 Ergebnisse",
|
||||||
|
"searchLimitationMessage": "Die Suchergebnisse wurden auf 30 begrenzt, da es zu viele Treffer gab"
|
||||||
|
}
|
||||||
|
}
|
||||||
21
public/locales/de/modules/bookmark.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Lesezeichen",
|
||||||
|
"description": "Zeigt eine statische Liste von Zeichenfolgen oder Links an",
|
||||||
|
"settings": {
|
||||||
|
"title": "Lesezeichen-Einstellungen",
|
||||||
|
"items": {
|
||||||
|
"label": "Elemente"
|
||||||
|
},
|
||||||
|
"layout": {
|
||||||
|
"label": "Ansicht"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"noneFound": {
|
||||||
|
"title": "Lesezeichenliste leer",
|
||||||
|
"text": "Neue Elemente im Bearbeitungsmodus zu dieser Liste hinzufügen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,10 @@
|
|||||||
"name": "Kalender",
|
"name": "Kalender",
|
||||||
"description": "Zeigt einen Kalender mit anstehenden Veröffentlichungen von unterstützten Widgets an.",
|
"description": "Zeigt einen Kalender mit anstehenden Veröffentlichungen von unterstützten Widgets an.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Einstellungen für das Kalender Widget",
|
"title": "Kalender Widget Einstellungen",
|
||||||
|
"useSonarrv4": {
|
||||||
|
"label": "Sonarr v4 API verwenden"
|
||||||
|
},
|
||||||
"sundayStart": {
|
"sundayStart": {
|
||||||
"label": "Wochenbeginn am Sonntag"
|
"label": "Wochenbeginn am Sonntag"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"play": "Abspielen",
|
"play": "Wiedergabe",
|
||||||
"request": "Anfragen"
|
"request": "Anfrage"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unmappedOptions": {
|
"unmappedOptions": {
|
||||||
"text": "<b>Ungenutzter Parameter in der Konfiguration erkannt</b><br /><code>{{key}}</code>. Homarr ist nicht in der Lage, diesen Parameter zu interpretieren und zu verwenden. Um ein unerwartetes Verhalten zu vermeiden, sichern Sie Ihre Konfiguration und korrigieren Sie sie."
|
"text": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,80 @@
|
|||||||
"description": "Zeigt die Graphen einer externen Dash.-Instanz innerhalb von Homarr an.",
|
"description": "Zeigt die Graphen einer externen Dash.-Instanz innerhalb von Homarr an.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Einstellungen für Dash. Widget",
|
"title": "Einstellungen für Dash. Widget",
|
||||||
"cpuMultiView": {
|
"dashName": {
|
||||||
"label": "CPU Multi-Core View"
|
"label": "Dash. Name"
|
||||||
},
|
|
||||||
"storageMultiView": {
|
|
||||||
"label": "Speicher Multi-Drive View"
|
|
||||||
},
|
|
||||||
"useCompactView": {
|
|
||||||
"label": "Kompaktmodus verwenden"
|
|
||||||
},
|
|
||||||
"graphs": {
|
|
||||||
"label": "Graphen"
|
|
||||||
},
|
},
|
||||||
"url": {
|
"url": {
|
||||||
"label": "Dash. URL"
|
"label": "Dash. URL"
|
||||||
|
},
|
||||||
|
"usePercentages": {
|
||||||
|
"label": "Prozentangaben anzeigen"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"label": "Spalten anzeigen"
|
||||||
|
},
|
||||||
|
"graphHeight": {
|
||||||
|
"label": "Höhe des Graphen"
|
||||||
|
},
|
||||||
|
"graphsOrder": {
|
||||||
|
"label": "Reihenfolge der Graphen",
|
||||||
|
"storage": {
|
||||||
|
"label": "Speicher",
|
||||||
|
"enabled": {
|
||||||
|
"label": "In Widget anzeigen"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Länge der Säulen"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Als Text anzeigen (kompakt)"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Als Multi-Laufwerk-Ansicht anzeigen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"label": "Netzwerk",
|
||||||
|
"enabled": {
|
||||||
|
"label": "In Widget anzeigen"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Länge der Säulen"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Als Text anzeigen (kompakt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"label": "CPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "In Widget anzeigen"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Länge der Säulen"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Als Multi-Core-Ansicht anzeigen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ram": {
|
||||||
|
"label": "RAM",
|
||||||
|
"enabled": {
|
||||||
|
"label": "In Widget anzeigen"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Länge der Säulen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gpu": {
|
||||||
|
"label": "GPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "In Widget anzeigen"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Länge der Säulen"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -25,7 +85,11 @@
|
|||||||
"title": "Dash.",
|
"title": "Dash.",
|
||||||
"errors": {
|
"errors": {
|
||||||
"noService": "Kein Dash. Dienst gefunden. Bitte fügen Sie einen zu Ihrem Homarr Dashboard hinzu oder setzen Sie eine Dash. URL in den Moduloptionen",
|
"noService": "Kein Dash. Dienst gefunden. Bitte fügen Sie einen zu Ihrem Homarr Dashboard hinzu oder setzen Sie eine Dash. URL in den Moduloptionen",
|
||||||
"noInformation": "Es können keine Informationen vom Dash. abgerufen werden. - Verwenden Sie die neueste Version?"
|
"noInformation": "Es können keine Informationen vom Dash. abgerufen werden. - Verwenden Sie die neueste Version?",
|
||||||
|
"protocolDowngrade": {
|
||||||
|
"title": "Protokoll-Downgrade erkannt",
|
||||||
|
"text": "Die Verbindung zu Ihrer Dash.-Instanz erfolgt über HTTP. Dies ist ein Sicherheitsrisiko, da HTTP unverschlüsselt ist und Angreifer diese Verbindung missbrauchen könnten. Stellen Sie sicher, dass Dash. HTTPS verwendet, oder setzen Sie Homarr auf HTTP herab (nicht empfohlen)."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"graphs": {
|
"graphs": {
|
||||||
"storage": {
|
"storage": {
|
||||||
@@ -43,7 +107,7 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"title": "CPU"
|
"title": "CPU"
|
||||||
},
|
},
|
||||||
"memory": {
|
"ram": {
|
||||||
"title": "RAM"
|
"title": "RAM"
|
||||||
},
|
},
|
||||||
"gpu": {
|
"gpu": {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"descriptor": {
|
"descriptor": {
|
||||||
"name": "Datum und Zeit",
|
"name": "Datum und Zeit",
|
||||||
"description": "Zeigt das aktuelle Datum und die Uhrzeit an",
|
"description": "Zeigt das aktuelle Datum und die Uhrzeit an.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Einstellungen für das Widget \"Datum und Uhrzeit",
|
"title": "\"Datum und Uhrzeit\" Widget Einstellungen",
|
||||||
"display24HourFormat": {
|
"display24HourFormat": {
|
||||||
"label": "24-Stunden Format"
|
"label": "24-Stunden Format"
|
||||||
}
|
}
|
||||||
|
|||||||
6
public/locales/de/modules/dns-hole-controls.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "DNS-Hole Steuerung",
|
||||||
|
"description": "Steuern Sie PiHole oder AdGuard von Ihrem Dashboard aus"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
public/locales/de/modules/dns-hole-summary.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "DNS-Hole Zusammenfassung",
|
||||||
|
"description": "Zeigt wichtige Daten von PiHole oder AdGuard an",
|
||||||
|
"settings": {
|
||||||
|
"title": "Einstellungen für die DNS-Hole Zusammenfassung",
|
||||||
|
"usePiHoleColors": {
|
||||||
|
"label": "Farben von PiHole verwenden"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"metrics": {
|
||||||
|
"domainsOnAdlist": "Domains auf der Adlist",
|
||||||
|
"queriesToday": "Heutige Anfragen",
|
||||||
|
"queriesBlockedTodayPercentage": "heute blockiert",
|
||||||
|
"queriesBlockedToday": "heute blockiert"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
public/locales/de/modules/iframe.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "iFrame",
|
||||||
|
"description": "Einbetten von Inhalten aus dem Internet. Einige Websites können den Zugriff einschränken.",
|
||||||
|
"settings": {
|
||||||
|
"title": "iFrame Einstellungen",
|
||||||
|
"embedUrl": {
|
||||||
|
"label": "URL einbetten"
|
||||||
|
},
|
||||||
|
"allowFullScreen": {
|
||||||
|
"label": "Vollbildmodus zulassen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"errors": {
|
||||||
|
"noUrl": {
|
||||||
|
"title": "",
|
||||||
|
"text": "Stellen Sie sicher, dass Sie in der Konfiguration Ihres Widgets eine gültige Adresse eingegeben haben"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
public/locales/de/modules/media-requests-list.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Medienanfragen",
|
||||||
|
"description": "Sehen Sie eine Liste aller Medienanfragen von Ihrer Overseerr- oder Jellyseerr-Instanz",
|
||||||
|
"settings": {
|
||||||
|
"title": "Liste der Medienanfragen",
|
||||||
|
"replaceLinksWithExternalHost": {
|
||||||
|
"label": "Links durch externen Host ersetzen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noRequests": "Keine Anfragen gefunden. Bitte stellen Sie sicher, dass Sie Ihre Anwendungen richtig konfiguriert haben.",
|
||||||
|
"pending": "{{countPendingApproval}} Anfragen warten auf eine Genehmigung.",
|
||||||
|
"nonePending": "Es sind derzeit keine Genehmigungen ausstehend. Sie sind startklar!",
|
||||||
|
"state": {
|
||||||
|
"approved": "Genehmigt",
|
||||||
|
"pendingApproval": "Warten auf Freigabe",
|
||||||
|
"declined": "Abgelehnt"
|
||||||
|
},
|
||||||
|
"tooltips": {
|
||||||
|
"approve": "Anfrage bestätigen",
|
||||||
|
"decline": "Anfrage ablehnen"
|
||||||
|
}
|
||||||
|
}
|
||||||
14
public/locales/de/modules/media-requests-stats.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Statistik der Medienanfragen",
|
||||||
|
"description": "Statistiken über Ihre Medienanfragen",
|
||||||
|
"settings": {
|
||||||
|
"title": "Statistik der Medienanfragen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"pending": "Ausstehende Freigaben",
|
||||||
|
"tvRequests": "TV-Anfragen",
|
||||||
|
"movieRequests": "Filmanfragen"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
public/locales/de/modules/media-server.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Medien Server",
|
||||||
|
"description": "Interagiere mit deinem Jellyfin oder Plex Media Server",
|
||||||
|
"settings": {
|
||||||
|
"title": "Einstellungen für das Medien Server Widget"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"table": {
|
||||||
|
"header": {
|
||||||
|
"session": "Sitzung",
|
||||||
|
"user": "Benutzer",
|
||||||
|
"currentlyPlaying": "Momentan läuft"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"general": {
|
||||||
|
"title": "Inhalt kann nicht geladen werden",
|
||||||
|
"text": "Informationen vom Server konnten nicht abgerufen werden. Bitte überprüfen Sie die Logs für weitere Details"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
public/locales/de/modules/rss.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "RSS-Widget",
|
||||||
|
"description": "",
|
||||||
|
"settings": {
|
||||||
|
"title": "Einstellungen für das RSS-Widget",
|
||||||
|
"rssFeedUrl": {
|
||||||
|
"label": "RSS-Feed URL",
|
||||||
|
"description": "Die URLs der RSS Feeds, die angezeigt werden sollen."
|
||||||
|
},
|
||||||
|
"refreshInterval": {
|
||||||
|
"label": "Aktualisierungsintervall (in Minuten)"
|
||||||
|
},
|
||||||
|
"dangerousAllowSanitizedItemContent": {
|
||||||
|
"label": "Vorsicht: Bereinigte Artikelinhalte zulassen"
|
||||||
|
},
|
||||||
|
"settings.textLinesClamp": {
|
||||||
|
"label": "Textzeilen Klammer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"errors": {
|
||||||
|
"general": {
|
||||||
|
"title": "RSS Feed konnte nicht abgerufen werden",
|
||||||
|
"text": "Es ist ein Fehler beim Erreichen des RSS Feeds passiert. Stelle sicher, dass die eingetragene URL des RSS Feeds richtig ist. URLs sollten den offiziellen Spezifikationen entsprechen. Nach einem Update des Feeds muss möglicherweise die Dashboard-Seite aktualisiert werden."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,13 +12,20 @@
|
|||||||
},
|
},
|
||||||
"displayStaleTorrents": {
|
"displayStaleTorrents": {
|
||||||
"label": "Angehaltene Torrents anzeigen"
|
"label": "Angehaltene Torrents anzeigen"
|
||||||
|
},
|
||||||
|
"labelFilterIsWhitelist": {
|
||||||
|
"label": "Labelliste ist eine Whitelist (statt einer Blacklist)"
|
||||||
|
},
|
||||||
|
"labelFilter": {
|
||||||
|
"label": "Labelliste",
|
||||||
|
"description": "Wenn \"ist Whitelist\" ausgewählt ist, handel es sich um eine Whitelist. Ist \"ist Whitelist\" nicht ausgewählt, handelt es sich um eine Blacklist. Wenn die Auswahl leer ist, wird nicht passieren"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"card": {
|
"card": {
|
||||||
"footer": {
|
"footer": {
|
||||||
"error": "Fehler",
|
"error": "Fehler",
|
||||||
"lastUpdated": "Zuletzt aktualisiert {{time}} vor"
|
"lastUpdated": "Zuletzt aktualisiert vor {{time}}"
|
||||||
},
|
},
|
||||||
"table": {
|
"table": {
|
||||||
"header": {
|
"header": {
|
||||||
@@ -33,7 +40,8 @@
|
|||||||
"text": "Verwaltet von {{appName}}, {{ratio}} ratio"
|
"text": "Verwaltet von {{appName}}, {{ratio}} ratio"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"nothingFound": "Keine Torrents gefunden"
|
"nothingFound": "Keine Torrents gefunden",
|
||||||
|
"filterHidingItems": "{{count}} Einträge sind durch Filter ausgeblendet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lineChart": {
|
"lineChart": {
|
||||||
@@ -63,7 +71,7 @@
|
|||||||
"queuePosition": "Position in der Warteschlange - {{position}}",
|
"queuePosition": "Position in der Warteschlange - {{position}}",
|
||||||
"progress": "Fortschritt - {{progress}}%",
|
"progress": "Fortschritt - {{progress}}%",
|
||||||
"totalSelectedSize": "Insgesamt - {{totalSize}}",
|
"totalSelectedSize": "Insgesamt - {{totalSize}}",
|
||||||
"state": "Staat - {{state}}",
|
"state": "Status - {{state}}",
|
||||||
"ratio": "Verhältnis -",
|
"ratio": "Verhältnis -",
|
||||||
"completed": "Abgeschlossen"
|
"completed": "Abgeschlossen"
|
||||||
}
|
}
|
||||||
|
|||||||
24
public/locales/de/modules/video-stream.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Videostream",
|
||||||
|
"description": "Einbetten eines Videostreams oder eines Videos von einer Kamera oder einer Website",
|
||||||
|
"settings": {
|
||||||
|
"title": "Einstellungen für das Video Stream Widget",
|
||||||
|
"FeedUrl": {
|
||||||
|
"label": "Feed-URL"
|
||||||
|
},
|
||||||
|
"autoPlay": {
|
||||||
|
"label": "Automatische Wiedergabe"
|
||||||
|
},
|
||||||
|
"muted": {
|
||||||
|
"label": "Audio stummschalten"
|
||||||
|
},
|
||||||
|
"controls": {
|
||||||
|
"label": "Videoplayer Steuerung"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"invalidStream": "Ungültiger Stream"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
"name": "Wetter",
|
"name": "Wetter",
|
||||||
"description": "Zeigt die aktuellen Wetterinformationen für einen bestimmten Ort an.",
|
"description": "Zeigt die aktuellen Wetterinformationen für einen bestimmten Ort an.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Einstellungen für das Wetter Widget",
|
"title": "Wetter Widget Einstellungen",
|
||||||
"displayInFahrenheit": {
|
"displayInFahrenheit": {
|
||||||
"label": "In Fahrenheit anzeigen"
|
"label": "In Fahrenheit anzeigen"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,11 +9,20 @@
|
|||||||
"configTip": "Laden Sie Ihre Konfigurationsdatei hoch, indem Sie sie per Drag & Drop auf diese Seite ziehen!"
|
"configTip": "Laden Sie Ihre Konfigurationsdatei hoch, indem Sie sie per Drag & Drop auf diese Seite ziehen!"
|
||||||
},
|
},
|
||||||
"credits": {
|
"credits": {
|
||||||
"madeWithLove": "Gemacht mit ❤️ von @"
|
"madeWithLove": "Gemacht mit ❤️ von @",
|
||||||
|
"thirdPartyContent": "Inhalte von Dritten anzeigen",
|
||||||
|
"thirdPartyContentTable": {
|
||||||
|
"dependencyName": "Abhängigkeiten",
|
||||||
|
"dependencyVersion": "Version"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"grow": "Erweitertes Raster (nutzt den ganzen Platz)",
|
"grow": "Erweitertes Raster (nutzt den ganzen Platz)",
|
||||||
"layout": {
|
"layout": {
|
||||||
"title": "Dashboard Anordnung",
|
"preview": {
|
||||||
|
"title": "Vorschau",
|
||||||
|
"subtitle": "Änderungen werden automatisch gespeichert"
|
||||||
|
},
|
||||||
|
"divider": "Layout-Einstellungen",
|
||||||
"main": "Haupt",
|
"main": "Haupt",
|
||||||
"sidebar": "Seitenleiste",
|
"sidebar": "Seitenleiste",
|
||||||
"cannotturnoff": "Kann nicht deaktiviert werden",
|
"cannotturnoff": "Kann nicht deaktiviert werden",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
|
"colors": "Farben",
|
||||||
"suffix": "{{color}} Farbe"
|
"suffix": "{{color}} Farbe"
|
||||||
}
|
}
|
||||||
21
public/locales/de/settings/customization/general.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"text": "Anpassungen ermöglichen es Ihnen, Ihre Homarr Umgebung nach Ihren Wünschen anzupassen und zu konfigurieren.",
|
||||||
|
"accordeon": {
|
||||||
|
"layout": {
|
||||||
|
"name": "Ansicht",
|
||||||
|
"description": "Aktivieren und Deaktivieren von Elementen in der Kopfzeile und der Dashboard-Kacheln"
|
||||||
|
},
|
||||||
|
"gridstack": {
|
||||||
|
"name": "Gridstack",
|
||||||
|
"description": "Passen Sie das Verhalten und die Spalten Ihres Dashboard-Bereichs an"
|
||||||
|
},
|
||||||
|
"pageMetadata": {
|
||||||
|
"name": "Seiten Metadaten",
|
||||||
|
"description": "Titel, Logo und PWA anpassen"
|
||||||
|
},
|
||||||
|
"appereance": {
|
||||||
|
"name": "Aussehen",
|
||||||
|
"description": "Anpassen des Hintergrunds, der Farben und des Erscheinungsbilds"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
public/locales/de/settings/customization/gridstack.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"columnsCount": {
|
||||||
|
"labelPreset": "Spalten in {{size}} Größe",
|
||||||
|
"descriptionPreset": "Anzahl der Spalten, wenn der Bildschirm weniger als {{pixels}} Pixel breit ist",
|
||||||
|
"descriptionExceedsPreset": "Anzahl der Spalten, wenn die Bildschirmgröße {{pixels}} Pixel überschreitet"
|
||||||
|
},
|
||||||
|
"unsavedChanges": "Sie haben nicht gespeicherte Änderungen. Klicken Sie unten auf die Schaltfläche 'Änderungen übernehmen', um sie zu übernehmen und zu speichern.",
|
||||||
|
"applyChanges": "Änderungen übernehmen",
|
||||||
|
"defaultValues": "Standardwerte"
|
||||||
|
}
|
||||||
@@ -1,22 +1,28 @@
|
|||||||
{
|
{
|
||||||
"pageTitle": {
|
"pageTitle": {
|
||||||
"label": "Seiten Titel"
|
"label": "Seiten Titel",
|
||||||
|
"description": "Der Titel des Dashboards oben links"
|
||||||
},
|
},
|
||||||
"metaTitle": {
|
"metaTitle": {
|
||||||
"label": "Meta Titel"
|
"label": "Meta Titel",
|
||||||
|
"description": "Der in der Registerkarte Ihres Browsers angezeigte Titel"
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
"label": "Logo"
|
"label": "Logo",
|
||||||
|
"description": "Das oben links angezeigte Logo"
|
||||||
},
|
},
|
||||||
"favicon": {
|
"favicon": {
|
||||||
"label": "Favicon"
|
"label": "Favicon",
|
||||||
|
"description": "Der in der Registerkarte Ihres Browsers angezeigte Symbol"
|
||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
"label": "Hintergrund"
|
"label": "Hintergrund"
|
||||||
},
|
},
|
||||||
"customCSS": {
|
"customCSS": {
|
||||||
"label": "Benutzerdefiniertes CSS",
|
"label": "Benutzerdefiniertes CSS",
|
||||||
"placeholder": "Benutzerdefiniertes CSS wird zuletzt angewendet"
|
"description": "Außerdem können Sie Ihr Dashboard mittels CSS anpassen, dies wird nur für erfahrene Benutzer empfohlen",
|
||||||
|
"placeholder": "Benutzerdefiniertes CSS wird zuletzt angewendet",
|
||||||
|
"applying": "CSS wird übernommen..."
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"submit": "Absenden"
|
"submit": "Absenden"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"configSelect": {
|
"configSelect": {
|
||||||
"label": "Konfigurationslader",
|
"label": "Änderung der Konfiguration",
|
||||||
"description": "{{configCount}} Konfigurationen sind verfügbar",
|
"description": "{{configCount}} Konfigurationen sind verfügbar",
|
||||||
"loadingNew": "Ihre Konfiguration wird geladen...",
|
"loadingNew": "Ihre Konfiguration wird geladen...",
|
||||||
"pleaseWait": "Bitte warten Sie, bis Ihre neue Konfiguration geladen ist!"
|
"pleaseWait": "Bitte warten Sie, bis Ihre neue Konfiguration geladen ist!"
|
||||||
|
|||||||
7
public/locales/de/widgets/draggable-list.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"noEntries": {
|
||||||
|
"title": "Keine Einträge",
|
||||||
|
"text": "Verwenden Sie die Schaltflächen unten, um weitere Einträge hinzuzufügen"
|
||||||
|
},
|
||||||
|
"buttonAdd": "Hinzufügen"
|
||||||
|
}
|
||||||
14
public/locales/de/widgets/error-boundary.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"card": {
|
||||||
|
"title": "Ups, ein Fehler ist aufgetreten!",
|
||||||
|
"buttons": {
|
||||||
|
"details": "Details",
|
||||||
|
"tryAgain": "Erneut versuchen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"text": "Es ist ein unerwarteter Fehler aufgetreten. Bitte überprüfen Sie Ihre Konfiguration. Bitte melden Sie dieses Problem, wenn Sie glauben, dass es sich um einen Fehler handelt.",
|
||||||
|
"label": "Dein Fehler",
|
||||||
|
"reportButton": "Fehler melden"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,16 +6,21 @@
|
|||||||
"delete": "Διαγραφή",
|
"delete": "Διαγραφή",
|
||||||
"ok": "ΟΚ",
|
"ok": "ΟΚ",
|
||||||
"edit": "Επεξεργασία",
|
"edit": "Επεξεργασία",
|
||||||
|
"enabled": "Ενεργοποιημένο",
|
||||||
|
"disabled": "Απενεργοποιημένο",
|
||||||
|
"enableAll": "Ενεργοποίηση όλων",
|
||||||
|
"disableAll": "Απενεργοποίηση όλων",
|
||||||
"version": "Έκδοση",
|
"version": "Έκδοση",
|
||||||
"changePosition": "Αλλαγή θέσης",
|
"changePosition": "Αλλαγή θέσης",
|
||||||
"remove": "Αφαίρεση",
|
"remove": "Αφαίρεση",
|
||||||
"removeConfirm": "Είστε σίγουροι ότι θέλετε να καταργήσετε το {{item}} ;",
|
"removeConfirm": "Είστε σίγουροι ότι θέλετε να καταργήσετε το {{item}};",
|
||||||
|
"createItem": "+ δημιουργήστε {{item}}",
|
||||||
"sections": {
|
"sections": {
|
||||||
"settings": "Ρυθμίσεις",
|
"settings": "Ρυθμίσεις",
|
||||||
"dangerZone": "Επικίνδυνη Περιοχή"
|
"dangerZone": "Επικίνδυνη Περιοχή"
|
||||||
},
|
},
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"apiKey": "Κλειδί Api",
|
"apiKey": "Κλειδί API",
|
||||||
"username": "Όνομα Χρήστη",
|
"username": "Όνομα Χρήστη",
|
||||||
"password": "Κωδικός"
|
"password": "Κωδικός"
|
||||||
},
|
},
|
||||||
@@ -24,5 +29,11 @@
|
|||||||
"seconds": "δευτερόλεπτα",
|
"seconds": "δευτερόλεπτα",
|
||||||
"minutes": "λεπτά",
|
"minutes": "λεπτά",
|
||||||
"hours": "ώρες"
|
"hours": "ώρες"
|
||||||
|
},
|
||||||
|
"loading": "Φόρτωση...",
|
||||||
|
"breakPoints": {
|
||||||
|
"small": "μικρό",
|
||||||
|
"medium": "μεσαίο",
|
||||||
|
"large": "μεγάλο"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
18
public/locales/el/layout/common.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"modals": {
|
||||||
|
"blockedPopups": {
|
||||||
|
"title": "Αποκλεισμένα αναδυόμενα παράθυρα",
|
||||||
|
"text": "Ο περιηγητής σας έχει αποκλείσει το Homarr από την πρόσβαση στο API του. Αυτό συνήθως προκαλείται από AdBlockers ή δεν άρνηση δικαιωμάτων. Το Homarr δεν είναι σε θέση να ζητήσει δικαιώματα αυτόματα.",
|
||||||
|
"list": {
|
||||||
|
"browserPermission": "Κάντε κλικ στο εικονίδιο δίπλα από τη διεύθυνση URL και ελέγξτε τα δικαιώματα. Να επιτρέπονται αναδυόμενα παράθυρα",
|
||||||
|
"adBlockers": "Απενεργοποιήστε τα AdBlockers και τα εργαλεία ασφαλείας από τον περιηγητή σας",
|
||||||
|
"otherBrowser": "Δοκιμάστε διαφορετικό περιηγητή"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"category": {
|
||||||
|
"openAllInNewTab": "Άνοιγμα όλων σε νέα καρτέλα"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,10 +7,5 @@
|
|||||||
"popover": {
|
"popover": {
|
||||||
"title": "Η λειτουργία επεξεργασίας είναι ενεργοποιημένη για <1>{{size}}</1> μέγεθος",
|
"title": "Η λειτουργία επεξεργασίας είναι ενεργοποιημένη για <1>{{size}}</1> μέγεθος",
|
||||||
"text": "Μπορείτε να προσαρμόσετε και να ρυθμίσετε τις εφαρμογές σας τώρα. Οι αλλαγές <strong>δεν αποθηκεύονται</strong> μέχρι να βγείτε από τη λειτουργία επεξεργασίας"
|
"text": "Μπορείτε να προσαρμόσετε και να ρυθμίσετε τις εφαρμογές σας τώρα. Οι αλλαγές <strong>δεν αποθηκεύονται</strong> μέχρι να βγείτε από τη λειτουργία επεξεργασίας"
|
||||||
},
|
|
||||||
"screenSizes": {
|
|
||||||
"small": "μικρό",
|
|
||||||
"medium": "μεσαίο",
|
|
||||||
"large": "μεγάλο"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
{
|
{
|
||||||
"description": "Το Homarr είναι ένα <strong>κομψό</strong>, <strong>μοντέρνο</strong> ταμπλό που βάζει όλες τις εφαρμογές και τις υπηρεσίες σας στα χέρια σας. Με το Homarr, μπορείτε να έχετε πρόσβαση και να ελέγχετε τα πάντα σε μια βολική τοποθεσία. Το Homarr ενσωματώνεται απρόσκοπτα με τις εφαρμογές που έχετε προσθέσει, παρέχοντάς σας πολύτιμες πληροφορίες και δίνοντάς σας πλήρη έλεγχο. Η εγκατάσταση είναι πανεύκολη και το Homarr υποστηρίζει ένα ευρύ φάσμα μεθόδων ανάπτυξης.",
|
"description": "Το Homarr είναι ένα <strong>κομψό</strong>, <strong>μοντέρνο</strong> ταμπλό που βάζει όλες τις εφαρμογές και τις υπηρεσίες σας στα χέρια σας. Με το Homarr, μπορείτε να έχετε πρόσβαση και να ελέγχετε τα πάντα σε μια βολική τοποθεσία. Το Homarr ενσωματώνεται απρόσκοπτα με τις εφαρμογές που έχετε προσθέσει, παρέχοντάς σας πολύτιμες πληροφορίες και δίνοντάς σας πλήρη έλεγχο. Η εγκατάσταση είναι πανεύκολη και το Homarr υποστηρίζει ένα ευρύ φάσμα μεθόδων ανάπτυξης.",
|
||||||
"i18n": "Φορτωμένα πεδία ονομάτων μετάφρασης I18n",
|
|
||||||
"locales": "Διαμορφωμένες τοπικές ρυθμίσεις I18n",
|
|
||||||
"contact": "Έχετε προβλήματα ή ερωτήσεις; Συνδεθείτε μαζί μας!",
|
"contact": "Έχετε προβλήματα ή ερωτήσεις; Συνδεθείτε μαζί μας!",
|
||||||
"addToDashboard": "Προσθήκη στο ταμπλό"
|
"addToDashboard": "Προσθήκη στο ταμπλό",
|
||||||
}
|
"tip": "Το Mod αναφέρεται στο πλήκτρο τροποποίησης, είναι τα πλήκτρα Ctrl και Command/Super/Windows",
|
||||||
|
"key": "Πλήκτρο συντόμευσης",
|
||||||
|
"action": "Ενέργεια",
|
||||||
|
"keybinds": "Δεσμοί πλήκτρων",
|
||||||
|
"metrics": {
|
||||||
|
"configurationSchemaVersion": "Έκδοση σχήματος διαμόρφωσης",
|
||||||
|
"configurationsCount": "Διαθέσιμες διαμορφώσεις",
|
||||||
|
"version": "Έκδοση",
|
||||||
|
"nodeEnvironment": "Περιβάλλον κόμβου",
|
||||||
|
"i18n": "Φορτωμένα πεδία ονομάτων μετάφρασης I18n",
|
||||||
|
"locales": "Διαμορφωμένες τοπικές ρυθμίσεις I18n",
|
||||||
|
"experimental_disableEditMode": "<b>ΠΕΙΡΑΜΑΤΙΚΟ</b>: Απενεργοποίηση της λειτουργίας επεξεργασίας"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,7 +39,15 @@
|
|||||||
"appearance": {
|
"appearance": {
|
||||||
"icon": {
|
"icon": {
|
||||||
"label": "Εικονίδιο εφαρμογής",
|
"label": "Εικονίδιο εφαρμογής",
|
||||||
"description": "Το εικονίδιο που θα εμφανίζεται στο ταμπλό."
|
"description": "Αρχίστε να πληκτρολογείτε για να βρείτε ένα εικονίδιο. Μπορείτε επίσης να επικολλήσετε μια διεύθυνση URL εικόνας για να χρησιμοποιήσετε ένα προσαρμοσμένο εικονίδιο.",
|
||||||
|
"autocomplete": {
|
||||||
|
"title": "Δεν βρέθηκαν αποτελέσματα",
|
||||||
|
"text": "Προσπαθήστε να χρησιμοποιήσετε έναν πιο συγκεκριμένο όρο αναζήτησης. Αν δεν μπορείτε να βρείτε το εικονίδιο που επιθυμείτε, επικολλήστε την παραπάνω διεύθυνση URL εικόνας για ένα προσαρμοσμένο εικονίδιο"
|
||||||
|
},
|
||||||
|
"noItems": {
|
||||||
|
"title": "Φόρτωση εξωτερικών εικονιδίων",
|
||||||
|
"text": "Αυτό μπορεί να διαρκέσει μερικά δευτερόλεπτα"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"integration": {
|
"integration": {
|
||||||
|
|||||||
7
public/locales/el/layout/modals/icon-picker.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"iconPicker": {
|
||||||
|
"textInputPlaceholder": "",
|
||||||
|
"searchLimitationTitle": "",
|
||||||
|
"searchLimitationMessage": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
21
public/locales/el/modules/bookmark.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Σελιδοδείκτης",
|
||||||
|
"description": "Εμφανίζει μια στατική λίστα κειμένων ή συνδέσμων",
|
||||||
|
"settings": {
|
||||||
|
"title": "Ρυθμίσεις σελιδοδεικτών",
|
||||||
|
"items": {
|
||||||
|
"label": "Στοιχεία"
|
||||||
|
},
|
||||||
|
"layout": {
|
||||||
|
"label": "Διάταξη"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"noneFound": {
|
||||||
|
"title": "Λίστα σελιδοδεικτών κενή",
|
||||||
|
"text": "Προσθέστε νέα αντικείμενα σε αυτή τη λίστα στη λειτουργία επεξεργασίας"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
"description": "Εμφανίζει ένα ημερολόγιο με τις επερχόμενες κυκλοφορίες, από τις υποστηριζόμενες ενσωματώσεις.",
|
"description": "Εμφανίζει ένα ημερολόγιο με τις επερχόμενες κυκλοφορίες, από τις υποστηριζόμενες ενσωματώσεις.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Ρυθμίσεις για το widget ημερολογίου",
|
"title": "Ρυθμίσεις για το widget ημερολογίου",
|
||||||
|
"useSonarrv4": {
|
||||||
|
"label": "Χρήση του API Sonarr v4"
|
||||||
|
},
|
||||||
"sundayStart": {
|
"sundayStart": {
|
||||||
"label": "Ξεκινήστε την εβδομάδα από την Κυριακή"
|
"label": "Ξεκινήστε την εβδομάδα από την Κυριακή"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unmappedOptions": {
|
"unmappedOptions": {
|
||||||
"text": "<b>Εντοπίστηκε αχρησιμοποίητη παράμετρος στη διαμόρφωση</b><br /><code>{{key}}</code>. Το Homarr δεν μπορεί να ερμηνεύσει και να χρησιμοποιήσει αυτή την παράμετρο. Για να αποφύγετε οποιαδήποτε απροσδόκητη συμπεριφορά, δημιουργήστε αντίγραφα ασφαλείας των ρυθμίσεων σας και διορθώστε τις ρυθμίσεις σας."
|
"text": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,83 @@
|
|||||||
{
|
{
|
||||||
"descriptor": {
|
"descriptor": {
|
||||||
"name": "Dash.",
|
"name": "Dash.",
|
||||||
"description": "Εμφανίζει τα γραφήματα μιας εξωτερικής Dash. μέσα στο Homarr.",
|
"description": "Εμφανίζει τα γραφήματα ενός εξωτερικού Dash. Instance μέσα στο Homarr.",
|
||||||
"settings": {
|
"settings": {
|
||||||
"title": "Ρυθμίσεις για το widget Dash",
|
"title": "Ρυθμίσεις για το widget Dash",
|
||||||
"cpuMultiView": {
|
"dashName": {
|
||||||
"label": "Προβολή πολλαπλών πυρήνων CPU"
|
"label": "Όνομα Dash"
|
||||||
},
|
|
||||||
"storageMultiView": {
|
|
||||||
"label": "Προβολή πολλαπλών μονάδων αποθήκευσης"
|
|
||||||
},
|
|
||||||
"useCompactView": {
|
|
||||||
"label": "Χρήση Συμπαγούς Προβολής"
|
|
||||||
},
|
|
||||||
"graphs": {
|
|
||||||
"label": "Γραφήματα"
|
|
||||||
},
|
},
|
||||||
"url": {
|
"url": {
|
||||||
"label": "Dash. URL"
|
"label": "Dash. URL"
|
||||||
|
},
|
||||||
|
"usePercentages": {
|
||||||
|
"label": "Εμφάνιση ποσοστών"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"label": "Εμφάνιση στηλών"
|
||||||
|
},
|
||||||
|
"graphHeight": {
|
||||||
|
"label": "Ύψος γραφημάτων"
|
||||||
|
},
|
||||||
|
"graphsOrder": {
|
||||||
|
"label": "Γραφήματα (σειρά)",
|
||||||
|
"storage": {
|
||||||
|
"label": "Αποθηκευτικός χώρος",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Εμφάνιση στο widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Εύρος στήλης"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Εμφάνιση ως κείμενο (συμπαγές)"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Εμφάνιση ως multi-drive-view"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"label": "Δίκτυο",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Εμφάνιση στο widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Εύρος στήλης"
|
||||||
|
},
|
||||||
|
"compactView": {
|
||||||
|
"label": "Εμφάνιση ως κείμενο (συμπαγές)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"label": "CPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Εμφάνιση στο widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Εύρος στήλης"
|
||||||
|
},
|
||||||
|
"multiView": {
|
||||||
|
"label": "Εμφάνιση ως προβολή πολλαπλών πυρήνων"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ram": {
|
||||||
|
"label": "RAM",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Εμφάνιση στο widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Εύρος στήλης"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gpu": {
|
||||||
|
"label": "GPU",
|
||||||
|
"enabled": {
|
||||||
|
"label": "Εμφάνιση στο widget"
|
||||||
|
},
|
||||||
|
"span": {
|
||||||
|
"label": "Εύρος στήλης"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -25,7 +85,11 @@
|
|||||||
"title": "Dash.",
|
"title": "Dash.",
|
||||||
"errors": {
|
"errors": {
|
||||||
"noService": "Δεν βρέθηκε υπηρεσία Dash. Παρακαλούμε προσθέστε μία στο ταμπλό Homarr ή ορίστε μια Dash. URL στις επιλογές της ενότητας",
|
"noService": "Δεν βρέθηκε υπηρεσία Dash. Παρακαλούμε προσθέστε μία στο ταμπλό Homarr ή ορίστε μια Dash. URL στις επιλογές της ενότητας",
|
||||||
"noInformation": "Δεν μπορεί να αποκτήσει πληροφορίες από το dash. - τρέχετε την τελευταία έκδοση;"
|
"noInformation": "Δεν μπορεί να αποκτήσει πληροφορίες από το dash. - τρέχετε την τελευταία έκδοση;",
|
||||||
|
"protocolDowngrade": {
|
||||||
|
"title": "Εντοπισμένη υποβάθμιση πρωτοκόλλου",
|
||||||
|
"text": "Η σύνδεση με την εμφάνισή σας Dash. χρησιμοποιεί HTTP. Αυτό αποτελεί κίνδυνο για την ασφάλεια, επειδή το HTTP δεν είναι κρυπτογραφημένο και οι επιτιθέμενοι θα μπορούσαν να κάνουν κατάχρηση αυτής της σύνδεσης. Βεβαιωθείτε ότι το Dash. χρησιμοποιεί HTTPS ή υποβαθμίστε το Homarr σε HTTP (δεν συνιστάται)."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"graphs": {
|
"graphs": {
|
||||||
"storage": {
|
"storage": {
|
||||||
@@ -43,8 +107,8 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"title": "CPU"
|
"title": "CPU"
|
||||||
},
|
},
|
||||||
"memory": {
|
"ram": {
|
||||||
"title": "Μνήμη RAM"
|
"title": "RAM"
|
||||||
},
|
},
|
||||||
"gpu": {
|
"gpu": {
|
||||||
"title": "GPU"
|
"title": "GPU"
|
||||||
|
|||||||
6
public/locales/el/modules/dns-hole-controls.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Στοιχεία ελέγχου DNS hole",
|
||||||
|
"description": "Ελέγξτε το PiHole ή το AdGuard από το dashboard σας"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
public/locales/el/modules/dns-hole-summary.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Περίληψη DNS hole",
|
||||||
|
"description": "Εμφανίζει σημαντικά δεδομένα από το PiHole ή το AdGuard",
|
||||||
|
"settings": {
|
||||||
|
"title": "Ρυθμίσεις για την περίληψη του DNS hole",
|
||||||
|
"usePiHoleColors": {
|
||||||
|
"label": "Χρήση χρωμάτων από το PiHole"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"metrics": {
|
||||||
|
"domainsOnAdlist": "Domains σε λίστες διαφημίσεων",
|
||||||
|
"queriesToday": "Σημερινά queries",
|
||||||
|
"queriesBlockedTodayPercentage": "σημερινοί αποκλεισμοί",
|
||||||
|
"queriesBlockedToday": "σημερινοί αποκλεισμοί"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
public/locales/el/modules/iframe.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "iframe",
|
||||||
|
"description": "Ενσωματώστε οποιοδήποτε περιεχόμενο από το διαδίκτυο. Ορισμένοι ιστότοποι ενδέχεται να περιορίζουν την πρόσβαση.",
|
||||||
|
"settings": {
|
||||||
|
"title": "ρυθμίσεις iFrame",
|
||||||
|
"embedUrl": {
|
||||||
|
"label": "URL ενσωμάτωσης"
|
||||||
|
},
|
||||||
|
"allowFullScreen": {
|
||||||
|
"label": "Επιτρέψτε την πλήρη οθόνη"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"errors": {
|
||||||
|
"noUrl": {
|
||||||
|
"title": "",
|
||||||
|
"text": "Βεβαιωθείτε ότι έχετε εισάγει μια έγκυρη διεύθυνση στη διαμόρφωση του widget σας"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
public/locales/el/modules/media-requests-list.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Αιτήματα μέσων ενημέρωσης",
|
||||||
|
"description": "Δείτε μια λίστα με όλα τα αιτήματα μέσων ενημέρωσης από την περίπτωση Overseerr ή Jellyseerr",
|
||||||
|
"settings": {
|
||||||
|
"title": "Κατάλογος αιτημάτων των μέσων ενημέρωσης",
|
||||||
|
"replaceLinksWithExternalHost": {
|
||||||
|
"label": "Αντικατάσταση συνδέσμων με εξωτερικό διακομιστή"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noRequests": "Δεν βρέθηκαν αιτήσεις. Βεβαιωθείτε ότι έχετε ρυθμίσει σωστά τις εφαρμογές σας.",
|
||||||
|
"pending": "Υπάρχουν αιτήσεις {{countPendingApproval}} που περιμένουν έγκριση.",
|
||||||
|
"nonePending": "Επί του παρόντος δεν εκκρεμούν εγκρίσεις. Είστε έτοιμοι να ξεκινήσετε!",
|
||||||
|
"state": {
|
||||||
|
"approved": "Εγκρίθηκε",
|
||||||
|
"pendingApproval": "Αναμένεται έγκριση",
|
||||||
|
"declined": "Απορρίφθηκε"
|
||||||
|
},
|
||||||
|
"tooltips": {
|
||||||
|
"approve": "Έγκριση αιτημάτων",
|
||||||
|
"decline": "Απόρριψη αιτημάτων"
|
||||||
|
}
|
||||||
|
}
|
||||||
14
public/locales/el/modules/media-requests-stats.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"descriptor": {
|
||||||
|
"name": "Στατιστικά στοιχεία αιτήματος των μέσων ενημέρωσης",
|
||||||
|
"description": "Στατιστικά στοιχεία σχετικά με τα αιτήματά σας για τα μέσα ενημέρωσης",
|
||||||
|
"settings": {
|
||||||
|
"title": "Στατιστικά στοιχεία αιτημάτων μέσων ενημέρωσης"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"pending": "Εκκρεμείς εγκρίσεις",
|
||||||
|
"tvRequests": "Τηλεοπτικά αιτήματα",
|
||||||
|
"movieRequests": "Αιτήματα ταινιών"
|
||||||
|
}
|
||||||
|
}
|
||||||