Compare commits

...

653 Commits

Author SHA1 Message Date
Anonymous
f9282180db Translated using Weblate (Thai)
Currently translated at 13.0% (47 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-20 08:36:14 +01:00
Anonymous
794fcaf3c3 Translated using Weblate (Latvian)
Currently translated at 33.1% (119 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-20 08:36:14 +01:00
Anonymous
ea9b7de1c9 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-20 08:36:14 +01:00
Anonymous
aef672f1bb Translated using Weblate (Ukrainian)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-20 08:36:13 +01:00
Anonymous
c0ad65b3b1 Translated using Weblate (Esperanto)
Currently translated at 28.6% (103 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-20 08:36:12 +01:00
Anonymous
062dd5b79c Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-20 08:36:12 +01:00
Anonymous
085e485e7c Translated using Weblate (Malay)
Currently translated at 70.4% (253 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-20 08:36:12 +01:00
Anonymous
c227b70f32 Translated using Weblate (Danish)
Currently translated at 55.1% (198 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-20 08:36:11 +01:00
Anonymous
e06a992437 Translated using Weblate (Czech)
Currently translated at 62.6% (225 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-20 08:36:11 +01:00
Anonymous
f9a96e10d6 Translated using Weblate (Arabic)
Currently translated at 72.9% (262 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-20 08:36:11 +01:00
Anonymous
0c52bf02eb Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-20 08:36:10 +01:00
Anonymous
ae7a938245 Translated using Weblate (Turkish)
Currently translated at 88.3% (317 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-20 08:36:10 +01:00
Anonymous
1c749bf93e Translated using Weblate (Bulgarian)
Currently translated at 12.8% (46 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-20 08:36:09 +01:00
Anonymous
72b21b5d0e Translated using Weblate (Telugu)
Currently translated at 60.4% (217 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-20 08:36:09 +01:00
Anonymous
4762177ef2 Translated using Weblate (Finnish)
Currently translated at 49.5% (178 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-20 08:36:09 +01:00
Anonymous
418578c795 Translated using Weblate (Yue)
Currently translated at 32.8% (118 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-20 08:36:08 +01:00
Anonymous
d2335eb4cc Translated using Weblate (Portuguese (Brazil))
Currently translated at 48.1% (173 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-20 08:36:08 +01:00
Anonymous
520965c7fd Translated using Weblate (Romanian)
Currently translated at 38.1% (137 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-20 08:36:08 +01:00
Anonymous
7b36e071ea Translated using Weblate (Hebrew)
Currently translated at 28.1% (101 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-20 08:36:07 +01:00
Anonymous
3ea68caf53 Translated using Weblate (Hungarian)
Currently translated at 30.0% (108 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-20 08:36:07 +01:00
Anonymous
e36ab158f7 Translated using Weblate (Croatian)
Currently translated at 79.6% (286 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-20 08:36:07 +01:00
Anonymous
b5dedbdbf1 Translated using Weblate (Swedish)
Currently translated at 36.7% (132 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-20 08:36:06 +01:00
Anonymous
abc44e3fe1 Translated using Weblate (Polish)
Currently translated at 79.3% (285 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-20 08:36:06 +01:00
Anonymous
32aeae0c41 Translated using Weblate (Catalan)
Currently translated at 71.8% (258 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-20 08:36:05 +01:00
Anonymous
b0c443f982 Translated using Weblate (Chinese (Traditional))
Currently translated at 87.4% (314 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-20 08:36:05 +01:00
Anonymous
890b9a97cb Translated using Weblate (Dutch)
Currently translated at 24.5% (88 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-20 08:36:05 +01:00
Anonymous
034a30a29c Translated using Weblate (Vietnamese)
Currently translated at 12.2% (44 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-20 08:36:04 +01:00
Anonymous
b651fb84c4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.0% (79 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-20 08:36:04 +01:00
Anonymous
4354698b15 Translated using Weblate (Italian)
Currently translated at 80.2% (288 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-20 08:36:04 +01:00
Anonymous
01210bcbc9 Translated using Weblate (Chinese (Simplified))
Currently translated at 92.2% (331 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-20 08:36:03 +01:00
Anonymous
810bae42fc Translated using Weblate (Russian)
Currently translated at 13.3% (48 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-20 08:36:03 +01:00
Anonymous
bfb8b703dc Translated using Weblate (Portuguese)
Currently translated at 71.3% (256 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-20 08:36:03 +01:00
Anonymous
2ab980e658 Translated using Weblate (French)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-20 08:36:02 +01:00
Anonymous
509a4e5460 Translated using Weblate (Spanish)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-20 08:36:02 +01:00
Anonymous
030aec3908 Translated using Weblate (German)
Currently translated at 63.5% (228 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-20 08:36:02 +01:00
Dan
26e4216780 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-20 08:35:07 +01:00
Nonoss117
08d7636165 Translated using Weblate (French)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-20 08:35:07 +01:00
gallegonovato
9fcc6cae36 Translated using Weblate (Spanish)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-20 08:35:07 +01:00
shamoon
893c443f21 Merge pull request #1023 from rommelkott/main
Add Health checks widget
2023-02-19 23:35:01 -08:00
shamoon
594f47fa68 Rework healthchecks date formatting 2023-02-19 23:32:53 -08:00
Rommel Kott
5def5dd508 Add healthcheck widget 2023-02-19 23:31:33 -08:00
shamoon
0e2b474540 Merge pull request #1022 from danroc/main
Fix: Correct flood + transmission rate units
2023-02-19 18:43:42 -08:00
shamoon
4855aa762f correct transmission rate units 2023-02-19 07:46:51 -08:00
Daniel Rocha
96507e4eba Use byterate for flood 2023-02-19 07:46:51 -08:00
shamoon
08f56b54f5 Update component.jsx 2023-02-19 06:25:07 -08:00
shamoon
9662c29374 Update PULL_REQUEST_TEMPLATE.md 2023-02-18 23:17:07 -08:00
shamoon
14e1a9a4ed limit widgets > 4 blocks 2023-02-18 22:58:55 -08:00
Jason Fischer
45946ddfe1 Merge pull request #963 from benphelps/fix-settings-after-container-update
Fix settings after container update
2023-02-18 22:56:53 -08:00
shamoon
651b8d8ef7 Update PULL_REQUEST_TEMPLATE.md 2023-02-18 22:50:38 -08:00
shamoon
8e53dff5dc Create PULL_REQUEST_TEMPLATE.md 2023-02-18 22:44:37 -08:00
Anonymous
c84a75ce77 Translated using Weblate (Thai)
Currently translated at 13.3% (47 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-19 07:22:26 +01:00
Anonymous
21106e4bbd Translated using Weblate (Latvian)
Currently translated at 33.9% (119 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-19 07:22:26 +01:00
Anonymous
af6f867e41 Translated using Weblate (Japanese)
Currently translated at 4.2% (15 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-19 07:22:26 +01:00
Anonymous
deaa4e5a13 Translated using Weblate (Ukrainian)
Currently translated at 96.5% (339 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-19 07:22:25 +01:00
Anonymous
fff96b6ab7 Translated using Weblate (Esperanto)
Currently translated at 29.3% (103 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-19 07:22:25 +01:00
Anonymous
7648f2d409 Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-19 07:22:24 +01:00
Anonymous
6461578fc5 Translated using Weblate (Malay)
Currently translated at 72.0% (253 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-19 07:22:24 +01:00
Anonymous
9d97b6e231 Translated using Weblate (Danish)
Currently translated at 56.4% (198 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-19 07:22:24 +01:00
Anonymous
71109db50f Translated using Weblate (Czech)
Currently translated at 64.1% (225 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-19 07:22:23 +01:00
Anonymous
f7294131b7 Translated using Weblate (Arabic)
Currently translated at 74.6% (262 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-19 07:22:23 +01:00
Anonymous
271aee139e Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-19 07:22:23 +01:00
Anonymous
3d9e739cb4 Translated using Weblate (Turkish)
Currently translated at 90.3% (317 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-19 07:22:22 +01:00
Anonymous
ada39bb876 Translated using Weblate (Bulgarian)
Currently translated at 13.1% (46 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-19 07:22:22 +01:00
Anonymous
160b936206 Translated using Weblate (Telugu)
Currently translated at 61.8% (217 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-19 07:22:21 +01:00
Anonymous
5874598a36 Translated using Weblate (Finnish)
Currently translated at 50.7% (178 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-19 07:22:21 +01:00
Anonymous
938d03e4ba Translated using Weblate (Yue)
Currently translated at 33.6% (118 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-19 07:22:21 +01:00
Anonymous
4314013b2e Translated using Weblate (Portuguese (Brazil))
Currently translated at 49.2% (173 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-19 07:22:20 +01:00
Anonymous
acfeaae8c6 Translated using Weblate (Romanian)
Currently translated at 39.0% (137 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-19 07:22:20 +01:00
Anonymous
b70fa0e844 Translated using Weblate (Hebrew)
Currently translated at 28.7% (101 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-19 07:22:20 +01:00
Anonymous
b7dcd3e9cd Translated using Weblate (Hungarian)
Currently translated at 30.7% (108 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-19 07:22:19 +01:00
Anonymous
f697c9b9dd Translated using Weblate (Croatian)
Currently translated at 81.4% (286 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-19 07:22:19 +01:00
Anonymous
06fa779966 Translated using Weblate (Swedish)
Currently translated at 37.6% (132 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-19 07:22:19 +01:00
Anonymous
6eefa34741 Translated using Weblate (Polish)
Currently translated at 81.1% (285 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-19 07:22:18 +01:00
Anonymous
4bd2fda6ae Translated using Weblate (Catalan)
Currently translated at 73.5% (258 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-19 07:22:18 +01:00
Anonymous
ec701d9fd7 Translated using Weblate (Chinese (Traditional))
Currently translated at 89.4% (314 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-19 07:22:17 +01:00
Anonymous
6476094ce4 Translated using Weblate (Dutch)
Currently translated at 25.0% (88 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-19 07:22:17 +01:00
Anonymous
57940c1519 Translated using Weblate (Vietnamese)
Currently translated at 12.5% (44 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-19 07:22:17 +01:00
Anonymous
4b494efcd1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.5% (79 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-19 07:22:16 +01:00
Anonymous
bb8796000c Translated using Weblate (Italian)
Currently translated at 82.0% (288 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-19 07:22:16 +01:00
Anonymous
e49478085c Translated using Weblate (Chinese (Simplified))
Currently translated at 94.3% (331 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-19 07:22:16 +01:00
Anonymous
db5a7beb57 Translated using Weblate (Russian)
Currently translated at 13.6% (48 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-19 07:22:15 +01:00
Anonymous
0b7b1c4c9e Translated using Weblate (Portuguese)
Currently translated at 72.9% (256 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-19 07:22:15 +01:00
Anonymous
4a85caca50 Translated using Weblate (French)
Currently translated at 97.7% (343 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-19 07:22:15 +01:00
Anonymous
410054347d Translated using Weblate (Spanish)
Currently translated at 97.7% (343 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-19 07:22:14 +01:00
Anonymous
05b056d18e Translated using Weblate (German)
Currently translated at 64.9% (228 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-19 07:22:14 +01:00
shamoon
080d684089 Merge pull request #807 from JeffResc/unmanic
Add Unmanic service widget
2023-02-18 22:21:42 -08:00
shamoon
0666268d91 unmanic use generic proxy 2023-02-18 22:21:32 -08:00
Jeff Rescignano
b45d6240ae Add Unmanic service widget 2023-02-18 22:19:45 -08:00
shamoon
e35a66d3f1 Suppory body in widget endpoint mappings 2023-02-18 22:18:27 -08:00
Anonymous
2367564041 Translated using Weblate (Thai)
Currently translated at 13.5% (47 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-18 22:58:54 +01:00
Anonymous
0223e8828f Translated using Weblate (Latvian)
Currently translated at 34.1% (119 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-18 22:58:54 +01:00
Anonymous
408533ee24 Translated using Weblate (Japanese)
Currently translated at 4.3% (15 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-18 22:58:53 +01:00
Anonymous
0c745d6d58 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (339 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-18 22:58:53 +01:00
Anonymous
35cbe9e69b Translated using Weblate (Esperanto)
Currently translated at 29.5% (103 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-18 22:58:52 +01:00
Anonymous
91511edcfb Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-18 22:58:52 +01:00
Anonymous
df8cf8cb20 Translated using Weblate (Malay)
Currently translated at 72.7% (253 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-18 22:58:52 +01:00
Anonymous
8c1b95cb0a Translated using Weblate (Danish)
Currently translated at 56.8% (198 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-18 22:58:51 +01:00
Anonymous
264f2fb84b Translated using Weblate (Czech)
Currently translated at 64.6% (225 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-18 22:58:51 +01:00
Anonymous
13fe3f6e73 Translated using Weblate (Arabic)
Currently translated at 75.2% (262 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-18 22:58:50 +01:00
Anonymous
c7a927fe7d Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-18 22:58:50 +01:00
Anonymous
446d06b538 Translated using Weblate (Turkish)
Currently translated at 91.0% (317 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-18 22:58:50 +01:00
Anonymous
a2d88bd30f Translated using Weblate (Bulgarian)
Currently translated at 13.2% (46 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-18 22:58:49 +01:00
Anonymous
bbde2876e2 Translated using Weblate (Telugu)
Currently translated at 62.3% (217 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-18 22:58:49 +01:00
Anonymous
161dcf70ab Translated using Weblate (Finnish)
Currently translated at 51.1% (178 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-18 22:58:48 +01:00
Anonymous
1544d6cb37 Translated using Weblate (Yue)
Currently translated at 33.9% (118 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-18 22:58:48 +01:00
Anonymous
b6b716c95f Translated using Weblate (Portuguese (Brazil))
Currently translated at 49.7% (173 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-18 22:58:47 +01:00
Anonymous
f0b32e7d14 Translated using Weblate (Romanian)
Currently translated at 39.3% (137 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-18 22:58:47 +01:00
Anonymous
27eb036996 Translated using Weblate (Hebrew)
Currently translated at 29.0% (101 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-18 22:58:46 +01:00
Anonymous
65cee0ec2b Translated using Weblate (Hungarian)
Currently translated at 31.0% (108 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-18 22:58:46 +01:00
Anonymous
735cf18dd8 Translated using Weblate (Croatian)
Currently translated at 82.1% (286 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-18 22:58:46 +01:00
Anonymous
a4a0d293cd Translated using Weblate (Swedish)
Currently translated at 37.9% (132 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-18 22:58:45 +01:00
Anonymous
bcc7852e25 Translated using Weblate (Polish)
Currently translated at 81.8% (285 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-18 22:58:45 +01:00
Anonymous
724fc07610 Translated using Weblate (Catalan)
Currently translated at 74.1% (258 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-18 22:58:44 +01:00
Anonymous
2f0cf218fc Translated using Weblate (Chinese (Traditional))
Currently translated at 90.2% (314 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-18 22:58:44 +01:00
Anonymous
534b28259f Translated using Weblate (Dutch)
Currently translated at 25.2% (88 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-18 22:58:44 +01:00
Anonymous
61db2fd57d Translated using Weblate (Vietnamese)
Currently translated at 12.6% (44 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-18 22:58:43 +01:00
Anonymous
0a926a322a Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.7% (79 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-18 22:58:43 +01:00
Anonymous
386df61ed7 Translated using Weblate (Italian)
Currently translated at 82.7% (288 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-18 22:58:42 +01:00
Anonymous
467f42e0f6 Translated using Weblate (Chinese (Simplified))
Currently translated at 95.1% (331 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-18 22:58:42 +01:00
Anonymous
5dd4df8a05 Translated using Weblate (Russian)
Currently translated at 13.7% (48 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-18 22:58:42 +01:00
Anonymous
0a4116425b Translated using Weblate (Portuguese)
Currently translated at 73.5% (256 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-18 22:58:41 +01:00
Anonymous
e26e7f8559 Translated using Weblate (French)
Currently translated at 98.5% (343 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-18 22:58:41 +01:00
Anonymous
0b30764b89 Translated using Weblate (Spanish)
Currently translated at 98.5% (343 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-18 22:58:41 +01:00
Anonymous
97669a98a9 Translated using Weblate (German)
Currently translated at 65.5% (228 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-18 22:58:40 +01:00
Mbarmem
addf0911a0 Add Kopia widget (#1018)
* Add Kopia widget

* Add Kopia widget

* Modify Kopia widget blocks

* Kopia next run / last run

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-02-18 13:58:01 -08:00
Nonoss117
806b7f3cab Translated using Weblate (French)
Currently translated at 100.0% (343 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-18 12:37:10 +01:00
gallegonovato
9b037ce349 Translated using Weblate (Spanish)
Currently translated at 100.0% (343 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-18 12:37:09 +01:00
shamoon
79d199b321 Merge pull request #1019 from benphelps/issue-1007
Fix: pass csrf token for unifi login
2023-02-17 14:12:07 -08:00
shamoon
5289476937 Pass csrf token for unifi login 2023-02-16 22:45:11 -08:00
Anonymous
08f5cd8ef2 Translated using Weblate (Thai)
Currently translated at 13.7% (47 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-17 07:06:41 +01:00
Anonymous
7634e41652 Translated using Weblate (Latvian)
Currently translated at 34.6% (119 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-17 07:06:40 +01:00
Anonymous
321c7c95f8 Translated using Weblate (Japanese)
Currently translated at 4.3% (15 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-17 07:06:40 +01:00
Anonymous
5697037550 Translated using Weblate (Ukrainian)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-17 07:06:40 +01:00
Anonymous
bb43d30d81 Translated using Weblate (Esperanto)
Currently translated at 30.0% (103 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-17 07:06:39 +01:00
Anonymous
7f0db24203 Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-17 07:06:39 +01:00
Anonymous
89699cabb1 Translated using Weblate (Malay)
Currently translated at 73.7% (253 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-17 07:06:38 +01:00
Anonymous
5e51a16959 Translated using Weblate (Danish)
Currently translated at 57.7% (198 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-17 07:06:38 +01:00
Anonymous
babc73c74e Translated using Weblate (Czech)
Currently translated at 65.5% (225 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-17 07:06:38 +01:00
Anonymous
a8391db069 Translated using Weblate (Arabic)
Currently translated at 76.3% (262 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-17 07:06:37 +01:00
Anonymous
e9b8b50b24 Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-17 07:06:37 +01:00
Anonymous
d52d31a2bd Translated using Weblate (Turkish)
Currently translated at 92.4% (317 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-17 07:06:37 +01:00
Anonymous
890d392b29 Translated using Weblate (Bulgarian)
Currently translated at 13.4% (46 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-17 07:06:36 +01:00
Anonymous
77b5879602 Translated using Weblate (Telugu)
Currently translated at 63.2% (217 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-17 07:06:36 +01:00
Anonymous
1b643d8572 Translated using Weblate (Finnish)
Currently translated at 51.8% (178 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-17 07:06:35 +01:00
Anonymous
d7544e9b9f Translated using Weblate (Yue)
Currently translated at 34.4% (118 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-17 07:06:35 +01:00
Anonymous
1c71b8872f Translated using Weblate (Portuguese (Brazil))
Currently translated at 50.4% (173 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-17 07:06:35 +01:00
Anonymous
c1865592de Translated using Weblate (Romanian)
Currently translated at 39.9% (137 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-17 07:06:34 +01:00
Anonymous
6d3dc81692 Translated using Weblate (Hebrew)
Currently translated at 29.4% (101 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-17 07:06:34 +01:00
Anonymous
95caacce41 Translated using Weblate (Hungarian)
Currently translated at 31.4% (108 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-17 07:06:33 +01:00
Anonymous
caf2d2c63b Translated using Weblate (Croatian)
Currently translated at 83.3% (286 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-17 07:06:33 +01:00
Anonymous
7bed5604ca Translated using Weblate (Swedish)
Currently translated at 38.4% (132 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-17 07:06:33 +01:00
Anonymous
5ff206565c Translated using Weblate (Polish)
Currently translated at 83.0% (285 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-17 07:06:32 +01:00
Anonymous
976bcdd794 Translated using Weblate (Catalan)
Currently translated at 75.2% (258 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-17 07:06:32 +01:00
Anonymous
bdbd570fbc Translated using Weblate (Chinese (Traditional))
Currently translated at 91.5% (314 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-17 07:06:31 +01:00
Anonymous
1fdcc95ab1 Translated using Weblate (Dutch)
Currently translated at 25.6% (88 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-17 07:06:31 +01:00
Anonymous
b0113908a6 Translated using Weblate (Vietnamese)
Currently translated at 12.8% (44 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-17 07:06:31 +01:00
Anonymous
b9c823decb Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.0% (79 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-17 07:06:30 +01:00
Anonymous
a23ec1d4f3 Translated using Weblate (Italian)
Currently translated at 83.9% (288 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-17 07:06:30 +01:00
Anonymous
58b3706d5d Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (331 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-17 07:06:30 +01:00
Anonymous
4d1c01b9f9 Translated using Weblate (Russian)
Currently translated at 13.9% (48 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-17 07:06:29 +01:00
Anonymous
edb94b7499 Translated using Weblate (Portuguese)
Currently translated at 74.6% (256 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-17 07:06:29 +01:00
Anonymous
dd43b02e92 Translated using Weblate (French)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-17 07:06:28 +01:00
Anonymous
daaeedf3e5 Translated using Weblate (Spanish)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-17 07:06:28 +01:00
Anonymous
10f7d9cbfe Translated using Weblate (German)
Currently translated at 66.4% (228 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-17 07:06:28 +01:00
shamoon
21a4751289 Merge pull request #1010 from Mbarmem/main
Add Nextcloud widget
2023-02-16 22:05:51 -08:00
shamoon
ad6eeaaf75 Remove nextcloud shares block 2023-02-16 22:05:32 -08:00
Dan
5d5ddfec1b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-16 12:36:36 +01:00
Nonoss117
3d3dcd2a63 Translated using Weblate (French)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-16 12:36:35 +01:00
gallegonovato
ede631e487 Translated using Weblate (Spanish)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-16 12:36:35 +01:00
Mbarmem
ed96c46fa5 Add Nextcloud widget 2023-02-16 11:30:05 +03:00
shamoon
5a8b1b587b Merge pull request #1008 from benphelps/fix-1001
Feature: strip sensitive information contained in URLs from frontend API calls
2023-02-15 15:31:53 -08:00
shamoon
e1176e9e3b Strip sensitive information contained in URLs from frontend API calls 2023-02-15 14:46:31 -08:00
shamoon
a25606cfe9 Merge pull request #994 from benphelps/fix-970
Fix: improve swarm status for replicated services & prefer stats for local containers
2023-02-14 10:41:49 -08:00
shamoon
ae7a77d247 Use replica count for swarm status
Co-Authored-By: Raphaël Catarino <raphcatarino@gmail.com>
2023-02-14 10:41:12 -08:00
Anonymous
be51be60a2 Translated using Weblate (Thai)
Currently translated at 13.8% (47 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-14 19:33:04 +01:00
Anonymous
07f7025dde Translated using Weblate (Latvian)
Currently translated at 35.1% (119 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-14 19:33:03 +01:00
Anonymous
bd62195c60 Translated using Weblate (Japanese)
Currently translated at 4.4% (15 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-14 19:33:03 +01:00
Anonymous
2af8f5f36b Translated using Weblate (Ukrainian)
Currently translated at 97.6% (331 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-14 19:33:02 +01:00
Anonymous
52ab10a17b Translated using Weblate (Esperanto)
Currently translated at 30.3% (103 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-14 19:33:02 +01:00
Anonymous
6cec2f0d0d Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-14 19:33:02 +01:00
Anonymous
d953b52938 Translated using Weblate (Malay)
Currently translated at 74.6% (253 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-14 19:33:01 +01:00
Anonymous
7d43d23d84 Translated using Weblate (Danish)
Currently translated at 58.4% (198 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-14 19:33:01 +01:00
Anonymous
34653dd286 Translated using Weblate (Czech)
Currently translated at 66.3% (225 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-14 19:33:00 +01:00
Anonymous
3d0a53f4ae Translated using Weblate (Arabic)
Currently translated at 77.2% (262 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-14 19:33:00 +01:00
Anonymous
f704acc3b1 Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-14 19:32:59 +01:00
Anonymous
db4d812a12 Translated using Weblate (Turkish)
Currently translated at 93.5% (317 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-14 19:32:59 +01:00
Anonymous
e8fcb8add2 Translated using Weblate (Bulgarian)
Currently translated at 13.5% (46 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-14 19:32:58 +01:00
Anonymous
54bfecd59a Translated using Weblate (Telugu)
Currently translated at 64.0% (217 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-14 19:32:58 +01:00
Anonymous
5bf2b816c8 Translated using Weblate (Finnish)
Currently translated at 52.5% (178 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-14 19:32:58 +01:00
Anonymous
8cfa880f5c Translated using Weblate (Yue)
Currently translated at 34.8% (118 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-14 19:32:57 +01:00
Anonymous
30af03a7ce Translated using Weblate (Portuguese (Brazil))
Currently translated at 51.0% (173 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-14 19:32:57 +01:00
Anonymous
6aaf82418e Translated using Weblate (Romanian)
Currently translated at 40.4% (137 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-14 19:32:56 +01:00
Anonymous
d4b46eb18c Translated using Weblate (Hebrew)
Currently translated at 29.7% (101 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-14 19:32:56 +01:00
Anonymous
a5a0a0c510 Translated using Weblate (Hungarian)
Currently translated at 31.8% (108 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-14 19:32:56 +01:00
Anonymous
613e40a900 Translated using Weblate (Croatian)
Currently translated at 84.3% (286 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-14 19:32:55 +01:00
Anonymous
248b5759a0 Translated using Weblate (Swedish)
Currently translated at 38.9% (132 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-14 19:32:55 +01:00
Anonymous
5c35aee418 Translated using Weblate (Polish)
Currently translated at 84.0% (285 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-14 19:32:54 +01:00
Anonymous
2f9cf474dd Translated using Weblate (Catalan)
Currently translated at 76.1% (258 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-14 19:32:54 +01:00
Anonymous
378be50c35 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.6% (314 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-14 19:32:53 +01:00
Anonymous
49c55e04e9 Translated using Weblate (Dutch)
Currently translated at 25.9% (88 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-14 19:32:53 +01:00
Anonymous
c1250d0ab6 Translated using Weblate (Vietnamese)
Currently translated at 12.9% (44 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-14 19:32:53 +01:00
Anonymous
b7e9a69345 Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.3% (79 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-14 19:32:52 +01:00
Anonymous
1210add0ff Translated using Weblate (Italian)
Currently translated at 84.9% (288 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-14 19:32:52 +01:00
Anonymous
e235790d68 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.6% (331 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-14 19:32:51 +01:00
Anonymous
31a6408583 Translated using Weblate (Russian)
Currently translated at 14.1% (48 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-14 19:32:51 +01:00
Anonymous
0a5276b12d Translated using Weblate (Portuguese)
Currently translated at 75.5% (256 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-14 19:32:51 +01:00
Anonymous
d440126c45 Translated using Weblate (French)
Currently translated at 98.8% (335 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 19:32:50 +01:00
Anonymous
6a3f096d44 Translated using Weblate (Spanish)
Currently translated at 98.8% (335 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 19:32:50 +01:00
Anonymous
1b5f7ac3e2 Translated using Weblate (German)
Currently translated at 67.2% (228 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-14 19:32:49 +01:00
Nonoss117
e56d29febb Translated using Weblate (French)
Currently translated at 100.0% (335 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 19:32:13 +01:00
gallegonovato
610ad9819a Translated using Weblate (Spanish)
Currently translated at 100.0% (335 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 19:32:13 +01:00
shamoon
2c6b2a1474 Merge pull request #999 from benphelps/add-grafana-widget
Add grafana widget
2023-02-14 10:32:07 -08:00
shamoon
460983b741 Add grafana stats 2023-02-14 10:30:05 -08:00
shamoon
c1f22b3e2c Cleanup grafana widget + fix labels 2023-02-14 10:30:05 -08:00
Mbarmem
cd7d7ba729 Add Grafana widget 2023-02-14 10:30:05 -08:00
shamoon
f74275293a Prefer swarm task containers locally for status / stats 2023-02-14 10:09:12 -08:00
Anonymous
8a6343dee7 Translated using Weblate (Thai)
Currently translated at 14.0% (47 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-14 05:23:13 +01:00
Anonymous
d7671149b7 Translated using Weblate (Latvian)
Currently translated at 35.5% (119 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-14 05:23:13 +01:00
Anonymous
db2063a3ee Translated using Weblate (Japanese)
Currently translated at 4.4% (15 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-14 05:23:12 +01:00
Anonymous
ed2e15f8c3 Translated using Weblate (Ukrainian)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-14 05:23:12 +01:00
Anonymous
69640fea19 Translated using Weblate (Esperanto)
Currently translated at 30.7% (103 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-14 05:23:12 +01:00
Anonymous
7b6a0aa86f Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-14 05:23:11 +01:00
Anonymous
aa3d3ff208 Translated using Weblate (Malay)
Currently translated at 75.5% (253 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-14 05:23:11 +01:00
Anonymous
a8c3ecb00c Translated using Weblate (Danish)
Currently translated at 59.1% (198 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-14 05:23:10 +01:00
Anonymous
35b533b3f0 Translated using Weblate (Czech)
Currently translated at 67.1% (225 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-14 05:23:10 +01:00
Anonymous
e433c195e8 Translated using Weblate (Arabic)
Currently translated at 78.2% (262 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-14 05:23:10 +01:00
Anonymous
c799f1207f Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-14 05:23:09 +01:00
Anonymous
ab7a73dae6 Translated using Weblate (Turkish)
Currently translated at 94.6% (317 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-14 05:23:09 +01:00
Anonymous
8ec4291753 Translated using Weblate (Bulgarian)
Currently translated at 13.7% (46 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-14 05:23:08 +01:00
Anonymous
d5c99a9582 Translated using Weblate (Telugu)
Currently translated at 64.7% (217 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-14 05:23:08 +01:00
Anonymous
e729a75975 Translated using Weblate (Finnish)
Currently translated at 53.1% (178 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-14 05:23:07 +01:00
Anonymous
55f3a68b5f Translated using Weblate (Yue)
Currently translated at 35.2% (118 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-14 05:23:07 +01:00
Anonymous
33a3d9bcff Translated using Weblate (Portuguese (Brazil))
Currently translated at 51.6% (173 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-14 05:23:07 +01:00
Anonymous
b5e8284d7f Translated using Weblate (Romanian)
Currently translated at 40.8% (137 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-14 05:23:06 +01:00
Anonymous
1497e4dbd5 Translated using Weblate (Hebrew)
Currently translated at 30.1% (101 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-14 05:23:06 +01:00
Anonymous
615a0c419c Translated using Weblate (Hungarian)
Currently translated at 32.2% (108 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-14 05:23:06 +01:00
Anonymous
26b4e8adea Translated using Weblate (Croatian)
Currently translated at 85.3% (286 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-14 05:23:05 +01:00
Anonymous
10d5f11a9c Translated using Weblate (Swedish)
Currently translated at 39.4% (132 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-14 05:23:05 +01:00
Anonymous
e241e4c683 Translated using Weblate (Polish)
Currently translated at 85.0% (285 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-14 05:23:05 +01:00
Anonymous
049dda86e3 Translated using Weblate (Catalan)
Currently translated at 77.0% (258 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-14 05:23:04 +01:00
Anonymous
78088afb9c Translated using Weblate (Chinese (Traditional))
Currently translated at 93.7% (314 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-14 05:23:04 +01:00
Anonymous
75e310c19e Translated using Weblate (Dutch)
Currently translated at 26.2% (88 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-14 05:23:03 +01:00
Anonymous
eed83c4a98 Translated using Weblate (Vietnamese)
Currently translated at 13.1% (44 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-14 05:23:03 +01:00
Anonymous
9d22af1166 Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.5% (79 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-14 05:23:03 +01:00
Anonymous
06761a38c0 Translated using Weblate (Italian)
Currently translated at 85.9% (288 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-14 05:23:02 +01:00
Anonymous
338d723ffd Translated using Weblate (Chinese (Simplified))
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-14 05:23:02 +01:00
Anonymous
5d57892db4 Translated using Weblate (Russian)
Currently translated at 14.3% (48 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-14 05:23:02 +01:00
Anonymous
107993821a Translated using Weblate (Portuguese)
Currently translated at 76.4% (256 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-14 05:23:01 +01:00
Anonymous
6f6b35d790 Translated using Weblate (French)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 05:23:01 +01:00
Anonymous
e362ed129d Translated using Weblate (Spanish)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 05:23:01 +01:00
Anonymous
65065fed17 Translated using Weblate (German)
Currently translated at 68.0% (228 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-14 05:23:00 +01:00
shamoon
ebe58769f6 fix fileflows widget labels 2023-02-13 20:22:15 -08:00
beucismis
2e54f586a2 Translated using Weblate (Turkish)
Currently translated at 95.7% (317 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-13 23:39:56 +01:00
shamoon
d07b508990 Merge pull request #990 from Mbarmem/main
Add FileFlows widget
2023-02-13 00:14:00 -08:00
shamoon
598815ba5c fileflows code cleanup 2023-02-13 00:13:31 -08:00
Mbarmem
6bb94dc185 Add FileFlows widget 2023-02-13 00:13:31 -08:00
shamoon
aabd05a0cb Merge pull request #988 from vorotynsky/fix-footer 2023-02-12 07:54:26 -08:00
Vorotynsky Maxim
f558d27e8c Move the footer to the bottom 2023-02-12 15:32:50 +01:00
mspzyzh
220f662d10 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 12:46:37 +01:00
mspzyzh
2fb33d048b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 07:32:12 +01:00
mspzyzh
a3d56e2d4b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 07:21:51 +01:00
mspzyzh
caecfaa87d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 06:40:34 +01:00
mspzyzh
7cf92d5a92 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 06:14:48 +01:00
Lei Seaks
b619fe95d1 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.8% (314 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-11 04:23:55 +01:00
Jason Fischer
e1f0e3814a Merge pull request #954 from benphelps/rewrite-rutorrent-proxy
Feat: rewrite rutorrent proxy
2023-02-09 21:00:31 -08:00
Jason Fischer
8d7f41388c Merge pull request #975 from jameswynn/kubernetes-ping
Added support for "ping" configuration in kubernetes ingress annotations
2023-02-09 20:56:23 -08:00
James Wynn
b4cdb03228 Added support for "ping" configuration in kubernetes ingress annotations 2023-02-09 17:09:59 -06:00
Phongsakorn Wisetthon
0de278802b Translated using Weblate (Thai)
Currently translated at 14.1% (47 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-09 10:38:54 +01:00
zhangnew
64704a1559 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.5% (313 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-09 10:38:54 +01:00
shamoon
668df2d773 Merge pull request #964 from chain710/fixsetcookie 2023-02-08 19:14:57 -08:00
shamoon
3600e5487d Apply suggestions from #964 code review 2023-02-08 08:30:53 -08:00
chain710
f109ffa9bc cookieJar.setCookieSync ignore error
cookieJar.setCookieSync crash node when error, like:
```
uncaughtException: Error: Cookie not in this host's domain. Cookie:example.com Request:127.0.0.1
```
2023-02-08 20:33:11 +08:00
shamoon
73c8ff7ee6 Use buildtime in config hash 2023-02-08 00:37:46 -08:00
shamoon
7b474d4cef Revert "Merge pull request #609 from benphelps/fix-576"
This reverts commit a7f290dfdd, reversing
changes made to cf38395100.
2023-02-08 00:19:33 -08:00
Phongsakorn Wisetthon
02b0604ad7 Translated using Weblate (Thai)
Currently translated at 9.9% (33 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-08 06:47:34 +01:00
Anonymous
845c7bbdcc Translated using Weblate (Thai)
Currently translated at 100.0% (0 of 0 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-08 06:35:55 +01:00
Dan
1d23cad458 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-08 06:35:51 +01:00
Nonoss117
babaa0705a Translated using Weblate (French)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-08 06:35:50 +01:00
gallegonovato
6a8f0f7814 Translated using Weblate (Spanish)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-08 06:35:50 +01:00
Phongsakorn Wisetthon
23f3a5f404 Added translation using Weblate (Thai) 2023-02-08 06:35:21 +01:00
shamoon
f8a0c69e4b Merge pull request #953 from benphelps/revert-904-feat/custom-css
Revert "feat: Custom CSS"
2023-02-06 14:26:29 -08:00
shamoon
b2211bcdfd rewrite rutorrent proxy 2023-02-06 14:23:30 -08:00
shamoon
b9b989fd11 Revert "feat: Custom CSS" 2023-02-06 14:07:11 -08:00
Anonymous
3cbfd10df7 Translated using Weblate (Latvian)
Currently translated at 35.9% (119 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 22:58:19 +01:00
Anonymous
58fa62f926 Translated using Weblate (Japanese)
Currently translated at 4.5% (15 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 22:58:19 +01:00
Anonymous
15cd1bba5c Translated using Weblate (Ukrainian)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 22:58:19 +01:00
Anonymous
bef2da4f96 Translated using Weblate (Esperanto)
Currently translated at 31.1% (103 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 22:58:18 +01:00
Anonymous
4b1fd17e61 Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 22:58:18 +01:00
Anonymous
d501904913 Translated using Weblate (Malay)
Currently translated at 76.4% (253 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 22:58:17 +01:00
Anonymous
e57b5c9af9 Translated using Weblate (Danish)
Currently translated at 59.8% (198 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 22:58:17 +01:00
Anonymous
9ab9854c2c Translated using Weblate (Czech)
Currently translated at 67.9% (225 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 22:58:16 +01:00
Anonymous
e195cc5276 Translated using Weblate (Arabic)
Currently translated at 79.1% (262 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 22:58:16 +01:00
Anonymous
bfa1e4ca5b Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 22:58:16 +01:00
Anonymous
6041e7349f Translated using Weblate (Turkish)
Currently translated at 69.7% (231 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 22:58:15 +01:00
Anonymous
eb04581a0e Translated using Weblate (Bulgarian)
Currently translated at 13.8% (46 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 22:58:15 +01:00
Anonymous
b70ab6ee27 Translated using Weblate (Telugu)
Currently translated at 65.5% (217 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 22:58:14 +01:00
Anonymous
5e0dbdb9ec Translated using Weblate (Finnish)
Currently translated at 53.7% (178 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 22:58:14 +01:00
Anonymous
30cb733dc9 Translated using Weblate (Yue)
Currently translated at 35.6% (118 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 22:58:14 +01:00
Anonymous
471246a3ca Translated using Weblate (Portuguese (Brazil))
Currently translated at 52.2% (173 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 22:58:13 +01:00
Anonymous
b99fa9e140 Translated using Weblate (Romanian)
Currently translated at 41.3% (137 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 22:58:13 +01:00
Anonymous
eb6ac8f18d Translated using Weblate (Hebrew)
Currently translated at 30.5% (101 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 22:58:12 +01:00
Anonymous
e4a980a222 Translated using Weblate (Hungarian)
Currently translated at 32.6% (108 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 22:58:12 +01:00
Anonymous
3f608e52b5 Translated using Weblate (Croatian)
Currently translated at 86.4% (286 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 22:58:12 +01:00
Anonymous
8749c655d5 Translated using Weblate (Swedish)
Currently translated at 39.8% (132 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 22:58:11 +01:00
Anonymous
67ff299e1c Translated using Weblate (Polish)
Currently translated at 86.1% (285 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 22:58:11 +01:00
Anonymous
ada3c9df0d Translated using Weblate (Catalan)
Currently translated at 77.9% (258 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 22:58:11 +01:00
Anonymous
f385c9ea9f Translated using Weblate (Chinese (Traditional))
Currently translated at 94.8% (314 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 22:58:10 +01:00
Anonymous
608dcb05fc Translated using Weblate (Dutch)
Currently translated at 26.5% (88 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 22:58:10 +01:00
Anonymous
5a65b5a052 Translated using Weblate (Vietnamese)
Currently translated at 13.2% (44 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 22:58:09 +01:00
Anonymous
4dfa04251c Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.8% (79 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 22:58:09 +01:00
Anonymous
393602eff7 Translated using Weblate (Italian)
Currently translated at 87.0% (288 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 22:58:09 +01:00
Anonymous
1ec665ecf7 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.2% (312 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 22:58:08 +01:00
Anonymous
33c0d917fb Translated using Weblate (Russian)
Currently translated at 14.5% (48 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 22:58:08 +01:00
Anonymous
165592b9be Translated using Weblate (Portuguese)
Currently translated at 77.3% (256 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 22:58:08 +01:00
Anonymous
00bd1eee9a Translated using Weblate (French)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 22:58:07 +01:00
Anonymous
3591e46f0f Translated using Weblate (Spanish)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 22:58:07 +01:00
Anonymous
fdbd5506a1 Translated using Weblate (German)
Currently translated at 68.8% (228 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 22:58:06 +01:00
Dan
995ad4b59a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 22:56:44 +01:00
Nonoss117
c598fefde8 Translated using Weblate (French)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 22:56:44 +01:00
gallegonovato
d8baad453f Translated using Weblate (Spanish)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 22:56:44 +01:00
Jason Fischer
a5747c34b8 Merge pull request #866 from Oupsman/synologywidget
Add Synology Diskstation widget & consolidate Synology proxies
2023-02-06 13:56:35 -08:00
Jason Fischer
153dcf398e Merge main 2023-02-06 13:45:56 -08:00
Jason Fischer
f53f975669 Settle on four fields with free size displayed as Available 2023-02-06 13:43:40 -08:00
shamoon
10097ab4fc lint photoprism 2023-02-05 22:14:54 -08:00
Anonymous
95b416c243 Translated using Weblate (Latvian)
Currently translated at 36.3% (119 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 07:13:16 +01:00
Anonymous
3f0dcaff68 Translated using Weblate (Japanese)
Currently translated at 4.5% (15 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 07:13:16 +01:00
Anonymous
2da96f8610 Translated using Weblate (Ukrainian)
Currently translated at 97.8% (320 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 07:13:15 +01:00
Anonymous
2f2efb224f Translated using Weblate (Esperanto)
Currently translated at 31.4% (103 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 07:13:15 +01:00
Anonymous
120566e22a Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 07:13:15 +01:00
Anonymous
a035ff2181 Translated using Weblate (Malay)
Currently translated at 77.3% (253 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 07:13:14 +01:00
Anonymous
7c31c891a5 Translated using Weblate (Danish)
Currently translated at 60.5% (198 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 07:13:14 +01:00
Anonymous
1c4814f7bf Translated using Weblate (Czech)
Currently translated at 68.8% (225 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 07:13:13 +01:00
Anonymous
20a78af1f6 Translated using Weblate (Arabic)
Currently translated at 80.1% (262 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 07:13:13 +01:00
Anonymous
1ef7cb90e8 Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 07:13:13 +01:00
Anonymous
773b8ba7f4 Translated using Weblate (Turkish)
Currently translated at 70.6% (231 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 07:13:12 +01:00
Anonymous
19d329c53f Translated using Weblate (Bulgarian)
Currently translated at 14.0% (46 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 07:13:12 +01:00
Anonymous
14044aa64e Translated using Weblate (Telugu)
Currently translated at 66.3% (217 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 07:13:12 +01:00
Anonymous
73cc4f9b5f Translated using Weblate (Finnish)
Currently translated at 54.4% (178 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 07:13:11 +01:00
Anonymous
ba53edd1b7 Translated using Weblate (Yue)
Currently translated at 36.0% (118 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 07:13:11 +01:00
Anonymous
9f4965141d Translated using Weblate (Portuguese (Brazil))
Currently translated at 52.9% (173 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 07:13:11 +01:00
Anonymous
4af9a611a3 Translated using Weblate (Romanian)
Currently translated at 41.8% (137 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 07:13:10 +01:00
Anonymous
d51fbc5f6d Translated using Weblate (Hebrew)
Currently translated at 30.8% (101 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 07:13:10 +01:00
Anonymous
409e481b8c Translated using Weblate (Hungarian)
Currently translated at 33.0% (108 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 07:13:10 +01:00
Anonymous
cf54837d05 Translated using Weblate (Croatian)
Currently translated at 87.4% (286 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 07:13:09 +01:00
Anonymous
292f7a64d8 Translated using Weblate (Swedish)
Currently translated at 40.3% (132 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 07:13:09 +01:00
Anonymous
4dfb1a1c5e Translated using Weblate (Polish)
Currently translated at 87.1% (285 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 07:13:09 +01:00
Anonymous
098eec96e2 Translated using Weblate (Catalan)
Currently translated at 78.8% (258 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 07:13:08 +01:00
Anonymous
80834b6f30 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.0% (314 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 07:13:08 +01:00
Anonymous
8ae54777f6 Translated using Weblate (Dutch)
Currently translated at 26.9% (88 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 07:13:08 +01:00
Anonymous
ff1129ecd7 Translated using Weblate (Vietnamese)
Currently translated at 13.4% (44 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 07:13:07 +01:00
Anonymous
093c523ae6 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.1% (79 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 07:13:07 +01:00
Anonymous
9f2348ad39 Translated using Weblate (Italian)
Currently translated at 88.0% (288 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 07:13:07 +01:00
Anonymous
7b2fb0279a Translated using Weblate (Chinese (Simplified))
Currently translated at 95.4% (312 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 07:13:06 +01:00
Anonymous
9f67e82817 Translated using Weblate (Russian)
Currently translated at 14.6% (48 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 07:13:06 +01:00
Anonymous
3d6821a463 Translated using Weblate (Portuguese)
Currently translated at 78.2% (256 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 07:13:06 +01:00
Anonymous
43c4effc42 Translated using Weblate (French)
Currently translated at 98.7% (323 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 07:13:05 +01:00
Anonymous
1830b7f277 Translated using Weblate (Spanish)
Currently translated at 97.8% (320 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 07:13:05 +01:00
Anonymous
bc2492c773 Translated using Weblate (German)
Currently translated at 69.7% (228 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 07:13:05 +01:00
Nonoss117
3bb18a746b Translated using Weblate (French)
Currently translated at 100.0% (323 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 07:12:38 +01:00
shamoon
baf40600dc Merge pull request #940 from geckoflume/photoprism
Feature: PhotoPrism widget
2023-02-05 22:12:34 -08:00
shamoon
a226f9de12 remove folders, unused vars 2023-02-05 22:11:22 -08:00
geckoflume
551f521edd Add PhotoPrism widget 2023-02-05 22:11:22 -08:00
Anonymous
b96045eb8c Translated using Weblate (Latvian)
Currently translated at 36.8% (119 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 06:37:57 +01:00
Anonymous
be5f1dd8e1 Translated using Weblate (Japanese)
Currently translated at 4.6% (15 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 06:37:57 +01:00
Anonymous
5aa88fcf06 Translated using Weblate (Ukrainian)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 06:37:57 +01:00
Anonymous
876ddc8302 Translated using Weblate (Esperanto)
Currently translated at 31.8% (103 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 06:37:56 +01:00
Anonymous
eaada4a406 Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 06:37:56 +01:00
Anonymous
91017fe71c Translated using Weblate (Malay)
Currently translated at 78.3% (253 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 06:37:55 +01:00
Anonymous
6987f96d1d Translated using Weblate (Danish)
Currently translated at 61.3% (198 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 06:37:55 +01:00
Anonymous
dec63583c8 Translated using Weblate (Czech)
Currently translated at 69.6% (225 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 06:37:55 +01:00
Anonymous
9477dd1f3c Translated using Weblate (Arabic)
Currently translated at 81.1% (262 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 06:37:54 +01:00
Anonymous
b953c1089a Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 06:37:54 +01:00
Anonymous
2acceff22e Translated using Weblate (Turkish)
Currently translated at 71.5% (231 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 06:37:54 +01:00
Anonymous
701b97c1f8 Translated using Weblate (Bulgarian)
Currently translated at 14.2% (46 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 06:37:53 +01:00
Anonymous
5e917822c9 Translated using Weblate (Telugu)
Currently translated at 67.1% (217 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 06:37:53 +01:00
Anonymous
4b9f3c1e15 Translated using Weblate (Finnish)
Currently translated at 55.1% (178 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 06:37:53 +01:00
Anonymous
9314ac4760 Translated using Weblate (Yue)
Currently translated at 36.5% (118 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 06:37:52 +01:00
Anonymous
5dd7094815 Translated using Weblate (Portuguese (Brazil))
Currently translated at 53.5% (173 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 06:37:52 +01:00
Anonymous
ff385b462a Translated using Weblate (Romanian)
Currently translated at 42.4% (137 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 06:37:52 +01:00
Anonymous
5addfc6ea8 Translated using Weblate (Hebrew)
Currently translated at 31.2% (101 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 06:37:51 +01:00
Anonymous
397a340c47 Translated using Weblate (Hungarian)
Currently translated at 33.4% (108 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 06:37:51 +01:00
Anonymous
0b75d07a2b Translated using Weblate (Croatian)
Currently translated at 88.5% (286 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 06:37:51 +01:00
Anonymous
6f434bbedd Translated using Weblate (Swedish)
Currently translated at 40.8% (132 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 06:37:50 +01:00
Anonymous
e91efab940 Translated using Weblate (Polish)
Currently translated at 88.2% (285 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 06:37:50 +01:00
Anonymous
d737c57278 Translated using Weblate (Catalan)
Currently translated at 79.8% (258 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 06:37:50 +01:00
Anonymous
63c1a8e409 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.2% (314 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 06:37:49 +01:00
Anonymous
a15a264912 Translated using Weblate (Dutch)
Currently translated at 27.2% (88 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 06:37:49 +01:00
Anonymous
08b9b52f09 Translated using Weblate (Vietnamese)
Currently translated at 13.6% (44 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 06:37:49 +01:00
Anonymous
9a47a8517c Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.4% (79 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 06:37:48 +01:00
Anonymous
405b00fbd8 Translated using Weblate (Italian)
Currently translated at 89.1% (288 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 06:37:48 +01:00
Anonymous
02becf7dcf Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (312 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 06:37:48 +01:00
Anonymous
490e88a34a Translated using Weblate (Russian)
Currently translated at 14.8% (48 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 06:37:47 +01:00
Anonymous
8f58132da1 Translated using Weblate (Portuguese)
Currently translated at 79.2% (256 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 06:37:47 +01:00
Anonymous
ecddc5e1c8 Translated using Weblate (French)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 06:37:47 +01:00
Anonymous
e297caf516 Translated using Weblate (Spanish)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 06:37:46 +01:00
Anonymous
cbc496c81f Translated using Weblate (German)
Currently translated at 70.5% (228 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 06:37:46 +01:00
ryanxu
ea6c4ab0c2 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.5% (312 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 06:37:22 +01:00
shamoon
46d4b3e19e Merge pull request #935 from KillahB33/Mylar
Mylar widget
2023-02-05 21:37:15 -08:00
Jason Fischer
11ae52df4a Merge main 2023-02-05 00:21:35 -08:00
Bryan
77e02e6729 Merge branch 'main' into Mylar 2023-02-03 20:47:58 -05:00
KillahBee
58e8109856 adding working mylar 2023-02-03 15:51:52 -05:00
Dan
52f15ab834 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 21:49:25 +01:00
Nonoss117
4cdf7317ec Translated using Weblate (French)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 21:49:24 +01:00
gallegonovato
05818b5d1d Translated using Weblate (Spanish)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 21:49:24 +01:00
shamoon
d2a2fd99cc Merge pull request #934 from benphelps/fix-proxmoxbackupserver-label
Fix label for PBS when data not returned yet
2023-02-03 10:23:45 -08:00
shamoon
486b376dca Fix label for PBS when data not returned yet 2023-02-03 10:22:51 -08:00
Anonymous
2fae4acd4a Translated using Weblate (Latvian)
Currently translated at 37.1% (119 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-03 10:25:49 +01:00
Anonymous
2b20e2e17f Translated using Weblate (Japanese)
Currently translated at 4.6% (15 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-03 10:25:48 +01:00
Anonymous
cc0f2ca083 Translated using Weblate (Ukrainian)
Currently translated at 97.1% (311 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 10:25:48 +01:00
Anonymous
263cf6d6b1 Translated using Weblate (Esperanto)
Currently translated at 32.1% (103 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-03 10:25:48 +01:00
Anonymous
72f4506f06 Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-03 10:25:48 +01:00
Anonymous
2183bf623f Translated using Weblate (Malay)
Currently translated at 79.0% (253 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-03 10:25:48 +01:00
Anonymous
17ac3008aa Translated using Weblate (Danish)
Currently translated at 61.8% (198 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-03 10:25:47 +01:00
Anonymous
db07b3e7a1 Translated using Weblate (Czech)
Currently translated at 70.3% (225 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-03 10:25:47 +01:00
Anonymous
1b1b671080 Translated using Weblate (Arabic)
Currently translated at 81.8% (262 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-03 10:25:47 +01:00
Anonymous
ca295e0850 Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-03 10:25:47 +01:00
Anonymous
ec3fd692a8 Translated using Weblate (Turkish)
Currently translated at 72.1% (231 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-03 10:25:47 +01:00
Anonymous
9deaa48144 Translated using Weblate (Bulgarian)
Currently translated at 14.3% (46 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-03 10:25:46 +01:00
Anonymous
c725f9af38 Translated using Weblate (Telugu)
Currently translated at 67.8% (217 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-03 10:25:46 +01:00
Anonymous
4d3864c2ec Translated using Weblate (Finnish)
Currently translated at 55.6% (178 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-03 10:25:46 +01:00
Anonymous
8d69ab33aa Translated using Weblate (Yue)
Currently translated at 36.8% (118 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-03 10:25:46 +01:00
Anonymous
fdc975d6df Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.0% (173 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-03 10:25:45 +01:00
Anonymous
d4b7de9d0d Translated using Weblate (Romanian)
Currently translated at 42.8% (137 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-03 10:25:45 +01:00
Anonymous
4daa33ea63 Translated using Weblate (Hebrew)
Currently translated at 31.5% (101 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-03 10:25:45 +01:00
Anonymous
10adefe2b4 Translated using Weblate (Hungarian)
Currently translated at 33.7% (108 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-03 10:25:45 +01:00
Anonymous
4198fcf6b6 Translated using Weblate (Croatian)
Currently translated at 89.3% (286 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-03 10:25:44 +01:00
Anonymous
9466b652b9 Translated using Weblate (Swedish)
Currently translated at 41.2% (132 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-03 10:25:44 +01:00
Anonymous
f4a1700dc5 Translated using Weblate (Polish)
Currently translated at 89.0% (285 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-03 10:25:44 +01:00
Anonymous
c1552228bf Translated using Weblate (Catalan)
Currently translated at 80.6% (258 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-03 10:25:44 +01:00
Anonymous
1106107094 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.1% (314 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 10:25:43 +01:00
Anonymous
b5e218bb1d Translated using Weblate (Dutch)
Currently translated at 27.5% (88 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-03 10:25:43 +01:00
Anonymous
d015ae1089 Translated using Weblate (Vietnamese)
Currently translated at 13.7% (44 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-03 10:25:43 +01:00
Anonymous
0eb7c77892 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.6% (79 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-03 10:25:43 +01:00
Anonymous
a3b2321837 Translated using Weblate (Italian)
Currently translated at 90.0% (288 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-03 10:25:43 +01:00
Anonymous
f9f9f68c71 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.1% (311 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-03 10:25:42 +01:00
Anonymous
2e728aa207 Translated using Weblate (Russian)
Currently translated at 15.0% (48 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-03 10:25:42 +01:00
Anonymous
f71f15bbf4 Translated using Weblate (Portuguese)
Currently translated at 80.0% (256 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-03 10:25:42 +01:00
Anonymous
8037e78725 Translated using Weblate (French)
Currently translated at 99.6% (319 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 10:25:42 +01:00
Anonymous
3878dd57a3 Translated using Weblate (Spanish)
Currently translated at 98.7% (316 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 10:25:42 +01:00
Anonymous
1411ab99a0 Translated using Weblate (German)
Currently translated at 71.2% (228 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-03 10:25:41 +01:00
Chun Chi Hsieh
5f92a3084c Translated using Weblate (Chinese (Traditional))
Currently translated at 98.4% (314 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 10:24:55 +01:00
Nonoss117
a4ede7f8d7 Translated using Weblate (French)
Currently translated at 100.0% (319 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 10:24:55 +01:00
shamoon
f50f5c130e Merge pull request #931 from benphelps/unifi-improvements
Unifi improvements
2023-02-03 01:24:46 -08:00
shamoon
17ebdd8226 Unifi widgets support sites other than default 2023-02-03 01:19:42 -08:00
shamoon
c2983197a0 Unifi widgets show warning with no data 2023-02-03 01:19:42 -08:00
Anonymous
e311866969 Translated using Weblate (Latvian)
Currently translated at 37.3% (119 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-03 04:49:19 +01:00
Anonymous
879da993b8 Translated using Weblate (Japanese)
Currently translated at 4.7% (15 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-03 04:49:19 +01:00
Anonymous
204e4ebac0 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (311 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 04:49:19 +01:00
Anonymous
ff567bd543 Translated using Weblate (Esperanto)
Currently translated at 32.2% (103 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-03 04:49:18 +01:00
Anonymous
b75d34d8c7 Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-03 04:49:18 +01:00
Anonymous
3a6be33c98 Translated using Weblate (Malay)
Currently translated at 79.3% (253 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-03 04:49:18 +01:00
Anonymous
4c69d65e57 Translated using Weblate (Danish)
Currently translated at 62.0% (198 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-03 04:49:18 +01:00
Anonymous
6678614e9c Translated using Weblate (Czech)
Currently translated at 70.5% (225 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-03 04:49:17 +01:00
Anonymous
8971dc3169 Translated using Weblate (Arabic)
Currently translated at 82.1% (262 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-03 04:49:17 +01:00
Anonymous
c87618a9bb Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-03 04:49:17 +01:00
Anonymous
e84a3fa7dc Translated using Weblate (Turkish)
Currently translated at 72.4% (231 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-03 04:49:17 +01:00
Anonymous
4fc5a11a88 Translated using Weblate (Bulgarian)
Currently translated at 14.4% (46 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-03 04:49:16 +01:00
Anonymous
9a894b49d1 Translated using Weblate (Telugu)
Currently translated at 68.0% (217 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-03 04:49:16 +01:00
Anonymous
a778b5daed Translated using Weblate (Finnish)
Currently translated at 55.7% (178 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-03 04:49:16 +01:00
Anonymous
35e71a7ffd Translated using Weblate (Yue)
Currently translated at 36.9% (118 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-03 04:49:16 +01:00
Anonymous
2312ca86ef Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.2% (173 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-03 04:49:15 +01:00
Anonymous
aabe51ab7e Translated using Weblate (Romanian)
Currently translated at 42.9% (137 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-03 04:49:15 +01:00
Anonymous
0bdc22a4ff Translated using Weblate (Hebrew)
Currently translated at 31.6% (101 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-03 04:49:15 +01:00
Anonymous
0e285a3d89 Translated using Weblate (Hungarian)
Currently translated at 33.8% (108 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-03 04:49:15 +01:00
Anonymous
5c03482924 Translated using Weblate (Croatian)
Currently translated at 89.6% (286 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-03 04:49:14 +01:00
Anonymous
4b340c0167 Translated using Weblate (Swedish)
Currently translated at 41.3% (132 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-03 04:49:14 +01:00
Anonymous
459d3473fc Translated using Weblate (Polish)
Currently translated at 89.3% (285 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-03 04:49:14 +01:00
Anonymous
e3fe95c2c2 Translated using Weblate (Catalan)
Currently translated at 80.8% (258 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-03 04:49:14 +01:00
Anonymous
2182412548 Translated using Weblate (Chinese (Traditional))
Currently translated at 90.2% (288 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 04:49:13 +01:00
Anonymous
1b3e6fc289 Translated using Weblate (Dutch)
Currently translated at 27.5% (88 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-03 04:49:13 +01:00
Anonymous
5989e1dc52 Translated using Weblate (Vietnamese)
Currently translated at 13.7% (44 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-03 04:49:13 +01:00
Anonymous
4afd53f685 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.7% (79 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-03 04:49:13 +01:00
Anonymous
05ab215fd7 Translated using Weblate (Italian)
Currently translated at 90.2% (288 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-03 04:49:13 +01:00
Anonymous
cb637e25ed Translated using Weblate (Chinese (Simplified))
Currently translated at 97.4% (311 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-03 04:49:12 +01:00
Anonymous
449e393480 Translated using Weblate (Russian)
Currently translated at 15.0% (48 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-03 04:49:12 +01:00
Anonymous
009fe33b9f Translated using Weblate (Portuguese)
Currently translated at 80.2% (256 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-03 04:49:12 +01:00
Anonymous
d543430b06 Translated using Weblate (French)
Currently translated at 99.0% (316 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 04:49:11 +01:00
Anonymous
18afde8478 Translated using Weblate (Spanish)
Currently translated at 99.0% (316 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 04:49:11 +01:00
Anonymous
2d7d082c3d Translated using Weblate (German)
Currently translated at 71.4% (228 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-03 04:49:11 +01:00
Nonoss117
52489c47f2 Translated using Weblate (French)
Currently translated at 100.0% (316 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 04:48:47 +01:00
gallegonovato
5b8972812d Translated using Weblate (Spanish)
Currently translated at 100.0% (316 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 04:48:47 +01:00
Bryan
f851085ebf Komga Widget (#922)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-02-02 19:48:40 -08:00
Anonymous
aee8ba1e1d Translated using Weblate (Latvian)
Currently translated at 37.6% (119 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-02 18:42:13 +01:00
Anonymous
c7a10cf204 Translated using Weblate (Japanese)
Currently translated at 4.7% (15 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-02 18:42:12 +01:00
Anonymous
d5af3140d5 Translated using Weblate (Ukrainian)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-02 18:42:12 +01:00
Anonymous
2c8a120c9e Translated using Weblate (Esperanto)
Currently translated at 32.5% (103 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-02 18:42:12 +01:00
Anonymous
36aed7b6cc Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-02 18:42:12 +01:00
Anonymous
c08272d7ed Translated using Weblate (Malay)
Currently translated at 80.0% (253 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-02 18:42:11 +01:00
Anonymous
c93dd4d524 Translated using Weblate (Danish)
Currently translated at 62.6% (198 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-02 18:42:11 +01:00
Anonymous
551bd5b07e Translated using Weblate (Czech)
Currently translated at 71.2% (225 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-02 18:42:11 +01:00
Anonymous
9144a17b83 Translated using Weblate (Arabic)
Currently translated at 82.9% (262 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-02 18:42:10 +01:00
Anonymous
833cb2b32d Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-02 18:42:10 +01:00
Anonymous
276d14971e Translated using Weblate (Turkish)
Currently translated at 73.1% (231 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-02 18:42:10 +01:00
Anonymous
46163338c4 Translated using Weblate (Bulgarian)
Currently translated at 14.5% (46 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-02 18:42:10 +01:00
Anonymous
ea22bfca90 Translated using Weblate (Telugu)
Currently translated at 68.6% (217 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-02 18:42:10 +01:00
Anonymous
3ab248081e Translated using Weblate (Finnish)
Currently translated at 56.3% (178 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-02 18:42:09 +01:00
Anonymous
d9d277d161 Translated using Weblate (Yue)
Currently translated at 37.3% (118 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-02 18:42:09 +01:00
Anonymous
a4e76d6fb3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.7% (173 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-02 18:42:09 +01:00
Anonymous
f271be8848 Translated using Weblate (Romanian)
Currently translated at 43.3% (137 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-02 18:42:09 +01:00
Anonymous
3cf8cc3be5 Translated using Weblate (Hebrew)
Currently translated at 31.9% (101 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-02 18:42:08 +01:00
Anonymous
0a553a3552 Translated using Weblate (Hungarian)
Currently translated at 34.1% (108 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-02 18:42:08 +01:00
Anonymous
4c69351026 Translated using Weblate (Croatian)
Currently translated at 90.5% (286 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-02 18:42:08 +01:00
Anonymous
eb06e6563f Translated using Weblate (Swedish)
Currently translated at 41.7% (132 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-02 18:42:08 +01:00
Anonymous
9f16ff0e65 Translated using Weblate (Polish)
Currently translated at 90.1% (285 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-02 18:42:07 +01:00
Anonymous
07c0978b6f Translated using Weblate (Catalan)
Currently translated at 81.6% (258 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-02 18:42:07 +01:00
Anonymous
07c84b349b Translated using Weblate (Chinese (Traditional))
Currently translated at 91.1% (288 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-02 18:42:07 +01:00
Anonymous
212ee29cb5 Translated using Weblate (Dutch)
Currently translated at 27.8% (88 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-02 18:42:06 +01:00
Anonymous
b6fb6c9b57 Translated using Weblate (Vietnamese)
Currently translated at 13.9% (44 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-02 18:42:06 +01:00
Anonymous
25ce2437de Translated using Weblate (Norwegian Bokmål)
Currently translated at 25.0% (79 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-02 18:42:06 +01:00
Anonymous
34c6fe15cb Translated using Weblate (Italian)
Currently translated at 91.1% (288 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-02 18:42:06 +01:00
Anonymous
2f3896a55d Translated using Weblate (Chinese (Simplified))
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-02 18:42:06 +01:00
Anonymous
d6182ea641 Translated using Weblate (Russian)
Currently translated at 15.1% (48 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-02 18:42:05 +01:00
Anonymous
01b08e4902 Translated using Weblate (Portuguese)
Currently translated at 81.0% (256 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-02 18:42:05 +01:00
Anonymous
541d5a9f93 Translated using Weblate (French)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-02 18:42:05 +01:00
Anonymous
02dfbc193d Translated using Weblate (Spanish)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-02 18:42:04 +01:00
Anonymous
2ed4ac8b77 Translated using Weblate (German)
Currently translated at 72.1% (228 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-02 18:42:04 +01:00
shamoon
29e0b309e5 Merge pull request #923 from benphelps/fix-065-search
Fix search broken in 0.6.5
2023-02-02 09:41:34 -08:00
shamoon
ce644afe9e Fix search broken in 0.6.5 2023-02-02 09:40:52 -08:00
shamoon
c5ac34a6b5 Merge pull request #916 from benphelps/uptimekuma
Feature: Uptime kuma widget
2023-02-02 01:43:20 -08:00
shamoon
015d7dac52 Rework uptime kuma remove proxy display more info 2023-02-02 01:11:27 -08:00
chain710
c3d15a61c3 Implement uptime-kuma widget 2023-02-02 00:49:56 -08:00
shamoon
f517d704b8 Merge pull request #904 from lholota/feat/custom-css
feat: Custom CSS
2023-02-01 21:15:58 -08:00
hymbz
167f3a4f84 Translated using Weblate (Chinese (Simplified))
Currently translated at 62.3% (194 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-02 05:27:59 +01:00
shamoon
e411e2ac0d Merge pull request #912 from eanmclaughlin/patch-1
Fix: Show container status if health is an empty string
2023-02-01 15:40:00 -08:00
Ean McLaughlin
ff27b1ef51 Show container status if health is an empty string
If data.health is an empty string, ?? will accept it and not use the right side value; instead, we should use || which treats empty string as false and returns the right side value. This will show "RUNNING" in the status box if health is "".
2023-02-01 15:32:10 -07:00
Mateus
41a2e5932f Translated using Weblate (Portuguese (Brazil))
Currently translated at 55.6% (173 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-01 18:01:16 +01:00
Dan
fb1e11b6cb Translated using Weblate (Ukrainian)
Currently translated at 100.0% (311 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-01 04:02:57 +01:00
Nonoss117
dfc787b004 Translated using Weblate (French)
Currently translated at 100.0% (311 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-01 04:02:57 +01:00
gallegonovato
224d5da982 Translated using Weblate (Spanish)
Currently translated at 100.0% (311 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-01 04:02:57 +01:00
shamoon
713344132a Merge pull request #905 from benphelps/dependabot/github_actions/docker/build-push-action-4
Bump docker/build-push-action from 3 to 4
2023-01-31 09:30:22 -08:00
dependabot[bot]
49d2dabe53 Bump docker/build-push-action from 3 to 4
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 16:09:16 +00:00
Lukas Holota
147a165bbc Allow Custom CSS 2023-01-31 07:25:36 -08:00
Benoit
4c17e3fd14 Synology Widget : making it work with multiple widgets connecting to differents versions of DSM 2023-01-31 12:07:23 +01:00
shamoon
046f2986a8 lint support custom search provider in quicklaunch 2023-01-31 00:58:29 -08:00
shamoon
ad299e9c94 Merge pull request #899 from chain710/main
Support multi search providers
2023-01-31 00:41:04 -08:00
shamoon
7a5a3a6608 Compatible with quicklaunch internet search 2023-01-31 00:36:11 -08:00
shamoon
87dbbcb1e0 Refactor multi & single providers & retain provider key only 2023-01-31 00:34:29 -08:00
chain710
3bc0522812 Support multi search providers
- add `providers` option in search widget, value is array of provider name, like: `[google, bing]`
2023-01-31 00:34:29 -08:00
Anonymous
adea9da881 Translated using Weblate (Latvian)
Currently translated at 38.2% (119 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-01-31 09:34:17 +01:00
Anonymous
1ccf0b3c7a Translated using Weblate (Japanese)
Currently translated at 4.8% (15 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-01-31 09:34:17 +01:00
Anonymous
3c44e49b76 Translated using Weblate (Ukrainian)
Currently translated at 96.7% (301 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-01-31 09:34:17 +01:00
Anonymous
711eedfc84 Translated using Weblate (Esperanto)
Currently translated at 33.1% (103 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-01-31 09:34:17 +01:00
Anonymous
348833e682 Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-01-31 09:34:17 +01:00
Anonymous
fe128a976f Translated using Weblate (Malay)
Currently translated at 81.3% (253 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-01-31 09:34:16 +01:00
Anonymous
7ca1839287 Translated using Weblate (Danish)
Currently translated at 63.6% (198 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-01-31 09:34:16 +01:00
Anonymous
7ac98d010c Translated using Weblate (Czech)
Currently translated at 72.3% (225 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-01-31 09:34:16 +01:00
Anonymous
4af1f1bb7d Translated using Weblate (Arabic)
Currently translated at 84.2% (262 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-01-31 09:34:16 +01:00
Anonymous
69a86bc5dc Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-01-31 09:34:15 +01:00
Anonymous
98ca15c962 Translated using Weblate (Turkish)
Currently translated at 74.2% (231 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-01-31 09:34:15 +01:00
Anonymous
4837f26aa1 Translated using Weblate (Bulgarian)
Currently translated at 14.7% (46 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-01-31 09:34:15 +01:00
Anonymous
3c06637dd7 Translated using Weblate (Telugu)
Currently translated at 69.7% (217 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-01-31 09:34:15 +01:00
Anonymous
076c2fbb0d Translated using Weblate (Finnish)
Currently translated at 57.2% (178 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-01-31 09:34:15 +01:00
Anonymous
3034b78772 Translated using Weblate (Yue)
Currently translated at 37.9% (118 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-01-31 09:34:14 +01:00
Anonymous
bddbe890f8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 37.6% (117 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-01-31 09:34:14 +01:00
Anonymous
f7520f2fdf Translated using Weblate (Romanian)
Currently translated at 44.0% (137 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-01-31 09:34:14 +01:00
Anonymous
158dcf0098 Translated using Weblate (Hebrew)
Currently translated at 32.4% (101 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-01-31 09:34:14 +01:00
Anonymous
6e5efc6804 Translated using Weblate (Hungarian)
Currently translated at 34.7% (108 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-01-31 09:34:14 +01:00
Anonymous
329985927b Translated using Weblate (Croatian)
Currently translated at 91.9% (286 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-01-31 09:34:13 +01:00
Anonymous
c648e106db Translated using Weblate (Swedish)
Currently translated at 42.4% (132 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-01-31 09:34:13 +01:00
Anonymous
2356745e15 Translated using Weblate (Polish)
Currently translated at 91.6% (285 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-01-31 09:34:13 +01:00
Anonymous
c52bc57190 Translated using Weblate (Catalan)
Currently translated at 82.9% (258 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-01-31 09:34:13 +01:00
Anonymous
2e43b93eb6 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.6% (288 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-01-31 09:34:13 +01:00
Anonymous
6d779355b3 Translated using Weblate (Dutch)
Currently translated at 28.2% (88 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-01-31 09:34:12 +01:00
Anonymous
10fb1be641 Translated using Weblate (Vietnamese)
Currently translated at 14.1% (44 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-01-31 09:34:12 +01:00
Anonymous
10a4cb8552 Translated using Weblate (Norwegian Bokmål)
Currently translated at 25.4% (79 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-01-31 09:34:12 +01:00
Anonymous
2951574caa Translated using Weblate (Italian)
Currently translated at 92.6% (288 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-01-31 09:34:12 +01:00
Anonymous
4e0a1fdcdd Translated using Weblate (Chinese (Simplified))
Currently translated at 62.3% (194 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-01-31 09:34:12 +01:00
Anonymous
d38948bb6a Translated using Weblate (Russian)
Currently translated at 15.4% (48 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-01-31 09:34:12 +01:00
Anonymous
53743119b8 Translated using Weblate (Portuguese)
Currently translated at 82.3% (256 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-01-31 09:34:11 +01:00
Anonymous
38d1ecc7c0 Translated using Weblate (French)
Currently translated at 99.3% (309 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-01-31 09:34:11 +01:00
Anonymous
b31e64d1dc Translated using Weblate (Spanish)
Currently translated at 98.0% (305 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-01-31 09:34:11 +01:00
Anonymous
8f5dcd5175 Translated using Weblate (German)
Currently translated at 73.3% (228 of 311 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-01-31 09:34:11 +01:00
shamoon
1f5912c232 Support custom search in quicklaunch web search 2023-01-31 00:33:30 -08:00
Anonymous
9b8e01971f Translated using Weblate (Latvian)
Currently translated at 38.3% (119 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-01-31 08:54:40 +01:00
Anonymous
7b12c9e24a Translated using Weblate (Japanese)
Currently translated at 4.8% (15 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-01-31 08:54:40 +01:00
Anonymous
e079587d89 Translated using Weblate (Ukrainian)
Currently translated at 97.0% (301 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-01-31 08:54:40 +01:00
Anonymous
6a0a5ff1f7 Translated using Weblate (Esperanto)
Currently translated at 33.2% (103 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-01-31 08:54:40 +01:00
Anonymous
e3e5c0274b Translated using Weblate (Hindi)
Currently translated at 2.9% (9 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-01-31 08:54:39 +01:00
Anonymous
de70ce620e Translated using Weblate (Malay)
Currently translated at 81.6% (253 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-01-31 08:54:39 +01:00
Anonymous
56d9ec64fd Translated using Weblate (Danish)
Currently translated at 63.8% (198 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-01-31 08:54:39 +01:00
Anonymous
bca597febe Translated using Weblate (Czech)
Currently translated at 72.5% (225 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-01-31 08:54:39 +01:00
Anonymous
579cac73e0 Translated using Weblate (Arabic)
Currently translated at 84.5% (262 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-01-31 08:54:39 +01:00
Anonymous
c29b174dcf Translated using Weblate (Serbian)
Currently translated at 2.9% (9 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-01-31 08:54:38 +01:00
Anonymous
c693a5e690 Translated using Weblate (Turkish)
Currently translated at 74.5% (231 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-01-31 08:54:38 +01:00
Anonymous
e4724690b2 Translated using Weblate (Bulgarian)
Currently translated at 14.8% (46 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-01-31 08:54:38 +01:00
Anonymous
eb679d615b Translated using Weblate (Telugu)
Currently translated at 70.0% (217 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-01-31 08:54:38 +01:00
Anonymous
a9e70b815d Translated using Weblate (Finnish)
Currently translated at 57.4% (178 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-01-31 08:54:38 +01:00
Anonymous
96b00f9207 Translated using Weblate (Yue)
Currently translated at 38.0% (118 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-01-31 08:54:37 +01:00
Anonymous
fb5ebb0ca0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 37.7% (117 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-01-31 08:54:37 +01:00
Anonymous
9550071dab Translated using Weblate (Romanian)
Currently translated at 44.1% (137 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-01-31 08:54:37 +01:00
Anonymous
4581833ed4 Translated using Weblate (Hebrew)
Currently translated at 32.5% (101 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-01-31 08:54:37 +01:00
Anonymous
fe148d4cd0 Translated using Weblate (Hungarian)
Currently translated at 34.8% (108 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-01-31 08:54:37 +01:00
Anonymous
9076de919b Translated using Weblate (Croatian)
Currently translated at 92.2% (286 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-01-31 08:54:36 +01:00
Anonymous
5cf95eb383 Translated using Weblate (Swedish)
Currently translated at 42.5% (132 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-01-31 08:54:36 +01:00
Anonymous
1785206df0 Translated using Weblate (Polish)
Currently translated at 91.9% (285 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-01-31 08:54:36 +01:00
Anonymous
1805b43816 Translated using Weblate (Catalan)
Currently translated at 83.2% (258 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-01-31 08:54:36 +01:00
Anonymous
f406af59bc Translated using Weblate (Chinese (Traditional))
Currently translated at 92.9% (288 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-01-31 08:54:36 +01:00
Anonymous
98b4280a02 Translated using Weblate (Dutch)
Currently translated at 28.3% (88 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-01-31 08:54:35 +01:00
Anonymous
9699481b9a Translated using Weblate (Vietnamese)
Currently translated at 14.1% (44 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-01-31 08:54:35 +01:00
Anonymous
ab436152dd Translated using Weblate (Norwegian Bokmål)
Currently translated at 25.4% (79 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-01-31 08:54:35 +01:00
Anonymous
cacbe6d17b Translated using Weblate (Italian)
Currently translated at 92.9% (288 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-01-31 08:54:35 +01:00
Anonymous
50b435b7e3 Translated using Weblate (Chinese (Simplified))
Currently translated at 62.5% (194 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-01-31 08:54:35 +01:00
Anonymous
4e47b19fb9 Translated using Weblate (Russian)
Currently translated at 15.4% (48 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-01-31 08:54:35 +01:00
Anonymous
66620c5d42 Translated using Weblate (Portuguese)
Currently translated at 82.5% (256 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-01-31 08:54:34 +01:00
Anonymous
f1aa9444c1 Translated using Weblate (French)
Currently translated at 99.6% (309 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-01-31 08:54:34 +01:00
Anonymous
908ee43375 Translated using Weblate (Spanish)
Currently translated at 98.3% (305 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-01-31 08:54:34 +01:00
Anonymous
c2e52f8821 Translated using Weblate (German)
Currently translated at 73.5% (228 of 310 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-01-31 08:54:34 +01:00
achao1m5
3194e5af85 Translated using Weblate (Chinese (Simplified))
Currently translated at 62.7% (194 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-01-31 08:54:09 +01:00
Nonoss117
2fae3243a7 Translated using Weblate (French)
Currently translated at 100.0% (309 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-01-31 08:54:09 +01:00
shamoon
adce18d023 Merge pull request #897 from avdept/add_search_to_quicklaunch
Add internet search to quicklaunch
2023-01-30 23:54:04 -08:00
shamoon
11d03be4de Use configured search provider, allow disable internet search 2023-01-30 23:38:37 -08:00
Alex Sinelnikov
4e17628f97 Added search to quicklaunch 2023-01-30 10:16:45 +02:00
Jason Fischer
893b3f0986 Merge main 2023-01-29 17:07:40 -08:00
Jason Fischer
e62952c2c1 Create reusable Synology proxy
- Migrate DiskStation and DownloadStation to use new proxy
- Move DiskStation proxy UI logic into component
2023-01-29 17:04:36 -08:00
Anonymous
cf072933a1 Translated using Weblate (Latvian)
Currently translated at 38.5% (119 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-01-29 18:53:29 +01:00
Anonymous
f8a57b1a5f Translated using Weblate (Japanese)
Currently translated at 4.8% (15 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-01-29 18:53:28 +01:00
Anonymous
385e935533 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (301 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-01-29 18:53:28 +01:00
Anonymous
eaa7f1bf6d Translated using Weblate (Esperanto)
Currently translated at 33.3% (103 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-01-29 18:53:28 +01:00
Anonymous
fb7ad30dfc Translated using Weblate (Hindi)
Currently translated at 2.9% (9 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-01-29 18:53:28 +01:00
Anonymous
95fcd821be Translated using Weblate (Malay)
Currently translated at 81.8% (253 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-01-29 18:53:27 +01:00
Anonymous
a4e1083d02 Translated using Weblate (Danish)
Currently translated at 64.0% (198 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-01-29 18:53:27 +01:00
Anonymous
7e9ed86441 Translated using Weblate (Czech)
Currently translated at 72.8% (225 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-01-29 18:53:27 +01:00
Anonymous
c76d750e18 Translated using Weblate (Arabic)
Currently translated at 84.7% (262 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-01-29 18:53:27 +01:00
Anonymous
b75617e2f2 Translated using Weblate (Serbian)
Currently translated at 2.9% (9 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-01-29 18:53:27 +01:00
Anonymous
cf7ba59f0f Translated using Weblate (Turkish)
Currently translated at 74.7% (231 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-01-29 18:53:26 +01:00
Anonymous
14377962f2 Translated using Weblate (Bulgarian)
Currently translated at 14.8% (46 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-01-29 18:53:26 +01:00
Anonymous
aab38e1b5f Translated using Weblate (Telugu)
Currently translated at 70.2% (217 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-01-29 18:53:26 +01:00
Anonymous
1449c5a0a3 Translated using Weblate (Finnish)
Currently translated at 57.6% (178 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-01-29 18:53:26 +01:00
Anonymous
72481876f8 Translated using Weblate (Yue)
Currently translated at 38.1% (118 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-01-29 18:53:25 +01:00
Anonymous
7f207692ce Translated using Weblate (Portuguese (Brazil))
Currently translated at 37.8% (117 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-01-29 18:53:25 +01:00
Anonymous
dab31b2feb Translated using Weblate (Romanian)
Currently translated at 44.3% (137 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-01-29 18:53:25 +01:00
Anonymous
13d2213ceb Translated using Weblate (Hebrew)
Currently translated at 32.6% (101 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-01-29 18:53:25 +01:00
Anonymous
2a77bb11c5 Translated using Weblate (Hungarian)
Currently translated at 34.9% (108 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-01-29 18:53:24 +01:00
Anonymous
fcf9c6417b Translated using Weblate (Croatian)
Currently translated at 92.5% (286 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-01-29 18:53:24 +01:00
Anonymous
e08ce475f5 Translated using Weblate (Swedish)
Currently translated at 42.7% (132 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-01-29 18:53:24 +01:00
Anonymous
ba96ab8b50 Translated using Weblate (Polish)
Currently translated at 92.2% (285 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-01-29 18:53:23 +01:00
Anonymous
0743095093 Translated using Weblate (Catalan)
Currently translated at 83.4% (258 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-01-29 18:53:23 +01:00
Anonymous
0bb40d7ad1 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.2% (288 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-01-29 18:53:23 +01:00
Anonymous
33467a5c63 Translated using Weblate (Dutch)
Currently translated at 28.4% (88 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-01-29 18:53:23 +01:00
Anonymous
f88de790a9 Translated using Weblate (Vietnamese)
Currently translated at 14.2% (44 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-01-29 18:53:22 +01:00
Anonymous
85afbcb86c Translated using Weblate (Norwegian Bokmål)
Currently translated at 25.5% (79 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-01-29 18:53:22 +01:00
Anonymous
c502f65d07 Translated using Weblate (Italian)
Currently translated at 93.2% (288 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-01-29 18:53:22 +01:00
Anonymous
6baf028d6d Translated using Weblate (Chinese (Simplified))
Currently translated at 54.3% (168 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-01-29 18:53:21 +01:00
Anonymous
8441838065 Translated using Weblate (Russian)
Currently translated at 15.5% (48 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-01-29 18:53:21 +01:00
Anonymous
901be4ff60 Translated using Weblate (Portuguese)
Currently translated at 82.8% (256 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-01-29 18:53:21 +01:00
Anonymous
c9e8b13c37 Translated using Weblate (French)
Currently translated at 98.7% (305 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-01-29 18:53:21 +01:00
Anonymous
ac1a3e95ca Translated using Weblate (Spanish)
Currently translated at 98.7% (305 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-01-29 18:53:20 +01:00
Anonymous
9978bf6fdc Translated using Weblate (German)
Currently translated at 73.7% (228 of 309 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-01-29 18:53:20 +01:00
Nonoss117
7f5996cb58 Translated using Weblate (French)
Currently translated at 100.0% (305 of 305 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-01-29 18:52:52 +01:00
gallegonovato
8468ffb243 Translated using Weblate (Spanish)
Currently translated at 100.0% (305 of 305 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-01-29 18:52:52 +01:00
shamoon
a7927b4873 Merge pull request #895 from benphelps/fix-864
Don't show QEMU templates in VMs field for Proxmox widget
2023-01-29 09:52:46 -08:00
Jason Fischer
c9439eafa2 Don't show QEMU templates in VMs field for Proxmox widget
fixes #864
2023-01-29 09:44:15 -08:00
Benoit
2b3d4b388a Synology Diskstation widget : initial commit 2023-01-22 11:51:04 +01:00
94 changed files with 4886 additions and 558 deletions

26
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,26 @@
## Proposed change
<!--
Please include a summary of the change. Screenshots and / or videos can also be helpful if appropriate.
New service widgets should include example(s) of relevant relevant API output as well as a PR to the docs for the new widget. See the development guidelines for new widgets: https://gethomepage.dev/en/more/development/#service-widget-guidelines
-->
Closes # (issue)
## Type of change
<!--
What type of change does your PR introduce to Homepage?
-->
- [ ] New service widget
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Other (please explain)
## Checklist:
- [ ] If adding a service widget or a change that requires it, I have added a corresponding PR to the [documentation](https://github.com/benphelps/homepage-docs) here:
- [ ] If applicable, I have checked that all tests pass with e.g. `pnpm lint`.
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.

View File

@@ -88,7 +88,7 @@ jobs:
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}

View File

@@ -29,7 +29,6 @@
"react-dom": "^18.2.0",
"react-i18next": "^11.18.6",
"react-icons": "^4.4.0",
"rutorrent-promise": "^2.0.0",
"shvl": "^3.0.0",
"swr": "^1.3.0",
"tough-cookie": "^4.1.2",

47
pnpm-lock.yaml generated
View File

@@ -33,7 +33,6 @@ specifiers:
react-dom: ^18.2.0
react-i18next: ^11.18.6
react-icons: ^4.4.0
rutorrent-promise: ^2.0.0
shvl: ^3.0.0
swr: ^1.3.0
tailwind-scrollbar: ^2.0.1
@@ -63,7 +62,6 @@ dependencies:
react-dom: 18.2.0_react@18.2.0
react-i18next: 11.18.6_ulhmqqxshznzmtuvahdi5nasbq
react-icons: 4.4.0_react@18.2.0
rutorrent-promise: 2.0.0
shvl: 3.0.0
swr: 1.3.0_react@18.2.0
tough-cookie: 4.1.2
@@ -1582,15 +1580,6 @@ packages:
mime-types: 2.1.35
dev: false
/form-data/3.0.1:
resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
engines: {node: '>= 6'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
dev: false
/fraction.js/4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
@@ -2299,18 +2288,6 @@ packages:
- babel-plugin-macros
dev: false
/node-fetch/2.6.7:
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
dependencies:
whatwg-url: 5.0.0
dev: false
/node-os-utils/1.3.7:
resolution: {integrity: sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==}
dev: false
@@ -2836,15 +2813,6 @@ packages:
queue-microtask: 1.2.3
dev: true
/rutorrent-promise/2.0.0:
resolution: {integrity: sha512-ip6FxYM/BFxRgYSWr+2gZ0ao9LsJ1vJYWyFVnTkSmZrp4Cwa3CFpdxMi/5aZsUf1qve2CY9P4GLvrACx+PZ6yQ==}
dependencies:
form-data: 3.0.1
node-fetch: 2.6.7
transitivePeerDependencies:
- encoding
dev: false
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
@@ -3207,10 +3175,6 @@ packages:
url-parse: 1.5.10
dev: false
/tr46/0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
/triple-beam/1.3.0:
resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==}
dev: false
@@ -3346,17 +3310,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/webidl-conversions/3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: false
/whatwg-url/5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: false
/which-boxed-primitive/1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:

View File

@@ -22,7 +22,8 @@
"total": "المجموع",
"free": "متاح",
"used": "مستخدم",
"load": "الضغط"
"load": "الضغط",
"mem": "MEM"
},
"unifi": {
"users": "المستخدمون",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN مستخدمين",
"up": "يعمل",
"down": "لا يعمل",
"wait": "الرجاء الإنتظار"
"wait": "الرجاء الإنتظار",
"empty_data": "Subsystem status unknown"
},
"wmo": {
"73-day": "ثلج",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "مفضلة",
"service": "خدمة"
"service": "خدمة",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "نظام",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"volumeAvailable": "Available",
"uptime": "Uptime"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -32,7 +32,8 @@
"total": "Общо",
"free": "Свободни",
"used": "Заети",
"load": "Натоварване"
"load": "Натоварване",
"mem": "MEM"
},
"unifi": {
"users": "Потребители",
@@ -48,7 +49,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"docker": {
"offline": "Изключен",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"down": "Sites Down",
"up": "Sites Up",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"down": "Offline",
"grace": "In Grace Period",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -38,7 +38,8 @@
"free": "Lliure",
"used": "Utilitzat",
"load": "Càrrega",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rebut",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositius",
"lan_devices": "Dispositius LAN",
"wlan_devices": "Dispositius WLAN"
"wlan_devices": "Dispositius WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Transmissions actives",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Marcador",
"service": "Servei"
"service": "Servei",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "Sistema",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"m": "m",
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -34,7 +34,8 @@
"total": "Celkem",
"free": "Volné",
"used": "Využité",
"load": "Vytížení"
"load": "Vytížení",
"mem": "MEM"
},
"unifi": {
"users": "Uživatelé",
@@ -50,7 +51,8 @@
"wlan_users": "WLAN Uživatelé",
"up": "BĚŽÍ",
"down": "NEBĚŽÍ",
"wait": "Počkejte prosím"
"wait": "Počkejte prosím",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -291,7 +293,9 @@
},
"quicklaunch": {
"bookmark": "Záložka",
"service": "Služba"
"service": "Služba",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"update_available": "Dostupná aktualizace",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -159,7 +159,8 @@
"total": "Total",
"free": "Fri",
"used": "Brugt",
"load": "Belastning"
"load": "Belastning",
"mem": "MEM"
},
"unifi": {
"users": "Brugere",
@@ -175,7 +176,8 @@
"wlan_users": "WLAN Brugere",
"up": "Oppe",
"down": "NED",
"wait": "Vent venligst"
"wait": "Vent venligst",
"empty_data": "Subsystem status unknown"
},
"docker": {
"cpu": "CPU",
@@ -287,7 +289,9 @@
},
"quicklaunch": {
"bookmark": "Bogmærker",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"watchtower": {
"containers_scanned": "Scannet",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"totalalerts": "Total Alerts",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"cpuload": "Cpu Load",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Frei",
"used": "Gebraucht",
"load": "Last",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Geräte",
"lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN Geräte"
"wlan_devices": "WLAN Geräte",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktive Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Lesezeichen",
"service": "Dienst"
"service": "Dienst",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"grace": "In Grace Period",
"new": "New",
"up": "Online",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

78
public/locales/en/common.json Normal file → Executable file
View File

@@ -32,6 +32,7 @@
},
"resources": {
"cpu": "CPU",
"mem": "MEM",
"total": "Total",
"free": "Free",
"used": "Used",
@@ -51,7 +52,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -282,7 +284,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Sunny",
@@ -350,6 +354,16 @@
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
@@ -432,7 +446,7 @@
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
@@ -445,5 +459,63 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
}
}

View File

@@ -22,7 +22,8 @@
"total": "Totalo",
"free": "Libera",
"used": "Uzata",
"load": "Ŝarĝo"
"load": "Ŝarĝo",
"mem": "MEM"
},
"unifi": {
"users": "Uzantoj",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -235,7 +237,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Servo"
"service": "Servo",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Suna",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"activeusers": "Active Users",
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Libre",
"used": "Usado",
"load": "Carga",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Recibido",
@@ -139,7 +140,7 @@
"transmission": {
"download": "Bajada",
"upload": "Subida",
"leech": "Leech",
"leech": "Sanguijuela",
"seed": "Semillas"
},
"jackett": {
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN"
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Se desconoce el estado del subsistema"
},
"plex": {
"streams": "Transmisiones activas",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Marcadores",
"service": "Servicio"
"service": "Servicio",
"search": "Buscar",
"custom": "Personalizado"
},
"homebridge": {
"available_update": "Sistema",
@@ -416,10 +420,10 @@
"series": "Serie"
},
"octoprint": {
"temp_bed": "Bed temp",
"temp_bed": "temperatura de la plataforma",
"printer_state": "Status",
"temp_tool": "Tool temp",
"job_completion": "Completion"
"temp_tool": "Herramienta de temperatura",
"job_completion": "Finalización"
},
"cloudflared": {
"origin_ip": "IP de origen",
@@ -427,8 +431,82 @@
},
"proxmoxbackupserver": {
"cpu_usage": "CPU",
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"memory_usage": "Memory"
"datastore_usage": "Almacén de datos",
"failed_tasks_24h": "Tareas fallidas en 24h",
"memory_usage": "Memoria"
},
"immich": {
"users": "Usuarios",
"photos": "Fotos",
"videos": "Vídeos",
"storage": "Almacenamiento"
},
"uptimekuma": {
"up": "Páginas web activas",
"down": "Páginas web inactivas",
"uptime": "Disponibilidad",
"incident": "Incidencia",
"m": "m"
},
"komga": {
"libraries": "Librerías",
"series": "Series",
"books": "Libros"
},
"mylar": {
"issues": "Cuestiones",
"series": "Series",
"wanted": "Buscado"
},
"photoprism": {
"albums": "Álbumes",
"photos": "Fotos",
"videos": "Vídeos",
"people": "Personas"
},
"diskstation": {
"days": "Días",
"uptime": "Funcionando",
"volumeAvailable": "Disponible"
},
"fileflows": {
"queue": "Cola",
"processing": "Procesando",
"processed": "Procesado",
"time": "Tiempo"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Fuentes de datos",
"totalalerts": "Alertas totales",
"alertstriggered": "Alertas activadas"
},
"nextcloud": {
"cpuload": "Carga de la CPU",
"memoryusage": "Uso de la memoria",
"freespace": "Espacio libre",
"activeusers": "Usuarios activos"
},
"kopia": {
"status": "Estado",
"size": "Tamaño",
"lastrun": "Última ejecución",
"nextrun": "Siguiente ejecución",
"failed": "Fallido"
},
"unmanic": {
"active_workers": "Trabajadores en activo",
"total_workers": "Total de trabajadores",
"records_total": "Duración de la cola"
},
"healthchecks": {
"new": "New",
"up": "Online",
"down": "Offline",
"grace": "In Grace Period",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -22,7 +22,8 @@
"total": "Yhteensä",
"free": "Vapaana",
"used": "Käytetty",
"load": "Kuorma"
"load": "Kuorma",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"lan_devices": "LAN Devices",
"lan": "LAN",
"wlan": "WLAN",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Libre",
"used": "Utilisé",
"load": "Charge",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MÉM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Équipt.",
"lan_devices": "Équipt. LAN",
"wlan_devices": "Équipt. WLAN"
"wlan_devices": "Équipt. WLAN",
"empty_data": "Statut sous-système inconnu"
},
"plex": {
"streams": "Flux actif",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Signet",
"service": "Service"
"service": "Service",
"search": "Recherche",
"custom": "Personnalisé"
},
"homebridge": {
"available_update": "Système",
@@ -427,8 +431,82 @@
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"failed_tasks_24h": "Tâches échouées 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Mémoire"
},
"immich": {
"users": "Utilisateurs",
"photos": "Photos",
"videos": "Vidéos",
"storage": "Stockage"
},
"uptimekuma": {
"up": "En ligne",
"down": "Hors ligne",
"uptime": "Dispo.",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Librairies",
"series": "Séries",
"books": "Livres"
},
"mylar": {
"series": "Séries",
"issues": "Issues",
"wanted": "Demande"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Vidéos",
"people": "Personnes"
},
"diskstation": {
"days": "Jours",
"uptime": "Fonctionnement",
"volumeAvailable": "Disponible"
},
"fileflows": {
"queue": "Queue",
"processing": "Traitement",
"processed": "Traité",
"time": "Temps"
},
"grafana": {
"dashboards": "Tableau de bord",
"datasources": "Sources données",
"totalalerts": "Total alertes",
"alertstriggered": "Alertes déclenchées"
},
"nextcloud": {
"freespace": "Espace Libre",
"activeusers": "Utilisateurs Actifs",
"cpuload": "Charge Cpu",
"memoryusage": "Utilisation Mémoire"
},
"kopia": {
"status": "Statut",
"size": "Taille",
"lastrun": "Dernière exécution",
"nextrun": "Prochaine exécution",
"failed": "En erreur"
},
"unmanic": {
"active_workers": "En cours",
"total_workers": "Total",
"records_total": "En attente"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -22,7 +22,8 @@
"free": "פנוי",
"used": "בשימוש",
"load": "עומס",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"never": "No pings yet"
}
}

View File

@@ -56,7 +56,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -72,7 +73,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -225,7 +227,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Sunny",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -13,7 +13,8 @@
"free": "Slobodno",
"used": "Korišteno",
"load": "Opterećenje",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"sabnzbd": {
"rate": "Stopa",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Uređaji",
"lan_devices": "LAN uređaji",
"wlan_devices": "WLAN uređaji"
"wlan_devices": "WLAN uređaji",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktivni prijenosi",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Straničnik",
"service": "Usluga"
"service": "Usluga",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "Sustav",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"videos": "Videos",
"albums": "Albums",
"photos": "Photos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"alertstriggered": "Alerts Triggered",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -4,7 +4,8 @@
"free": "Szabad",
"used": "Használt",
"load": "Terhelés",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -52,7 +52,8 @@
"free": "Libero",
"used": "In utilizzo",
"load": "Carico",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"rutorrent": {
"active": "Attivo",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositivi",
"lan_devices": "Dispositivi LAN",
"wlan_devices": "Dispositivi WLAN"
"wlan_devices": "Dispositivi WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Trasmissioni attive",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Segnalibro",
"service": "Servizio"
"service": "Servizio",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "Sistema",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"cpuload": "Cpu Load",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -57,7 +57,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -73,7 +74,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Sunny",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"never": "No pings yet",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping"
}
}

View File

@@ -26,7 +26,8 @@
"total": "Kopā",
"free": "Brīvs",
"used": "Izmantojas",
"load": "Ielādē"
"load": "Ielādē",
"mem": "MEM"
},
"unifi": {
"users": "Lietotāji",
@@ -42,7 +43,8 @@
"wlan_users": "WLAN lietotāji",
"up": "DARBOJAS",
"down": "NEDARBOJAS",
"wait": "Lūdzu, uzgaidiet"
"wait": "Lūdzu, uzgaidiet",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -273,7 +275,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Saulains",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -4,7 +4,8 @@
"total": "Jumlah",
"free": "Bebas",
"used": "Telah diguna",
"load": "Beban"
"load": "Beban",
"mem": "MEM"
},
"unifi": {
"uptime": "Masa Operasi Sistem",
@@ -20,7 +21,8 @@
"wlan_users": "Pengguna WLAN",
"up": "HIDUP",
"down": "MATI",
"wait": "Sila tunggu"
"wait": "Sila tunggu",
"empty_data": "Subsystem status unknown"
},
"lidarr": {
"queued": "Dibaris Gilir",
@@ -62,7 +64,9 @@
},
"quicklaunch": {
"bookmark": "Tandabuku",
"service": "Servis"
"service": "Servis",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"0-day": "Terik",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Ledig",
"used": "Brukt",
"load": "Last inn",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Mottatt",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -13,7 +13,8 @@
"free": "Vrij",
"used": "Gebruikt",
"load": "Laadt",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Apparaten",
"lan_devices": "LAN Apparaten",
"wlan_devices": "WLAN Apparaten"
"wlan_devices": "WLAN Apparaten",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"wanted": "Wanted",
"series": "Series",
"issues": "Issues"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -13,7 +13,8 @@
"load": "Obciążenie",
"total": "Całkowite",
"free": "Wolne",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"emby": {
"no_active": "Brak aktywnych strumieni",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Urządzenia",
"lan_devices": "Urządzenia LAN",
"wlan_devices": "Urządzenia WLAN"
"wlan_devices": "Urządzenia WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktywne strumienie",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Zakładka",
"service": "Usługi"
"service": "Usługi",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"uptime": "Uptime",
"volumeAvailable": "Available",
"days": "Days"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -31,10 +31,10 @@
"missing_type": "Tipo de Widget ausente: {{type}}",
"api_error": "Erro da API",
"status": "Status",
"information": "Information",
"information": "Informação",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"response_data": "Dados de Resposta"
},
"weather": {
"current": "Localização atual",
@@ -50,16 +50,17 @@
"free": "Livre",
"used": "Usado",
"load": "Carregamento",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
"tx": "Tx",
"mem": "Mem",
"rx": "Recebido",
"tx": "Transmitido",
"mem": "Memória",
"cpu": "CPU",
"offline": "Desligado",
"error": "Error",
"unknown": "Unknown"
"error": "Erro",
"unknown": "Desconhecido"
},
"emby": {
"playing": "Reproduzindo",
@@ -99,7 +100,7 @@
"wanted": "Desejado",
"queued": "Na fila",
"movies": "Filmes",
"missing": "Missing"
"missing": "Faltando"
},
"lidarr": {
"wanted": "Desejado",
@@ -129,7 +130,7 @@
"pending": "Pendente",
"approved": "Aprovado",
"available": "Disponível",
"processing": "Processing"
"processing": "Processando"
},
"pihole": {
"queries": "Consultas",
@@ -148,9 +149,9 @@
"ping": "Ping"
},
"traefik": {
"routers": "Rotas",
"routers": "Roteadores",
"services": "Serviços",
"middleware": "Middleware"
"middleware": "Software intermediario"
},
"npm": {
"enabled": "Habilitado",
@@ -164,10 +165,10 @@
},
"prowlarr": {
"enableIndexers": "Indexadores",
"numberOfGrabs": "Grabs",
"numberOfQueries": "Queries",
"numberOfGrabs": "Pegos",
"numberOfQueries": "Consultas",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailQueries": "Fail Queries"
"numberOfFailQueries": "Consultas Falhas"
},
"jackett": {
"configured": "Configurado",
@@ -179,36 +180,37 @@
"domain_count": "Domínios"
},
"authentik": {
"users": "Users",
"users": "Usuários",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"mem": "Memória",
"cpu": "Processador",
"lxc": "LXC",
"vms": "VMs"
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"days": "Days",
"users": "Usuários",
"uptime": "Tempo de Funcionamento",
"days": "Dias",
"wan": "WAN",
"lan_users": "LAN Users",
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait",
"lan_users": "Usuarios locais",
"wlan_users": "Usuarios WLAN",
"up": "LIGADO",
"down": "CÁIDO",
"wait": "Por favor guarde",
"lan": "LAN",
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
"movies": "Movies",
"tv": "TV Shows"
"streams": "Transmissões ativas",
"movies": "Filmes",
"tv": "Séries de TV"
},
"glances": {
"cpu": "CPU",
@@ -222,10 +224,10 @@
"wmo": {
"1-night": "Mainly Clear",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"3-day": "Cloudy",
"3-night": "Cloudy",
"45-day": "Foggy",
"2-night": "Parcialmente nublado",
"3-day": "Nublado",
"3-night": "Nublado",
"45-day": "Névoa",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
@@ -233,9 +235,9 @@
"57-day": "Freezing Drizzle",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail",
"0-day": "Sunny",
"0-day": "Ensolarado",
"53-day": "Drizzle",
"0-night": "Clear",
"0-night": "Limpo",
"1-day": "Mainly Sunny",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -313,8 +317,8 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
"nothing_streaming": "Sem transmissões ativas",
"please_wait": "Por favor aguarde"
},
"pyload": {
"speed": "Speed",
@@ -332,7 +336,7 @@
"hd": "HD"
},
"ping": {
"error": "Error",
"error": "Erro",
"ping": "Ping"
},
"scrutiny": {
@@ -357,14 +361,14 @@
"seed": "Seed"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
"queue": "Fila",
"processed": "Processado",
"errored": "Erro",
"saved": "Salvo"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "Lidos",
"unread": "Não Lidos"
},
"nextdns": {
"wait": "Please Wait",
@@ -375,11 +379,11 @@
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"connectedAp": "Pontos de acesso conectados",
"activeUser": "Dispositivos ativos",
"alerts": "Alertas",
"connectedGateway": "Gateways conectados",
"connectedSwitches": "Interruptores conectados"
},
"downloadstation": {
"download": "Download",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"videos": "Videos",
"albums": "Albums",
"photos": "Photos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Livre",
"used": "Utilizado",
"load": "Carga",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -216,7 +217,8 @@
"wlan": "WLAN",
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN"
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Streams Ativas",
@@ -292,7 +294,9 @@
},
"quicklaunch": {
"bookmark": "Marcador",
"service": "Serviço"
"service": "Serviço",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "Sistema",
@@ -439,5 +443,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"never": "No pings yet",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping"
}
}

View File

@@ -4,7 +4,8 @@
"load": "Sarcină",
"total": "Total",
"free": "Disponibili",
"cpu": "Procesor"
"cpu": "Procesor",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Fluxuri active",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"update_available": "Update Available",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"activeusers": "Active Users",
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Свободно",
"used": "Использовано",
"load": "Загрузка",
"cpu": "Процессор"
"cpu": "Процессор",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Устройства",
"lan_devices": "Устройства подключённые по LAN",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -22,7 +22,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -19,7 +19,8 @@
"total": "Total",
"free": "Ledigt",
"used": "Använt",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktiva strömmar",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -39,7 +39,8 @@
"total": "మొత్తం",
"free": "మిగిలింది",
"used": "ఉపయోగించబడిన",
"load": "లోడ్"
"load": "లోడ్",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "పరికరాలు",
"lan_devices": "LAN పరికరాలు",
"wlan_devices": "WLAN పరికరాలు"
"wlan_devices": "WLAN పరికరాలు",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "యాక్టివ్ స్ట్రీమ్‌లు",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "బుక్మార్క్",
"service": "సేవ"
"service": "సేవ",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "వ్యవస్థ",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"cpuload": "Cpu Load",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -0,0 +1,512 @@
{
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
},
"npm": {
"enabled": "Enabled",
"disabled": "Disabled",
"total": "Total"
},
"coinmarketcap": {
"configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour",
"1day": "1 Day",
"7days": "7 Days",
"30days": "30 Days"
},
"pyload": {
"queue": "Queue",
"total": "Total",
"speed": "Speed",
"active": "Active"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
},
"hdhomerun": {
"channels": "Channels",
"hd": "HD"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
},
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "เมม",
"cpu": "ซีพียู",
"offline": "ออฟไลน์",
"error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"unifi": {
"days": "วัน",
"wan": "WAN",
"lan": "แลน",
"wlan": "WLAN",
"devices": "อุปกรณ์",
"lan_devices": "อุปกรณ์แลน",
"wlan_devices": "WLAN Devices",
"lan_users": "LAN Users",
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait",
"empty_data": "Subsystem status unknown",
"users": "ผู้ใช้",
"uptime": "เวลาทำงานของระบบ"
},
"widget": {
"missing_type": "Missing Widget Type: {{type}}",
"api_error": "API มีข้อผิดพลาด",
"information": "ข้อมูล",
"status": "สถานะ",
"url": "URL",
"raw_error": "ข้อมูลต้นฉบับผิดพลาด",
"response_data": "ข้อมูลการตอบกลับ"
},
"weather": {
"current": "สถานที่ปัจจุบัน",
"allow": "คลิกเพื่ออนุญาต",
"updating": "กำลังปรับปรุง",
"wait": "โปรดรอ"
},
"search": {
"placeholder": "ค้นหา…"
},
"resources": {
"cpu": "ซีพียู",
"mem": "เมม",
"total": "ทั้งหมด",
"free": "ฟรี",
"used": "ใช้แล้ว",
"load": "โหลด"
},
"ping": {
"error": "ข้อผิดพลาด",
"ping": "ปิง"
},
"emby": {
"playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่"
},
"deluge": {
"download": "ดาวน์โหลด",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"flood": {
"download": "ดาวน์โหลด",
"upload": "อัพโหลด",
"leech": "Leech",
"seed": "Seed"
},
"changedetectionio": {
"totalObserved": "Total Observed",
"diffsDetected": "Diffs Detected"
},
"tautulli": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
},
"nzbget": {
"rate": "Rate",
"remaining": "Remaining",
"downloaded": "Downloaded"
},
"plex": {
"streams": "Active Streams",
"movies": "Movies",
"tv": "TV Shows"
},
"sabnzbd": {
"rate": "Rate",
"queue": "Queue",
"timeleft": "Time Left"
},
"rutorrent": {
"active": "Active",
"upload": "Upload",
"download": "Download"
},
"transmission": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"qbittorrent": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"sonarr": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"readarr": {
"queued": "Queued",
"books": "Books",
"wanted": "Wanted"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
},
"traefik": {
"routers": "Routers",
"services": "Services",
"middleware": "Middleware"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
},
"radarr": {
"wanted": "Wanted",
"missing": "Missing",
"queued": "Queued",
"movies": "Movies"
},
"lidarr": {
"wanted": "Wanted",
"queued": "Queued",
"albums": "Albums"
},
"ombi": {
"pending": "Pending",
"approved": "Approved",
"available": "Available"
},
"jellyseerr": {
"pending": "Pending",
"approved": "Approved",
"available": "Available"
},
"overseerr": {
"pending": "Pending",
"processing": "Processing",
"approved": "Approved",
"available": "Available"
},
"pihole": {
"queries": "Queries",
"blocked": "Blocked",
"gravity": "Gravity"
},
"adguard": {
"queries": "Queries",
"blocked": "Blocked",
"filtered": "Filtered",
"latency": "Latency"
},
"speedtest": {
"upload": "Upload",
"download": "Download",
"ping": "Ping"
},
"portainer": {
"running": "Running",
"stopped": "Stopped",
"total": "Total"
},
"gotify": {
"apps": "Applications",
"clients": "Clients",
"messages": "Messages"
},
"prowlarr": {
"enableIndexers": "Indexers",
"numberOfGrabs": "Grabs",
"numberOfQueries": "Queries",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailQueries": "Fail Queries"
},
"jackett": {
"configured": "Configured",
"errored": "Errored"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Connections",
"dataRelayed": "Relayed",
"transferRate": "Rate"
},
"mastodon": {
"user_count": "Users",
"status_count": "Posts",
"domain_count": "Domains"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
},
"authentik": {
"users": "Users",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"wmo": {
"67-day": "Freezing Rain",
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"3-day": "Cloudy",
"3-night": "Cloudy",
"45-day": "Foggy",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-day": "Drizzle",
"53-night": "Drizzle",
"55-day": "Heavy Drizzle",
"55-night": "Heavy Drizzle",
"56-day": "Light Freezing Drizzle",
"56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle",
"61-day": "Light Rain",
"61-night": "Light Rain",
"63-day": "Rain",
"63-night": "Rain",
"67-night": "Freezing Rain",
"75-night": "Heavy Snow",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
"80-night": "Light Showers",
"81-day": "Showers",
"81-night": "Showers",
"82-day": "Heavy Showers",
"82-night": "Heavy Showers",
"85-day": "Snow Showers",
"85-night": "Snow Showers",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"95-day": "Thunderstorm",
"95-night": "Thunderstorm",
"96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail"
},
"homebridge": {
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
"containers_failed": "Failed"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"filters": "Filters",
"indexers": "Indexers"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"alerts": "Alerts",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "เว็บไซต์ ล่ม",
"uptime": "เวลาทำงาน",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -3,10 +3,10 @@
"missing_type": "Kayıp Araç Türü: {{type}}",
"api_error": "API Hatası",
"status": "Durum",
"information": "Information",
"information": "Bilgi",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"raw_error": "Ham Hata",
"response_data": "Yanıt Verisi"
},
"weather": {
"current": "Mevcut Konum",
@@ -18,11 +18,12 @@
"placeholder": "Ara…"
},
"resources": {
"cpu": "İşlemci",
"cpu": "CPU",
"total": "Toplam",
"free": "Boşta",
"used": "Kullanımda",
"load": "Yük"
"load": "Yük",
"mem": "MEM"
},
"unifi": {
"users": "Kullanıcılar",
@@ -38,7 +39,8 @@
"wlan": "WLAN",
"devices": "Aygıtlar",
"lan_devices": "LAN Aygıtları",
"wlan_devices": "WLAN Aygıtları"
"wlan_devices": "WLAN Aygıtları",
"empty_data": "Alt sistem durumu bilinmiyor"
},
"docker": {
"rx": "Gelen Veri",
@@ -46,8 +48,8 @@
"mem": "Bellek",
"cpu": "İşlemci",
"offline": "Çevrimdışı",
"error": "Error",
"unknown": "Unknown"
"error": "Hata",
"unknown": "Bilinmiyor"
},
"emby": {
"playing": "Oynatılıyor",
@@ -89,7 +91,7 @@
},
"qbittorrent": {
"download": "İndirme",
"upload": "Yükleme",
"upload": "Yükle",
"leech": "İsteyen",
"seed": "Sunan"
},
@@ -132,7 +134,7 @@
"pending": "Bekliyor",
"approved": "Onaylı",
"available": "Kullanılabilir",
"processing": "Processing"
"processing": "İşleniyor"
},
"pihole": {
"queries": "Sorgular",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Yer İmi",
"service": "Hizmet"
"service": "Hizmet",
"search": "Ara",
"custom": "Custom"
},
"homebridge": {
"available_update": "Sistem",
@@ -323,112 +327,186 @@
"total": "Toplam"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "ık IP",
"region": "Bölge",
"country": "Ülke"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Kanallar",
"hd": "HD"
},
"ping": {
"error": "Error",
"error": "Hata",
"ping": "Ping"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "Geçti",
"failed": "Başarısız",
"unknown": "Bilinmeyen"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
"inbox": "Gelen Kutusu",
"total": "Toplam"
},
"deluge": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"flood": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
"queue": "Sıra",
"processed": "İşlendi",
"errored": "Hatalı",
"saved": "Kaydedildi"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "Oku",
"unread": "Okunmamış"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Lütfen Bekle",
"no_devices": "Cihaz Verisi Alınamadı"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"connectedAp": "Bağlı AP'ler",
"activeUser": "Aktif cihazlar",
"alerts": "Alarmlar",
"connectedGateway": "Bağlı ağ geçitleri",
"connectedSwitches": "Bağlı anahtarlar"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"cpuLoad": "CPU Yükü",
"memoryUsed": "Bellek Kullanımı",
"uptime": "Çalışma Süresi",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "Tüm Akışlar",
"streams_active": "Aktif Akışlar",
"streams_xepg": "XEPG Kanalları"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
"cpu": "CPU Yükü",
"memory": "Aktif Bellek",
"wanUpload": "WAN Yükleme",
"wanDownload": "WAN İndirme"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
"printer_state": "Yazıcı Durumu",
"print_status": "Yazıcı Durumu",
"print_progress": "İlerleme",
"layers": "Katmanlar"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"queued": "Kuyrukta",
"series": "Seri"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"printer_state": "Durum",
"temp_tool": "Araç sıcaklığı",
"temp_bed": "Yatak sıcaklığı",
"job_completion": "Completion"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"status": "Durum"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Bellek"
},
"immich": {
"users": "Kullanıcılar",
"photos": "Fotoğraflar",
"videos": "Videolar",
"storage": "Depo"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Çalışma Süresi",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Kütüphane",
"series": "Series",
"books": "Kitaplar"
},
"mylar": {
"series": "Seriler",
"issues": "Sorunlar",
"wanted": "Aranan"
},
"photoprism": {
"albums": "Albümler",
"photos": "Fotoğraflar",
"videos": "Videolar",
"people": "İnsan"
},
"diskstation": {
"days": "Gün",
"uptime": "Çalışma Süresi",
"volumeAvailable": "Mevcut"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -127,7 +127,8 @@
"total": "Всього",
"free": "Вільно",
"used": "Використано",
"load": "Навантаження"
"load": "Навантаження",
"mem": "Пам'ять"
},
"unifi": {
"users": "Користувачі",
@@ -143,7 +144,8 @@
"wlan_users": "WLAN користувачі",
"up": "Відправка",
"down": "Завантаження",
"wait": "Будь ласка, зачекайте"
"wait": "Будь ласка, зачекайте",
"empty_data": "Статус підсистеми невідомий"
},
"docker": {
"rx": "RX",
@@ -341,7 +343,9 @@
},
"quicklaunch": {
"bookmark": "Закладка",
"service": "Сервіс"
"service": "Сервіс",
"search": "Пошук",
"custom": "Користувацький"
},
"homebridge": {
"available_update": "Система",
@@ -426,9 +430,83 @@
"status": "Стан"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "Сховище даних",
"failed_tasks_24h": "Невиконані завдання 24 години",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Пам'ять"
},
"immich": {
"users": "Користувачі",
"photos": "Фотографії",
"videos": "Відео",
"storage": "Сховище"
},
"uptimekuma": {
"up": "Активні сайти",
"down": "Неактивні сайти",
"uptime": "Час роботи",
"incident": "Інцидент",
"m": "хв"
},
"komga": {
"libraries": "Бібліотеки",
"series": "Серії",
"books": "Книжки"
},
"mylar": {
"series": "Серії",
"issues": "Питання",
"wanted": "Розшукується"
},
"photoprism": {
"albums": "Альбоми",
"photos": "Фото",
"videos": "Відео",
"people": "Люди"
},
"diskstation": {
"days": "Днів",
"uptime": "Час роботи",
"volumeAvailable": "Доступно"
},
"fileflows": {
"queue": "Черга",
"processing": "Обробка",
"processed": "Оброблено",
"time": "Час"
},
"grafana": {
"dashboards": "Інформаційні панелі",
"datasources": "Джерела даних",
"totalalerts": "Всього сповіщень",
"alertstriggered": "Спрацювали сповіщення"
},
"nextcloud": {
"cpuload": "Навантаження Cpu",
"memoryusage": "Використання пам'яті",
"freespace": "Вільного місця",
"activeusers": "Активні користувачі"
},
"kopia": {
"status": "Статус",
"size": "Розмір",
"lastrun": "Останній запуск",
"nextrun": "Наступний запуск",
"failed": "Помилка"
},
"unmanic": {
"active_workers": "Активні працівники",
"total_workers": "Всього робітників",
"records_total": "Довжина черги"
},
"healthchecks": {
"new": "New",
"up": "Online",
"down": "Offline",
"grace": "In Grace Period",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -16,7 +16,8 @@
"free": "Dư",
"used": "Đã dùng",
"load": "Load",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"photos": "Photos",
"videos": "Videos",
"people": "People",
"albums": "Albums"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -40,7 +40,8 @@
"free": "剩餘",
"used": "用咗",
"load": "負荷",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "接收",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service"
"service": "Service",
"search": "Search",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -430,5 +434,79 @@
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processed": "Processed",
"time": "Time",
"processing": "Processing"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed",
"status": "Status",
"size": "Size"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -3,20 +3,21 @@
"missing_type": "缺少小部件类型:{{type}}",
"api_error": "API错误",
"status": "状态",
"information": "Information",
"information": "信息",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"raw_error": "原始错误",
"response_data": "返回数据"
},
"search": {
"placeholder": "搜索…"
},
"resources": {
"total": "",
"total": "总计",
"free": "空闲",
"used": "已用",
"load": "负载",
"cpu": "CPU"
"cpu": "处理器",
"mem": "内存"
},
"docker": {
"rx": "接收",
@@ -24,8 +25,8 @@
"mem": "内存",
"cpu": "处理器",
"offline": "离线",
"error": "Error",
"unknown": "Unknown"
"error": "错误",
"unknown": "未知"
},
"emby": {
"playing": "播放中",
@@ -186,8 +187,8 @@
"proxmox": {
"mem": "内存",
"cpu": "处理器",
"lxc": "LXC",
"vms": "VMs"
"lxc": "容器",
"vms": "虚拟机"
},
"unifi": {
"users": "用户",
@@ -203,7 +204,8 @@
"wlan": "无线局域网",
"devices": "设备",
"lan_devices": "局域网设备",
"wlan_devices": "无线局域网设备"
"wlan_devices": "无线局域网设备",
"empty_data": "子系统状态未知"
},
"plex": {
"streams": "活动流",
@@ -228,8 +230,8 @@
"45-day": "有雾",
"48-day": "有雾",
"51-day": "小雨",
"73-night": "Snow",
"75-day": "Heavy Snow",
"73-night": "中雪",
"75-day": "大雪",
"1-night": "大部晴朗",
"2-day": "多云",
"2-night": "多云",
@@ -254,10 +256,10 @@
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"75-night": "Heavy Snow",
"71-day": "小雪",
"71-night": "小雪",
"73-day": "中雪",
"75-night": "大雪",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "书签",
"service": "服务"
"service": "服务",
"search": "搜索",
"custom": "Custom"
},
"homebridge": {
"available_update": "System",
@@ -307,8 +311,8 @@
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"load": "系统负载",
"uptime": "运行时间",
"alerts": "警报",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
@@ -332,7 +336,7 @@
"hd": "HD"
},
"ping": {
"error": "Error",
"error": "错误",
"ping": "Ping"
},
"scrutiny": {
@@ -345,22 +349,22 @@
"total": "Total"
},
"deluge": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
"download": "下载",
"upload": "上传",
"leech": "下载中",
"seed": "做种"
},
"flood": {
"leech": "Leech",
"download": "Download",
"upload": "Upload",
"seed": "Seed"
"leech": "下载中",
"download": "下载",
"upload": "上传",
"seed": "做种"
},
"tdarr": {
"saved": "Saved",
"queue": "Queue",
"queue": "队列",
"processed": "Processed",
"errored": "Errored"
"errored": "出错"
},
"miniflux": {
"read": "Read",
@@ -376,22 +380,22 @@
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"activeUser": "活跃设备",
"alerts": "警报",
"connectedGateway": "已连接网关",
"connectedSwitches": "已连接开关"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
"download": "下载",
"upload": "上传",
"leech": "下载中",
"seed": "做种"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
"cpuLoad": "处理器负载",
"memoryUsed": "内存使用",
"uptime": "运行时间",
"numberOfLeases": "已连接"
},
"xteve": {
"streams_all": "All Streams",
@@ -399,10 +403,10 @@
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
"cpu": "处理器负载",
"memory": "空闲内存",
"wanUpload": "WAN上传",
"wanDownload": "WAN下载"
},
"moonraker": {
"printer_state": "Printer State",
@@ -426,9 +430,83 @@
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"datastore_usage": "数据存储",
"failed_tasks_24h": "24h失败任务",
"cpu_usage": "处理器",
"memory_usage": "内存"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "在线网站",
"down": "离线网站",
"uptime": "运行时间",
"incident": "严重事件",
"m": "m"
},
"komga": {
"libraries": "书库",
"series": "系列",
"books": "书刊"
},
"mylar": {
"series": "系列",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "相册",
"photos": "照片",
"videos": "视频",
"people": "人物"
},
"diskstation": {
"uptime": "运行时间",
"volumeAvailable": "剩余存储",
"days": "天"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"totalalerts": "Total Alerts",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -4,9 +4,9 @@
"api_error": "API錯誤",
"status": "狀態",
"information": "資訊",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"url": "網址",
"raw_error": "原始錯誤",
"response_data": "回復數據"
},
"weather": {
"current": "目前位置",
@@ -36,9 +36,9 @@
"no_active": "無播放活動"
},
"jellyseerr": {
"pending": "待",
"approved": "已接受",
"available": "可用的"
"pending": "待下載",
"approved": "已核准",
"available": "可觀看"
},
"search": {
"placeholder": "搜尋…"
@@ -48,7 +48,8 @@
"free": "剩餘",
"used": "已使用",
"load": "負載",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"nzbget": {
"rate": "速率",
@@ -82,14 +83,14 @@
"books": "書籍"
},
"ombi": {
"pending": "待",
"approved": "已接受",
"available": "可用的"
"pending": "待下載",
"approved": "已核准",
"available": "可觀看"
},
"overseerr": {
"pending": "待",
"approved": "已接受",
"available": "可用的",
"pending": "待下載",
"approved": "已核准",
"available": "可觀看",
"processing": "處理中"
},
"pihole": {
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "設備",
"lan_devices": "LAN設備",
"wlan_devices": "WLAN設備"
"wlan_devices": "WLAN設備",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "正在播放",
@@ -279,7 +281,9 @@
},
"quicklaunch": {
"bookmark": "書籤",
"service": "服務"
"service": "服務",
"search": "搜尋",
"custom": "自訂"
},
"homebridge": {
"available_update": "系統",
@@ -290,7 +294,7 @@
"child_bridges_status": "{{ok}}/{{total}}"
},
"autobrr": {
"approvedPushes": "接受",
"approvedPushes": "已核准",
"rejectedPushes": "拒絕",
"filters": "篩選器",
"indexers": "索引器"
@@ -422,13 +426,87 @@
"job_completion": "完成度"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"origin_ip": "源頭IP",
"status": "狀態"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "數據存儲",
"failed_tasks_24h": "24小時內失敗任務",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "記憶體"
},
"immich": {
"users": "使用者",
"photos": "照片",
"videos": "影片",
"storage": "儲存空間"
},
"uptimekuma": {
"up": "在線網站",
"down": "離線網站",
"uptime": "在線時間",
"incident": "事件",
"m": "m"
},
"komga": {
"libraries": "文庫",
"series": "叢刊",
"books": "書刊"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
}
}

View File

@@ -6,7 +6,7 @@ import ResolvedIcon from "./resolvedicon";
import { SettingsContext } from "utils/contexts/settings";
export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchDescriptions}) {
export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchDescriptions, searchProvider}) {
const { t } = useTranslation();
const { settings } = useContext(SettingsContext);
@@ -34,7 +34,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
function handleSearchKeyDown(event) {
if (!isOpen) return;
if (event.key === "Escape") {
closeAndReset();
event.preventDefault();
@@ -50,6 +50,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
}
}
function handleItemHover(event) {
setCurrentItemIndex(parseInt(event.target?.dataset?.index, 10));
}
@@ -75,6 +76,15 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
if (searchDescriptions) {
newResults = newResults.sort((a, b) => b.priority - a.priority);
}
if (searchProvider) {
newResults.push(
{
href: searchProvider.url + encodeURIComponent(searchString),
name: `${searchProvider.name ?? t("quicklaunch.custom")} ${t("quicklaunch.search")} `,
type: 'search',
}
)
}
setResults(newResults);
@@ -82,7 +92,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
setCurrentItemIndex(0);
}
}
}, [searchString, servicesAndBookmarks, searchDescriptions]);
}, [searchString, servicesAndBookmarks, searchDescriptions, searchProvider, t]);
const [hidden, setHidden] = useState(true);
@@ -90,7 +100,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
function handleBackdropClick(event) {
if (event.target?.tagName === "DIV") closeAndReset();
}
if (isOpen) {
searchField.current.focus();
document.body.addEventListener('click', handleBackdropClick);
@@ -135,20 +145,20 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
i === currentItemIndex && "bg-theme-300/50 dark:bg-theme-700/50",
)} onClick={handleItemClick}>
<div className="flex flex-row items-center mr-4 pointer-events-none">
<div className="w-5 text-xs mr-4">
{(r.icon || r.abbr) && <div className="w-5 text-xs mr-4">
{r.icon && <ResolvedIcon icon={r.icon} />}
{r.abbr && r.abbr}
</div>
</div>}
<div className="flex flex-col md:flex-row text-left items-baseline mr-4 pointer-events-none">
<span className="mr-4">{r.name}</span>
{r.description &&
{r.description &&
<span className="text-xs text-theme-600 text-light">
{searchDescriptions && r.priority < 2 ? highlightText(r.description) : r.description}
</span>
}
</div>
</div>
<div className="text-xs text-theme-600 font-bold pointer-events-none">{r.type === 'service' ? t("quicklaunch.service") : t("quicklaunch.bookmark")}</div>
<div className="text-xs text-theme-600 font-bold pointer-events-none">{t(`quicklaunch.${r.type ? r.type.toLowerCase() : 'bookmark'}`)}</div>
</button>
</li>
))}

View File

@@ -12,7 +12,7 @@ export default function Status({ service }) {
</div>
}
if (data && data.status === "running") {
if (data && data.status.includes("running")) {
if (data.health === "starting") {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health}>
@@ -30,13 +30,13 @@ export default function Status({ service }) {
}
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health ?? data.status}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health ?? data.status}</div>
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health || data.status}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health || data.status}</div>
</div>
);
}
if (data && (data.status === "not found" || data.status === "exited")) {
if (data && (data.status === "not found" || data.status === "exited" || data.status?.startsWith("partial"))) {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.status}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div>

View File

@@ -9,7 +9,18 @@ export default function Container({ error = false, children, service }) {
const fields = service?.widget?.fields;
const type = service?.widget?.type;
if (fields && type) {
visibleChildren = children.filter(child => fields.some(field => `${type}.${field}` === child?.props?.label));
// if the field contains a "." then it most likely contains a common loc value
// logic now allows a fields array that can look like:
// fields: [ "resources.cpu", "resources.mem", "field"]
// or even
// fields: [ "resources.cpu", "widget_type.field" ]
visibleChildren = children.filter(child => fields.some(field => {
let fullField = field;
if (!field.includes(".")) {
fullField = `${type}.${field}`;
}
return fullField === child?.props?.label;
}));
}
return <div className="relative flex flex-row w-full">{visibleChildren}</div>;

View File

@@ -1,9 +1,11 @@
import { useState } from "react";
import { useState, useEffect, Fragment } from "react";
import { useTranslation } from "next-i18next";
import { FiSearch } from "react-icons/fi";
import { SiDuckduckgo, SiMicrosoftbing, SiGoogle, SiBaidu, SiBrave } from "react-icons/si";
import { Listbox, Transition } from "@headlessui/react";
import classNames from "classnames";
const providers = {
export const searchProviders = {
google: {
name: "Google",
url: "https://www.google.com/search?q=",
@@ -36,21 +38,55 @@ const providers = {
},
};
function getAvailableProviderIds(options) {
if (options.provider && Array.isArray(options.provider)) {
return Object.keys(searchProviders).filter((value) => options.provider.includes(value));
}
if (options.provider && searchProviders[options.provider]) {
return [options.provider];
}
return null;
}
const localStorageKey = "search-name";
export function getStoredProvider() {
if (typeof window !== 'undefined') {
const storedName = localStorage.getItem(localStorageKey);
if (storedName) {
return Object.values(searchProviders).find((el) => el.name === storedName);
}
}
return null;
}
export default function Search({ options }) {
const { t } = useTranslation();
const provider = providers[options.provider];
const [query, setQuery] = useState("");
const availableProviderIds = getAvailableProviderIds(options);
if (!provider) {
const [query, setQuery] = useState("");
const [selectedProvider, setSelectedProvider] = useState(searchProviders[availableProviderIds[0] ?? searchProviders.google]);
useEffect(() => {
const storedProvider = getStoredProvider();
let storedProviderKey = null;
storedProviderKey = Object.keys(searchProviders).find((pkey) => searchProviders[pkey] === storedProvider);
if (storedProvider && availableProviderIds.includes(storedProviderKey)) {
setSelectedProvider(storedProvider);
}
}, [availableProviderIds]);
if (!availableProviderIds) {
return null;
}
function handleSubmit(event) {
const q = encodeURIComponent(query);
if (provider.url) {
window.open(`${provider.url}${q}`, options.target || "_blank");
const { url } = selectedProvider;
if (url) {
window.open(`${url}${q}`, options.target || "_blank");
} else {
window.open(`${options.url}${q}`, options.target || "_blank");
}
@@ -60,6 +96,11 @@ export default function Search({ options }) {
setQuery("");
}
const onChangeProvider = (provider) => {
setSelectedProvider(provider);
localStorage.setItem(localStorageKey, provider.name);
}
return (
<form className="flex-col relative h-8 my-4 min-w-fit grow first:ml-0 ml-4" onSubmit={handleSubmit}>
<div className="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none w-full text-theme-800 dark:text-white" />
@@ -82,17 +123,55 @@ export default function Search({ options }) {
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={options.focus}
/>
<button
type="submit"
className="
<Listbox as="div" value={selectedProvider} onChange={onChangeProvider} className="relative text-left" disabled={availableProviderIds?.length === 1}>
<div>
<Listbox.Button
className="
absolute right-0.5 bottom-0.5 rounded-r-md px-4 py-2 border-1
text-white font-medium text-sm
bg-theme-600/40 dark:bg-white/10
focus:ring-theme-500 dark:focus:ring-white/50"
>
<provider.icon className="text-white w-3 h-3" />
<span className="sr-only">{t("search.search")}</span>
</button>
>
<selectedProvider.icon className="text-white w-3 h-3" />
<span className="sr-only">{t("search.search")}</span>
</Listbox.Button>
</div>
<Transition
as={Fragment}
enter="transition ease-out duration-100"
enterFrom="transform opacity-0 scale-95"
enterTo="transform opacity-100 scale-100"
leave="transition ease-in duration-75"
leaveFrom="transform opacity-100 scale-100"
leaveTo="transform opacity-0 scale-95"
>
<Listbox.Options
className="absolute right-0 z-10 mt-1 origin-top-right rounded-md
bg-theme-100 dark:bg-theme-600 shadow-lg
ring-1 ring-black ring-opacity-5 focus:outline-none"
>
<div className="flex flex-col">
{availableProviderIds.map((providerId) => {
const p = searchProviders[providerId];
return (
<Listbox.Option key={providerId} value={p} as={Fragment}>
{({ active }) => (
<li
className={classNames(
"rounded-md cursor-pointer",
active ? "bg-theme-600/10 dark:bg-white/10 dark:text-gray-900" : "dark:text-gray-100"
)}
>
<p.icon className="h-4 w-4 mx-4 my-2" />
</li>
)}
</Listbox.Option>
);
})}
</div>
</Listbox.Options>
</Transition>
</Listbox>
</form>
);
}

View File

@@ -20,7 +20,6 @@ export default function Widget({ options }) {
<BiError className="w-8 h-8 text-theme-800 dark:text-theme-200" />
<div className="flex flex-col ml-3 text-left">
<span className="text-theme-800 dark:text-theme-200 text-sm">{t("widget.api_error")}</span>
<span className="text-theme-800 dark:text-theme-200 text-xs">-</span>
</div>
</div>
</div>
@@ -28,7 +27,7 @@ export default function Widget({ options }) {
);
}
const defaultSite = statsData?.data?.find(s => s.name === "default");
const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default");
if (!defaultSite) {
return (
@@ -55,6 +54,8 @@ export default function Widget({ options }) {
const name = wan.gw_name ?? defaultSite.desc;
const uptime = wan["gw_system-stats"] ? wan["gw_system-stats"].uptime : null;
const dataEmpty = !(wan.show || lan.show || wlan.show || uptime);
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<div className="flex flex-col">
@@ -64,6 +65,14 @@ export default function Widget({ options }) {
{name}
</div>
</div>
{dataEmpty && <div className="flex flex-row ml-3 text-[8px] justify-between">
<div className="flex flex-row items-center justify-end">
<div className="flex flex-row">
<BiError className="w-4 h-4 text-theme-800 dark:text-theme-200" />
<span className="text-theme-800 dark:text-theme-200 text-xs">{t("unifi.empty_data")}</span>
</div>
</div>
</div>}
<div className="flex flex-row ml-3 text-[10px] justify-between">
{uptime && <div className="flex flex-row" title={t("unifi.uptime")}>
<div className="pr-0.5 text-theme-800 dark:text-theme-200">

View File

@@ -53,17 +53,25 @@ export default async function handler(req, res) {
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
// We can only get stats for 'local' containers so try to find one
const localContainerIDs = containers.map(c => c.Id);
const task = tasks.find(t => localContainerIDs.includes(t.Status?.ContainerStatus?.ContainerID)) ?? tasks.at(0);
const taskContainerId = task?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
try {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
return res.status(200).json({
stats,
});
return res.status(200).json({
stats,
});
} catch (e) {
return res.status(200).json({
error: "Unable to retrieve stats"
})
}
}
}

View File

@@ -44,32 +44,65 @@ export default async function handler(req, res) {
}
if (dockerArgs.swarm) {
const tasks = await docker.listTasks({
const serviceInfo = await docker.getService(containerName).inspect()
.catch(() => undefined);
if (!serviceInfo) {
return res.status(404).send({
status: "not found",
});
}
const tasks = await docker
.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, we only look for an active one.
"desired-state": ["running"],
},
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status,
});
if (serviceInfo.Spec.Mode?.Replicated) {
// Replicated service, check n replicas
const replicas = parseInt(serviceInfo.Spec.Mode?.Replicated?.Replicas, 10);
if (tasks.length === replicas) {
return res.status(200).json({
status: `running ${tasks.length}/${replicas}`,
});
}
if (tasks.length > 0) {
return res.status(200).json({
status: `partial ${tasks.length}/${replicas}`,
});
}
} else {
// Global service, prefer 'local' containers
const localContainerIDs = containers.map(c => c.Id);
const task = tasks.find(t => localContainerIDs.includes(t.Status?.ContainerStatus?.ContainerID)) ?? tasks.at(0);
const taskContainerId = task?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
try {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status,
});
} catch (e) {
if (task) {
return res.status(200).json({
status: task.Status.State
})
}
}
}
}
}
return res.status(200).send({
error: "not found",
return res.status(404).send({
status: "not found",
});
} catch (e) {
logger.error(e);

View File

@@ -19,7 +19,10 @@ export default async function handler(req, res) {
return hash(readFileSync(configYaml, "utf8"));
});
const combinedHash = hash(hashes.join(""));
// this ties hash to specific build which should force revaliation between versions
const buildTime = process.env.NEXT_PUBLIC_BUILDTIME?.length ? process.env.NEXT_PUBLIC_BUILDTIME : '';
const combinedHash = hash(hashes.join("") + buildTime);
res.send({
hash: combinedHash,

View File

@@ -32,6 +32,7 @@ export default async function handler(req, res) {
}
req.method = mapping?.method || "GET";
if (mapping?.body) req.body = mapping?.body;
req.query.endpoint = endpoint;
if (req.query.segments) {

View File

@@ -22,6 +22,7 @@ import { bookmarksResponse, servicesResponse, widgetsResponse } from "utils/conf
import ErrorBoundary from "components/errorboundry";
import themes from "utils/styles/themes";
import QuickLaunch from "components/quicklaunch";
import { getStoredProvider, searchProviders } from "components/widgets/search/search";
const ThemeToggle = dynamic(() => import("components/toggles/theme"), {
ssr: false,
@@ -99,7 +100,7 @@ function Index({ initialSettings, fallback }) {
localStorage.setItem("hash", hashData.hash);
}
if (!initialSettings.isValid || (previousHash && previousHash !== hashData.hash)) {
if (previousHash && previousHash !== hashData.hash) {
setStale(true);
localStorage.setItem("hash", hashData.hash);
@@ -111,7 +112,7 @@ function Index({ initialSettings, fallback }) {
}
}
}
}, [hashData, initialSettings]);
}, [hashData]);
if (stale) {
return (
@@ -193,6 +194,20 @@ function Home({ initialSettings }) {
const [searching, setSearching] = useState(false);
const [searchString, setSearchString] = useState("");
let searchProvider = null;
const searchWidget = Object.values(widgets).find(w => w.type === "search");
if (searchWidget) {
if (Array.isArray(searchWidget.options?.provider)) {
// if search provider is a list, try to retrieve from localstorage, fall back to the first
searchProvider = getStoredProvider() ?? searchProviders[searchWidget.options.provider[0]];
} else if (searchWidget.options?.provider === 'custom') {
searchProvider = {
url: searchWidget.options.url
}
} else {
searchProvider = searchProviders[searchWidget.options?.provider];
}
}
useEffect(() => {
function handleKeyDown(e) {
@@ -237,7 +252,7 @@ function Home({ initialSettings }) {
/>
<meta name="theme-color" content={themes[initialSettings.color || "slate"][initialSettings.theme || "dark"]} />
</Head>
<div className="relative container m-auto flex flex-col justify-between z-10">
<div className="relative container m-auto flex flex-col justify-between z-10 h-full">
<div
className={classNames(
"flex flex-row flex-wrap justify-between",
@@ -251,6 +266,7 @@ function Home({ initialSettings }) {
isOpen={searching}
close={setSearching}
searchDescriptions={settings.quicklaunch?.searchDescriptions}
searchProvider={settings.quicklaunch?.hideInternetSearch ? null : searchProvider}
/>
{widgets && (
<>

View File

@@ -1,6 +1,6 @@
/* eslint-disable no-console */
import { join } from "path";
import { existsSync, copyFile, readFileSync, statSync } from "fs";
import { existsSync, copyFile, readFileSync } from "fs";
import yaml from "js-yaml";
@@ -32,18 +32,5 @@ export function getSettings() {
const settingsYaml = join(process.cwd(), "config", "settings.yaml");
const fileContents = readFileSync(settingsYaml, "utf8");
let stats;
try {
stats = statSync(settingsYaml);
} catch (e) {
stats = {};
}
const yamlLoaded = yaml.load(fileContents) ?? {};
return {
...yamlLoaded,
isValid: fileContents !== "-\n" && stats.size !== 2 // see https://github.com/benphelps/homepage/pull/609
};
return yaml.load(fileContents) ?? {};
}

View File

@@ -168,6 +168,9 @@ export async function servicesFromKubernetes() {
if (ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]) {
constructedService.podSelector = ingress.metadata.annotations[ANNOTATION_POD_SELECTOR];
}
if (ingress.metadata.annotations[`${ANNOTATION_BASE}/ping`]) {
constructedService.ping = ingress.metadata.annotations[`${ANNOTATION_BASE}/ping`];
}
Object.keys(ingress.metadata.annotations).forEach((annotation) => {
if (annotation.startsWith(ANNOTATION_WIDGET_BASE)) {
shvl.set(constructedService, annotation.replace(`${ANNOTATION_BASE}/`, ""), ingress.metadata.annotations[annotation]);
@@ -233,6 +236,7 @@ export function cleanServiceGroups(groups) {
currency, // coinmarketcap widget
symbols,
defaultinterval,
site, // unifi widget
namespace, // kubernetes widget
app,
podSelector,
@@ -256,6 +260,9 @@ export function cleanServiceGroups(groups) {
if (server) cleanedService.widget.server = server;
if (container) cleanedService.widget.container = container;
}
if (type === "unifi") {
if (site) cleanedService.widget.site = site;
}
if (type === "kubernetes") {
if (namespace) cleanedService.widget.namespace = namespace;
if (app) cleanedService.widget.app = app;

View File

@@ -53,3 +53,12 @@ export function jsonArrayTransform(data, transform) {
export function jsonArrayFilter(data, filter) {
return jsonArrayTransform(data, (items) => items.filter(filter));
}
export function sanitizeErrorURL(errorURL) {
// Dont display sensitive params on frontend
const url = new URL(errorURL);
["apikey", "api_key", "token", "t"].forEach(key => {
if (url.searchParams.has(key)) url.searchParams.set(key, "***")
});
return url.toString();
}

View File

@@ -34,6 +34,6 @@ export function addCookieToJar(url, headers) {
}
for (let i = 0; i < cookies.length; i += 1) {
cookieJar.setCookieSync(cookies[i], url.toString());
cookieJar.setCookieSync(cookies[i], url.toString(), { ignoreError: true });
}
}

View File

@@ -1,5 +1,5 @@
import getServiceWidget from "utils/config/service-helpers";
import { formatApiCall } from "utils/proxy/api-helpers";
import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
import validateWidgetData from "utils/proxy/validate-widget-data";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
@@ -68,7 +68,10 @@ export default async function credentialedProxyHandler(req, res, map) {
}
if (!validateWidgetData(widget, endpoint, data)) {
return res.status(500).json({error: {message: "Invalid data", url, data}});
if (data.error && data.error.url) {
data.error.url = sanitizeErrorURL(url);
}
return res.status(500).json({error: {message: "Invalid data", url: sanitizeErrorURL(url), data}});
}
if (status === 200 && map) {

View File

@@ -1,5 +1,5 @@
import getServiceWidget from "utils/config/service-helpers";
import { formatApiCall } from "utils/proxy/api-helpers";
import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
import validateWidgetData from "utils/proxy/validate-widget-data";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
@@ -27,15 +27,23 @@ export default async function genericProxyHandler(req, res, map) {
};
}
const [status, contentType, data] = await httpProxy(url, {
const params = {
method: req.method,
headers,
});
}
if (req.body) {
params.body = req.body;
}
const [status, contentType, data] = await httpProxy(url, params);
let resultData = data;
if (!validateWidgetData(widget, endpoint, resultData)) {
return res.status(status).json({error: {message: "Invalid data", url, data: resultData}});
if (resultData.error && resultData.error.url) {
resultData.error.url = sanitizeErrorURL(url);
}
return res.status(status).json({error: {message: "Invalid data", url: sanitizeErrorURL(url), data: resultData}});
}
if (status === 200 && map) {
@@ -50,7 +58,7 @@ export default async function genericProxyHandler(req, res, map) {
if (status >= 400) {
logger.debug("HTTP Error %d calling %s//%s%s...", status, url.protocol, url.hostname, url.pathname);
return res.status(status).json({error: {message: "HTTP Error", url, data}});
return res.status(status).json({error: {message: "HTTP Error", url: sanitizeErrorURL(url), data}});
}
return res.status(status).send(resultData);

View File

@@ -0,0 +1,176 @@
import cache from "memory-cache";
import getServiceWidget from "utils/config/service-helpers";
import { asJson, formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
import widgets from "widgets/widgets";
const INFO_ENDPOINT = "{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query";
const AUTH_ENDPOINT = "{url}/webapi/{path}?api=SYNO.API.Auth&version={maxVersion}&method=login&account={username}&passwd={password}&session=DownloadStation&format=cookie";
const AUTH_API_NAME = "SYNO.API.Auth";
const proxyName = "synologyProxyHandler";
const logger = createLogger(proxyName);
async function login(loginUrl) {
const [status, contentType, data] = await httpProxy(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
const json = asJson(data);
if (json?.success !== true) {
// from page 16: https://global.download.synology.com/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf
/*
Code Description
400 No such account or incorrect password
401 Account disabled
402 Permission denied
403 2-step verification code required
404 Failed to authenticate 2-step verification code
*/
let message = "Authentication failed.";
if (json?.error?.code >= 403) message += " 2FA enabled.";
logger.warn("Unable to login. Code: %d", json?.error?.code);
return [401, "application/json", JSON.stringify({ code: json?.error?.code, message })];
}
return [status, contentType, data];
}
async function getApiInfo(serviceWidget, apiName, serviceName) {
const cacheKey = `${proxyName}__${apiName}__${serviceName}`
let { cgiPath, maxVersion } = cache.get(cacheKey) ?? {};
if (cgiPath && maxVersion) {
return [cgiPath, maxVersion];
}
const infoUrl = formatApiCall(INFO_ENDPOINT, serviceWidget);
// eslint-disable-next-line no-unused-vars
const [status, contentType, data] = await httpProxy(infoUrl);
if (status === 200) {
try {
const json = asJson(data);
if (json?.data?.[apiName]) {
cgiPath = json.data[apiName].path;
maxVersion = json.data[apiName].maxVersion;
logger.debug(`Detected ${serviceWidget.type}: apiName '${apiName}', cgiPath '${cgiPath}', and maxVersion ${maxVersion}`);
cache.put(cacheKey, { cgiPath, maxVersion });
return [cgiPath, maxVersion];
}
}
catch {
logger.warn(`Error ${status} obtaining ${apiName} info`);
}
}
return [null, null];
}
async function handleUnsuccessfulResponse(serviceWidget, url, serviceName) {
logger.debug(`Attempting login to ${serviceWidget.type}`);
// eslint-disable-next-line no-unused-vars
const [apiPath, maxVersion] = await getApiInfo(serviceWidget, AUTH_API_NAME, serviceName);
const authArgs = { path: apiPath ?? "entry.cgi", maxVersion: maxVersion ?? 7, ...serviceWidget };
const loginUrl = formatApiCall(AUTH_ENDPOINT, authArgs);
const [status, contentType, data] = await login(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
return httpProxy(url);
}
function toError(url, synologyError) {
// commeon codes (100 => 199) from:
// https://global.download.synology.com/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf
const code = synologyError.error?.code ?? synologyError.error ?? synologyError.code ?? 100;
const error = { code };
switch (code) {
case 102:
error.error = "The requested API does not exist.";
break;
case 103:
error.error = "The requested method does not exist.";
break;
case 104:
error.error = "The requested version does not support the functionality.";
break;
case 105:
error.error = "The logged in session does not have permission.";
break;
case 106:
error.error = "Session timeout.";
break;
case 107:
error.error = "Session interrupted by duplicated login.";
break;
case 119:
error.error = "Invalid session or SID not found.";
break;
default:
error.error = synologyError.message ?? "Unknown error.";
break;
}
logger.warn(`Unable to call ${url}. code: ${code}, error: ${error.error}.`)
return error;
}
export default async function synologyProxyHandler(req, res) {
const { group, service, endpoint } = req.query;
if (!group || !service) {
return res.status(400).json({ error: "Invalid proxy service type" });
}
const serviceWidget = await getServiceWidget(group, service);
const widget = widgets?.[serviceWidget.type];
const mapping = widget?.mappings?.[endpoint];
if (!widget.api || !mapping) {
return res.status(403).json({ error: "Service does not support API calls" });
}
const [cgiPath, maxVersion] = await getApiInfo(serviceWidget, mapping.apiName, service);
if (!cgiPath || !maxVersion) {
return res.status(400).json({ error: `Unrecognized API name: ${mapping.apiName}`})
}
const url = formatApiCall(widget.api, {
apiName: mapping.apiName,
apiMethod: mapping.apiMethod,
cgiPath,
maxVersion,
...serviceWidget
});
let [status, contentType, data] = await httpProxy(url);
if (status !== 200) {
logger.debug("Error %d calling url %s", status, url);
return res.status(status, data);
}
let json = asJson(data);
if (json?.success !== true) {
logger.debug(`Attempting login to ${serviceWidget.type}`);
[status, contentType, data] = await handleUnsuccessfulResponse(serviceWidget, url, service);
json = asJson(data);
}
if (json.success !== true) {
data = toError(url, json);
status = 500;
}
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(status).send(data);
}

View File

@@ -9,25 +9,33 @@ const components = {
cloudflared: dynamic(() => import("./cloudflared/component")),
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
deluge: dynamic(() => import("./deluge/component")),
diskstation: dynamic(() => import("./diskstation/component")),
downloadstation: dynamic(() => import("./downloadstation/component")),
docker: dynamic(() => import("./docker/component")),
kubernetes: dynamic(() => import("./kubernetes/component")),
emby: dynamic(() => import("./emby/component")),
fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")),
gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")),
grafana: dynamic(() => import("./grafana/component")),
hdhomerun: dynamic(() => import("./hdhomerun/component")),
homebridge: dynamic(() => import("./homebridge/component")),
healthchecks: dynamic(() => import("./healthchecks/component")),
jackett: dynamic(() => import("./jackett/component")),
jellyfin: dynamic(() => import("./emby/component")),
jellyseerr: dynamic(() => import("./jellyseerr/component")),
komga: dynamic(() => import("./komga/component")),
kopia: dynamic(() => import("./kopia/component")),
lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")),
miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")),
mylar: dynamic(() => import("./mylar/component")),
navidrome: dynamic(() => import("./navidrome/component")),
nextcloud: dynamic(() => import("./nextcloud/component")),
nextdns: dynamic(() => import("./nextdns/component")),
npm: dynamic(() => import("./npm/component")),
nzbget: dynamic(() => import("./nzbget/component")),
@@ -37,6 +45,7 @@ const components = {
opnsense: dynamic(() => import("./opnsense/component")),
overseerr: dynamic(() => import("./overseerr/component")),
paperlessngx: dynamic(() => import("./paperlessngx/component")),
photoprism: dynamic(() => import("./photoprism/component")),
proxmoxbackupserver: dynamic(() => import("./proxmoxbackupserver/component")),
pihole: dynamic(() => import("./pihole/component")),
plex: dynamic(() => import("./plex/component")),
@@ -60,9 +69,11 @@ const components = {
tubearchivist: dynamic(() => import("./tubearchivist/component")),
truenas: dynamic(() => import("./truenas/component")),
unifi: dynamic(() => import("./unifi/component")),
unmanic: dynamic(() => import("./unmanic/component")),
watchtower: dynamic(() => import("./watchtower/component")),
xteve: dynamic(() => import("./xteve/component")),
immich: dynamic(() => import("./immich/component")),
uptimekuma: dynamic(() => import("./uptimekuma/component")),
};
export default components;
export default components;

View File

@@ -0,0 +1,55 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: infoData, error: infoError } = useWidgetAPI(widget, "system_info");
const { data: storageData, error: storageError } = useWidgetAPI(widget, "system_storage");
const { data: utilizationData, error: utilizationError } = useWidgetAPI(widget, "utilization");
if (storageError || infoError || utilizationError) {
return <Container error={ storageError ?? infoError ?? utilizationError } />;
}
if (!storageData || !infoData || !utilizationData) {
return (
<Container service={service}>
<Block label="diskstation.uptime" />
<Block label="diskstation.volumeAvailable" />
<Block label="resources.cpu" />
<Block label="resources.mem" />
</Container>
);
}
// uptime info
// eslint-disable-next-line no-unused-vars
const [hour, minutes, seconds] = infoData.data.up_time.split(":");
const days = Math.floor(hour / 24);
const uptime = `${ t("common.number", { value: days }) } ${ t("diskstation.days") }`;
// storage info
// TODO: figure out how to display info for more than one volume
const volume = storageData.data.vol_info?.[0];
const usedBytes = parseFloat(volume?.used_size);
const totalBytes = parseFloat(volume?.total_size);
const freeBytes = totalBytes - usedBytes;
// utilization info
const { cpu, memory } = utilizationData.data;
const cpuLoad = parseFloat(cpu.user_load) + parseFloat(cpu.system_load);
const memoryUsage = 100 - ((100 * (parseFloat(memory.avail_real) + parseFloat(memory.cached))) / parseFloat(memory.total_real));
return (
<Container service={service}>
<Block label="diskstation.uptime" value={ uptime } />
<Block label="diskstation.volumeAvailable" value={ t("common.bbytes", { value: freeBytes, maximumFractionDigits: 1 }) } />
<Block label="resources.cpu" value={ t("common.percent", { value: cpuLoad }) } />
<Block label="resources.mem" value={ t("common.percent", { value: memoryUsage }) } />
</Container>
);
}

View File

@@ -0,0 +1,27 @@
import synologyProxyHandler from '../../utils/proxy/handlers/synology'
const widget = {
// cgiPath and maxVersion are discovered at runtime, don't supply
api: "{url}/webapi/{cgiPath}?api={apiName}&version={maxVersion}&method={apiMethod}",
proxyHandler: synologyProxyHandler,
mappings: {
"system_storage": {
apiName: "SYNO.Core.System",
apiMethod: "info&type=\"storage\"",
endpoint: "system_storage"
},
"system_info": {
apiName: "SYNO.Core.System",
apiMethod: "info",
endpoint: "system_info"
},
"utilization": {
apiName: "SYNO.Core.System.Utilization",
apiMethod: "get",
endpoint: "utilization"
}
},
};
export default widget;

View File

@@ -22,7 +22,7 @@ export default function Component({ service }) {
return <Container error={finalError} />;
}
if (statusData && statusData.status !== "running") {
if (statusData && !(statusData.status.includes("running") || statusData.status.includes("partial"))) {
return (
<Container>
<Block label={t("widget.status")} value={t("docker.offline")} />

View File

@@ -1,88 +0,0 @@
import { formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
import widgets from "widgets/widgets";
import getServiceWidget from "utils/config/service-helpers";
const logger = createLogger("downloadstationProxyHandler");
async function login(loginUrl) {
const [status, contentType, data] = await httpProxy(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
const json = JSON.parse(data.toString());
if (json?.success !== true) {
// from https://global.download.synology.com/download/Document/Software/DeveloperGuide/Package/DownloadStation/All/enu/Synology_Download_Station_Web_API.pdf
/*
Code Description
400 No such account or incorrect password
401 Account disabled
402 Permission denied
403 2-step verification code required
404 Failed to authenticate 2-step verification code
*/
let message = "Authentication failed.";
if (json?.error?.code >= 403) message += " 2FA enabled.";
logger.warn("Unable to login. Code: %d", json?.error?.code);
return [401, "application/json", JSON.stringify({ code: json?.error?.code, message })];
}
return [status, contentType, data];
}
export default async function downloadstationProxyHandler(req, res) {
const { group, service, endpoint } = req.query;
if (!group || !service) {
return res.status(400).json({ error: "Invalid proxy service type" });
}
const widget = await getServiceWidget(group, service);
const api = widgets?.[widget.type]?.api;
if (!api) {
return res.status(403).json({ error: "Service does not support API calls" });
}
const url = formatApiCall(api, { endpoint, ...widget });
let [status, contentType, data] = await httpProxy(url);
if (status !== 200) {
logger.debug("Error %d calling endpoint %s", status, url);
return res.status(status, data);
}
const json = JSON.parse(data.toString());
if (json?.success !== true) {
logger.debug("Attempting login to DownloadStation");
const apiInfoUrl = formatApiCall("{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query", widget);
let path = "entry.cgi";
let maxVersion = 7;
[status, contentType, data] = await httpProxy(apiInfoUrl);
if (status === 200) {
try {
const apiAuthInfo = JSON.parse(data.toString()).data['SYNO.API.Auth'];
if (apiAuthInfo) {
path = apiAuthInfo.path;
maxVersion = apiAuthInfo.maxVersion;
logger.debug(`Deteceted Downloadstation auth API path: ${path} and maxVersion: ${maxVersion}`);
}
} catch {
logger.debug(`Error ${status} obtaining DownloadStation API info`);
}
}
const authApi = `{url}/webapi/${path}?api=SYNO.API.Auth&version=${maxVersion}&method=login&account={username}&passwd={password}&session=DownloadStation&format=cookie`
const loginUrl = formatApiCall(authApi, widget);
[status, contentType, data] = await login(loginUrl);
if (status !== 200) {
return res.status(status).end(data)
}
[status, contentType, data] = await httpProxy(url);
}
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(status).send(data);
}

View File

@@ -1,12 +1,15 @@
import downloadstationProxyHandler from "./proxy";
import synologyProxyHandler from '../../utils/proxy/handlers/synology'
const widget = {
api: "{url}/webapi/DownloadStation/task.cgi?api=SYNO.DownloadStation.Task&version=1&method={endpoint}",
proxyHandler: downloadstationProxyHandler,
// cgiPath and maxVersion are discovered at runtime, don't supply
api: "{url}/webapi/{cgiPath}?api={apiName}&version={maxVersion}&method={apiMethod}",
proxyHandler: synologyProxyHandler,
mappings: {
"list": {
endpoint: "list&additional=transfer",
apiName: "SYNO.DownloadStation.Task",
apiMethod: "list&additional=transfer",
endpoint: "list"
},
},
};

View File

@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: fileflowsData, error: fileflowsError } = useWidgetAPI(widget, "status");
if (fileflowsError) {
return <Container error={fileflowsError} />;
}
if (!fileflowsData) {
return (
<Container service={service}>
<Block label="fileflows.queue" />
<Block label="fileflows.processing" />
<Block label="fileflows.processed" />
<Block label="fileflows.time" />
</Container>
);
}
return (
<Container service={service}>
<Block label="fileflows.queue" value={t("common.number", { value: fileflowsData.queue })} />
<Block label="fileflows.processing" value={t("common.number", { value: fileflowsData.processing })} />
<Block label="fileflows.processed" value={t("common.number", { value: fileflowsData.processed })} />
<Block label="fileflows.time" value={fileflowsData.time?.length ? fileflowsData.time : "0:00"} />
</Container>
);
}

14
src/widgets/fileflows/widget.js Executable file
View File

@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
"status": {
endpoint: "status",
},
},
};
export default widget;

View File

@@ -45,9 +45,9 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="flood.leech" value={t("common.number", { value: leech })} />
<Block label="flood.download" value={t("common.bitrate", { value: rateDl })} />
<Block label="flood.download" value={t("common.byterate", { value: rateDl })} />
<Block label="flood.seed" value={t("common.number", { value: completed })} />
<Block label="flood.upload" value={t("common.bitrate", { value: rateUl })} />
<Block label="flood.upload" value={t("common.byterate", { value: rateUl })} />
</Container>
);
}

View File

@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats");
const { data: alertsData, error: alertsError } = useWidgetAPI(widget, "alerts");
if (statsError || alertsError) {
return <Container error={statsError ?? alertsError} />;
}
if (!statsData || !alertsData) {
return (
<Container service={service}>
<Block label="grafana.dashboards" />
<Block label="grafana.datasources" />
<Block label="grafana.totalalerts" />
<Block label="grafana.alertstriggered" />
</Container>
);
}
return (
<Container service={service}>
<Block label="grafana.dashboards" value={t("common.number", { value: statsData.dashboards })} />
<Block label="grafana.datasources" value={t("common.number", { value: statsData.datasources })} />
<Block label="grafana.totalalerts" value={t("common.number", { value: statsData.alerts })} />
<Block label="grafana.alertstriggered" value={t("common.number", { value: alertsData.filter(a => a.state === "alerting").length })} />
</Container>
);
}

20
src/widgets/grafana/widget.js Executable file
View File

@@ -0,0 +1,20 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
alerts: {
endpoint: "alerts",
},
stats: {
endpoint: "admin/stats",
validate: [
"dashboards"
]
},
},
};
export default widget;

View File

@@ -0,0 +1,54 @@
import { useTranslation } from "next-i18next";
import { i18n } from "../../../next-i18next.config";
import Block from "components/services/widget/block";
import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
function formatDate(dateString) {
const date = new Date(dateString);
const now = new Date();
let dateOptions = {
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
};
if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
dateOptions = { timeStyle: "short" };
}
return new Intl.DateTimeFormat(i18n.language, dateOptions).format(date);
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data, error } = useWidgetAPI(widget, "checks");
if (error) {
return <Container error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label={t("healthchecks.status")} />
<Block label={t("healthchecks.last_ping")} />
</Container>
);
}
return (
<Container service={service}>
<Block label={t("healthchecks.status")} value={t(`healthchecks.${data.status}`)} />
<Block
label={t("healthchecks.last_ping")}
value={data.last_ping ? formatDate(data.last_ping) : t("healthchecks.never")}
/>
</Container>
);
}

View File

@@ -0,0 +1,18 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "https://healthchecks.io/api/v2/{endpoint}/{uuid}",
proxyHandler: credentialedProxyHandler,
mappings: {
checks: {
endpoint: "checks",
validate: [
"status",
"last_ping",
]
},
},
};
export default widget;

View File

@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: libraryData, error: libraryError } = useWidgetAPI(widget, "libraries");
const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series");
const { data: bookData, error: bookError } = useWidgetAPI(widget, "books");
if (libraryError || seriesError || bookError) {
const finalError = libraryError ?? seriesError ?? bookError;
return <Container error={finalError} />;
}
if (!libraryData || !seriesData || !bookData) {
return (
<Container service={service}>
<Block label="komga.libraries" />
<Block label="komga.series" />
<Block label="komga.books" />
</Container>
);
}
return (
<Container service={service}>
<Block label="komga.libraries" value={t("common.number", { value: libraryData.total })} />
<Block label="komga.series" value={t("common.number", { value: seriesData.totalElements })} />
<Block label="komga.books" value={t("common.number", { value: bookData.totalElements })} />
</Container>
);
}

View File

@@ -0,0 +1,30 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
import { jsonArrayFilter } from "utils/proxy/api-helpers";
const widget = {
api: "{url}/api/v1/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
libraries: {
endpoint: "libraries",
map: (data) => ({
total: jsonArrayFilter(data, (item) => !item.unavailable).length,
}),
},
series: {
endpoint: "series",
validate: [
"totalElements"
]
},
books: {
endpoint: "books",
validate: [
"totalElements"
]
},
},
};
export default widget;

68
src/widgets/kopia/component.jsx Executable file
View File

@@ -0,0 +1,68 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
function relativeDate(date) {
const seconds = Math.abs(Math.floor((new Date() - date) / 1000));
let interval = Math.abs(seconds / 31536000);
if (interval > 1) {
return `${Math.floor(interval)} y`;
}
interval = seconds / 2592000;
if (interval > 1) {
return `${Math.floor(interval)} mo`;
}
interval = seconds / 86400;
if (interval > 1) {
return `${Math.floor(interval)} d`;
}
interval = seconds / 3600;
if (interval > 1) {
return `${Math.floor(interval)} h`;
}
interval = seconds / 60;
if (interval > 1) {
return `${Math.floor(interval)} m`;
}
return `${Math.floor(seconds)} s`;
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: statusData, error: statusError } = useWidgetAPI(widget, "status");
if (statusError) {
return <Container error={statusError} />;
}
const source = statusData?.sources[0];
if (!statusData || !source) {
return (
<Container service={service}>
<Block label="kopia.status" />
<Block label="kopia.size" />
<Block label="kopia.lastrun" />
<Block label="kopia.nextrun" />
</Container>
);
}
const lastRun = source.lastSnapshot.stats.errorCount === 0 ? new Date(source.lastSnapshot.startTime) : t("kopia.failed");
const nextTime = source.nextSnapshotTime ? new Date(source.nextSnapshotTime) : null;
return (
<Container service={service}>
<Block label="kopia.status" value={ source.status } />
<Block label="kopia.size" value={t("common.bbytes", { value: source.lastSnapshot.stats.totalSize, maximumFractionDigits: 1 })} />
<Block label="kopia.lastrun" value={ relativeDate(lastRun) } />
{nextTime && <Block label="kopia.nextrun" value={ relativeDate(nextTime) } />}
</Container>
);
}

14
src/widgets/kopia/widget.js Executable file
View File

@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
status: {
endpoint: "api/v1/sources",
},
},
};
export default widget;

View File

@@ -0,0 +1,40 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series");
const { data: issuesData, error: issuesError } = useWidgetAPI(widget, "issues");
const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted");
if (seriesError || issuesError || wantedError) {
const finalError = seriesError ?? issuesError ?? wantedError;
return <Container error={finalError} />;
}
if (!seriesData || !issuesData || !wantedData) {
return (
<Container service={service}>
<Block label="mylar.series" />
<Block label="mylar.issues" />
<Block label="mylar.wanted" />
</Container>
);
}
const totalIssues = issuesData.data.reduce((acc, series) => acc + series.totalIssues, 0);
return (
<Container service={service}>
<Block label="mylar.series" value={t("common.number", { value: seriesData.data.length })} />
<Block label="mylar.issues" value={t("common.number", { value: totalIssues })} />
<Block label="mylar.wanted" value={t("common.number", { value: wantedData.issues.length })} />
</Container>
);
}

View File

@@ -0,0 +1,20 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api?cmd={endpoint}&apikey={key}",
proxyHandler: genericProxyHandler,
mappings: {
issues: {
endpoint: "getIndex"
},
series: {
endpoint: "seriesjsonListing"
},
wanted: {
endpoint: "getWanted"
},
},
};
export default widget;

View File

@@ -0,0 +1,39 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: nextcloudData, error: nextcloudError } = useWidgetAPI(widget, "serverinfo");
if (nextcloudError) {
return <Container error={nextcloudError} />;
}
if (!nextcloudData) {
return (
<Container service={service}>
<Block label="nextcloud.cpuload" />
<Block label="nextcloud.memoryusage" />
<Block label="nextcloud.freespace" />
<Block label="nextcloud.activeusers" />
</Container>
);
}
const nextcloudInfo = nextcloudData.ocs.data.nextcloud;
const memoryUsage = 100 * ((parseFloat(nextcloudInfo.system.mem_total) - parseFloat(nextcloudInfo.system.mem_free)) / parseFloat(nextcloudInfo.system.mem_total));
return (
<Container service={service}>
<Block label="nextcloud.cpuload" value={t("common.percent", { value: nextcloudInfo.system.cpuload[0] })} />
<Block label="nextcloud.memoryusage" value={t("common.percent", { value:memoryUsage })} />
<Block label="nextcloud.freespace" value={t("common.bbytes", { value: nextcloudInfo.system.freespace, maximumFractionDigits: 1 })} />
<Block label="nextcloud.activeusers" value={t("common.number", { value: nextcloudData.ocs.data.activeUsers.last5minutes })} />
</Container>
);
}

14
src/widgets/nextcloud/widget.js Executable file
View File

@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
serverinfo: {
endpoint: "ocs/v2.php/apps/serverinfo/api/v1/info?format=json",
},
},
};
export default widget;

View File

@@ -33,7 +33,6 @@ export default function Component({ service }) {
<Block label="omada.activeUser" value={t( "common.number", { value: omadaData.activeUser })} />
<Block label="omada.alerts" value={t( "common.number", { value: omadaData.alerts })} />
{ omadaData.connectedGateways > 0 && <Block label="omada.connectedGateway" value={t("common.number", { value: omadaData.connectedGateways})} /> }
{ omadaData.connectedSwitches > 0 && <Block label="omada.connectedSwitches" value={t("common.number", { value: omadaData.connectedSwitches})} /> }
</Container>
);
}

View File

@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: photoprismData, error: photoprismError } = useWidgetAPI(widget);
if (photoprismError) {
return <Container error={photoprismError} />;
}
if (!photoprismData) {
return (
<Container service={service}>
<Block label="photoprism.albums" />
<Block label="photoprism.photos" />
<Block label="photoprism.videos" />
<Block label="photoprism.people" />
</Container>
);
}
return (
<Container service={service}>
<Block label="photoprism.albums" value={t("common.number", { value: photoprismData.albums })} />
<Block label="photoprism.photos" value={t("common.number", { value: photoprismData.photos })} />
<Block label="photoprism.videos" value={t("common.number", { value: photoprismData.videos })} />
<Block label="photoprism.people" value={t("common.number", { value: photoprismData.people })} />
</Container>
);
}

View File

@@ -0,0 +1,48 @@
import { formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import getServiceWidget from "utils/config/service-helpers";
import createLogger from "utils/logger";
const logger = createLogger("photoprismProxyHandler");
export default async function photoprismProxyHandler(req, res) {
const { group, service } = req.query;
if (!group || !service) {
logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
const widget = await getServiceWidget(group, service);
if (!widget) {
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
const url = new URL(formatApiCall("{url}/api/v1/session", { ...widget }));
const params = {
method: "POST",
headers: { "Content-Type": "application/json" },
body: null
};
if (widget.username && widget.password) {
params.body = JSON.stringify({
"username": widget.username,
"password": widget.password
});
}
const [status, contentType, data] = await httpProxy(url, params);
if (status !== 200) {
logger.error("HTTP %d getting data from PhotoPrism. Data: %s", status, data);
return res.status(status).json({error: {message: `HTTP Error ${status}`, url, data}});
}
const json = JSON.parse(data.toString())
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(200).send(json?.config?.count);
}

View File

@@ -0,0 +1,7 @@
import photoprismProxyHandler from "./proxy";
const widget = {
proxyHandler: photoprismProxyHandler,
};
export default widget;

View File

@@ -8,18 +8,15 @@ export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: indexersData, error: indexersError } = useWidgetAPI(widget, "indexer");
const { data: grabsData, error: grabsError } = useWidgetAPI(widget, "indexerstats");
if (indexersError || grabsError) {
const finalError = indexersError ?? grabsError;
return <Container error={finalError} />;
if (grabsError) {
return <Container error={grabsError} />;
}
if (!indexersData || !grabsData) {
if (!grabsData) {
return (
<Container service={service}>
<Block label="prowlarr.enableIndexers" />
<Block label="prowlarr.numberOfGrabs" />
<Block label="prowlarr.numberOfQueries" />
<Block label="prowlarr.numberOfFailGrabs" />
@@ -28,8 +25,6 @@ export default function Component({ service }) {
);
}
const indexers = indexersData?.filter((indexer) => indexer.enable === true);
let numberOfGrabs = 0;
let numberOfQueries = 0;
let numberOfFailedGrabs = 0;
@@ -43,7 +38,6 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="prowlarr.enableIndexers" value={t("common.number", { value: indexers.length })} />
<Block label="prowlarr.numberOfGrabs" value={t("common.number", { value: numberOfGrabs })} />
<Block label="prowlarr.numberOfQueries" value={t("common.number", { value: numberOfQueries })} />
<Block label="prowlarr.numberOfFailGrabs" value={t("common.number", { value: numberOfFailedGrabs })} />

View File

@@ -24,14 +24,14 @@ export default function Component({ service }) {
<Container service={service}>
<Block label="proxmox.vms" />
<Block label="proxmox.lxc" />
<Block label="proxmox.cpu" />
<Block label="proxmox.ram" />
<Block label="resources.cpu" />
<Block label="resources.ram" />
</Container>
);
}
const { data } = clusterData ;
const vms = data.filter(item => item.type === "qemu") || [];
const vms = data.filter(item => item.type === "qemu" && item.template === 0) || [];
const lxc = data.filter(item => item.type === "lxc" && item.template === 0) || [];
const nodes = data.filter(item => item.type === "node") || [];
@@ -46,8 +46,8 @@ export default function Component({ service }) {
<Container service={service}>
<Block label="proxmox.vms" value={`${runningVMs} / ${vms.length}`} />
<Block label="proxmox.lxc" value={`${runningLXC} / ${lxc.length}`} />
<Block label="proxmox.cpu" value={t("common.percent", { value: (node.cpu * 100) })} />
<Block label="proxmox.mem" value={t("common.percent", { value: ((node.mem / node.maxmem) * 100) })} />
<Block label="resources.cpu" value={t("common.percent", { value: (node.cpu * 100) })} />
<Block label="resources.mem" value={t("common.percent", { value: ((node.mem / node.maxmem) * 100) })} />
</Container>
);
}

View File

@@ -22,7 +22,7 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="proxmoxbackupserver.datastore_usage" />
<Block label="proxmoxbackupserver.failed_tasks" />
<Block label="proxmoxbackupserver.failed_tasks_24h" />
<Block label="proxmoxbackupserver.cpu_usage" />
<Block label="proxmoxbackupserver.memory_usage" />
</Container>

View File

@@ -1,6 +1,48 @@
import RuTorrent from "rutorrent-promise";
import getServiceWidget from "utils/config/service-helpers";
import { httpProxy } from "utils/proxy/http";
import widgets from "widgets/widgets";
import { formatApiCall } from "utils/proxy/api-helpers";
import createLogger from "utils/logger";
const logger = createLogger("rutorrentProxyHandler");
// from https://github.com/ctessier/node-rutorrent-promise/blob/next/utils.js
const getTorrentInfo = (data) => ({
'd.is_open': data[0],
'd.is_hash_checking': data[1],
'd.is_hash_checked': data[2],
'd.get_state': data[3],
'd.get_name': data[4],
'd.get_size_bytes': data[5],
'd.get_completed_chunks': data[6],
'd.get_size_chunks': data[7],
'd.get_bytes_done': data[8],
'd.get_up_total': data[9],
'd.get_ratio': data[10],
'd.get_up_rate': data[11],
'd.get_down_rate': data[12],
'd.get_chunk_size': data[13],
'd.get_custom1': data[14],
'd.get_peers_accounted': data[15],
'd.get_peers_not_connected': data[16],
'd.get_peers_connected': data[17],
'd.get_peers_complete': data[18],
'd.get_left_bytes': data[19],
'd.get_priority': data[20],
'd.get_state_changed': data[21],
'd.get_skip_total': data[22],
'd.get_hashing': data[23],
'd.get_chunks_hashed': data[24],
'd.get_base_path': data[25],
'd.get_creation_date': data[26],
'd.get_tracker_focus': data[27],
'd.is_active': data[28],
'd.get_message': data[29],
'd.get_custom2': data[30],
'd.get_free_diskspace': data[31],
'd.is_private': data[32],
'd.is_multi_file': data[33],
});
export default async function rutorrentProxyHandler(req, res) {
const { group, service } = req.query;
@@ -9,27 +51,35 @@ export default async function rutorrentProxyHandler(req, res) {
const widget = await getServiceWidget(group, service);
if (widget) {
const constructedUrl = new URL(widget.url);
const api = widgets?.[widget.type]?.api;
const url = new URL(formatApiCall(api, { ...widget }));
let rtPort = constructedUrl.port;
if (rtPort === '') {
rtPort = constructedUrl.protocol === "https:" ? 443 : 80;
const headers = {}
if (widget.username) {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
const rutorrent = new RuTorrent({
host: constructedUrl.hostname,
port: rtPort,
path: constructedUrl.pathname,
ssl: constructedUrl.protocol === "https:",
username: widget.username,
password: widget.password,
const [status, , data] = await httpProxy(url, {
method: "POST",
headers,
body: 'mode=list'
});
const data = await rutorrent.get(["d.get_down_rate", "d.get_up_rate", "d.get_state"]);
if (status !== 200) {
logger.error("HTTP Error %d calling %s", status, url.toString());
return res.status(status).json({error: {message: "HTTP Error", url, data}});
}
return res.status(200).send(data);
try {
const rawData = JSON.parse(data);
const parsedData = Object.keys(rawData.t).map((hashString) => getTorrentInfo(rawData.t[hashString]));
return res.status(200).send(parsedData);
} catch (e) {
return res.status(500).json({error: {message: e?.toString() ?? 'Error parsing rutorrent data', url, data}});
}
}
}
return res.status(400).json({ error: "Invalid proxy service type" });
return res.status(500).json({ error: "Invalid proxy service type" });
}

View File

@@ -36,9 +36,9 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="transmission.leech" value={t("common.number", { value: leech })} />
<Block label="transmission.download" value={t("common.bitrate", { value: rateDl * 8 })} />
<Block label="transmission.download" value={t("common.byterate", { value: rateDl })} />
<Block label="transmission.seed" value={t("common.number", { value: completed })} />
<Block label="transmission.upload" value={t("common.bitrate", { value: rateUl * 8 })} />
<Block label="transmission.upload" value={t("common.byterate", { value: rateUl })} />
</Container>
);
}

View File

@@ -15,7 +15,7 @@ export default function Component({ service }) {
return <Container error={statsError} />;
}
const defaultSite = statsData?.data?.find(s => s.name === "default");
const defaultSite = widget.site ? statsData?.data.find(s => s.desc === widget.site) : statsData?.data?.find(s => s.name === "default");
if (!defaultSite) {
return (
@@ -38,6 +38,14 @@ export default function Component({ service }) {
const uptime = wan["gw_system-stats"] ? `${t("common.number", { value: wan["gw_system-stats"].uptime / 86400, maximumFractionDigits: 1 })} ${t("unifi.days")}` : null;
if (!(wan.show || lan.show || wlan.show || uptime)) {
return (
<Container service={service}>
<Block value={ t("unifi.empty_data") } />
</Container>
)
}
return (
<Container service={service}>
{uptime && <Block label="unifi.uptime" value={ uptime } />}

View File

@@ -42,12 +42,15 @@ async function getWidget(req) {
return widget;
}
async function login(widget) {
async function login(widget, csrfToken) {
const endpoint = (widget.prefix === udmpPrefix) ? "auth/login" : "login";
const api = widgets?.[widget.type]?.api?.replace("{prefix}", ""); // no prefix for login url
const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget }));
const loginBody = { username: widget.username, password: widget.password, remember: true };
const headers = { "Content-Type": "application/json" };
if (csrfToken) {
headers["X-CSRF-TOKEN"] = csrfToken;
}
const [status, contentType, data, responseHeaders] = await httpProxy(loginUrl, {
method: "POST",
body: JSON.stringify(loginBody),
@@ -70,6 +73,7 @@ export default async function unifiProxyHandler(req, res) {
let [status, contentType, data, responseHeaders] = [];
let prefix = cache.get(`${prefixCacheKey}.${service}`);
let csrfToken;
if (prefix === null) {
// auto detect if we're talking to a UDM Pro, and cache the result so that we
// don't make two requests each time data from Unifi is required
@@ -77,12 +81,12 @@ export default async function unifiProxyHandler(req, res) {
prefix = "";
if (responseHeaders?.["x-csrf-token"]) {
prefix = udmpPrefix;
csrfToken = responseHeaders["x-csrf-token"];
}
cache.put(`${prefixCacheKey}.${service}`, prefix);
}
widget.prefix = prefix;
const { endpoint } = req.query;
const url = new URL(formatApiCall(api, { endpoint, ...widget }));
const params = { method: "GET", headers: {} };
@@ -92,7 +96,10 @@ export default async function unifiProxyHandler(req, res) {
if (status === 401) {
logger.debug("Unifi isn't logged in or rejected the reqeust, attempting login.");
[status, contentType, data, responseHeaders] = await login(widget);
if (responseHeaders?.["x-csrf-token"]) {
csrfToken = responseHeaders["x-csrf-token"];
}
[status, contentType, data, responseHeaders] = await login(widget, csrfToken);
if (status !== 200) {
logger.error("HTTP %d logging in to Unifi. Data: %s", status, data);

View File

@@ -0,0 +1,33 @@
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { widget } = service;
const { data: workersData, error: workersError } = useWidgetAPI(widget, "workers");
const { data: pendingData, error: pendingError } = useWidgetAPI(widget, "pending");
if (workersError || pendingError) {
const finalError = workersError ?? pendingError;
return <Container error={finalError} />;
}
if (!workersData || !pendingData) {
return (
<Container service={service}>
<Block label="unmanic.active_workers" />
<Block label="unmanic.total_workers" />
<Block label="unmanic.records_total" />
</Container>
);
}
return (
<Container service={service}>
<Block label="unmanic.active_workers" value={workersData.active_workers} />
<Block label="unmanic.total_workers" value={workersData.total_workers} />
<Block label="unmanic.records_total" value={pendingData.recordsTotal} />
</Container>
);
}

View File

@@ -0,0 +1,27 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
import { asJson } from "utils/proxy/api-helpers";
const widget = {
api: "{url}/unmanic/api/v2/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
workers: {
endpoint: "workers/status",
map: (data) => ({
total_workers: (asJson(data).workers_status).length,
active_workers: (asJson(data).workers_status).filter(worker => !worker.idle).length,
})
},
pending: {
method: "POST",
body: "{}",
endpoint: "pending/tasks",
validate: [
"recordsTotal"
]
},
},
};
export default widget;

View File

@@ -0,0 +1,55 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
import Block from "components/services/widget/block";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: statusData, error: statusError } = useWidgetAPI(widget, "status_page");
const { data: heartbeatData, error: heartbeatError } = useWidgetAPI(widget, "heartbeat");
if (statusError || heartbeatError) {
return <Container error={statusError ?? heartbeatError} />;
}
if (!statusData || !heartbeatData) {
return (
<Container service={service}>
<Block label="uptimekuma.up"/>
<Block label="uptimekuma.down"/>
<Block label="uptimekuma.uptime"/>
<Block label="uptimekuma.incidents"/>
</Container>
);
}
let sitesUp = 0;
let sitesDown = 0;
Object.values(heartbeatData.heartbeatList).forEach((siteList) => {
const lastHeartbeat = siteList[siteList.length - 1];
if (lastHeartbeat?.status === 1) {
sitesUp += 1;
} else {
sitesDown += 1;
}
});
// Adapted from https://github.com/bastienwirtz/homer/blob/b7cd8f9482e6836a96b354b11595b03b9c3d67cd/src/components/services/UptimeKuma.vue#L105
const uptimeList = Object.values(heartbeatData.uptimeList);
const percent = uptimeList.reduce((a, b) => a + b, 0) / uptimeList.length || 0;
const uptime = (percent * 100).toFixed(1);
const incidentTime = statusData.incident ? (Math.abs(new Date(statusData.incident?.createdDate) - new Date()) / 1000) / (60 * 60) : null;
return (
<Container service={service}>
<Block label="uptimekuma.up" value={t("common.number", { value: sitesUp })} />
<Block label="uptimekuma.down" value={t("common.number", { value: sitesDown })} />
<Block label="uptimekuma.uptime" value={t("common.percent", { value: uptime })} />
{incidentTime && <Block label="uptimekuma.incident" value={t("common.number", { value: Math.round(incidentTime) }) + t("uptimekuma.m")} />}
</Container>
);
}

View File

@@ -0,0 +1,18 @@
// import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/{endpoint}/{slug}",
proxyHandler: genericProxyHandler,
mappings: {
status_page: {
endpoint: "status-page",
},
heartbeat: {
endpoint: "status-page/heartbeat",
},
}
};
export default widget;

View File

@@ -6,22 +6,30 @@ import changedetectionio from "./changedetectionio/widget";
import cloudflared from "./cloudflared/widget";
import coinmarketcap from "./coinmarketcap/widget";
import deluge from "./deluge/widget";
import diskstation from "./diskstation/widget";
import downloadstation from "./downloadstation/widget";
import emby from "./emby/widget";
import fileflows from "./fileflows/widget";
import flood from "./flood/widget";
import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget";
import grafana from "./grafana/widget";
import hdhomerun from "./hdhomerun/widget";
import homebridge from "./homebridge/widget";
import healthchecks from "./healthchecks/widget";
import jackett from "./jackett/widget";
import jellyseerr from "./jellyseerr/widget";
import komga from "./komga/widget";
import kopia from "./kopia/widget";
import lidarr from "./lidarr/widget";
import mastodon from "./mastodon/widget";
import medusa from "./medusa/widget";
import miniflux from "./miniflux/widget";
import mikrotik from "./mikrotik/widget";
import moonraker from "./moonraker/widget";
import mylar from "./mylar/widget";
import navidrome from "./navidrome/widget";
import nextcloud from "./nextcloud/widget";
import nextdns from "./nextdns/widget";
import npm from "./npm/widget";
import nzbget from "./nzbget/widget";
@@ -31,6 +39,7 @@ import ombi from "./ombi/widget";
import opnsense from "./opnsense/widget";
import overseerr from "./overseerr/widget";
import paperlessngx from "./paperlessngx/widget";
import photoprism from "./photoprism/widget";
import proxmoxbackupserver from "./proxmoxbackupserver/widget";
import pihole from "./pihole/widget";
import plex from "./plex/widget";
@@ -57,6 +66,8 @@ import unifi from "./unifi/widget";
import watchtower from "./watchtower/widget";
import xteve from "./xteve/widget";
import immich from "./immich/widget";
import uptimekuma from "./uptimekuma/widget";
import unmanic from "./unmanic/widget";
const widgets = {
adguard,
@@ -67,24 +78,31 @@ const widgets = {
cloudflared,
coinmarketcap,
deluge,
diskstation: downloadstation,
diskstation,
downloadstation,
emby,
fileflows,
flood,
gluetun,
gotify,
grafana,
hdhomerun,
homebridge,
healthchecks,
jackett,
jellyfin: emby,
jellyseerr,
komga,
kopia,
lidarr,
mastodon,
medusa,
miniflux,
mikrotik,
moonraker,
mylar,
navidrome,
nextcloud,
nextdns,
npm,
nzbget,
@@ -94,6 +112,7 @@ const widgets = {
opnsense,
overseerr,
paperlessngx,
photoprism,
proxmoxbackupserver,
pihole,
plex,
@@ -118,9 +137,11 @@ const widgets = {
truenas,
unifi,
unifi_console: unifi,
unmanic,
watchtower,
xteve,
immich,
uptimekuma,
};
export default widgets;
export default widgets;