Compare commits

..

372 Commits

Author SHA1 Message Date
shamoon
48180604f9 Fix jellyfin / emby blocks boolean evaluation 2023-04-04 00:55:05 -07:00
shamoon
88089a8a11 Merge pull request #1174 from benphelps/fix-memory-calc
Fix memory display in v0.6.11
2023-04-03 23:29:12 -07:00
shamoon
2829f0b649 Update memory.jsx 2023-04-03 23:22:28 -07:00
shamoon
0d5856db1e Merge pull request #1172 from benphelps/cpu-temp-fixes
Fix glances cpu temp detection & fahrenheit conversion
2023-04-03 21:50:23 -07:00
shamoon
f3ec238a2c Fix glances cpu temp detection & fahrenheit conversion 2023-04-03 21:49:28 -07:00
shamoon
2ab8e63df2 Merge pull request #1169 from SebastianOsinski/diskstation_volume
Add option to specify volume in Diskstation widget
2023-04-03 14:35:21 -07:00
shamoon
616e8f2553 diskstation codestyle 2023-04-03 14:24:06 -07:00
Sebastian Osiński
f55ba3b67a Add option to specify volume in Diskstation widget 2023-04-03 22:10:56 +02:00
Alanimdeo
2a56fd9992 Translated using Weblate (Korean)
Currently translated at 43.1% (174 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-04-01 11:49:47 +02:00
Dan
74afa06d7c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (403 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-04-01 11:49:47 +02:00
yahoo~~
ef5b998d41 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (398 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-04-01 11:49:47 +02:00
gallegonovato
fe4389a883 Translated using Weblate (Spanish)
Currently translated at 100.0% (403 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-04-01 11:49:46 +02:00
shamoon
4cb5241e94 glances temp usage bar 2023-03-31 10:37:41 -07:00
shamoon
872237167d Uptime usage bar 2023-03-31 10:37:31 -07:00
shamoon
a90f178ee0 Better handle multi-core temp 2023-03-31 08:44:27 -07:00
shamoon
489132269e Update [...service].js 2023-03-31 08:06:19 -07:00
shamoon
9303302ce7 Update [...service].js 2023-03-31 08:05:08 -07:00
shamoon
9ff977b339 Update [...service].js 2023-03-31 08:00:14 -07:00
shamoon
a2aab6451c lint 2023-03-30 14:40:24 -07:00
shamoon
1e64cf02cd Add temp usage bar, fix disk percentage 2023-03-30 14:36:40 -07:00
shamoon
868c16620f Update pnpm-lock.yaml for pnpm v8 2023-03-29 15:10:35 -07:00
shamoon
7aab51158d Update pnpm-lock.yaml 2023-03-29 15:07:18 -07:00
shamoon
e8b99b5bff update package lock files 2023-03-29 15:04:28 -07:00
shamoon
54f34cff26 Update package-lock.json 2023-03-29 15:00:10 -07:00
shamoon
9333af20f5 Update glances.jsx 2023-03-29 14:57:31 -07:00
Anonymous
7ec3e5937e Translated using Weblate (Korean)
Currently translated at 41.4% (167 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-03-29 23:38:37 +02:00
Anonymous
d25af55533 Translated using Weblate (Slovak)
Currently translated at 2.2% (9 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-03-29 23:38:36 +02:00
Anonymous
b3d1058a42 Translated using Weblate (Thai)
Currently translated at 11.6% (47 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-29 23:38:36 +02:00
Anonymous
9353771a4d Translated using Weblate (Latvian)
Currently translated at 29.5% (119 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-29 23:38:36 +02:00
Anonymous
e2393153d7 Translated using Weblate (Japanese)
Currently translated at 3.7% (15 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-29 23:38:35 +02:00
Anonymous
3b07e78bc9 Translated using Weblate (Ukrainian)
Currently translated at 97.2% (392 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-29 23:38:35 +02:00
Anonymous
212ce266bc Translated using Weblate (Esperanto)
Currently translated at 25.5% (103 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-29 23:38:34 +02:00
Anonymous
9557fbad63 Translated using Weblate (Hindi)
Currently translated at 2.2% (9 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-29 23:38:34 +02:00
Anonymous
1ed5d63695 Translated using Weblate (Malay)
Currently translated at 62.7% (253 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-29 23:38:34 +02:00
Anonymous
ac6aef0c8c Translated using Weblate (Danish)
Currently translated at 49.1% (198 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-29 23:38:33 +02:00
Anonymous
ec2422e266 Translated using Weblate (Czech)
Currently translated at 97.2% (392 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-29 23:38:33 +02:00
Anonymous
05ab210363 Translated using Weblate (Arabic)
Currently translated at 65.0% (262 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-29 23:38:32 +02:00
Anonymous
47736b60bf Translated using Weblate (Serbian)
Currently translated at 2.2% (9 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-29 23:38:32 +02:00
Anonymous
608a34053a Translated using Weblate (Turkish)
Currently translated at 78.6% (317 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-29 23:38:31 +02:00
Anonymous
5df6ff01ba Translated using Weblate (Bulgarian)
Currently translated at 11.4% (46 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-29 23:38:31 +02:00
Anonymous
fc57e9b72a Translated using Weblate (Telugu)
Currently translated at 53.8% (217 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-29 23:38:31 +02:00
Anonymous
0f5ee01032 Translated using Weblate (Finnish)
Currently translated at 44.1% (178 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-29 23:38:30 +02:00
Anonymous
ec58c5995b Translated using Weblate (Yue)
Currently translated at 29.2% (118 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-29 23:38:30 +02:00
Anonymous
991821c417 Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.7% (390 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-29 23:38:29 +02:00
Anonymous
b54b6e9636 Translated using Weblate (Romanian)
Currently translated at 37.4% (151 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-29 23:38:29 +02:00
Anonymous
94c96d129b Translated using Weblate (Hebrew)
Currently translated at 25.0% (101 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-29 23:38:29 +02:00
Anonymous
8c929d5701 Translated using Weblate (Hungarian)
Currently translated at 26.7% (108 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-29 23:38:28 +02:00
Anonymous
49ea1df313 Translated using Weblate (Croatian)
Currently translated at 70.9% (286 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-29 23:38:28 +02:00
Anonymous
96a5b533b2 Translated using Weblate (Swedish)
Currently translated at 32.7% (132 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-29 23:38:27 +02:00
Anonymous
4f62f15acf Translated using Weblate (Polish)
Currently translated at 71.7% (289 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-29 23:38:27 +02:00
Anonymous
7dd33c6ced Translated using Weblate (Catalan)
Currently translated at 64.0% (258 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-29 23:38:26 +02:00
Anonymous
0bb3fc4a34 Translated using Weblate (Chinese (Traditional))
Currently translated at 89.0% (359 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-29 23:38:26 +02:00
Anonymous
4fa1eee3e9 Translated using Weblate (Dutch)
Currently translated at 60.0% (242 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-29 23:38:26 +02:00
Anonymous
0ab98294cf Translated using Weblate (Vietnamese)
Currently translated at 10.9% (44 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-29 23:38:25 +02:00
Anonymous
1e43364406 Translated using Weblate (Norwegian Bokmål)
Currently translated at 19.6% (79 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-29 23:38:25 +02:00
Anonymous
1b4efd2321 Translated using Weblate (Italian)
Currently translated at 71.4% (288 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-29 23:38:24 +02:00
Anonymous
0b79763474 Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (389 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-29 23:38:24 +02:00
Anonymous
5782f83d99 Translated using Weblate (Russian)
Currently translated at 11.9% (48 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-29 23:38:24 +02:00
Anonymous
96568b14a8 Translated using Weblate (Portuguese)
Currently translated at 94.5% (381 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-29 23:38:23 +02:00
Anonymous
8a6144c4c6 Translated using Weblate (French)
Currently translated at 97.2% (392 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-29 23:38:23 +02:00
Anonymous
01e59acecb Translated using Weblate (Spanish)
Currently translated at 97.2% (392 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-29 23:38:22 +02:00
Anonymous
728c98a3cd Translated using Weblate (German)
Currently translated at 90.0% (363 of 403 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-29 23:38:22 +02:00
Cloudburst
50ee5abe46 Translated using Weblate (Polish)
Currently translated at 73.7% (289 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-29 23:36:30 +02:00
tony390616
680a3f6f96 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.5% (359 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-29 23:36:30 +02:00
Roel van de Wiel
b0c971d4af Translated using Weblate (Dutch)
Currently translated at 61.7% (242 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-29 23:36:30 +02:00
yahoo~~
6b4535cf29 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.2% (389 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-29 23:36:30 +02:00
shamoon
c649c4ef17 Merge pull request #1084 from benphelps/feature-updated-resources
Feature: updated resources widget with cpu temp + uptime
2023-03-29 14:36:23 -07:00
shamoon
f830faf8af update glances widget 2023-03-29 14:35:48 -07:00
shamoon
b51af4377f Add uptime to resources widget 2023-03-29 14:35:48 -07:00
shamoon
f46addf20a Add cputemp to resources widget 2023-03-29 14:35:48 -07:00
shamoon
d4a3ba84e9 Convert resources widget to systeminformation dependency
Update resources.js
2023-03-29 14:35:48 -07:00
shamoon
903ab2c8d4 Merge pull request #1159 from Faeranne/main
Feature: support for Docker TLS based connections
2023-03-29 14:32:48 -07:00
Nina Morgan
f37d3580b7 add support for Docker TLS based connections 2023-03-29 16:58:50 -04:00
shamoon
bffda3240a Merge pull request #1156 from SebastianOsinski/improve_docker_memory_stats
Display Docker container's used memory instead of total memory
2023-03-28 16:32:24 -07:00
shamoon
dde188c3c4 Fix calculate memory when no cache value 2023-03-28 15:51:55 -07:00
Sebastian Osiński
e549a87719 Display Docker container's used memory instead of total memory 2023-03-28 19:40:09 +02:00
Henrique Miraldo
58bb5a2bbf Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.4% (390 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-26 17:37:53 +02:00
Henrique Miraldo
bd027868d0 Translated using Weblate (Portuguese)
Currently translated at 97.1% (381 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-26 17:37:52 +02:00
shamoon
f895a6bf23 Fix status error display 2023-03-25 08:46:42 -07:00
Henrique Miraldo
5437da4999 Translated using Weblate (Portuguese)
Currently translated at 96.1% (377 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-25 15:40:51 +01:00
Smexhy
d5447f8aa8 Translated using Weblate (Czech)
Currently translated at 100.0% (392 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-24 18:40:07 +01:00
Sitram
436a7cb8ea Translated using Weblate (Romanian)
Currently translated at 38.5% (151 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-24 18:40:07 +01:00
Sitram
1984a2a349 Translated using Weblate (Romanian)
Currently translated at 35.2% (138 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-23 14:41:32 +01:00
Alanimdeo
9081dcc77c Translated using Weblate (Korean)
Currently translated at 42.6% (167 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-03-22 17:41:31 +01:00
shamoon
d9b0c58896 Update README.md 2023-03-21 14:19:18 -07:00
Anonymous
3838c7395c Translated using Weblate (Korean)
Currently translated at 100.0% (0 of 0 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-03-21 15:32:33 +01:00
Dan
fb871f52c3 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (392 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-21 15:32:29 +01:00
Smexhy
497874a9df Translated using Weblate (Czech)
Currently translated at 100.0% (392 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-21 15:32:29 +01:00
Nonoss117
59783f8edd Translated using Weblate (French)
Currently translated at 100.0% (392 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-21 15:32:28 +01:00
gallegonovato
3caa7153a3 Translated using Weblate (Spanish)
Currently translated at 100.0% (392 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-21 15:32:28 +01:00
Alanimdeo
a03815657f Added translation using Weblate (Korean) 2023-03-21 15:31:53 +01:00
Anonymous
58eba72136 Translated using Weblate (Slovak)
Currently translated at 2.2% (9 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-03-20 15:07:31 +01:00
Anonymous
fefaef3442 Translated using Weblate (Thai)
Currently translated at 11.9% (47 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-20 15:07:30 +01:00
Anonymous
07152261d8 Translated using Weblate (Latvian)
Currently translated at 30.3% (119 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-20 15:07:30 +01:00
Anonymous
63fe833a2e Translated using Weblate (Japanese)
Currently translated at 3.8% (15 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-20 15:07:30 +01:00
Anonymous
cce31d5d58 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (382 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-20 15:07:29 +01:00
Anonymous
fadad38f8f Translated using Weblate (Esperanto)
Currently translated at 26.2% (103 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-20 15:07:29 +01:00
Anonymous
7912c0603e Translated using Weblate (Hindi)
Currently translated at 2.2% (9 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-20 15:07:29 +01:00
Anonymous
f6685938c0 Translated using Weblate (Malay)
Currently translated at 64.5% (253 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-20 15:07:28 +01:00
Anonymous
dda3164c72 Translated using Weblate (Danish)
Currently translated at 50.5% (198 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-20 15:07:28 +01:00
Anonymous
b63a75840f Translated using Weblate (Czech)
Currently translated at 85.9% (337 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-20 15:07:28 +01:00
Anonymous
e0d872fe38 Translated using Weblate (Arabic)
Currently translated at 66.8% (262 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-20 15:07:28 +01:00
Anonymous
c4832d8fcc Translated using Weblate (Serbian)
Currently translated at 2.2% (9 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-20 15:07:27 +01:00
Anonymous
a464cc3161 Translated using Weblate (Turkish)
Currently translated at 80.8% (317 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-20 15:07:27 +01:00
Anonymous
37ceb2254a Translated using Weblate (Bulgarian)
Currently translated at 11.7% (46 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-20 15:07:27 +01:00
Anonymous
8ecd936ccd Translated using Weblate (Telugu)
Currently translated at 55.3% (217 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-20 15:07:26 +01:00
Anonymous
01407158a0 Translated using Weblate (Finnish)
Currently translated at 45.4% (178 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-20 15:07:26 +01:00
Anonymous
a0efa9911d Translated using Weblate (Yue)
Currently translated at 30.1% (118 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-20 15:07:26 +01:00
Anonymous
9927a7a871 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.4% (382 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-20 15:07:25 +01:00
Anonymous
d17bf1aae5 Translated using Weblate (Romanian)
Currently translated at 34.9% (137 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-20 15:07:25 +01:00
Anonymous
12c9fd5042 Translated using Weblate (Hebrew)
Currently translated at 25.7% (101 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-20 15:07:25 +01:00
Anonymous
5a04819950 Translated using Weblate (Hungarian)
Currently translated at 27.5% (108 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-20 15:07:24 +01:00
Anonymous
c2f8257684 Translated using Weblate (Croatian)
Currently translated at 72.9% (286 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-20 15:07:24 +01:00
Anonymous
27c740220a Translated using Weblate (Swedish)
Currently translated at 33.6% (132 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-20 15:07:24 +01:00
Anonymous
cdc33a410b Translated using Weblate (Polish)
Currently translated at 72.7% (285 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-20 15:07:23 +01:00
Anonymous
2e648d0370 Translated using Weblate (Catalan)
Currently translated at 65.8% (258 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-20 15:07:23 +01:00
Anonymous
9541c18f72 Translated using Weblate (Chinese (Traditional))
Currently translated at 90.3% (354 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-20 15:07:20 +01:00
Anonymous
959e1be01c Translated using Weblate (Dutch)
Currently translated at 22.4% (88 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-20 15:07:20 +01:00
Anonymous
30b29e504f Translated using Weblate (Vietnamese)
Currently translated at 11.2% (44 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-20 15:07:20 +01:00
Anonymous
7e39341dc0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.1% (79 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-20 15:07:19 +01:00
Anonymous
78d8680710 Translated using Weblate (Italian)
Currently translated at 73.4% (288 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-20 15:07:19 +01:00
Anonymous
4330c6d04c Translated using Weblate (Chinese (Simplified))
Currently translated at 85.4% (335 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-20 15:07:19 +01:00
Anonymous
9aa41e620b Translated using Weblate (Russian)
Currently translated at 12.2% (48 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-20 15:07:18 +01:00
Anonymous
a20bc95cd7 Translated using Weblate (Portuguese)
Currently translated at 95.6% (375 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-20 15:07:18 +01:00
Anonymous
ef70a7fd42 Translated using Weblate (French)
Currently translated at 99.7% (391 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-20 15:07:18 +01:00
Anonymous
6ef4520234 Translated using Weblate (Spanish)
Currently translated at 99.7% (391 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-20 15:07:18 +01:00
Anonymous
7efffda7ec Translated using Weblate (German)
Currently translated at 92.6% (363 of 392 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-20 15:07:17 +01:00
Nonoss117
c72bd392f4 Translated using Weblate (French)
Currently translated at 100.0% (391 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-20 15:06:11 +01:00
gallegonovato
5bde439500 Translated using Weblate (Spanish)
Currently translated at 100.0% (391 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-20 15:06:11 +01:00
shamoon
606bcdc835 Add docker healthy translation 2023-03-20 07:02:39 -07:00
shamoon
07b896832b Merge pull request #1121 from shalak/enhance_nextcloud_widget
Add support of NC-Token to Nextcloud widget
2023-03-19 23:03:27 -07:00
shamoon
7d8da29e57 Update credentialed.js 2023-03-19 23:03:12 -07:00
Anonymous
5261f74c7c Translated using Weblate (Slovak)
Currently translated at 2.3% (9 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-03-20 07:01:42 +01:00
Anonymous
5c51683e8c Translated using Weblate (Thai)
Currently translated at 12.0% (47 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-20 07:01:42 +01:00
Anonymous
dd1a322260 Translated using Weblate (Latvian)
Currently translated at 30.4% (119 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-20 07:01:42 +01:00
Anonymous
c4755e117f Translated using Weblate (Japanese)
Currently translated at 3.8% (15 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-20 07:01:41 +01:00
Anonymous
aefcdd2dc5 Translated using Weblate (Ukrainian)
Currently translated at 97.6% (382 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-20 07:01:41 +01:00
Anonymous
dde8ec92b0 Translated using Weblate (Esperanto)
Currently translated at 26.3% (103 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-20 07:01:40 +01:00
Anonymous
a35b1dc428 Translated using Weblate (Hindi)
Currently translated at 2.3% (9 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-20 07:01:40 +01:00
Anonymous
3165ae5c0c Translated using Weblate (Malay)
Currently translated at 64.7% (253 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-20 07:01:40 +01:00
Anonymous
4b1f96b86b Translated using Weblate (Danish)
Currently translated at 50.6% (198 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-20 07:01:39 +01:00
Anonymous
e15ff18abc Translated using Weblate (Czech)
Currently translated at 86.1% (337 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-20 07:01:39 +01:00
Anonymous
ccd4cee723 Translated using Weblate (Arabic)
Currently translated at 67.0% (262 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-20 07:01:38 +01:00
Anonymous
a6b92b4be5 Translated using Weblate (Serbian)
Currently translated at 2.3% (9 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-20 07:01:38 +01:00
Anonymous
9f166fa737 Translated using Weblate (Turkish)
Currently translated at 81.0% (317 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-20 07:01:37 +01:00
Anonymous
cd5c61d31c Translated using Weblate (Bulgarian)
Currently translated at 11.7% (46 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-20 07:01:37 +01:00
Anonymous
91da884b73 Translated using Weblate (Telugu)
Currently translated at 55.4% (217 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-20 07:01:36 +01:00
Anonymous
5d83064599 Translated using Weblate (Finnish)
Currently translated at 45.5% (178 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-20 07:01:36 +01:00
Anonymous
e16da44af7 Translated using Weblate (Yue)
Currently translated at 30.1% (118 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-20 07:01:36 +01:00
Anonymous
c0e6cb0ed8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.6% (382 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-20 07:01:35 +01:00
Anonymous
f9859c5ce1 Translated using Weblate (Romanian)
Currently translated at 35.0% (137 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-20 07:01:35 +01:00
Anonymous
48e1375f77 Translated using Weblate (Hebrew)
Currently translated at 25.8% (101 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-20 07:01:35 +01:00
Anonymous
aa30102bc0 Translated using Weblate (Hungarian)
Currently translated at 27.6% (108 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-20 07:01:34 +01:00
Anonymous
18c89bdb68 Translated using Weblate (Croatian)
Currently translated at 73.1% (286 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-20 07:01:34 +01:00
Anonymous
48db343d14 Translated using Weblate (Swedish)
Currently translated at 33.7% (132 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-20 07:01:33 +01:00
Anonymous
c2e9ffb65c Translated using Weblate (Polish)
Currently translated at 72.8% (285 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-20 07:01:33 +01:00
Anonymous
1fd015b203 Translated using Weblate (Catalan)
Currently translated at 65.9% (258 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-20 07:01:32 +01:00
Anonymous
3892575350 Translated using Weblate (Chinese (Traditional))
Currently translated at 90.5% (354 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-20 07:01:32 +01:00
Anonymous
8baa0be5ff Translated using Weblate (Dutch)
Currently translated at 22.5% (88 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-20 07:01:32 +01:00
Anonymous
2e375c2bb5 Translated using Weblate (Vietnamese)
Currently translated at 11.2% (44 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-20 07:01:31 +01:00
Anonymous
84a3f7155d Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.2% (79 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-20 07:01:31 +01:00
Anonymous
0ca175e75d Translated using Weblate (Italian)
Currently translated at 73.6% (288 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-20 07:01:30 +01:00
Anonymous
44d4eba975 Translated using Weblate (Chinese (Simplified))
Currently translated at 85.6% (335 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-20 07:01:30 +01:00
Anonymous
b658d807cb Translated using Weblate (Russian)
Currently translated at 12.2% (48 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-20 07:01:30 +01:00
Anonymous
06384ce2a7 Translated using Weblate (Portuguese)
Currently translated at 95.9% (375 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-20 07:01:29 +01:00
Anonymous
18c923517a Translated using Weblate (French)
Currently translated at 97.6% (382 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-20 07:01:29 +01:00
Anonymous
4b3f44000c Translated using Weblate (Spanish)
Currently translated at 97.6% (382 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-20 07:01:29 +01:00
Anonymous
bb03c7bae7 Translated using Weblate (German)
Currently translated at 92.8% (363 of 391 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-20 07:01:28 +01:00
Smexhy
e12baeeb9a Translated using Weblate (Czech)
Currently translated at 88.2% (337 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-20 06:59:58 +01:00
shamoon
f149d292bc Merge pull request #1124 from benphelps/fix-1123
Add translation for some missing items
2023-03-19 22:59:52 -07:00
shamoon
401b35bea9 Add translation for some missing items
Closes #1123
2023-03-19 22:58:47 -07:00
Mirek Szajowski
94dc5ad0e5 Add support of NC-Token to Nextcloud widget 2023-03-20 03:03:43 +01:00
Anonymous
b488d6a13c Translated using Weblate (Slovak)
Currently translated at 100.0% (0 of 0 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-03-19 22:19:13 +01:00
Ladislav Križo
374099b2cc Added translation using Weblate (Slovak) 2023-03-19 22:18:36 +01:00
Dan
5eb0c9b19e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (382 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-18 02:39:06 +01:00
Smexhy
1f20d5188e Translated using Weblate (Czech)
Currently translated at 88.2% (337 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-18 02:39:06 +01:00
PedroBuffon
da81c1de4e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (382 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-18 02:39:05 +01:00
Nonoss117
885c078231 Translated using Weblate (French)
Currently translated at 100.0% (382 of 382 strings)

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

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-18 02:39:04 +01:00
Anonymous
8f9f0d8181 Translated using Weblate (Thai)
Currently translated at 12.3% (47 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-15 18:42:20 +01:00
Anonymous
a1dee40ed6 Translated using Weblate (Latvian)
Currently translated at 31.1% (119 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-15 18:42:20 +01:00
Anonymous
4738f1cf54 Translated using Weblate (Japanese)
Currently translated at 3.9% (15 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-15 18:42:20 +01:00
Anonymous
98fef9729f Translated using Weblate (Ukrainian)
Currently translated at 98.9% (378 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-15 18:42:20 +01:00
Anonymous
6c23f047e0 Translated using Weblate (Esperanto)
Currently translated at 26.9% (103 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-15 18:42:20 +01:00
Anonymous
7e0c258a45 Translated using Weblate (Hindi)
Currently translated at 2.3% (9 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-15 18:42:20 +01:00
Anonymous
9d570dc477 Translated using Weblate (Malay)
Currently translated at 66.2% (253 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-15 18:42:20 +01:00
Anonymous
99b4bd5b5f Translated using Weblate (Danish)
Currently translated at 51.8% (198 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-15 18:42:20 +01:00
Anonymous
8eee91615f Translated using Weblate (Czech)
Currently translated at 82.7% (316 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-15 18:42:20 +01:00
Anonymous
c0a064b32b Translated using Weblate (Arabic)
Currently translated at 68.5% (262 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-15 18:42:20 +01:00
Anonymous
0dc8aa2f31 Translated using Weblate (Serbian)
Currently translated at 2.3% (9 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-15 18:42:20 +01:00
Anonymous
fad3d142d2 Translated using Weblate (Turkish)
Currently translated at 82.9% (317 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-15 18:42:20 +01:00
Anonymous
994f2f992e Translated using Weblate (Bulgarian)
Currently translated at 12.0% (46 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-15 18:42:19 +01:00
Anonymous
20aabbbe7e Translated using Weblate (Telugu)
Currently translated at 56.8% (217 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-15 18:42:19 +01:00
Anonymous
b2baf72399 Translated using Weblate (Finnish)
Currently translated at 46.5% (178 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-15 18:42:19 +01:00
Anonymous
67ea7a7fda Translated using Weblate (Yue)
Currently translated at 30.8% (118 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-15 18:42:19 +01:00
Anonymous
cce24d7104 Translated using Weblate (Portuguese (Brazil))
Currently translated at 94.5% (361 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-15 18:42:19 +01:00
Anonymous
e9515f0fde Translated using Weblate (Romanian)
Currently translated at 35.8% (137 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-15 18:42:19 +01:00
Anonymous
34c7fe7052 Translated using Weblate (Hebrew)
Currently translated at 26.4% (101 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-15 18:42:19 +01:00
Anonymous
740d61d37a Translated using Weblate (Hungarian)
Currently translated at 28.2% (108 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-15 18:42:19 +01:00
Anonymous
5242c8855e Translated using Weblate (Croatian)
Currently translated at 74.8% (286 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-15 18:42:19 +01:00
Anonymous
a19b354f25 Translated using Weblate (Swedish)
Currently translated at 34.5% (132 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-15 18:42:19 +01:00
Anonymous
aec0253cf2 Translated using Weblate (Polish)
Currently translated at 74.6% (285 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-15 18:42:19 +01:00
Anonymous
5772e02646 Translated using Weblate (Catalan)
Currently translated at 67.5% (258 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-15 18:42:19 +01:00
Anonymous
cc422a4078 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.6% (354 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-15 18:42:19 +01:00
Anonymous
0cd1af5306 Translated using Weblate (Dutch)
Currently translated at 23.0% (88 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-15 18:42:19 +01:00
Anonymous
a956e67da8 Translated using Weblate (Vietnamese)
Currently translated at 11.5% (44 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-15 18:42:19 +01:00
Anonymous
d6bb006a06 Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.6% (79 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-15 18:42:19 +01:00
Anonymous
71813bc0d9 Translated using Weblate (Italian)
Currently translated at 75.3% (288 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-15 18:42:19 +01:00
Anonymous
1ec33d0740 Translated using Weblate (Chinese (Simplified))
Currently translated at 87.6% (335 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-15 18:42:19 +01:00
Anonymous
fbef105685 Translated using Weblate (Russian)
Currently translated at 12.5% (48 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-15 18:42:19 +01:00
Anonymous
c98ad4066d Translated using Weblate (Portuguese)
Currently translated at 98.1% (375 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-15 18:42:19 +01:00
Anonymous
9a4bcf6720 Translated using Weblate (French)
Currently translated at 98.9% (378 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-15 18:42:19 +01:00
Anonymous
cffa0d7489 Translated using Weblate (Spanish)
Currently translated at 98.9% (378 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-15 18:42:19 +01:00
Anonymous
9d64b08c1a Translated using Weblate (German)
Currently translated at 95.0% (363 of 382 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-15 18:42:19 +01:00
Smexhy
344bee5378 Translated using Weblate (Czech)
Currently translated at 83.5% (316 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-15 18:42:19 +01:00
shamoon
fe860992c0 Merge pull request #1111 from benphelps/fix-1110
Fix: Add padding to values in resources widget
2023-03-15 10:42:12 -07:00
shamoon
70a15838d5 Merge pull request #1085 from benphelps/audiobookshelf-widget
Add audiobookshelf widget
2023-03-15 10:41:27 -07:00
shamoon
69fcd3f0c8 Add padding to values in resources widget
Closes #1110
2023-03-15 10:27:01 -07:00
Dan
f2f74288f6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (378 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-15 12:36:59 +01:00
ssantos
6901023a0c Translated using Weblate (Portuguese)
Currently translated at 99.2% (375 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-14 02:36:45 +01:00
Nonoss117
e1a1dbcc82 Translated using Weblate (French)
Currently translated at 100.0% (378 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-13 22:40:44 +01:00
gallegonovato
bfc083544a Translated using Weblate (Spanish)
Currently translated at 100.0% (378 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-13 22:40:43 +01:00
Anonymous
d6d5c3cbda Translated using Weblate (Thai)
Currently translated at 12.4% (47 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-13 02:57:41 +01:00
Anonymous
6cd31f0dd4 Translated using Weblate (Latvian)
Currently translated at 31.4% (119 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-13 02:57:41 +01:00
Anonymous
9240a84ec9 Translated using Weblate (Japanese)
Currently translated at 3.9% (15 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-13 02:57:40 +01:00
Anonymous
71376204a6 Translated using Weblate (Ukrainian)
Currently translated at 98.9% (374 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-13 02:57:40 +01:00
Anonymous
b75a3a4f41 Translated using Weblate (Esperanto)
Currently translated at 27.2% (103 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-13 02:57:39 +01:00
Anonymous
b395839a2f Translated using Weblate (Hindi)
Currently translated at 2.3% (9 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-13 02:57:39 +01:00
Anonymous
6d2022d6eb Translated using Weblate (Malay)
Currently translated at 66.9% (253 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-13 02:57:39 +01:00
Anonymous
e0532cbc6a Translated using Weblate (Danish)
Currently translated at 52.3% (198 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-13 02:57:38 +01:00
Anonymous
ff69a8ecd7 Translated using Weblate (Czech)
Currently translated at 66.1% (250 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-13 02:57:38 +01:00
Anonymous
cdd11a8762 Translated using Weblate (Arabic)
Currently translated at 69.3% (262 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-13 02:57:38 +01:00
Anonymous
cd0bb9df57 Translated using Weblate (Serbian)
Currently translated at 2.3% (9 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-13 02:57:37 +01:00
Anonymous
effc1f190f Translated using Weblate (Turkish)
Currently translated at 83.8% (317 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-13 02:57:37 +01:00
Anonymous
d8408562aa Translated using Weblate (Bulgarian)
Currently translated at 12.1% (46 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-13 02:57:36 +01:00
Anonymous
d687434b1f Translated using Weblate (Telugu)
Currently translated at 57.4% (217 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-13 02:57:36 +01:00
Anonymous
95560033d2 Translated using Weblate (Finnish)
Currently translated at 47.0% (178 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-13 02:57:35 +01:00
Anonymous
f9db8c4a6b Translated using Weblate (Yue)
Currently translated at 31.2% (118 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-13 02:57:35 +01:00
Anonymous
363e0a682b Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.5% (361 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-13 02:57:35 +01:00
Anonymous
d6d1c97ee0 Translated using Weblate (Romanian)
Currently translated at 36.2% (137 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-13 02:57:34 +01:00
Anonymous
6f72c4e52d Translated using Weblate (Hebrew)
Currently translated at 26.7% (101 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-13 02:57:34 +01:00
Anonymous
3c1f53410e Translated using Weblate (Hungarian)
Currently translated at 28.5% (108 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-13 02:57:33 +01:00
Anonymous
bcecded090 Translated using Weblate (Croatian)
Currently translated at 75.6% (286 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-13 02:57:33 +01:00
Anonymous
f6f1384da7 Translated using Weblate (Swedish)
Currently translated at 34.9% (132 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-13 02:57:33 +01:00
Anonymous
8e80868027 Translated using Weblate (Polish)
Currently translated at 75.3% (285 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-13 02:57:32 +01:00
Anonymous
ec70a71d16 Translated using Weblate (Catalan)
Currently translated at 68.2% (258 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-13 02:57:32 +01:00
Anonymous
4b4138b876 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.6% (354 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-13 02:57:32 +01:00
Anonymous
90675c6a14 Translated using Weblate (Dutch)
Currently translated at 23.2% (88 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-13 02:57:31 +01:00
Anonymous
8a7bcaf7f7 Translated using Weblate (Vietnamese)
Currently translated at 11.6% (44 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-13 02:57:31 +01:00
Anonymous
1cf9961ee8 Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.8% (79 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-13 02:57:30 +01:00
Anonymous
415c1bcb09 Translated using Weblate (Italian)
Currently translated at 76.1% (288 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-13 02:57:30 +01:00
Anonymous
bf032bdc12 Translated using Weblate (Chinese (Simplified))
Currently translated at 88.6% (335 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-13 02:57:30 +01:00
Anonymous
9dd04020ef Translated using Weblate (Russian)
Currently translated at 12.6% (48 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-13 02:57:29 +01:00
Anonymous
09401caf7b Translated using Weblate (Portuguese)
Currently translated at 67.7% (256 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-13 02:57:29 +01:00
Anonymous
a112b6ddb8 Translated using Weblate (French)
Currently translated at 98.9% (374 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-13 02:57:29 +01:00
Anonymous
16ed4faeee Translated using Weblate (Spanish)
Currently translated at 98.9% (374 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-13 02:57:28 +01:00
Anonymous
7418bb019a Translated using Weblate (German)
Currently translated at 96.0% (363 of 378 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-13 02:57:28 +01:00
Starxy
bff522eb9d Translated using Weblate (Chinese (Simplified))
Currently translated at 89.5% (335 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-13 02:55:50 +01:00
Nonoss117
cea5b4d841 Translated using Weblate (French)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-13 02:55:50 +01:00
Rabenherz112
d5cd78e0c9 Translated using Weblate (German)
Currently translated at 97.0% (363 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-13 02:55:50 +01:00
shamoon
3b5fa0ed13 Merge pull request #1101 from jagadam97/main
Feature: support optional media counts in jellyfin / emby widgets
2023-03-12 18:55:43 -07:00
shamoon
eaf7ba608b Fix blocks for emby/jellyfin, support enable/disable 2023-03-12 16:50:28 -07:00
Dinesh Reddy J
29c7a51b04 modified: src/widgets/emby/component.jsx 2023-03-12 22:11:15 +05:30
Dinesh Reddy J
263801677a Added Jellyfin Widget to show number of movies,Series, Episodes songs #264 2023-03-12 21:57:13 +05:30
Nonoss117
eaec0f075c Translated using Weblate (French)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-11 14:40:04 +01:00
shamoon
c00946cdc5 Merge pull request #1093 from Zlendy/immich
Fix: Use human readable units for storage in Immich widget
2023-03-10 19:15:48 -08:00
Zlendy
78642a36d0 Fix: immich API now returns bytes for storage 2023-03-10 19:15:37 -08:00
Bastian
fb15f5dbc9 Translated using Weblate (German)
Currently translated at 94.9% (355 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-09 10:38:32 +01:00
Bastian
c9daea1f22 Translated using Weblate (German)
Currently translated at 72.7% (272 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-07 23:33:17 +01:00
Rabenherz112
924ba2f2cf Translated using Weblate (German)
Currently translated at 61.2% (229 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-06 10:40:10 +01:00
shamoon
a55bc357fd Add audiobookshelf widget 2023-03-05 23:34:46 -08:00
shamoon
b8a1b90713 Update credentialed.js 2023-03-05 23:32:27 -08:00
Dan
c2cdb773dc Translated using Weblate (Ukrainian)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-04 14:39:47 +01:00
Nonoss117
ed2fd3726f Translated using Weblate (French)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-04 14:39:46 +01:00
Raphaël Catarino
cab4801211 Translated using Weblate (French)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-04 14:39:46 +01:00
gallegonovato
a824cb8ccd Translated using Weblate (Spanish)
Currently translated at 100.0% (374 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-04 14:39:46 +01:00
shamoon
31470a4459 Merge pull request #1080 from afknst/main
Fix: Cannot access qBittorrent from quick launch
2023-03-03 06:57:00 -08:00
afknst
8f2d5b7bf9 Merge branch 'benphelps:main' into main 2023-03-03 12:48:48 +01:00
afknst
3d4654d592 Fix: Cannot access qBittorrent from quick launch #1079 2023-03-03 12:41:33 +01:00
shamoon
30f04f75f2 use correct rutorrent rate units 2023-03-03 00:55:05 -08:00
shamoon
26246c5997 fix deluge units 2023-03-03 00:48:28 -08:00
shamoon
8c97bf6213 Merge pull request #1078 from benphelps/fix-1077
Fix: use correct rate units for pyload
2023-03-03 00:36:01 -08:00
shamoon
6db6c823c4 use correct rate units for pyload 2023-03-03 00:34:51 -08:00
Anonymous
c3185240ff Translated using Weblate (Thai)
Currently translated at 12.5% (47 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-02 15:46:49 +01:00
Anonymous
8f70ee6d48 Translated using Weblate (Latvian)
Currently translated at 31.8% (119 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-02 15:46:49 +01:00
Anonymous
980b509128 Translated using Weblate (Japanese)
Currently translated at 4.0% (15 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-02 15:46:48 +01:00
Anonymous
ac05b12b60 Translated using Weblate (Ukrainian)
Currently translated at 99.1% (371 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-02 15:46:48 +01:00
Anonymous
d490a53dd7 Translated using Weblate (Esperanto)
Currently translated at 27.5% (103 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-02 15:46:47 +01:00
Anonymous
7dd6be471f Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-02 15:46:47 +01:00
Anonymous
e7d40d3c95 Translated using Weblate (Malay)
Currently translated at 67.6% (253 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-02 15:46:47 +01:00
Anonymous
8448ca6bee Translated using Weblate (Danish)
Currently translated at 52.9% (198 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-02 15:46:46 +01:00
Anonymous
fc87e539a0 Translated using Weblate (Czech)
Currently translated at 66.8% (250 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-02 15:46:46 +01:00
Anonymous
486d7aa125 Translated using Weblate (Arabic)
Currently translated at 70.0% (262 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-02 15:46:45 +01:00
Anonymous
a23d7cd440 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-02 15:46:45 +01:00
Anonymous
1b706d86f0 Translated using Weblate (Turkish)
Currently translated at 84.7% (317 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-02 15:46:44 +01:00
Anonymous
2ae6780346 Translated using Weblate (Bulgarian)
Currently translated at 12.2% (46 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-02 15:46:44 +01:00
Anonymous
7db6e80173 Translated using Weblate (Telugu)
Currently translated at 58.0% (217 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-02 15:46:44 +01:00
Anonymous
2a45580621 Translated using Weblate (Finnish)
Currently translated at 47.5% (178 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-02 15:46:43 +01:00
Anonymous
e66e87cec6 Translated using Weblate (Yue)
Currently translated at 31.5% (118 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-02 15:46:43 +01:00
Anonymous
392f725319 Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.5% (361 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-02 15:46:43 +01:00
Anonymous
20f074fa7d Translated using Weblate (Romanian)
Currently translated at 36.6% (137 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-02 15:46:42 +01:00
Anonymous
921f3d7812 Translated using Weblate (Hebrew)
Currently translated at 27.0% (101 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-02 15:46:42 +01:00
Anonymous
5c1238c874 Translated using Weblate (Hungarian)
Currently translated at 28.8% (108 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-02 15:46:41 +01:00
Anonymous
5e74acbada Translated using Weblate (Croatian)
Currently translated at 76.4% (286 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-02 15:46:41 +01:00
Anonymous
ca726ea953 Translated using Weblate (Swedish)
Currently translated at 35.2% (132 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-02 15:46:41 +01:00
Anonymous
d3ccd072d4 Translated using Weblate (Polish)
Currently translated at 76.2% (285 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-02 15:46:40 +01:00
Anonymous
9902706073 Translated using Weblate (Catalan)
Currently translated at 68.9% (258 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-02 15:46:40 +01:00
Anonymous
4bf53a6cbd Translated using Weblate (Chinese (Traditional))
Currently translated at 94.6% (354 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-02 15:46:40 +01:00
Anonymous
1495f2ab11 Translated using Weblate (Dutch)
Currently translated at 23.5% (88 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-02 15:46:39 +01:00
Anonymous
42bca2ff48 Translated using Weblate (Vietnamese)
Currently translated at 11.7% (44 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-02 15:46:39 +01:00
Anonymous
939b7bc5c7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.1% (79 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-02 15:46:38 +01:00
Anonymous
b5b19482f4 Translated using Weblate (Italian)
Currently translated at 77.0% (288 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-02 15:46:38 +01:00
Anonymous
9cec8a88fe Translated using Weblate (Chinese (Simplified))
Currently translated at 88.5% (331 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-02 15:46:38 +01:00
Anonymous
fc35de0cb7 Translated using Weblate (Russian)
Currently translated at 12.8% (48 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-02 15:46:38 +01:00
Anonymous
63200511e0 Translated using Weblate (Portuguese)
Currently translated at 68.4% (256 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-02 15:46:37 +01:00
Anonymous
7f9fc716bb Translated using Weblate (French)
Currently translated at 99.1% (371 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-02 15:46:37 +01:00
Anonymous
d66c33b071 Translated using Weblate (Spanish)
Currently translated at 99.1% (371 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-02 15:46:37 +01:00
Anonymous
803a9435d2 Translated using Weblate (German)
Currently translated at 60.9% (228 of 374 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-02 15:46:36 +01:00
shamoon
711dde6741 Merge pull request #1071 from math625f/main
Added Ghostfolio widget
2023-03-02 06:45:59 -08:00
Dan
0feb0570c9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (371 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-02 13:37:01 +01:00
Nonoss117
e1dec3e735 Translated using Weblate (French)
Currently translated at 100.0% (371 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-02 13:37:01 +01:00
gallegonovato
29b1805ab5 Translated using Weblate (Spanish)
Currently translated at 100.0% (371 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-02 13:37:01 +01:00
Mathias R
27a2b08c27 Removed unused translation key 2023-03-02 08:22:54 +01:00
shamoon
e11589f52e simplify ghostfolio widget 2023-03-01 22:45:22 -08:00
Mathias R
e97fdc17be Added Ghostfolio widget 2023-03-01 19:44:13 +01:00
Anonymous
cb554f269c Translated using Weblate (Thai)
Currently translated at 12.6% (47 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-03-01 07:14:57 +01:00
Anonymous
91cc6b1b1a Translated using Weblate (Latvian)
Currently translated at 32.0% (119 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-03-01 07:14:56 +01:00
Anonymous
96e62d86a7 Translated using Weblate (Japanese)
Currently translated at 4.0% (15 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-03-01 07:14:56 +01:00
Anonymous
7ad91fdaf0 Translated using Weblate (Ukrainian)
Currently translated at 97.3% (361 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-03-01 07:14:55 +01:00
Anonymous
b7fe38f362 Translated using Weblate (Esperanto)
Currently translated at 27.7% (103 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-03-01 07:14:55 +01:00
Anonymous
0bca9e5f0c Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-03-01 07:14:55 +01:00
Anonymous
c2474a3080 Translated using Weblate (Malay)
Currently translated at 68.1% (253 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-03-01 07:14:54 +01:00
Anonymous
311c62df4f Translated using Weblate (Danish)
Currently translated at 53.3% (198 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-03-01 07:14:54 +01:00
Anonymous
f48974e7b6 Translated using Weblate (Czech)
Currently translated at 67.3% (250 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-03-01 07:14:53 +01:00
Anonymous
8320b23655 Translated using Weblate (Arabic)
Currently translated at 70.6% (262 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-03-01 07:14:53 +01:00
Anonymous
d26eca4146 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-03-01 07:14:53 +01:00
Anonymous
b4fcdbb2ae Translated using Weblate (Turkish)
Currently translated at 85.4% (317 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-03-01 07:14:52 +01:00
Anonymous
e1dfacd90b Translated using Weblate (Bulgarian)
Currently translated at 12.3% (46 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-03-01 07:14:52 +01:00
Anonymous
8309d5735d Translated using Weblate (Telugu)
Currently translated at 58.4% (217 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-03-01 07:14:51 +01:00
Anonymous
58d888c149 Translated using Weblate (Finnish)
Currently translated at 47.9% (178 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-03-01 07:14:51 +01:00
Anonymous
26c70e6bac Translated using Weblate (Yue)
Currently translated at 31.8% (118 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-03-01 07:14:51 +01:00
Anonymous
7f849d26a8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.3% (361 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-03-01 07:14:50 +01:00
Anonymous
20a1c0e9e7 Translated using Weblate (Romanian)
Currently translated at 36.9% (137 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-03-01 07:14:50 +01:00
Anonymous
4afef12acd Translated using Weblate (Hebrew)
Currently translated at 27.2% (101 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-03-01 07:14:49 +01:00
Anonymous
9160947c93 Translated using Weblate (Hungarian)
Currently translated at 29.1% (108 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-03-01 07:14:49 +01:00
Anonymous
a4b06288ca Translated using Weblate (Croatian)
Currently translated at 77.0% (286 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-03-01 07:14:49 +01:00
Anonymous
9596870d6a Translated using Weblate (Swedish)
Currently translated at 35.5% (132 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-03-01 07:14:48 +01:00
Anonymous
992d46c54b Translated using Weblate (Polish)
Currently translated at 76.8% (285 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-03-01 07:14:48 +01:00
Anonymous
080c9ce17c Translated using Weblate (Catalan)
Currently translated at 69.5% (258 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-03-01 07:14:48 +01:00
Anonymous
1c65c4c904 Translated using Weblate (Chinese (Traditional))
Currently translated at 95.4% (354 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-03-01 07:14:47 +01:00
Anonymous
68dd83e152 Translated using Weblate (Dutch)
Currently translated at 23.7% (88 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-03-01 07:14:46 +01:00
Anonymous
6cc07dbf69 Translated using Weblate (Vietnamese)
Currently translated at 11.8% (44 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-03-01 07:14:46 +01:00
Anonymous
cf11707bd9 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.2% (79 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-03-01 07:14:46 +01:00
Anonymous
070a255cb4 Translated using Weblate (Italian)
Currently translated at 77.6% (288 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-03-01 07:14:45 +01:00
Anonymous
007051b673 Translated using Weblate (Chinese (Simplified))
Currently translated at 89.2% (331 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-03-01 07:14:45 +01:00
Anonymous
1b180bdceb Translated using Weblate (Russian)
Currently translated at 12.9% (48 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-03-01 07:14:45 +01:00
Anonymous
b09e526006 Translated using Weblate (Portuguese)
Currently translated at 69.0% (256 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-03-01 07:14:44 +01:00
Anonymous
751fbc4b6e Translated using Weblate (French)
Currently translated at 98.6% (366 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-01 07:14:44 +01:00
Anonymous
8c067616e2 Translated using Weblate (Spanish)
Currently translated at 98.6% (366 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-01 07:14:44 +01:00
Anonymous
3e225fa37c Translated using Weblate (German)
Currently translated at 61.4% (228 of 371 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-03-01 07:14:43 +01:00
Nonoss117
20fc755078 Translated using Weblate (French)
Currently translated at 100.0% (366 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-03-01 07:13:19 +01:00
gallegonovato
2800029edc Translated using Weblate (Spanish)
Currently translated at 100.0% (366 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-01 07:13:19 +01:00
shamoon
65b23b9674 Merge pull request #1067 from Sairenity/1042-minecraft-server-status
Minecraft server status widget
2023-02-28 22:13:13 -08:00
Jason Fischer
3db5435c19 Merge pull request #1043 from jameswynn/variable-substitution
Added support for environment variable substitution
2023-02-28 20:14:30 -08:00
shamoon
c6e76f4e31 move minecraft proxy & use url key 2023-02-28 08:50:43 -08:00
Sairenity
b36ef0234e refactor widget.js, return http 200 when server is offline 2023-02-28 16:22:43 +00:00
Sairenity
ad66637ff1 rewrite minecraft server status widget to directly ping server 2023-02-28 11:49:39 +00:00
Sairenity
f418ee6327 Add minecraft server status indicator 2023-02-27 11:59:37 +00:00
Sairenity
8f3ae6d674 added english translations for minecraft server status 2023-02-23 18:33:42 +00:00
Sairenity
8604418fb1 implemented fetching of minecraft server status 2023-02-23 18:30:44 +00:00
shamoon
b2d22d7574 Cache config env variables & check if config contains variables before substitution 2023-02-23 09:51:28 -08:00
James Wynn
e0f1aae4d5 Added support for environment variable substitution
* Only environment variables starting with HOMEPAGE_VAR_ and HOMEPAGE_FILE_
  are supported
* The value of env var HOMEPAGE_VAR_XXX will replace {{HOMEPAGE_VAR_XXX}}
  in any config
* The value of env var HOMEPAGE_FILE_XXX must be a file path, the contents
  of which will be used to replace {{HOMEPAGE_FILE_XXX}} in any config
* If a substituted value contains a variable reference it may also be
  replaced, but the behavior is non-deterministic
2023-02-23 08:50:25 -06:00
86 changed files with 6619 additions and 5807 deletions

View File

@@ -3,7 +3,7 @@
"build": { "build": {
"dockerfile": "Dockerfile", "dockerfile": "Dockerfile",
"args": { "args": {
"VARIANT": "18-buster" "VARIANT": "18-bullseye"
} }
}, },
"customizations": { "customizations": {

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
/node_modules /node_modules
/.pnp /.pnp
.pnp.js .pnp.js
.pnpm-store
# testing # testing
/coverage /coverage

View File

@@ -37,8 +37,7 @@
- **Secure!** Every API request to backend services goes through a proxy server, so your API keys are never exposed to the frontend client. - **Secure!** Every API request to backend services goes through a proxy server, so your API keys are never exposed to the frontend client.
- Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6 - Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6
- Supports all Raspberry Pi's, most SBCs & Apple Silicon - Supports all Raspberry Pi's, most SBCs & Apple Silicon
- Full i18n support with automatic language detection - Full i18n support with translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
- Translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
- Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/) - Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/)
- Service & Web Bookmarks - Service & Web Bookmarks
- Docker Integration - Docker Integration

4985
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -20,9 +20,10 @@
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.4.1", "json-rpc-2.0": "^1.4.1",
"memory-cache": "^0.2.0", "memory-cache": "^0.2.0",
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.1", "next": "^12.3.1",
"next-i18next": "^12.0.1", "next-i18next": "^12.0.1",
"node-os-utils": "^1.3.7", "osx-temperature-sensor": "^1.0.8",
"pretty-bytes": "^6.0.0", "pretty-bytes": "^6.0.0",
"raw-body": "^2.5.1", "raw-body": "^2.5.1",
"react": "^18.2.0", "react": "^18.2.0",
@@ -31,6 +32,7 @@
"react-icons": "^4.4.0", "react-icons": "^4.4.0",
"shvl": "^3.0.0", "shvl": "^3.0.0",
"swr": "^1.3.0", "swr": "^1.3.0",
"systeminformation": "^5.17.12",
"tough-cookie": "^4.1.2", "tough-cookie": "^4.1.2",
"winston": "^3.8.2", "winston": "^3.8.2",
"xml-js": "^1.6.11" "xml-js": "^1.6.11"

2249
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,14 @@
"free": "متاح", "free": "متاح",
"used": "مستخدم", "used": "مستخدم",
"load": "الضغط", "load": "الضغط",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "المستخدمون", "users": "المستخدمون",
@@ -107,13 +114,24 @@
"cpu": "المعالج", "cpu": "المعالج",
"offline": "غير متصل", "offline": "غير متصل",
"error": "خطأ", "error": "خطأ",
"unknown": "مجهول" "unknown": "مجهول",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "يعمل الآن", "playing": "يعمل الآن",
"transcoding": "التحويل", "transcoding": "التحويل",
"bitrate": "معدل البت", "bitrate": "معدل البت",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"songs": "Songs",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -277,7 +295,11 @@
"glances": { "glances": {
"cpu": "معالج", "cpu": "معالج",
"mem": "الذاكرة", "mem": "الذاكرة",
"wait": "الرجاء الإنتظار" "wait": "الرجاء الإنتظار",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "مفضلة", "bookmark": "مفضلة",
@@ -293,7 +315,10 @@
"update_available": "تحديث متاح", "update_available": "تحديث متاح",
"up_to_date": "حتى الآن", "up_to_date": "حتى الآن",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -33,7 +33,14 @@
"free": "Свободни", "free": "Свободни",
"used": "Заети", "used": "Заети",
"load": "Натоварване", "load": "Натоварване",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Потребители", "users": "Потребители",
@@ -59,13 +66,24 @@
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"partial": "Partial",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Възпроизвежда", "playing": "Възпроизвежда",
"transcoding": "Конвертира", "transcoding": "Конвертира",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Няма активни потоци" "no_active": "Няма активни потоци",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Възпроизвежда", "playing": "Възпроизвежда",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "Rejected", "rejectedPushes": "Rejected",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -39,7 +39,14 @@
"used": "Utilitzat", "used": "Utilitzat",
"load": "Càrrega", "load": "Càrrega",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rebut", "rx": "Rebut",
@@ -48,13 +55,24 @@
"cpu": "Processador", "cpu": "Processador",
"offline": "Fora de línia", "offline": "Fora de línia",
"error": "Error", "error": "Error",
"unknown": "Desconegut" "unknown": "Desconegut",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Reproduint", "playing": "Reproduint",
"transcoding": "Transcodificant", "transcoding": "Transcodificant",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sense reproduccions actives" "no_active": "Sense reproduccions actives",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduint", "playing": "Reproduint",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Processador", "cpu": "Processador",
"mem": "Memòria", "mem": "Memòria",
"wait": "Si us plau, espereu" "wait": "Si us plau, espereu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total d'observats", "totalObserved": "Total d'observats",
@@ -293,7 +315,10 @@
"update_available": "Actualització disponible", "update_available": "Actualització disponible",
"up_to_date": "Actualitzat", "up_to_date": "Actualitzat",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprovat", "approvedPushes": "Aprovat",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -14,11 +14,11 @@
"widget": { "widget": {
"missing_type": "Chybí typ widgetu: {{type}}", "missing_type": "Chybí typ widgetu: {{type}}",
"api_error": "Chyba API", "api_error": "Chyba API",
"status": "Status", "status": "Stav",
"information": "Informace", "information": "Informace",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Nevyřešená chyba",
"response_data": "Data odpovědi" "response_data": "Data odezvy"
}, },
"weather": { "weather": {
"current": "Aktuální poloha", "current": "Aktuální poloha",
@@ -35,7 +35,14 @@
"free": "Volné", "free": "Volné",
"used": "Využité", "used": "Využité",
"load": "Vytížení", "load": "Vytížení",
"mem": "MEM" "mem": "RAM",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"temp": "TEMP"
}, },
"unifi": { "unifi": {
"users": "Uživatelé", "users": "Uživatelé",
@@ -61,13 +68,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Chyba", "error": "Chyba",
"unknown": "Neznámý" "unknown": "Neznámý",
"running": "Běží",
"starting": "Startuje",
"unhealthy": "Nezdravý",
"not_found": "Nenalezen",
"exited": "Ukončen",
"partial": "Částečný",
"healthy": "Zdravý"
}, },
"emby": { "emby": {
"playing": "Přehrává", "playing": "Přehrává",
"transcoding": "Transkódování", "transcoding": "Transkódování",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Žádný aktivní stream" "no_active": "Žádný aktivní stream",
"movies": "Filmy",
"series": "Seriály",
"episodes": "Epizody",
"songs": "Písničky"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Celkem zjištěno", "totalObserved": "Celkem zjištěno",
@@ -102,33 +120,33 @@
"transmission": { "transmission": {
"download": "Stahování", "download": "Stahování",
"upload": "Nahrávání", "upload": "Nahrávání",
"leech": "Leecher", "leech": "Leecherů",
"seed": "Seeder" "seed": "Seedů"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Stahování", "download": "Stahování",
"upload": "Nahrávání", "upload": "Nahrávání",
"leech": "Leecher", "leech": "Leechované",
"seed": "Seeder" "seed": "Seedované"
}, },
"sonarr": { "sonarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"series": "Seriály" "series": "Seriály"
}, },
"radarr": { "radarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"missing": "Chybějící", "missing": "Chybějící",
"queued": "Ve frontě", "queued": "Ve frontě",
"movies": "Filmy" "movies": "Filmy"
}, },
"lidarr": { "lidarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"albums": "Alba" "albums": "Alba"
}, },
"readarr": { "readarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"books": "Knihy" "books": "Knihy"
}, },
@@ -139,23 +157,23 @@
"ombi": { "ombi": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný" "available": "Dostupné"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný" "available": "Dostupné"
}, },
"overseerr": { "overseerr": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný", "available": "Dostupné",
"processing": "Zpracováváno" "processing": "Zpracovávání"
}, },
"pihole": { "pihole": {
"queries": "Dotazy", "queries": "Dotazy",
"blocked": "Blokováno", "blocked": "Blokováno",
"gravity": "Gravitace" "gravity": "Gravity"
}, },
"adguard": { "adguard": {
"queries": "Dotazy", "queries": "Dotazy",
@@ -289,23 +307,30 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "RAM", "mem": "RAM",
"wait": "Prosím počkejte" "wait": "Prosím počkejte",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Záložka", "bookmark": "Záložka",
"service": "Služba", "service": "Služba",
"search": "Search", "search": "Hledat",
"custom": "Custom", "custom": "Vlastní",
"visit": "Visit", "visit": "Navštivte",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
"update_available": "Dostupná aktualizace", "update_available": "Dostupná",
"up_to_date": "Aktuální", "up_to_date": "Žádné",
"available_update": "Systém", "available_update": "Systém",
"updates": "Aktualizace", "updates": "Aktualizace",
"child_bridges": "Podřadné můstky", "child_bridges": "Podřadné můstky",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Zapnutý",
"pending": "Čeká se",
"down": "Vypnutý"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Naskenováno", "containers_scanned": "Naskenováno",
@@ -319,22 +344,22 @@
"indexers": "Indexery" "indexers": "Indexery"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "Žádné aktivní streams", "nothing_streaming": "Žádné aktivní streamy",
"please_wait": "Prosím vyčkejte" "please_wait": "Čekejte prosím"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Rychlost",
"active": "Active", "active": "Aktiv",
"queue": "Queue", "queue": "Fronta",
"total": "Total" "total": "Celkem"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Veřejná IP",
"region": "Region", "region": "Oblast",
"country": "Country" "country": "Stát"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanály",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
@@ -342,13 +367,13 @@
"ping": "Odezva" "ping": "Odezva"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Přijato",
"failed": "Failed", "failed": "Neúspěšné",
"unknown": "Unknown" "unknown": "Neznámé"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Doručená pošta",
"total": "Total" "total": "Celkem"
}, },
"deluge": { "deluge": {
"upload": "Nahrávání", "upload": "Nahrávání",
@@ -369,12 +394,12 @@
"saved": "Uložené" "saved": "Uložené"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Přečteno",
"unread": "Unread" "unread": "Nepřečteno"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Počkejte prosím",
"no_devices": "No Device Data Received" "no_devices": "Žádná přijatá data zařízení"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -394,130 +419,148 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "Zatížení procesoru",
"memoryUsed": "Memory Used", "memoryUsed": "Použitá paměť",
"uptime": "Uptime", "uptime": "Doba provozu",
"numberOfLeases": "Leases" "numberOfLeases": "Pronájmy"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Všechny proudy",
"streams_active": "Active Streams", "streams_active": "Aktivní proudy",
"streams_xepg": "XEPG Channels" "streams_xepg": "Kanály XEPG"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "Zatížení procesoru",
"memory": "Active Memory", "memory": "Aktivní paměť",
"wanUpload": "WAN Upload", "wanUpload": "Nahrávání WAN",
"wanDownload": "WAN Download" "wanDownload": "WAN Stažení"
}, },
"moonraker": { "moonraker": {
"print_progress": "Progress", "print_progress": "Progres",
"printer_state": "Printer State", "printer_state": "Stav tiskárny",
"print_status": "Print Status", "print_status": "Stav tisku",
"layers": "Layers" "layers": "Vrstvy"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Hledané",
"queued": "Queued", "queued": "Fronta",
"series": "Series" "series": "Série"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Stav",
"temp_tool": "Tool temp", "temp_tool": "Teplota nástroje",
"temp_bed": "Bed temp", "temp_bed": "Teplota postele",
"job_completion": "Completion" "job_completion": "Dokončení"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Původní IP",
"status": "Status" "status": "Stav"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Datové úložiště",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Neúspěšné úlohy 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Paměť"
}, },
"immich": { "immich": {
"users": "Users", "users": "Uživatelé",
"photos": "Photos", "photos": "Fotografie",
"videos": "Videos", "videos": "Videa",
"storage": "Storage" "storage": "Úložiště"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Stránky Up",
"down": "Sites Down", "down": "Stránky Down",
"uptime": "Uptime", "uptime": "Doba provozu",
"incident": "Incident", "incident": "Incident",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Knihovny",
"series": "Series", "series": "Série",
"books": "Books" "books": "Knihy"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Série",
"issues": "Issues", "issues": "Problémy",
"wanted": "Wanted" "wanted": "Hledá se"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Alba",
"photos": "Photos", "photos": "Fotografie",
"videos": "Videos", "videos": "Videa",
"people": "People" "people": "Lidé"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dni",
"uptime": "Uptime", "uptime": "Doba provozu",
"volumeAvailable": "Available" "volumeAvailable": "K dispozici"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Fronta",
"processing": "Processing", "processing": "Zpracování",
"processed": "Processed", "processed": "Zpracováno",
"time": "Time" "time": "Čas"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Přístrojové panely",
"datasources": "Data Sources", "datasources": "Zdroje dat",
"totalalerts": "Total Alerts", "totalalerts": "Celkový počet upozornění",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Spuštěné výstrahy"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "CPU zatížení",
"memoryusage": "Memory Usage", "memoryusage": "Využití paměti",
"freespace": "Free Space", "freespace": "Volný prostor",
"activeusers": "Active Users" "activeusers": "Aktivní uživatelé"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Stav",
"size": "Size", "size": "Velikost",
"lastrun": "Last Run", "lastrun": "Poslední spuštění",
"nextrun": "Next Run", "nextrun": "Další spuštění",
"failed": "Failed" "failed": "Neúspěšné"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Aktivní workers",
"total_workers": "Total Workers", "total_workers": "Workers celkem",
"records_total": "Queue Length" "records_total": "Délka fronty"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nové",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "V období odkladu",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pozastaveno",
"status": "Status", "status": "Stav",
"last_ping": "Last Ping", "last_ping": "Poslední ping",
"never": "No pings yet" "never": "Zatím žádné pingy"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servery",
"nodes": "Nodes" "nodes": "Uzly"
}, },
"prometheus": { "prometheus": {
"targets_down": "Targets Down", "targets_down": "Cíle vypnuté",
"targets_total": "Total Targets", "targets_total": "Cíle celkem",
"targets_up": "Targets Up" "targets_up": "Cíle zapnuté"
},
"minecraft": {
"up": "Online",
"down": "Offline",
"players": "Hráči",
"version": "Verze",
"status": "Stav"
},
"ghostfolio": {
"gross_percent_today": "Dnes",
"gross_percent_1y": "Jeden rok",
"gross_percent_max": "Za celou dobu"
},
"audiobookshelf": {
"podcasts": "Podcasty",
"books": "Knihy",
"podcastsDuration": "Trvání",
"booksDuration": "Trvání"
} }
} }

View File

@@ -68,7 +68,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "RAM", "mem": "RAM",
"wait": "Vent venligst" "wait": "Vent venligst",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
}, },
"wmo": { "wmo": {
"1-day": "Hovedsageligt solrigt", "1-day": "Hovedsageligt solrigt",
@@ -134,7 +138,10 @@
"update_available": "Opdateringer tilgængelige", "update_available": "Opdateringer tilgængelige",
"up_to_date": "Opdateret", "up_to_date": "Opdateret",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"widget": { "widget": {
"missing_type": "Manglende Widget Type: {{type}}", "missing_type": "Manglende Widget Type: {{type}}",
@@ -160,7 +167,14 @@
"free": "Fri", "free": "Fri",
"used": "Brugt", "used": "Brugt",
"load": "Belastning", "load": "Belastning",
"mem": "MEM" "mem": "MEM",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
}, },
"unifi": { "unifi": {
"users": "Brugere", "users": "Brugere",
@@ -186,13 +200,24 @@
"mem": "RAM", "mem": "RAM",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Afspiller", "playing": "Afspiller",
"transcoding": "Transcoder", "transcoding": "Transcoder",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams" "no_active": "Ingen Aktive Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observeret", "totalObserved": "Total Observeret",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"booksDuration": "Duration",
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration"
} }
} }

View File

@@ -4,8 +4,8 @@
"api_error": "API-Fehler", "api_error": "API-Fehler",
"status": "Status", "status": "Status",
"url": "URL", "url": "URL",
"information": "Information", "information": "Informationen",
"raw_error": "Raw Error", "raw_error": "Unbearbeiteter Fehler",
"response_data": "Empfangene Daten" "response_data": "Empfangene Daten"
}, },
"search": { "search": {
@@ -17,7 +17,14 @@
"used": "Gebraucht", "used": "Gebraucht",
"load": "Last", "load": "Last",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "RAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -25,14 +32,25 @@
"mem": "Mem", "mem": "Mem",
"cpu": "Prozessor", "cpu": "Prozessor",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Fehler",
"unknown": "Unknown" "unknown": "Unbekannt",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Spielen", "playing": "Spielen",
"transcoding": "Transcodierung", "transcoding": "Transcodierung",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Keine aktiven Streams" "no_active": "Keine aktiven Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spielen", "playing": "Spielen",
@@ -106,7 +124,7 @@
"pending": "Ausstehend", "pending": "Ausstehend",
"approved": "Genehmigt", "approved": "Genehmigt",
"available": "Verfügbar", "available": "Verfügbar",
"processing": "Processing" "processing": "Wird verarbeitet"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Geschwindigkeit", "rate": "Geschwindigkeit",
@@ -205,7 +223,7 @@
"devices": "Geräte", "devices": "Geräte",
"lan_devices": "LAN-Geräte", "lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN Geräte", "wlan_devices": "WLAN Geräte",
"empty_data": "Subsystem status unknown" "empty_data": "Subsystem status unbekannt"
}, },
"plex": { "plex": {
"streams": "Aktive Streams", "streams": "Aktive Streams",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Prozessor", "cpu": "Prozessor",
"mem": "RAM", "mem": "RAM",
"wait": "Bitte warten" "wait": "Bitte warten",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Gesamt beobachtet", "totalObserved": "Gesamt beobachtet",
@@ -282,9 +304,9 @@
"quicklaunch": { "quicklaunch": {
"bookmark": "Lesezeichen", "bookmark": "Lesezeichen",
"service": "Dienst", "service": "Dienst",
"search": "Search", "search": "Suchen",
"custom": "Custom", "custom": "Benutzerdefiniert",
"visit": "Visit", "visit": "Besuchen",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Aktualisierung verfügbar", "update_available": "Aktualisierung verfügbar",
"up_to_date": "Aktuell", "up_to_date": "Aktuell",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Genehmigt", "approvedPushes": "Genehmigt",
@@ -319,36 +344,36 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "No Active Streams", "nothing_streaming": "Keine Aktiven Übertragungen",
"please_wait": "Please Wait" "please_wait": "Bitte warten"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Geschwindigkeit",
"active": "Active", "active": "Aktiv",
"queue": "Queue", "queue": "Warteschlange",
"total": "Total" "total": "Gesamt"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Öffentliche IP",
"region": "Region", "region": "Region",
"country": "Country" "country": "Land"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanäle",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
"ping": "Ping", "ping": "Ping",
"error": "Error" "error": "Fehler"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Bestanden",
"failed": "Failed", "failed": "Fehlgeschlagen",
"unknown": "Unknown" "unknown": "Unbekannt"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Eingang",
"total": "Total" "total": "Gesamt"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Download",
@@ -363,29 +388,29 @@
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Warteschlange",
"processed": "Processed", "processed": "Verarbeitet",
"errored": "Errored", "errored": "Fehlgeschlagen",
"saved": "Saved" "saved": "Gespeichert"
}, },
"miniflux": { "miniflux": {
"unread": "Unread", "unread": "Ungelesen",
"read": "Read" "read": "Lesen"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Bitte Warten",
"no_devices": "No Device Data Received" "no_devices": "Keine Daten empfangen"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Verbundene APs",
"activeUser": "Active devices", "activeUser": "Aktive Geräte",
"alerts": "Alerts", "alerts": "Meldungen",
"connectedGateway": "Connected gateways", "connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Verbundene Switches"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
@@ -394,107 +419,107 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "CPU Auslastung",
"memoryUsed": "Memory Used", "memoryUsed": "RAM Verbrauch",
"uptime": "Uptime", "uptime": "Laufzeit",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Keine Übertragungen",
"streams_active": "Active Streams", "streams_active": "Aktive Streams",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG Kanäle"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "CPU Auslastung",
"memory": "Active Memory", "memory": "Aktiver RAM",
"wanUpload": "WAN Upload", "wanUpload": "WAN Upload",
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Drucker Status",
"print_status": "Print Status", "print_status": "Druck Status",
"print_progress": "Progress", "print_progress": "Fortschritt",
"layers": "Layers" "layers": "Schichten"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Gesucht",
"queued": "Queued", "queued": "Wartend",
"series": "Series" "series": "Serie"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "Düsen Temp",
"temp_bed": "Bed temp", "temp_bed": "Bett Temp",
"job_completion": "Completion" "job_completion": "Fortschritt"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Ursprüngliche IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"cpu_usage": "CPU", "cpu_usage": "CPU",
"datastore_usage": "Datastore", "datastore_usage": "Datenspeicher",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Fehlgeschlagene Prozesse 24h",
"memory_usage": "Memory" "memory_usage": "RAM"
}, },
"immich": { "immich": {
"users": "Users", "users": "Benutzer",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Videos",
"storage": "Storage" "storage": "Speicher"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Seiten verfügbar",
"down": "Sites Down", "down": "Seiten nicht verfügbar",
"uptime": "Uptime", "uptime": "Laufzeit",
"incident": "Incident", "incident": "Vorfall",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotheken",
"series": "Series", "series": "Serie",
"books": "Books" "books": "Bücher"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Serie",
"issues": "Issues", "issues": "Probleme",
"wanted": "Wanted" "wanted": "Gesucht"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Alben",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Videos",
"people": "People" "people": "Personen"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Tage",
"uptime": "Uptime", "uptime": "Laufzeit",
"volumeAvailable": "Available" "volumeAvailable": "Verfügbar"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Warteschlange",
"processing": "Processing", "processing": "Wird verarbeitet",
"processed": "Processed", "processed": "Verarbeitet",
"time": "Time" "time": "Zeit"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Datenquellen",
"totalalerts": "Total Alerts", "totalalerts": "Gesamte Meldungen",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Ausgelöste Alarme"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "CPU Last",
"memoryusage": "Memory Usage", "memoryusage": "RAM Verbrauch",
"freespace": "Free Space", "freespace": "Freier Speicher",
"activeusers": "Active Users" "activeusers": "Aktive Nutzer"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Größe",
"lastrun": "Last Run", "lastrun": "Letzter Durchlauf",
"nextrun": "Next Run", "nextrun": "Nächster Durchlauf",
"failed": "Failed" "failed": "Fehlgeschlagen"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Active Workers",
@@ -503,21 +528,39 @@
}, },
"healthchecks": { "healthchecks": {
"grace": "In Grace Period", "grace": "In Grace Period",
"new": "New", "new": "Neu",
"up": "Online", "up": "Online",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pausiert",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Letzter Ping",
"never": "No pings yet" "never": "Noch keine Pings"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Server",
"nodes": "Nodes" "nodes": "Nodes"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Spieler",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_max": "All time",
"gross_percent_today": "Heute",
"gross_percent_1y": "Ein Jahr"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -36,7 +36,14 @@
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load" "load": "Load",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -60,9 +67,16 @@
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"running": "Running",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"healthy": "Healthy",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial"
}, },
"ping": { "ping": {
"error": "Error", "error": "Error",
@@ -72,7 +86,11 @@
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -262,6 +280,13 @@
"queued": "Queued", "queued": "Queued",
"series": "Series" "series": "Series"
}, },
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",
"unread": "Unread" "unread": "Unread"
@@ -280,7 +305,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@@ -354,7 +383,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
@@ -528,5 +560,16 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -23,7 +23,14 @@
"free": "Libera", "free": "Libera",
"used": "Uzata", "used": "Uzata",
"load": "Ŝarĝo", "load": "Ŝarĝo",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"months": "mo",
"max": "Max",
"uptime": "UP",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Uzantoj", "users": "Uzantoj",
@@ -49,7 +56,14 @@
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
"offline": "Offline", "offline": "Offline",
"error": "Eraro", "error": "Eraro",
"unknown": "Nekonata" "unknown": "Nekonata",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Eraro", "error": "Eraro",
@@ -59,7 +73,11 @@
"playing": "Ludante", "playing": "Ludante",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -233,7 +251,11 @@
"glances": { "glances": {
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
"mem": "Memoro", "mem": "Memoro",
"wait": "Bonvolu atendi" "wait": "Bonvolu atendi",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@@ -307,7 +329,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Usado", "used": "Usado",
"load": "Carga", "load": "Carga",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMPORAL",
"max": "Máximo",
"uptime": "ARRIBA",
"months": "Meses",
"days": "Días",
"hours": "Horas",
"minutes": "Minutos"
}, },
"docker": { "docker": {
"rx": "Recibido", "rx": "Recibido",
@@ -26,13 +33,24 @@
"cpu": "Procesador", "cpu": "Procesador",
"offline": "Desconectado", "offline": "Desconectado",
"error": "Fallo", "error": "Fallo",
"unknown": "Desconocido" "unknown": "Desconocido",
"running": "Ejecutando",
"starting": "Comenzando",
"unhealthy": "Insalubre",
"not_found": "No encontrado",
"exited": "Salida",
"partial": "Parcial",
"healthy": "Saludable"
}, },
"emby": { "emby": {
"playing": "Reproduciendo", "playing": "Reproduciendo",
"transcoding": "Transcodificando", "transcoding": "Transcodificando",
"bitrate": "Tasa de bits", "bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas" "no_active": "Sin transmisiones activas",
"movies": "Películas",
"series": "Serie",
"episodes": "Episodios",
"songs": "Canciones"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduciendo", "playing": "Reproduciendo",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesador", "cpu": "Procesador",
"mem": "Memoria", "mem": "Memoria",
"wait": "Espere por favor" "wait": "Espere por favor",
"temp": "TEMPORAL",
"uptime": "ARRIBA",
"days": "Días",
"hours": "Horas"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observados", "totalObserved": "Total Observados",
@@ -284,7 +306,7 @@
"service": "Servicio", "service": "Servicio",
"search": "Buscar", "search": "Buscar",
"custom": "Personalizado", "custom": "Personalizado",
"visit": "Visit", "visit": "Visita",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Actualización disponible", "update_available": "Actualización disponible",
"up_to_date": "Actualizado", "up_to_date": "Actualizado",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Arriba",
"pending": "Pendiente",
"down": "Abajo"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprobado", "approvedPushes": "Aprobado",
@@ -519,5 +544,23 @@
"targets_up": "Objetivos arriba", "targets_up": "Objetivos arriba",
"targets_down": "Objetivos abajo", "targets_down": "Objetivos abajo",
"targets_total": "Objetivos totales" "targets_total": "Objetivos totales"
},
"minecraft": {
"status": "Estado",
"up": "En línea",
"players": "Jugadores",
"version": "Versión",
"down": "Sin conexión"
},
"ghostfolio": {
"gross_percent_today": "Hoy",
"gross_percent_1y": "Un año",
"gross_percent_max": "Todo el tiempo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Libros",
"podcastsDuration": "Duración",
"booksDuration": "Duración"
} }
} }

View File

@@ -23,7 +23,14 @@
"free": "Vapaana", "free": "Vapaana",
"used": "Käytetty", "used": "Käytetty",
"load": "Kuorma", "load": "Kuorma",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Toistaa", "playing": "Toistaa",
"transcoding": "Transkoodaa", "transcoding": "Transkoodaa",
"bitrate": "Bittinopeus", "bitrate": "Bittinopeus",
"no_active": "Ei aktiivisia striimejä" "no_active": "Ei aktiivisia striimejä",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Toistaa", "playing": "Toistaa",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"wait": "Please wait", "wait": "Please wait",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Utilisé", "used": "Utilisé",
"load": "Charge", "load": "Charge",
"cpu": "CPU", "cpu": "CPU",
"mem": "MÉM" "mem": "MÉM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Cpu", "cpu": "Cpu",
"offline": "Hors ligne", "offline": "Hors ligne",
"error": "Erreur", "error": "Erreur",
"unknown": "Inconnu" "unknown": "Inconnu",
"running": "Démarré",
"starting": "Démarrage",
"unhealthy": "Dysfonctionnement",
"not_found": "Inconnu",
"exited": "Arrêté",
"partial": "Partiel",
"healthy": "Fonctionnel"
}, },
"emby": { "emby": {
"playing": "En lecture", "playing": "En lecture",
"transcoding": "Transcodage", "transcoding": "Transcodage",
"bitrate": "Débit", "bitrate": "Débit",
"no_active": "Aucun flux actif" "no_active": "Aucun flux actif",
"movies": "Films",
"series": "Séries TV",
"episodes": "Épisodes",
"songs": "Musique"
}, },
"tautulli": { "tautulli": {
"playing": "En lecture", "playing": "En lecture",
@@ -47,12 +65,12 @@
}, },
"sonarr": { "sonarr": {
"wanted": "Demande", "wanted": "Demande",
"queued": "En attente", "queued": "Attente",
"series": "Séries" "series": "Séries"
}, },
"radarr": { "radarr": {
"wanted": "Demande", "wanted": "Demande",
"queued": "En attente", "queued": "Attente",
"movies": "Films", "movies": "Films",
"missing": "Manquant" "missing": "Manquant"
}, },
@@ -103,14 +121,14 @@
"wait": "Veuillez patienter" "wait": "Veuillez patienter"
}, },
"overseerr": { "overseerr": {
"pending": "En attente", "pending": "Attente",
"approved": "Demande", "approved": "Demande",
"available": "Disponible", "available": "Disponible",
"processing": "En traitement" "processing": "Traitement"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Débit", "rate": "Débit",
"queue": "Queue", "queue": "En attente",
"timeleft": "Temps restant" "timeleft": "Temps restant"
}, },
"nzbget": { "nzbget": {
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Cpu", "cpu": "Cpu",
"mem": "Mém", "mem": "Mém",
"wait": "Merci de patienter" "wait": "Merci de patienter",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observé", "totalObserved": "Total Observé",
@@ -284,7 +306,7 @@
"service": "Service", "service": "Service",
"search": "Recherche", "search": "Recherche",
"custom": "Personnalisé", "custom": "Personnalisé",
"visit": "Visit", "visit": "Aller vers",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Mise à jour disponible", "update_available": "Mise à jour disponible",
"up_to_date": "À jour", "up_to_date": "À jour",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approuvé", "approvedPushes": "Approuvé",
@@ -366,7 +391,7 @@
"queue": "À traiter", "queue": "À traiter",
"processed": "Traité", "processed": "Traité",
"errored": "En erreur", "errored": "En erreur",
"saved": "Enregistré" "saved": "Economisé"
}, },
"miniflux": { "miniflux": {
"read": "Lu", "read": "Lu",
@@ -472,7 +497,7 @@
"volumeAvailable": "Disponible" "volumeAvailable": "Disponible"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "À traiter",
"processing": "Traitement", "processing": "Traitement",
"processed": "Traité", "processed": "Traité",
"time": "Temps" "time": "Temps"
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Joueurs",
"version": "Version",
"status": "Statut",
"up": "En ligne",
"down": "Hors ligne"
},
"ghostfolio": {
"gross_percent_today": "Aujourd'hui",
"gross_percent_1y": "Un an",
"gross_percent_max": "Depuis le début"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livres",
"podcastsDuration": "Durée",
"booksDuration": "Durée"
} }
} }

View File

@@ -23,7 +23,14 @@
"used": "בשימוש", "used": "בשימוש",
"load": "עומס", "load": "עומס",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "מעבד", "cpu": "מעבד",
"offline": "כבוי", "offline": "כבוי",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "מנגן", "playing": "מנגן",
"transcoding": "מקודד", "transcoding": "מקודד",
"bitrate": "סיביות", "bitrate": "סיביות",
"no_active": "אין הזרמות פעילות" "no_active": "אין הזרמות פעילות",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "מנגן", "playing": "מנגן",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -57,7 +57,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -83,13 +90,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -223,7 +241,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@@ -297,7 +319,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -14,7 +14,14 @@
"used": "Korišteno", "used": "Korišteno",
"load": "Opterećenje", "load": "Opterećenje",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"minutes": "m",
"max": "Max",
"uptime": "UP",
"months": "mo",
"temp": "TEMP",
"days": "d",
"hours": "h"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Stopa", "rate": "Stopa",
@@ -73,13 +80,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Nepovezan", "offline": "Nepovezan",
"error": "Greška", "error": "Greška",
"unknown": "Nepoznato" "unknown": "Nepoznato",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Reprodukcija", "playing": "Reprodukcija",
"transcoding": "Prekodiranje", "transcoding": "Prekodiranje",
"bitrate": "Stopa bitova", "bitrate": "Stopa bitova",
"no_active": "Nema aktivnih prijenosa" "no_active": "Nema aktivnih prijenosa",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Reprodukcija", "playing": "Reprodukcija",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Pričekaj" "wait": "Pričekaj",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Ukupno promatrano", "totalObserved": "Ukupno promatrano",
@@ -293,7 +315,10 @@
"update_available": "Dostupna je nova verzija", "update_available": "Dostupna je nova verzija",
"up_to_date": "Aktualno", "up_to_date": "Aktualno",
"child_bridges": "Podređeni mosotvi", "child_bridges": "Podređeni mosotvi",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "Odbijeno", "rejectedPushes": "Odbijeno",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -5,7 +5,14 @@
"used": "Használt", "used": "Használt",
"load": "Terhelés", "load": "Terhelés",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"unhealthy": "Unhealthy",
"running": "Running",
"starting": "Starting",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"lidarr": { "lidarr": {
"albums": "Albumok", "albums": "Albumok",
@@ -52,7 +66,11 @@
"playing": "Lejátszás", "playing": "Lejátszás",
"transcoding": "Átkódolás", "transcoding": "Átkódolás",
"bitrate": "Bitráta", "bitrate": "Bitráta",
"no_active": "Nincs aktív lejátszás" "no_active": "Nincs aktív lejátszás",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Lejátszás folyamatban", "playing": "Lejátszás folyamatban",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -6,13 +6,24 @@
"offline": "Offline", "offline": "Offline",
"rx": "RX", "rx": "RX",
"error": "Errore", "error": "Errore",
"unknown": "Sconosciuto" "unknown": "Sconosciuto",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "In riproduzione", "playing": "In riproduzione",
"transcoding": "Transcodifica", "transcoding": "Transcodifica",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Nessuno Stream Attivo" "no_active": "Nessuno Stream Attivo",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "In riproduzione", "playing": "In riproduzione",
@@ -53,7 +64,14 @@
"used": "In utilizzo", "used": "In utilizzo",
"load": "Carico", "load": "Carico",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"rutorrent": { "rutorrent": {
"active": "Attivo", "active": "Attivo",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Attendere prego" "wait": "Attendere prego",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Totale Osservato", "totalObserved": "Totale Osservato",
@@ -293,7 +315,10 @@
"update_available": "Aggiornamento Disponibile", "update_available": "Aggiornamento Disponibile",
"up_to_date": "Aggiornato", "up_to_date": "Aggiornato",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approvato", "approvedPushes": "Approvato",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,11 @@
"glances": { "glances": {
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"autobrr": { "autobrr": {
"filters": "Filters", "filters": "Filters",
@@ -58,7 +62,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -84,7 +95,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Error", "error": "Error",
@@ -94,7 +112,11 @@
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -351,7 +373,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_max": "All time",
"gross_percent_today": "Today",
"gross_percent_1y": "One year"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -0,0 +1,566 @@
{
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"rutorrent": {
"download": "다운로드",
"active": "활성",
"upload": "업로드"
},
"authentik": {
"users": "Users",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"pterodactyl": {
"nodes": "Nodes",
"servers": "Servers"
},
"widget": {
"missing_type": "Missing Widget Type: {{type}}",
"api_error": "API 오류",
"information": "정보",
"status": "상태",
"url": "URL",
"raw_error": "Raw 오류",
"response_data": "응답 데이터"
},
"weather": {
"current": "현재 위치",
"allow": "클릭하여 허용",
"updating": "갱신 중",
"wait": "잠시만 기다리세요"
},
"search": {
"placeholder": "검색…"
},
"resources": {
"cpu": "CPU",
"mem": "MEM",
"total": "총합",
"free": "남음",
"used": "사용",
"load": "부하",
"temp": "온도",
"max": "최대",
"uptime": "가동",
"months": "달",
"days": "일",
"hours": "시간",
"minutes": "분"
},
"unifi": {
"users": "사용자",
"uptime": "시스템 업타임",
"days": "일",
"wan": "WAN",
"lan": "LAN",
"wlan": "WLAN",
"devices": "장치",
"lan_devices": "LAN 장치",
"wlan_devices": "WLAN 장치",
"lan_users": "LAN 사용자",
"wlan_users": "WLAN 사용자",
"up": "UP",
"down": "DOWN",
"wait": "잠시만 기다리세요",
"empty_data": "서브시스템 상태 알 수 없음"
},
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "MEM",
"cpu": "CPU",
"running": "가동 중",
"offline": "중지",
"error": "오류",
"unknown": "알 수 없음",
"healthy": "좋음",
"starting": "시작 중",
"unhealthy": "이상",
"not_found": "찾을 수 없음",
"exited": "종료됨",
"partial": "부분적"
},
"ping": {
"error": "오류",
"ping": "Ping"
},
"emby": {
"playing": "재생 중",
"transcoding": "트랜스코딩",
"bitrate": "비트레이트",
"no_active": "활성 스트림 없음",
"movies": "영화",
"series": "시리즈",
"episodes": "에피소드",
"songs": "음악"
},
"flood": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"changedetectionio": {
"totalObserved": "Total Observed",
"diffsDetected": "변경 감지됨"
},
"tautulli": {
"playing": "재생 중",
"transcoding": "트랜스코딩",
"bitrate": "비트레이트",
"no_active": "활성 스트림 없음"
},
"omada": {
"connectedAp": "연결된 AP",
"activeUser": "활성 장치",
"alerts": "경고",
"connectedGateway": "연결된 게이트웨이",
"connectedSwitches": "연결된 스위치"
},
"nzbget": {
"rate": "비율",
"remaining": "남음",
"downloaded": "다운로드됨"
},
"plex": {
"streams": "활성 스트림",
"movies": "영화",
"tv": "TV 쇼"
},
"sabnzbd": {
"rate": "비율",
"queue": "대기열",
"timeleft": "남은 시간"
},
"transmission": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"qbittorrent": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"deluge": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"downloadstation": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"sonarr": {
"wanted": "요청",
"queued": "대기 중",
"series": "시리즈"
},
"radarr": {
"wanted": "요청",
"missing": "빠짐",
"queued": "대기 중",
"movies": "영화"
},
"lidarr": {
"wanted": "요청",
"queued": "대기 중",
"albums": "앨범"
},
"readarr": {
"wanted": "요청",
"queued": "대기 중",
"books": "책"
},
"bazarr": {
"missingEpisodes": "빠진 에피소드",
"missingMovies": "빠진 영화"
},
"ombi": {
"pending": "대기 중",
"approved": "승인됨",
"available": "이용 가능"
},
"jellyseerr": {
"pending": "대기 중",
"approved": "승인됨",
"available": "사용 가능"
},
"overseerr": {
"pending": "대기 중",
"processing": "처리 중",
"approved": "승인됨",
"available": "사용 가능"
},
"pihole": {
"queries": "쿼리",
"blocked": "차단됨",
"gravity": "Gravity"
},
"adguard": {
"queries": "쿼리",
"blocked": "차단됨",
"filtered": "필터링됨",
"latency": "지연"
},
"speedtest": {
"upload": "업로드",
"download": "다운로드",
"ping": "Ping"
},
"portainer": {
"running": "가동 중",
"stopped": "중지",
"total": "총합"
},
"tdarr": {
"queue": "대기열",
"processed": "처리됨",
"errored": "오류",
"saved": "저장됨"
},
"traefik": {
"routers": "라우터",
"services": "서비스",
"middleware": "미들웨어"
},
"navidrome": {
"nothing_streaming": "활성 스트림 없음",
"please_wait": "잠시만 기다리세요"
},
"npm": {
"enabled": "활성",
"disabled": "비활성",
"total": "총합"
},
"coinmarketcap": {
"configure": "한 개 이상의 가상화폐를 설정하여 추적",
"1hour": "1시간",
"1day": "1일",
"7days": "7일",
"30days": "30일"
},
"gotify": {
"apps": "어플리케이션",
"clients": "클라이언트",
"messages": "메시지"
},
"prowlarr": {
"enableIndexers": "인덱서",
"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"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
},
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"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",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"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",
"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": {
"available_update": "System",
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"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",
"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;)}}"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"total": "Total"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
},
"hdhomerun": {
"channels": "Channels",
"hd": "HD"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
},
"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": "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"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@@ -27,7 +27,14 @@
"free": "Brīvs", "free": "Brīvs",
"used": "Izmantojas", "used": "Izmantojas",
"load": "Ielādē", "load": "Ielādē",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Lietotāji", "users": "Lietotāji",
@@ -53,7 +60,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Bezsaistē", "offline": "Bezsaistē",
"error": "Kļūda", "error": "Kļūda",
"unknown": "Nezināms" "unknown": "Nezināms",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Kļūda", "error": "Kļūda",
@@ -63,7 +77,11 @@
"playing": "Atskaņo", "playing": "Atskaņo",
"transcoding": "Pārkodē", "transcoding": "Pārkodē",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Nav aktīvu straumju" "no_active": "Nav aktīvu straumju",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Lejupielāde", "download": "Lejupielāde",
@@ -271,7 +289,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@@ -345,7 +367,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"down": "Offline",
"players": "Players",
"status": "Status",
"up": "Online",
"version": "Version"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -5,7 +5,14 @@
"free": "Bebas", "free": "Bebas",
"used": "Telah diguna", "used": "Telah diguna",
"load": "Beban", "load": "Beban",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"uptime": "Masa Operasi Sistem", "uptime": "Masa Operasi Sistem",
@@ -60,7 +67,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Sila tunggu" "wait": "Sila tunggu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Tandabuku", "bookmark": "Tandabuku",
@@ -158,7 +169,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Luar talian", "offline": "Luar talian",
"error": "Ralat", "error": "Ralat",
"unknown": "Tidak Diketahui" "unknown": "Tidak Diketahui",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Jumlah Diperhatikan", "totalObserved": "Jumlah Diperhatikan",
@@ -168,7 +186,11 @@
"playing": "Sedang dimainkan", "playing": "Sedang dimainkan",
"transcoding": "Transkoding", "transcoding": "Transkoding",
"bitrate": "Kadar bit", "bitrate": "Kadar bit",
"no_active": "Tiada Strim Aktif" "no_active": "Tiada Strim Aktif",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Sedang Dimainkan", "playing": "Sedang Dimainkan",
@@ -293,7 +315,10 @@
"updates": "Kemaskini", "updates": "Kemaskini",
"update_available": "Kemaskini Tersedia", "update_available": "Kemaskini Tersedia",
"up_to_date": "Terkemaskini", "up_to_date": "Terkemaskini",
"child_bridges": "Jambatan Anak" "child_bridges": "Jambatan Anak",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Terimbas", "containers_scanned": "Terimbas",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Brukt", "used": "Brukt",
"load": "Last inn", "load": "Last inn",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Mottatt", "rx": "Mottatt",
@@ -26,13 +33,24 @@
"cpu": "Prosessor", "cpu": "Prosessor",
"offline": "Frakoblet", "offline": "Frakoblet",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"exited": "Exited",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Spiller", "playing": "Spiller",
"transcoding": "Transkoding", "transcoding": "Transkoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen aktive strømmer" "no_active": "Ingen aktive strømmer",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spiller", "playing": "Spiller",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"widget": { "widget": {
"missing_type": "Missing Widget Type: {{type}}", "missing_type": "Missend Widget Type: {{type}}",
"api_error": "API Error", "api_error": "API Error",
"status": "Status", "status": "Status",
"information": "Informatie", "information": "Informatie",
@@ -14,7 +14,14 @@
"used": "Gebruikt", "used": "Gebruikt",
"load": "Laadt", "load": "Laadt",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"days": "d",
"hours": "h",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -23,7 +30,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Fout", "error": "Fout",
"unknown": "Onbekend" "unknown": "Onbekend",
"running": "Running",
"starting": "Starten",
"unhealthy": "Ongezond",
"not_found": "Niet Gevonden",
"exited": "Verlaten",
"partial": "Gedeeltelijk",
"healthy": "Gezond"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Upload",
@@ -48,13 +62,17 @@
"playing": "Afspelen", "playing": "Afspelen",
"transcoding": "Transcodering", "transcoding": "Transcodering",
"bitrate": "Bitsnelheid", "bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Steams" "no_active": "Geen Actieve Steams",
"movies": "Films",
"series": "Series",
"episodes": "Afleveringen",
"songs": "Liedjes"
}, },
"tautulli": { "tautulli": {
"playing": "Afspelen", "playing": "Afspelen",
"transcoding": "Transcodering", "transcoding": "Transcodering",
"bitrate": "Bitsnelheid", "bitrate": "Bitsnelheid",
"no_active": "No Active Streams" "no_active": "Geen Actieve Streams"
}, },
"rutorrent": { "rutorrent": {
"active": "Actief", "active": "Actief",
@@ -70,12 +88,12 @@
"movies": "Films", "movies": "Films",
"wanted": "Gezocht", "wanted": "Gezocht",
"queued": "In de wachtrij", "queued": "In de wachtrij",
"missing": "Missing" "missing": "Missend"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "Gezocht",
"queued": "Queued", "queued": "In de wachtrij",
"books": "Books" "books": "Boeken"
}, },
"ombi": { "ombi": {
"pending": "In afwachting", "pending": "In afwachting",
@@ -103,32 +121,32 @@
"total": "Totaal" "total": "Totaal"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "In Afwachting",
"approved": "Approved", "approved": "Goedgekeurd",
"available": "Available", "available": "Beschikbaar",
"processing": "Processing" "processing": "Processing"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rate", "rate": "Rate",
"queue": "Queue", "queue": "Wachtrij",
"timeleft": "Time Left" "timeleft": "Time Left"
}, },
"nzbget": { "nzbget": {
"rate": "Rate", "rate": "Rate",
"remaining": "Remaining", "remaining": "Resterend",
"downloaded": "Downloaded" "downloaded": "Gedownload"
}, },
"coinmarketcap": { "coinmarketcap": {
"configure": "Configure one or more crypto currencies to track", "configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour", "1hour": "1 Uur",
"7days": "7 Days", "7days": "7 Dagen",
"1day": "1 Day", "1day": "1 Dag",
"30days": "30 Days" "30days": "30 Dagen"
}, },
"gotify": { "gotify": {
"apps": "Applications", "apps": "Applicaties",
"clients": "Clients", "clients": "Clients",
"messages": "Messages" "messages": "Berichten"
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexers", "enableIndexers": "Indexers",
@@ -144,21 +162,21 @@
"seed": "Seed" "seed": "Seed"
}, },
"jackett": { "jackett": {
"configured": "Configured", "configured": "Geconfigureerd",
"errored": "Errored" "errored": "Errored"
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Missing Episodes", "missingEpisodes": "Ontbrekende Afleveringen",
"missingMovies": "Missing Movies" "missingMovies": "Ontbrekende Films"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "Gezocht",
"queued": "Queued", "queued": "In de wachtrij",
"albums": "Albums" "albums": "Albums"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Queries",
"blocked": "Blocked", "blocked": "Geblokkeerd",
"filtered": "Filtered", "filtered": "Filtered",
"latency": "Latency" "latency": "Latency"
}, },
@@ -171,7 +189,7 @@
"mastodon": { "mastodon": {
"user_count": "Users", "user_count": "Users",
"status_count": "Posts", "status_count": "Posts",
"domain_count": "Domains" "domain_count": "Domeinen"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sessions", "numActiveSessions": "Sessions",
@@ -180,7 +198,7 @@
"transferRate": "Rate" "transferRate": "Rate"
}, },
"authentik": { "authentik": {
"users": "Users", "users": "Gebruikers",
"loginsLast24H": "Logins (24h)", "loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)" "failedLoginsLast24H": "Failed Logins (24h)"
}, },
@@ -208,33 +226,37 @@
"empty_data": "Subsystem status unknown" "empty_data": "Subsystem status unknown"
}, },
"plex": { "plex": {
"streams": "Active Streams", "streams": "Actieve Streams",
"movies": "Movies", "movies": "Films",
"tv": "TV Shows" "tv": "TV Series"
}, },
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Totaal waargenomen", "totalObserved": "Totaal waargenomen",
"diffsDetected": "Diffs Detected" "diffsDetected": "Verschillen Gedetecteerd"
}, },
"wmo": { "wmo": {
"0-day": "Sunny", "0-day": "Zonnig",
"0-night": "Clear", "0-night": "Helder",
"1-day": "Mainly Sunny", "1-day": "Overwegend Zonnig",
"1-night": "Mainly Clear", "1-night": "Overwegend Helder",
"3-day": "Cloudy", "3-day": "Bewolkt",
"99-night": "Thunderstorm With Hail", "99-night": "Onweersbui Met Hagel",
"3-night": "Cloudy", "3-night": "Bewolkt",
"2-day": "Partly Cloudy", "2-day": "Gedeeltelijk Bewolkt",
"2-night": "Partly Cloudy", "2-night": "Gedeeltelijk Bewolkt",
"45-day": "Foggy", "45-day": "Mistig",
"45-night": "Foggy", "45-night": "Mistig",
"48-day": "Foggy", "48-day": "Mistig",
"48-night": "Foggy", "48-night": "Mistig",
"51-day": "Light Drizzle", "51-day": "Light Drizzle",
"51-night": "Light Drizzle", "51-night": "Light Drizzle",
"53-day": "Drizzle", "53-day": "Drizzle",
@@ -245,22 +267,22 @@
"56-night": "Light Freezing Drizzle", "56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle", "57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle", "57-night": "Freezing Drizzle",
"61-day": "Light Rain", "61-day": "Lichte Regen",
"61-night": "Light Rain", "61-night": "Lichte Regen",
"63-day": "Rain", "63-day": "Regen",
"63-night": "Rain", "63-night": "Regen",
"65-day": "Heavy Rain", "65-day": "Hevige Regen",
"65-night": "Heavy Rain", "65-night": "Hevige Regen",
"66-day": "Freezing Rain", "66-day": "Freezing Rain",
"66-night": "Freezing Rain", "66-night": "Freezing Rain",
"67-day": "Freezing Rain", "67-day": "Freezing Rain",
"67-night": "Freezing Rain", "67-night": "Freezing Rain",
"71-day": "Light Snow", "71-day": "Lichte Sneeuw",
"71-night": "Light Snow", "71-night": "Lichte Sneeuw",
"73-day": "Snow", "73-day": "Sneeuw",
"73-night": "Snow", "73-night": "Sneeuw",
"75-day": "Heavy Snow", "75-day": "Hevige Sneeuw",
"75-night": "Heavy Snow", "75-night": "Hevige Sneeuw",
"77-day": "Snow Grains", "77-day": "Snow Grains",
"77-night": "Snow Grains", "77-night": "Snow Grains",
"80-day": "Light Showers", "80-day": "Light Showers",
@@ -273,43 +295,46 @@
"85-night": "Snow Showers", "85-night": "Snow Showers",
"86-day": "Snow Showers", "86-day": "Snow Showers",
"86-night": "Snow Showers", "86-night": "Snow Showers",
"95-day": "Thunderstorm", "95-day": "Onweersbui",
"95-night": "Thunderstorm", "95-night": "Onweersbui",
"96-day": "Thunderstorm With Hail", "96-day": "Onweersbui Met Hagel",
"96-night": "Thunderstorm With Hail", "96-night": "Onweersbui Met Hagel",
"99-day": "Thunderstorm With Hail" "99-day": "Onweersbui Met Hagel"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bladwijzer",
"service": "Service", "service": "Service",
"search": "Search", "search": "Zoek",
"custom": "Custom", "custom": "Custom",
"visit": "Visit", "visit": "Bezoek",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "Systeem",
"updates": "Updates", "updates": "Updates",
"update_available": "Update Available", "update_available": "Update Beschikbaar",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "In afwachting van",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Goedgekeurd",
"rejectedPushes": "Rejected", "rejectedPushes": "Afgewezen",
"filters": "Filters", "filters": "Filters",
"indexers": "Indexers" "indexers": "Indexers"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Gescanned",
"containers_updated": "Updated", "containers_updated": "Updated",
"containers_failed": "Failed" "containers_failed": "Gefaald"
}, },
"tubearchivist": { "tubearchivist": {
"downloads": "Queue", "downloads": "Queue",
"videos": "Videos", "videos": "Videos",
"channels": "Channels", "channels": "Kanalen",
"playlists": "Playlists" "playlists": "Playlists"
}, },
"truenas": { "truenas": {
@@ -319,22 +344,22 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "No Active Streams", "nothing_streaming": "Geen Actieve Streams",
"please_wait": "Please Wait" "please_wait": "Even geduld aub"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Snelheid",
"active": "Active", "active": "Actief",
"total": "Total", "total": "Totaal",
"queue": "Queue" "queue": "Wachtrij"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Publiek IP",
"region": "Region", "region": "Regio",
"country": "Country" "country": "Land"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanalen",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
@@ -343,12 +368,12 @@
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Passed",
"failed": "Failed", "failed": "Gefaald",
"unknown": "Unknown" "unknown": "Onbekend"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Inbox",
"total": "Total" "total": "Totaal"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Download",
@@ -363,18 +388,18 @@
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Wachtrij",
"processed": "Processed", "processed": "Processed",
"errored": "Errored", "errored": "Errored",
"saved": "Saved" "saved": "Saved"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Gelezen",
"unread": "Unread" "unread": "Ongelezen"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Even geduld aub",
"no_devices": "No Device Data Received" "no_devices": "Geen Apparaat Data Ontvangen"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -382,8 +407,8 @@
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Actieve apparaten",
"alerts": "Alerts", "alerts": "Meldingen",
"connectedGateway": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
@@ -394,8 +419,8 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "CPU Belasting",
"memoryUsed": "Memory Used", "memoryUsed": "Geheugen Gebruikt",
"uptime": "Uptime", "uptime": "Uptime",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
@@ -405,8 +430,8 @@
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG Channels"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "CPU Belasting",
"memory": "Active Memory", "memory": "Actief Geheugen",
"wanUpload": "WAN Upload", "wanUpload": "WAN Upload",
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
@@ -435,13 +460,13 @@
"datastore_usage": "Datastore", "datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Geheugen"
}, },
"immich": { "immich": {
"users": "Users", "users": "Gebruikers",
"photos": "Photos", "photos": "Foto's",
"videos": "Videos", "videos": "Videos",
"storage": "Storage" "storage": "Opslag"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sites Up",
@@ -451,31 +476,31 @@
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotheken",
"series": "Series", "series": "Series",
"books": "Books" "books": "Boeken"
}, },
"mylar": { "mylar": {
"wanted": "Wanted", "wanted": "Wanted",
"series": "Series", "series": "Series",
"issues": "Issues" "issues": "Problemen"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
"photos": "Photos", "photos": "Foto's",
"videos": "Videos", "videos": "Videos",
"people": "People" "people": "Personen"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dagen",
"uptime": "Uptime", "uptime": "Uptime",
"volumeAvailable": "Available" "volumeAvailable": "Beschikbaar"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Wachtrij",
"processing": "Processing", "processing": "Processing",
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Tijd"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
@@ -484,32 +509,32 @@
"alertstriggered": "Alerts Triggered" "alertstriggered": "Alerts Triggered"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "Cpu Belasting",
"memoryusage": "Memory Usage", "memoryusage": "Geheugen Gebruik",
"freespace": "Free Space", "freespace": "Vrije Ruimte",
"activeusers": "Active Users" "activeusers": "Actieve Gebruikers"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Grootte",
"lastrun": "Last Run", "lastrun": "Laatste Run",
"nextrun": "Next Run", "nextrun": "Volgende Run",
"failed": "Failed" "failed": "Gefaald"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Actieve Werkers",
"total_workers": "Total Workers", "total_workers": "Totale Werkers",
"records_total": "Queue Length" "records_total": "Wachtrij Lengte"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nieuw",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Gepauzeerd",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Laatste Ping",
"never": "No pings yet" "never": "Nog geen pings"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servers",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Spelers",
"version": "Versie",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Vandaag",
"gross_percent_1y": "Een jaar",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Boeken",
"podcastsDuration": "Duur",
"booksDuration": "Duur"
} }
} }

View File

@@ -14,13 +14,24 @@
"total": "Całkowite", "total": "Całkowite",
"free": "Wolne", "free": "Wolne",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "PAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"emby": { "emby": {
"no_active": "Brak aktywnych strumieni", "no_active": "Brak aktywnych strumieni",
"playing": "Odtwarzanie", "playing": "Odtwarzanie",
"transcoding": "Transkodowanie", "transcoding": "Transkodowanie",
"bitrate": "Bitrate" "bitrate": "Bitrate",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Odtwarzanie", "playing": "Odtwarzanie",
@@ -66,7 +77,14 @@
"cpu": "Procesor", "cpu": "Procesor",
"offline": "Offline", "offline": "Offline",
"error": "Błąd", "error": "Błąd",
"unknown": "Nieznany" "unknown": "Nieznany",
"running": "Działa",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Zdrowy"
}, },
"nzbget": { "nzbget": {
"rate": "Szybkość", "rate": "Szybkość",
@@ -205,7 +223,7 @@
"devices": "Urządzenia", "devices": "Urządzenia",
"lan_devices": "Urządzenia LAN", "lan_devices": "Urządzenia LAN",
"wlan_devices": "Urządzenia WLAN", "wlan_devices": "Urządzenia WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Nieznany stan"
}, },
"plex": { "plex": {
"streams": "Aktywne strumienie", "streams": "Aktywne strumienie",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesor", "cpu": "Procesor",
"mem": "Pamięć", "mem": "Pamięć",
"wait": "Proszę czekać" "wait": "Proszę czekać",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"diffsDetected": "Wykryto różnic", "diffsDetected": "Wykryto różnic",
@@ -293,7 +315,10 @@
"update_available": "Dostępna aktualizacja", "update_available": "Dostępna aktualizacja",
"up_to_date": "Aktualny", "up_to_date": "Aktualny",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Zaakceptowane", "approvedPushes": "Zaakceptowane",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -51,7 +51,14 @@
"used": "Usado", "used": "Usado",
"load": "Carregamento", "load": "Carregamento",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Recebido", "rx": "Recebido",
@@ -60,13 +67,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Desligado", "offline": "Desligado",
"error": "Erro", "error": "Erro",
"unknown": "Desconhecido" "unknown": "Desconhecido",
"running": "Executando",
"starting": "Iniciando",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"partial": "Parcial",
"healthy": "Saudável"
}, },
"emby": { "emby": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
"transcoding": "Transcodificando", "transcoding": "Transcodificando",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sem transmissões ativas" "no_active": "Sem transmissões ativas",
"movies": "Filmes",
"series": "Séries",
"episodes": "Episódios",
"songs": "Musicas"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
@@ -135,7 +153,7 @@
"pihole": { "pihole": {
"queries": "Consultas", "queries": "Consultas",
"blocked": "Bloqueados", "blocked": "Bloqueados",
"gravity": "Gravity" "gravity": "Gravidade"
}, },
"adguard": { "adguard": {
"queries": "Consultas", "queries": "Consultas",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Por favor aguarde" "wait": "Por favor aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Observados", "totalObserved": "Observados",
@@ -284,7 +306,7 @@
"service": "Serviço", "service": "Serviço",
"search": "Busca", "search": "Busca",
"custom": "Personalizado", "custom": "Personalizado",
"visit": "Visit", "visit": "Visitar",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Atualização Disponível", "update_available": "Atualização Disponível",
"up_to_date": "Atualizado", "up_to_date": "Atualizado",
"child_bridges": "Pontes Filhas", "child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprovado", "approvedPushes": "Aprovado",
@@ -497,8 +522,8 @@
"failed": "Falha" "failed": "Falha"
}, },
"unmanic": { "unmanic": {
"active_workers": "Workers Ativos", "active_workers": "Trabalhadores Ativos",
"total_workers": "Total Workers", "total_workers": "Total Trabalhadores",
"records_total": "Comprimento da Fila" "records_total": "Comprimento da Fila"
}, },
"healthchecks": { "healthchecks": {
@@ -516,8 +541,26 @@
"nodes": "Nós" "nodes": "Nós"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Alvo ativo",
"targets_down": "Targets Down", "targets_down": "Alvo inativo",
"targets_total": "Total Targets" "targets_total": "Alvos totais"
},
"minecraft": {
"players": "Reprodutores",
"version": "Versão",
"status": "Status",
"up": "Conectado",
"down": "Desconectado"
},
"ghostfolio": {
"gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano",
"gross_percent_max": "Todo periodo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livros",
"podcastsDuration": "Duração",
"booksDuration": "Duração"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Utilizado", "used": "Utilizado",
"load": "Carga", "load": "Carga",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Desligado", "offline": "Desligado",
"error": "Erro", "error": "Erro",
"unknown": "Desconhecido" "unknown": "Desconhecido",
"partial": "Parcial",
"running": "A correr",
"starting": "A iniciar",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"healthy": "Saudável"
}, },
"emby": { "emby": {
"playing": "A reproduzir", "playing": "A reproduzir",
"transcoding": "Transcodificação", "transcoding": "Transcodificação",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sem streams ativas" "no_active": "Sem streams ativas",
"movies": "Filmes",
"series": "Séries",
"episodes": "Episódios",
"songs": "Canções"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
@@ -198,7 +216,7 @@
"users": "Utilizadores" "users": "Utilizadores"
}, },
"proxmox": { "proxmox": {
"mem": "MEM", "mem": "Memória",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LXC", "lxc": "LXC",
"vms": "VMs" "vms": "VMs"
@@ -218,7 +236,7 @@
"devices": "Dispositivos", "devices": "Dispositivos",
"lan_devices": "Dispositivos LAN", "lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN", "wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Status de Subsistema Desconhecido"
}, },
"plex": { "plex": {
"streams": "Streams Ativas", "streams": "Streams Ativas",
@@ -228,7 +246,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Por favor, aguarde" "wait": "Por favor, aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observado", "totalObserved": "Total Observado",
@@ -254,38 +276,38 @@
"53-night": "Chuvisco", "53-night": "Chuvisco",
"55-day": "Aguaceiro Forte", "55-day": "Aguaceiro Forte",
"55-night": "Aguaceiro Forte", "55-night": "Aguaceiro Forte",
"56-day": "Light Freezing Drizzle", "56-day": "Leve Garoa Congelante",
"56-night": "Light Freezing Drizzle", "56-night": "Leve Garoa Congelante",
"57-day": "Freezing Drizzle", "57-day": "Garoa Congelante",
"57-night": "Freezing Drizzle", "57-night": "Garoa Congelante",
"66-day": "Freezing Rain", "66-day": "Chuva Congelante",
"61-day": "Chuva fraca", "61-day": "Chuva fraca",
"61-night": "Chuva fraca", "61-night": "Chuva fraca",
"63-day": "Chuva", "63-day": "Chuva",
"63-night": "Chuva", "63-night": "Chuva",
"65-day": "Chuva forte", "65-day": "Chuva forte",
"66-night": "Freezing Rain", "66-night": "Chuva Congelante",
"65-night": "Chuva forte", "65-night": "Chuva forte",
"67-day": "Freezing Rain", "67-day": "Chuva Congelante",
"67-night": "Freezing Rain", "67-night": "Chuva Congelante",
"71-day": "Neve fraca", "71-day": "Neve fraca",
"71-night": "Neve fraca", "71-night": "Neve fraca",
"73-day": "Neve", "73-day": "Neve",
"73-night": "Neve", "73-night": "Neve",
"75-day": "Neve forte", "75-day": "Neve forte",
"75-night": "Neve forte", "75-night": "Neve forte",
"77-day": "Snow Grains", "77-day": "Grãos de Neve",
"77-night": "Snow Grains", "77-night": "Grãos de Neve",
"80-day": "Neve fraca", "80-day": "Neve fraca",
"80-night": "Chuviscos ligeiros", "80-night": "Chuviscos ligeiros",
"81-day": "Chuviscos", "81-day": "Chuviscos",
"81-night": "Chuviscos", "81-night": "Chuviscos",
"82-day": "Chuviscos fortes", "82-day": "Chuviscos fortes",
"82-night": "Chuviscos fortes", "82-night": "Chuviscos fortes",
"85-day": "Snow Showers", "85-day": "Precipitação de Neve",
"85-night": "Snow Showers", "85-night": "Precipitação de Neve",
"86-day": "Snow Showers", "86-day": "Precipitação de Neve",
"86-night": "Snow Showers", "86-night": "Precipitação de Neve",
"95-day": "Trovoada", "95-day": "Trovoada",
"95-night": "Trovoada", "95-night": "Trovoada",
"96-day": "Trovoada com granizo", "96-day": "Trovoada com granizo",
@@ -295,9 +317,9 @@
"quicklaunch": { "quicklaunch": {
"bookmark": "Marcador", "bookmark": "Marcador",
"service": "Serviço", "service": "Serviço",
"search": "Search", "search": "Busca",
"custom": "Custom", "custom": "Personalizado",
"visit": "Visit", "visit": "Visitar",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -305,8 +327,11 @@
"updates": "Atualizações", "updates": "Atualizações",
"update_available": "Atualização disponível", "update_available": "Atualização disponível",
"up_to_date": "Atualizado", "up_to_date": "Atualizado",
"child_bridges": "Child Bridges", "child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprovado", "approvedPushes": "Aprovado",
@@ -406,7 +431,7 @@
"cpuLoad": "Carga do CPU", "cpuLoad": "Carga do CPU",
"memoryUsed": "Memória Utilizada", "memoryUsed": "Memória Utilizada",
"uptime": "Ativo", "uptime": "Ativo",
"numberOfLeases": "Leases" "numberOfLeases": "Concessões"
}, },
"xteve": { "xteve": {
"streams_all": "Todos os Streams", "streams_all": "Todos os Streams",
@@ -420,113 +445,131 @@
"wanDownload": "WAN Descarga" "wanDownload": "WAN Descarga"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Estado da Impressora",
"print_status": "Print Status", "print_status": "Estado da Impressora",
"print_progress": "Progress", "print_progress": "Progresso",
"layers": "Layers" "layers": "Camadas"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Desejado",
"queued": "Queued", "queued": "Na fila",
"series": "Series" "series": "Séries"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Estado",
"temp_tool": "Tool temp", "temp_tool": "Temp. Ferramenta",
"temp_bed": "Bed temp", "temp_bed": "Temp. Cama",
"job_completion": "Completion" "job_completion": "Conclusão"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "IP Origem",
"status": "Status" "status": "Estado"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Armaz. de Dados",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Tarefas Falhas 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Memória"
}, },
"immich": { "immich": {
"users": "Users", "users": "Utilizadores",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Vídeos",
"storage": "Storage" "storage": "Armazenamento"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sites no Ar",
"down": "Sites Down", "down": "Sites Fora do Ar",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"incident": "Incident", "incident": "Incidente",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotecas",
"series": "Series", "series": "Séries",
"books": "Books" "books": "Livros"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Séries",
"issues": "Issues", "issues": "Problemas",
"wanted": "Wanted" "wanted": "Desejado"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Álbuns",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Vídeos",
"people": "People" "people": "Pessoa"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dias",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"volumeAvailable": "Available" "volumeAvailable": "Disponível"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Fila",
"processing": "Processing", "processing": "Processando",
"processed": "Processed", "processed": "Processado",
"time": "Time" "time": "Hora"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Painéis",
"datasources": "Data Sources", "datasources": "Origem de Dados",
"totalalerts": "Total Alerts", "totalalerts": "Total Alertas",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Alertas Disparados"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "Carga de CPU",
"memoryusage": "Memory Usage", "memoryusage": "Memória Utilizada",
"freespace": "Free Space", "freespace": "Espaço Livre",
"activeusers": "Active Users" "activeusers": "Utilizadores Ativos"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Estado",
"size": "Size", "size": "Tamanho",
"lastrun": "Last Run", "lastrun": "Ultima Execução",
"nextrun": "Next Run", "nextrun": "Próxima Execução",
"failed": "Failed" "failed": "Falha"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Workers Ativos",
"total_workers": "Total Workers", "total_workers": "Total Workers",
"records_total": "Queue Length" "records_total": "Comprimento da Fila"
}, },
"healthchecks": { "healthchecks": {
"never": "No pings yet", "never": "Nenhum ping ainda",
"new": "New", "new": "Novo",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "Em Período Gratuito",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pausado",
"status": "Status", "status": "Estado",
"last_ping": "Last Ping" "last_ping": "Ultimo Ping"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servidores",
"nodes": "Nodes" "nodes": "Nós"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total de Alvos"
},
"minecraft": {
"players": "Reprodutores",
"version": "Versão",
"status": "Estado",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano",
"gross_percent_max": "Todo o tempo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livros",
"podcastsDuration": "Duração",
"booksDuration": "Duração"
} }
} }

View File

@@ -5,7 +5,14 @@
"total": "Total", "total": "Total",
"free": "Disponibili", "free": "Disponibili",
"cpu": "Procesor", "cpu": "Procesor",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"jellyseerr": { "jellyseerr": {
"approved": "Aprobate", "approved": "Aprobate",
@@ -65,10 +79,10 @@
"missing_type": "Lipsește Tipul de Widget: {{type}}", "missing_type": "Lipsește Tipul de Widget: {{type}}",
"api_error": "Eroare API", "api_error": "Eroare API",
"status": "Status", "status": "Status",
"information": "Information", "information": "Informație",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Eroare Raw",
"response_data": "Response Data" "response_data": "Date de raspuns"
}, },
"search": { "search": {
"placeholder": "Caută…" "placeholder": "Caută…"
@@ -88,7 +102,11 @@
"playing": "Activ", "playing": "Activ",
"transcoding": "Transcodare", "transcoding": "Transcodare",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Niciun stream activ" "no_active": "Niciun stream activ",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rată", "rate": "Rată",
@@ -199,13 +217,13 @@
"wlan_users": "Utilizatori WLAN", "wlan_users": "Utilizatori WLAN",
"up": "Pornit", "up": "Pornit",
"down": "Oprit", "down": "Oprit",
"wait": "Va rugam asteptati", "wait": "Vă rugăm așteptați",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Devices", "devices": "Dispozitive",
"lan_devices": "LAN Devices", "lan_devices": "Dispozitive LAN",
"wlan_devices": "WLAN Devices", "wlan_devices": "Dispozitive WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Starea subsistemului este necunoscut"
}, },
"plex": { "plex": {
"streams": "Fluxuri active", "streams": "Fluxuri active",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesor", "cpu": "Procesor",
"mem": "Memorie", "mem": "Memorie",
"wait": "Te rugam sa astepti" "wait": "Te rugam sa astepti",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"available_update": "System", "available_update": "System",
"updates": "Updates", "updates": "Updates",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -377,7 +402,7 @@
"no_devices": "No Device Data Received" "no_devices": "No Device Data Received"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{valoare, rata(bits: fals; binar: adevarat)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
@@ -494,12 +519,12 @@
"size": "Size", "size": "Size",
"lastrun": "Last Run", "lastrun": "Last Run",
"nextrun": "Next Run", "nextrun": "Next Run",
"failed": "Failed" "failed": "Eșuat"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Muncitori activi",
"total_workers": "Total Workers", "total_workers": "Muncitori totali",
"records_total": "Queue Length" "records_total": "Lungimea cozii"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
@@ -512,12 +537,30 @@
"never": "No pings yet" "never": "No pings yet"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servere",
"nodes": "Nodes" "nodes": "Noduri"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Использовано", "used": "Использовано",
"load": "Загрузка", "load": "Загрузка",
"cpu": "Процессор", "cpu": "Процессор",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Процессор", "cpu": "Процессор",
"offline": "Не в сети", "offline": "Не в сети",
"error": "Ошибка", "error": "Ошибка",
"unknown": "Неизвестный" "unknown": "Неизвестный",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Воспроизведение", "playing": "Воспроизведение",
"transcoding": "Транскодирование", "transcoding": "Транскодирование",
"bitrate": "Битрейт", "bitrate": "Битрейт",
"no_active": "Нет активных потоков" "no_active": "Нет активных потоков",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Воспроизведение", "playing": "Воспроизведение",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Всего наблюдаемых", "totalObserved": "Всего наблюдаемых",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"child_bridges": "Child Bridges" "child_bridges": "Child Bridges",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -0,0 +1,566 @@
{
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "MEM",
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"rutorrent": {
"active": "Active",
"upload": "Upload",
"download": "Download"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Connections",
"dataRelayed": "Relayed",
"transferRate": "Rate"
},
"proxmox": {
"vms": "VMs",
"mem": "MEM",
"cpu": "CPU",
"lxc": "LXC"
},
"wmo": {
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"2-day": "Partly Cloudy",
"85-night": "Snow Showers",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"95-day": "Thunderstorm",
"95-night": "Thunderstorm",
"0-day": "Sunny",
"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",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"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",
"96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail"
},
"hdhomerun": {
"channels": "Channels",
"hd": "HD"
},
"xteve": {
"streams_all": "All Streams",
"streams_xepg": "XEPG Channels",
"streams_active": "Active Streams"
},
"moonraker": {
"layers": "Layers",
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress"
},
"immich": {
"storage": "Storage",
"users": "Users",
"videos": "Videos",
"photos": "Photos"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"widget": {
"api_error": "API Error",
"missing_type": "Missing Widget Type: {{type}}",
"information": "Information",
"status": "Status",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
},
"weather": {
"current": "Current Location",
"allow": "Click to allow",
"updating": "Updating",
"wait": "Please wait"
},
"search": {
"placeholder": "Search…"
},
"resources": {
"cpu": "CPU",
"mem": "MEM",
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
"wlan": "WLAN",
"devices": "Devices",
"lan_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"
},
"ping": {
"error": "Error",
"ping": "Ping"
},
"emby": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Download",
"upload": "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"
},
"transmission": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"qbittorrent": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"deluge": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"sonarr": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"radarr": {
"wanted": "Wanted",
"missing": "Missing",
"queued": "Queued",
"movies": "Movies"
},
"lidarr": {
"wanted": "Wanted",
"queued": "Queued",
"albums": "Albums"
},
"readarr": {
"wanted": "Wanted",
"queued": "Queued",
"books": "Books"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
},
"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"
},
"traefik": {
"routers": "Routers",
"services": "Services",
"middleware": "Middleware"
},
"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"
},
"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"
},
"mastodon": {
"user_count": "Users",
"status_count": "Posts",
"domain_count": "Domains"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
},
"authentik": {
"users": "Users",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"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",
"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;)}}"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"total": "Total"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
},
"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"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"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"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"freespace": "Free Space",
"activeusers": "Active Users",
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"total_workers": "Total Workers",
"records_total": "Queue Length",
"active_workers": "Active Workers"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@@ -23,7 +23,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -49,13 +56,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "Playing",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_total": "Total Targets", "targets_total": "Total Targets",
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down" "targets_down": "Targets Down"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -20,7 +20,14 @@
"free": "Ledigt", "free": "Ledigt",
"used": "Använt", "used": "Använt",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -29,7 +36,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"exited": "Exited",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
}, },
"search": { "search": {
"placeholder": "Sök…" "placeholder": "Sök…"
@@ -38,7 +52,11 @@
"playing": "Spelar", "playing": "Spelar",
"transcoding": "Omkodning", "transcoding": "Omkodning",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Inga aktiva strömmar" "no_active": "Inga aktiva strömmar",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spelar", "playing": "Spelar",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Vänligen vänta" "wait": "Vänligen vänta",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -40,7 +40,14 @@
"free": "మిగిలింది", "free": "మిగిలింది",
"used": "ఉపయోగించబడిన", "used": "ఉపయోగించబడిన",
"load": "లోడ్", "load": "లోడ్",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -49,13 +56,24 @@
"cpu": "సీపియూ", "cpu": "సీపియూ",
"offline": "ఆఫ్‌లైన్", "offline": "ఆఫ్‌లైన్",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "ఆడుతున్నారు", "playing": "ఆడుతున్నారు",
"transcoding": "ట్రాన్స్‌కోడింగ్", "transcoding": "ట్రాన్స్‌కోడింగ్",
"bitrate": "బిట్రేట్", "bitrate": "బిట్రేట్",
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు" "no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "ఆడుతున్నారు", "playing": "ఆడుతున్నారు",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "సీపియూ", "cpu": "సీపియూ",
"mem": "MEM", "mem": "MEM",
"wait": "దయచేసి వేచి ఉండండి" "wait": "దయచేసి వేచి ఉండండి",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "మొత్తం గమనించబడింది", "totalObserved": "మొత్తం గమనించబడింది",
@@ -293,7 +315,10 @@
"update_available": "అందుబాటులో నవీకరణ", "update_available": "అందుబాటులో నవీకరణ",
"up_to_date": "తాజాగా", "up_to_date": "తాజాగా",
"child_bridges": "పిల్ల వంతెనలు", "child_bridges": "పిల్ల వంతెనలు",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "తిరస్కరించారు", "rejectedPushes": "తిరస్కరించారు",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -42,7 +42,14 @@
"cpu": "ซีพียู", "cpu": "ซีพียู",
"offline": "ออฟไลน์", "offline": "ออฟไลน์",
"error": "ข้อผิดพลาด", "error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ" "unknown": "ไม่ทราบ",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -89,7 +96,14 @@
"total": "ทั้งหมด", "total": "ทั้งหมด",
"free": "ฟรี", "free": "ฟรี",
"used": "ใช้แล้ว", "used": "ใช้แล้ว",
"load": "โหลด" "load": "โหลด",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
}, },
"ping": { "ping": {
"error": "ข้อผิดพลาด", "error": "ข้อผิดพลาด",
@@ -99,7 +113,11 @@
"playing": "กำลังเล่น", "playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส", "transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต", "bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่" "no_active": "ไม่มีสตรีมที่ใช้งานอยู่",
"movies": "Movies",
"series": "Series",
"songs": "Songs",
"episodes": "Episodes"
}, },
"deluge": { "deluge": {
"download": "ดาวน์โหลด", "download": "ดาวน์โหลด",
@@ -291,7 +309,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@@ -365,7 +387,10 @@
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System" "available_update": "System",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -23,7 +23,14 @@
"free": "Boşta", "free": "Boşta",
"used": "Kullanımda", "used": "Kullanımda",
"load": "Yük", "load": "Yük",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Kullanıcılar", "users": "Kullanıcılar",
@@ -49,13 +56,24 @@
"cpu": "İşlemci", "cpu": "İşlemci",
"offline": "Çevrimdışı", "offline": "Çevrimdışı",
"error": "Hata", "error": "Hata",
"unknown": "Bilinmiyor" "unknown": "Bilinmiyor",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor", "transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı", "bitrate": "Bit Oranı",
"no_active": "Aktif akış yok" "no_active": "Aktif akış yok",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "İşlemci", "cpu": "İşlemci",
"mem": "Bellek", "mem": "Bellek",
"wait": "Lütfen bekleyiniz" "wait": "Lütfen bekleyiniz",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Toplam Gözlenen", "totalObserved": "Toplam Gözlenen",
@@ -293,7 +315,10 @@
"update_available": "Güncelleme Kullanılabilir", "update_available": "Güncelleme Kullanılabilir",
"up_to_date": "Güncel", "up_to_date": "Güncel",
"child_bridges": "Alt Köprüler", "child_bridges": "Alt Köprüler",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Onaylandı", "approvedPushes": "Onaylandı",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -128,7 +128,14 @@
"free": "Вільно", "free": "Вільно",
"used": "Використано", "used": "Використано",
"load": "Навантаження", "load": "Навантаження",
"mem": "Пам'ять" "mem": "Пам'ять",
"temp": "TEMP",
"max": "Max",
"uptime": "Відправка",
"months": "міс",
"days": "д",
"hours": "г",
"minutes": "хв"
}, },
"unifi": { "unifi": {
"users": "Користувачі", "users": "Користувачі",
@@ -154,7 +161,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Офлайн", "offline": "Офлайн",
"error": "Помилка", "error": "Помилка",
"unknown": "Невідомий" "unknown": "Невідомий",
"starting": "Запуск",
"unhealthy": "Нездоровий",
"not_found": "Не знайдено",
"exited": "Вийшов",
"partial": "Частковий",
"running": "Запущено",
"healthy": "Здоров'я"
}, },
"ping": { "ping": {
"error": "Помилка", "error": "Помилка",
@@ -164,7 +178,11 @@
"playing": "Відтворення", "playing": "Відтворення",
"transcoding": "Перекодування", "transcoding": "Перекодування",
"bitrate": "Бітрейт", "bitrate": "Бітрейт",
"no_active": "Немає активних потоків" "no_active": "Немає активних потоків",
"movies": "Фільми",
"series": "Серії",
"episodes": "Епізоди",
"songs": "Пісні"
}, },
"flood": { "flood": {
"download": "Завантаження", "download": "Завантаження",
@@ -339,14 +357,18 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "Пам'ять", "mem": "Пам'ять",
"wait": "Будь ласка, зачекайте" "wait": "Будь ласка, зачекайте",
"temp": "TEMP",
"uptime": "Відправка",
"days": "д",
"hours": "г"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Закладка", "bookmark": "Закладка",
"service": "Сервіс", "service": "Сервіс",
"search": "Пошук", "search": "Пошук",
"custom": "Користувацький", "custom": "Користувацький",
"visit": "Visit", "visit": "Відвідайте",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
@@ -355,7 +377,10 @@
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"update_available": "Доступне оновлення", "update_available": "Доступне оновлення",
"up_to_date": "Актуально", "up_to_date": "Актуально",
"child_bridges": "Дитячі мости" "child_bridges": "Дитячі мости",
"up": "Вгору",
"pending": "В очікуванні",
"down": "Вниз"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Відскановано", "containers_scanned": "Відскановано",
@@ -516,8 +541,26 @@
"nodes": "Вузли" "nodes": "Вузли"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Цілі вгору",
"targets_down": "Targets Down", "targets_down": "Цілі вниз",
"targets_total": "Total Targets" "targets_total": "Всього цілей"
},
"minecraft": {
"players": "Гравці",
"version": "Версія",
"status": "Стан",
"up": "Онлайн",
"down": "Офлайн"
},
"ghostfolio": {
"gross_percent_today": "Сьогодні",
"gross_percent_1y": "Один рік",
"gross_percent_max": "Весь час"
},
"audiobookshelf": {
"podcasts": "Подкасти",
"books": "Книжки",
"podcastsDuration": "Тривалість",
"booksDuration": "Тривалість"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "Đã dùng", "used": "Đã dùng",
"load": "Load", "load": "Load",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -26,13 +33,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Ngoại tuyến", "offline": "Ngoại tuyến",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Đang chơi", "playing": "Đang chơi",
"transcoding": "Chuyển định dạng", "transcoding": "Chuyển định dạng",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Đang chơi", "playing": "Đang chơi",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"down": "Down",
"pending": "Pending"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -3,7 +3,11 @@
"transcoding": "轉碼緊", "transcoding": "轉碼緊",
"bitrate": "比特率", "bitrate": "比特率",
"playing": "播放緊", "playing": "播放緊",
"no_active": "無任何活動" "no_active": "無任何活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "播放緊", "playing": "播放緊",
@@ -41,7 +45,14 @@
"used": "用咗", "used": "用咗",
"load": "負荷", "load": "負荷",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "接收", "rx": "接收",
@@ -50,7 +61,14 @@
"cpu": "處理器", "cpu": "處理器",
"offline": "離線", "offline": "離線",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"nzbget": { "nzbget": {
"rate": "速度", "rate": "速度",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -17,7 +17,14 @@
"used": "已用", "used": "已用",
"load": "负载", "load": "负载",
"cpu": "处理器", "cpu": "处理器",
"mem": "内存" "mem": "内存",
"temp": "温度",
"max": "最大",
"uptime": "运行时间",
"months": "月",
"days": "天",
"hours": "时",
"minutes": "分"
}, },
"docker": { "docker": {
"rx": "接收", "rx": "接收",
@@ -26,13 +33,24 @@
"cpu": "处理器", "cpu": "处理器",
"offline": "离线", "offline": "离线",
"error": "错误", "error": "错误",
"unknown": "未知" "unknown": "未知",
"starting": "启动中",
"unhealthy": "不健康的",
"not_found": "未找到",
"running": "运行中",
"exited": "已退出",
"partial": "部分",
"healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "播放中", "playing": "播放中",
"transcoding": "转码", "transcoding": "转码",
"bitrate": "比特率", "bitrate": "比特率",
"no_active": "暂无播放" "no_active": "暂无播放",
"movies": "电影",
"series": "系列",
"episodes": "剧集",
"songs": "歌曲"
}, },
"tautulli": { "tautulli": {
"playing": "播放中", "playing": "播放中",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "处理器", "cpu": "处理器",
"mem": "内存", "mem": "内存",
"wait": "请稍等" "wait": "请稍等",
"temp": "TEMP",
"uptime": "UP",
"days": "天",
"hours": "时"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "观察到的总数", "totalObserved": "观察到的总数",
@@ -240,66 +262,69 @@
"51-night": "小雨", "51-night": "小雨",
"53-day": "Drizzle", "53-day": "Drizzle",
"53-night": "Drizzle", "53-night": "Drizzle",
"55-day": "Heavy Drizzle", "55-day": "毛毛雨",
"55-night": "Heavy Drizzle", "55-night": "毛毛雨",
"56-day": "Light Freezing Drizzle", "56-day": "小冻毛雨",
"56-night": "Light Freezing Drizzle", "56-night": "小冻毛雨",
"57-day": "Freezing Drizzle", "57-day": "冻毛雨",
"57-night": "Freezing Drizzle", "57-night": "冻毛雨",
"61-day": "Light Rain", "61-day": "小雨",
"61-night": "Light Rain", "61-night": "小雨",
"63-day": "Rain", "63-day": "",
"63-night": "Rain", "63-night": "",
"65-day": "Heavy Rain", "65-day": "大雨",
"65-night": "Heavy Rain", "65-night": "大雨",
"66-day": "Freezing Rain", "66-day": "冻雨",
"66-night": "Freezing Rain", "66-night": "冻雨",
"67-day": "Freezing Rain", "67-day": "冻雨",
"67-night": "Freezing Rain", "67-night": "冻雨",
"71-day": "小雪", "71-day": "小雪",
"71-night": "小雪", "71-night": "小雪",
"73-day": "中雪", "73-day": "中雪",
"75-night": "大雪", "75-night": "大雪",
"77-day": "Snow Grains", "77-day": "雪粒",
"77-night": "Snow Grains", "77-night": "雪粒",
"80-day": "Light Showers", "80-day": "微阵雨",
"80-night": "Light Showers", "80-night": "微阵雨",
"81-day": "Showers", "81-day": "阵雨",
"81-night": "Showers", "81-night": "阵雨",
"82-day": "Heavy Showers", "82-day": "强阵雨",
"82-night": "Heavy Showers", "82-night": "强阵雨",
"85-day": "Snow Showers", "85-day": "阵雪",
"85-night": "Snow Showers", "85-night": "阵雪",
"86-day": "Snow Showers", "86-day": "阵雪",
"86-night": "Snow Showers", "86-night": "阵雪",
"95-day": "Thunderstorm", "95-day": "雷雨",
"95-night": "Thunderstorm", "95-night": "雷雨",
"96-day": "Thunderstorm With Hail", "96-day": "雷雨伴随冰雹",
"96-night": "Thunderstorm With Hail", "96-night": "雷雨伴随冰雹",
"99-day": "Thunderstorm With Hail", "99-day": "雷雨伴随冰雹",
"99-night": "Thunderstorm With Hail" "99-night": "雷雨伴随冰雹"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "书签", "bookmark": "书签",
"service": "服务", "service": "服务",
"search": "搜索", "search": "搜索",
"custom": "Custom", "custom": "自定",
"visit": "Visit", "visit": "访问",
"url": "URL" "url": "网址"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
"updates": "Updates", "updates": "更新",
"update_available": "Update Available", "update_available": "有可用的更新",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "待定中",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "已核准",
"rejectedPushes": "Rejected", "rejectedPushes": "拒绝",
"filters": "Filters", "filters": "Filters",
"indexers": "Indexers" "indexers": "索引器"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "以扫描", "containers_scanned": "以扫描",
@@ -307,10 +332,10 @@
"containers_failed": "失败" "containers_failed": "失败"
}, },
"tubearchivist": { "tubearchivist": {
"downloads": "Queue", "downloads": "队列",
"videos": "Videos", "videos": "影片",
"channels": "Channels", "channels": "频道",
"playlists": "Playlists" "playlists": "播放清单"
}, },
"truenas": { "truenas": {
"load": "系统负载", "load": "系统负载",
@@ -323,18 +348,18 @@
"please_wait": "请等待" "please_wait": "请等待"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "速度",
"active": "Active", "active": "Active",
"queue": "Queue", "queue": "队列",
"total": "Total" "total": "Total"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country" "country": "国家"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "频道",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
@@ -342,12 +367,12 @@
"ping": "Ping" "ping": "Ping"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "通过",
"failed": "Failed", "failed": "失败",
"unknown": "Unknown" "unknown": "未知的"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "收件箱",
"total": "Total" "total": "Total"
}, },
"deluge": { "deluge": {
@@ -363,25 +388,25 @@
"seed": "做种" "seed": "做种"
}, },
"tdarr": { "tdarr": {
"saved": "Saved", "saved": "已保存",
"queue": "队列", "queue": "队列",
"processed": "Processed", "processed": "已处理",
"errored": "出错" "errored": "出错"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "已读",
"unread": "Unread" "unread": "未读"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "请稍候",
"no_devices": "No Device Data Received" "no_devices": "没有接收到设备数据"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "连接中的AP",
"activeUser": "活跃设备", "activeUser": "活跃设备",
"alerts": "警报", "alerts": "警报",
"connectedGateway": "已连接网关", "connectedGateway": "已连接网关",
@@ -400,9 +425,9 @@
"numberOfLeases": "已连接" "numberOfLeases": "已连接"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "所有播放活动",
"streams_active": "Active Streams", "streams_active": "正在播放",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG 频道"
}, },
"opnsense": { "opnsense": {
"cpu": "处理器负载", "cpu": "处理器负载",
@@ -411,24 +436,24 @@
"wanDownload": "WAN下载" "wanDownload": "WAN下载"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "打印机状态",
"print_status": "Print Status", "print_status": "打印状态",
"print_progress": "Progress", "print_progress": "Progress",
"layers": "Layers" "layers": ""
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "关注中",
"queued": "Queued", "queued": "已加入队列",
"series": "Series" "series": "Series"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "喷头温度",
"temp_bed": "Bed temp", "temp_bed": "平台温度",
"job_completion": "Completion" "job_completion": "完成度"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
@@ -438,10 +463,10 @@
"memory_usage": "内存" "memory_usage": "内存"
}, },
"immich": { "immich": {
"users": "Users", "users": "使用者",
"photos": "Photos", "photos": "照片",
"videos": "Videos", "videos": "影片",
"storage": "Storage" "storage": "储存空间"
}, },
"uptimekuma": { "uptimekuma": {
"up": "在线网站", "up": "在线网站",
@@ -457,8 +482,8 @@
}, },
"mylar": { "mylar": {
"series": "系列", "series": "系列",
"issues": "Issues", "issues": "问题",
"wanted": "Wanted" "wanted": "关注中"
}, },
"photoprism": { "photoprism": {
"albums": "相册", "albums": "相册",
@@ -472,52 +497,70 @@
"days": "天" "days": "天"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "队列",
"processing": "Processing", "processing": "处理中",
"processed": "Processed", "processed": "已处理",
"time": "Time" "time": "时间"
}, },
"grafana": { "grafana": {
"totalalerts": "Total Alerts", "totalalerts": "警报总数",
"dashboards": "Dashboards", "dashboards": "控制面板",
"datasources": "Data Sources", "datasources": "数据来源",
"alertstriggered": "Alerts Triggered" "alertstriggered": "触发的警报"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "处理器负载",
"memoryusage": "Memory Usage", "memoryusage": "内存占用",
"freespace": "Free Space", "freespace": "剩余空间",
"activeusers": "Active Users" "activeusers": "活跃用户"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "状态",
"size": "Size", "size": "大小",
"lastrun": "Last Run", "lastrun": "最后运行",
"nextrun": "Next Run", "nextrun": "下次运行",
"failed": "Failed" "failed": "失败"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "在线工作节点",
"total_workers": "Total Workers", "total_workers": "工作节点总数",
"records_total": "Queue Length" "records_total": "队列长度"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "新建立",
"up": "Online", "up": "在线的",
"grace": "In Grace Period", "grace": "延缓中",
"down": "Offline", "down": "离线",
"paused": "Paused", "paused": "暂停",
"status": "Status", "status": "状态",
"last_ping": "Last Ping", "last_ping": "上次检查",
"never": "No pings yet" "never": "尚未检查"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "服务器",
"nodes": "Nodes" "nodes": "节点"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "播放中",
"version": "版本",
"status": "状态",
"up": "在线的",
"down": "离线"
},
"ghostfolio": {
"gross_percent_today": "今天",
"gross_percent_1y": "一年",
"gross_percent_max": "所有时间"
},
"audiobookshelf": {
"podcasts": "播客",
"books": "图书",
"podcastsDuration": "持续时间",
"booksDuration": "持续时间"
} }
} }

View File

@@ -1,7 +1,7 @@
{ {
"widget": { "widget": {
"missing_type": "遺失小工具的類型: {{type}}", "missing_type": "遺失小工具的類型: {{type}}",
"api_error": "API錯誤", "api_error": "API 錯誤",
"status": "狀態", "status": "狀態",
"information": "資訊", "information": "資訊",
"url": "網址", "url": "網址",
@@ -21,13 +21,24 @@
"mem": "記憶體", "mem": "記憶體",
"cpu": "處理器", "cpu": "處理器",
"error": "錯誤", "error": "錯誤",
"unknown": "未知的" "unknown": "未知的",
"running": "執行中",
"starting": "啟動中",
"unhealthy": "不健康的",
"not_found": "未找到",
"exited": "Exited",
"partial": "Partial",
"healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "正在播放", "playing": "正在播放",
"transcoding": "轉碼", "transcoding": "轉碼",
"bitrate": "位元率", "bitrate": "位元率",
"no_active": "無播放活動" "no_active": "無播放活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "正在播放", "playing": "正在播放",
@@ -49,7 +60,14 @@
"used": "已使用", "used": "已使用",
"load": "負載", "load": "負載",
"cpu": "CPU", "cpu": "CPU",
"mem": "記憶體" "mem": "記憶體",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"nzbget": { "nzbget": {
"rate": "速率", "rate": "速率",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "記憶體", "mem": "記憶體",
"wait": "請稍後" "wait": "請稍後",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "總監測數", "totalObserved": "總監測數",
@@ -293,7 +315,10 @@
"update_available": "有可用的更新", "update_available": "有可用的更新",
"up_to_date": "已更新至最新", "up_to_date": "已更新至最新",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "已核准", "approvedPushes": "已核准",
@@ -357,8 +382,8 @@
"seed": "已完成下載" "seed": "已完成下載"
}, },
"flood": { "flood": {
"download": "下速率", "download": "下速率",
"upload": "上速率", "upload": "上速率",
"leech": "未完成下載", "leech": "未完成下載",
"seed": "已完成下載" "seed": "已完成下載"
}, },
@@ -519,5 +544,23 @@
"targets_up": "Targets Up", "targets_up": "Targets Up",
"targets_down": "Targets Down", "targets_down": "Targets Down",
"targets_total": "Total Targets" "targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -19,7 +19,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
function openCurrentItem(newWindow) { function openCurrentItem(newWindow) {
const result = results[currentItemIndex]; const result = results[currentItemIndex];
window.open(result.href, newWindow ? "_blank" : result.target ?? settings.target ?? "_blank"); window.open(result.href, newWindow ? "_blank" : result.target ?? settings.target ?? "_blank", 'noreferrer');
} }
const closeAndReset = useCallback(() => { const closeAndReset = useCallback(() => {

View File

@@ -6,7 +6,7 @@ export default function KubernetesStatus({ service }) {
const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`); const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`);
if (error) { if (error) {
<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="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={t("docker.error")}>
<div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div> <div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div>
</div> </div>
} }

View File

@@ -7,42 +7,55 @@ export default function Status({ service }) {
const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`); const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`);
if (error) { if (error) {
<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="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={t("docker.error")}>
<div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div> <div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div>
</div> </div>
} }
if (data && data.status?.includes("running")) { if (data) {
let statusLabel = "";
if (data.status?.includes("running")) {
if (data.health === "starting") { if (data.health === "starting") {
return ( 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}> <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={t("docker.starting")}>
<div className="text-[8px] font-bold text-blue-500/80 uppercase">{data.health}</div> <div className="text-[8px] font-bold text-blue-500/80 uppercase">{t("docker.starting")}</div>
</div> </div>
); );
} }
if (data.health === "unhealthy") { if (data.health === "unhealthy") {
return ( 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}> <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={t("docker.unhealthy")}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.health}</div> <div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{t("docker.unhealthy")}</div>
</div> </div>
); );
} }
if (!data.health) {
statusLabel = data.status.replace("running", t("docker.running"))
} else {
statusLabel = data.health === "healthy" ? t("docker.healthy") : data.health
}
return ( 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="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={statusLabel}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health || data.status}</div> <div className="text-[8px] font-bold text-emerald-500/80 uppercase">{statusLabel}</div>
</div> </div>
); );
} }
if (data && (data.status === "not found" || data.status === "exited" || data.status?.startsWith("partial"))) { if (data.status === "not found" || data.status === "exited" || data.status?.startsWith("partial")) {
if (data.status === "not found") statusLabel = t("docker.not_found")
else if (data.status === "exited") statusLabel = t("docker.exited")
else statusLabel = data.status.replace("partial", t("docker.partial"))
return ( 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="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={statusLabel}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div> <div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{statusLabel}</div>
</div> </div>
); );
} }
}
return ( 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"> <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">

View File

@@ -1,11 +1,17 @@
import useSWR from "swr"; import useSWR from "swr";
import { BiError } from "react-icons/bi"; import { BiError } from "react-icons/bi";
import { FaMemory } from "react-icons/fa"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
import { FiCpu } from "react-icons/fi"; import { FiCpu } from "react-icons/fi";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import UsageBar from "../resources/usage-bar"; import UsageBar from "../resources/usage-bar";
const cpuSensorLabels = ["cpu_thermal", "Core"];
function convertToFahrenheit(t) {
return t * 9/5 + 32
}
export default function Widget({ options }) { export default function Widget({ options }) {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@@ -64,6 +70,24 @@ export default function Widget({ options }) {
); );
} }
const unit = options.units === "imperial" ? "fahrenheit" : "celsius";
let mainTemp = 0;
let maxTemp = 80;
const cpuSensors = data.sensors?.filter(s => cpuSensorLabels.some(label => s.label.startsWith(label)) && s.type === "temperature_core");
if (options.cputemp && cpuSensors) {
try {
mainTemp = cpuSensors.reduce((acc, s) => acc + s.value, 0) / cpuSensors.length;
maxTemp = Math.max(cpuSensors.reduce((acc, s) => acc + s.warning, 0) / cpuSensors.length, maxTemp);
if (unit === "fahrenheit") {
mainTemp = convertToFahrenheit(mainTemp);
maxTemp = convertToFahrenheit(maxTemp);
}
} catch (e) {
// cpu sensor retrieval failed
}
}
const tempPercent = Math.round((mainTemp / maxTemp) * 100);
return ( return (
<div className="flex flex-col max-w:full sm:basis-auto self-center grow-0 flex-wrap ml-4"> <div className="flex flex-col max-w:full sm:basis-auto self-center grow-0 flex-wrap ml-4">
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
@@ -73,7 +97,7 @@ export default function Widget({ options }) {
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5">
{t("common.number", { {t("common.number", {
value: data.cpu, value: data.quicklook.cpu,
style: "unit", style: "unit",
unit: "percent", unit: "percent",
maximumFractionDigits: 0, maximumFractionDigits: 0,
@@ -81,7 +105,7 @@ export default function Widget({ options }) {
</div> </div>
<div className="pr-1">{t("glances.cpu")}</div> <div className="pr-1">{t("glances.cpu")}</div>
</div> </div>
<UsageBar percent={data.cpu} /> <UsageBar percent={data.quicklook.cpu} />
</div> </div>
</div> </div>
<div className="flex-none flex flex-row items-center mr-3 py-1.5"> <div className="flex-none flex flex-row items-center mr-3 py-1.5">
@@ -90,7 +114,7 @@ export default function Widget({ options }) {
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5">
{t("common.number", { {t("common.number", {
value: data.mem, value: data.quicklook.mem,
style: "unit", style: "unit",
unit: "percent", unit: "percent",
maximumFractionDigits: 0, maximumFractionDigits: 0,
@@ -98,9 +122,40 @@ export default function Widget({ options }) {
</div> </div>
<div className="pr-1">{t("glances.mem")}</div> <div className="pr-1">{t("glances.mem")}</div>
</div> </div>
<UsageBar percent={data.mem} /> <UsageBar percent={data.quicklook.mem} />
</div> </div>
</div> </div>
{options.cputemp && mainTemp > 0 &&
(<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FaThermometerHalf className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
{t("common.number", {
value: mainTemp,
maximumFractionDigits: 1,
style: "unit",
unit
})}
</div>
<div className="pr-1">{t("glances.temp")}</div>
</span>
<UsageBar percent={tempPercent} />
</div>
</div>)}
{options.uptime && data.uptime &&
(<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FaRegClock className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
{data.uptime.replace(" days,", t("glances.days")).replace(/:\d\d:\d\d$/g, t("glances.hours"))}
</div>
<div className="pr-1">{t("glances.uptime")}</div>
</span>
<UsageBar percent={Math.round((new Date().getSeconds() / 60) * 100)} />
</div>
</div>)}
</div> </div>
{options.label && ( {options.label && (
<div className="pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div> <div className="pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div>

View File

@@ -29,12 +29,12 @@ export default function Cpu({ expanded }) {
<FiCpu className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FiCpu className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.cpu")}</div> <div className="pr-1">{t("resources.cpu")}</div>
</div> </div>
{expanded && ( {expanded && (
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.load")}</div> <div className="pr-1">{t("resources.load")}</div>
</div> </div>
)} )}
@@ -51,7 +51,7 @@ export default function Cpu({ expanded }) {
<FiCpu className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FiCpu className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5 pr-1">
{t("common.number", { {t("common.number", {
value: data.cpu.usage, value: data.cpu.usage,
style: "unit", style: "unit",
@@ -63,7 +63,7 @@ export default function Cpu({ expanded }) {
</div> </div>
{expanded && ( {expanded && (
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5 pr-1">
{t("common.number", { {t("common.number", {
value: data.cpu.load, value: data.cpu.load,
maximumFractionDigits: 2, maximumFractionDigits: 2,

View File

@@ -0,0 +1,93 @@
import useSWR from "swr";
import { FaThermometerHalf } from "react-icons/fa";
import { BiError } from "react-icons/bi";
import { useTranslation } from "next-i18next";
import UsageBar from "./usage-bar";
function convertToFahrenheit(t) {
return t * 9/5 + 32
}
export default function CpuTemp({ expanded, units }) {
const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, {
refreshInterval: 1500,
});
if (error || data?.error) {
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<BiError className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left">
<span className="text-theme-800 dark:text-theme-200 text-xs">{t("widget.api_error")}</span>
</div>
</div>
);
}
if (!data || !data.cputemp) {
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5 animate-pulse">
<FaThermometerHalf className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pr-1">{t("resources.temp")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pr-1">{t("resources.max")}</div>
</span>
)}
</div>
</div>
);
}
let minTemp = 0;
let mainTemp = data.cputemp.main;
if (data.cputemp.cores?.length) {
mainTemp = data.cputemp.cores.reduce((a, b) => a + b) / data.cputemp.cores.length;
minTemp = Math.min(...data.cputemp.cores);
}
const unit = units === "imperial" ? "fahrenheit" : "celsius";
mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp);
const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max);
const percent = Math.round(((mainTemp - minTemp) / (maxTemp - minTemp)) * 100);
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FaThermometerHalf className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
{t("common.number", {
value: mainTemp,
maximumFractionDigits: 1,
style: "unit",
unit
})}
</div>
<div className="pr-1">{t("resources.temp")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
{t("common.number", {
value: maxTemp,
maximumFractionDigits: 1,
style: "unit",
unit
})}
</div>
<div className="pr-1">{t("resources.max")}</div>
</span>
)}
<UsageBar percent={percent} />
</div>
</div>
);
}

View File

@@ -29,12 +29,12 @@ export default function Disk({ options, expanded }) {
<FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</div> <div className="pr-1">{t("resources.free")}</div>
</span> </span>
{expanded && ( {expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div> <div className="pr-1">{t("resources.total")}</div>
</span> </span>
)} )}
@@ -44,19 +44,20 @@ export default function Disk({ options, expanded }) {
); );
} }
const percent = Math.round((data.drive.usedGb / data.drive.totalGb) * 100); // data.drive.used not accurate?
const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100);
return ( return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5"> <div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">{t("common.bytes", { value: data.drive.freeGb * 1024 * 1024 * 1024 })}</div> <div className="pl-0.5 pr-1">{t("common.bytes", { value: data.drive.available })}</div>
<div className="pr-1">{t("resources.free")}</div> <div className="pr-1">{t("resources.free")}</div>
</span> </span>
{expanded && ( {expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">{t("common.bytes", { value: data.drive.totalGb * 1024 * 1024 * 1024 })}</div> <div className="pl-0.5 pr-1">{t("common.bytes", { value: data.drive.size })}</div>
<div className="pr-1">{t("resources.total")}</div> <div className="pr-1">{t("resources.total")}</div>
</span> </span>
)} )}

View File

@@ -29,12 +29,12 @@ export default function Memory({ expanded }) {
<FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</div> <div className="pr-1">{t("resources.free")}</div>
</span> </span>
{expanded && ( {expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div> <div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div> <div className="pr-1">{t("resources.total")}</div>
</span> </span>
)} )}
@@ -44,23 +44,23 @@ export default function Memory({ expanded }) {
); );
} }
const percent = Math.round((data.memory.usedMemMb / data.memory.totalMemMb) * 100); const percent = Math.round((data.memory.active / data.memory.total) * 100);
return ( return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5"> <div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" /> <FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5 pr-1">
{t("common.bytes", { value: data.memory.freeMemMb * 1024 * 1024, maximumFractionDigits: 1, binary: true })} {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })}
</div> </div>
<div className="pr-1">{t("resources.free")}</div> <div className="pr-1">{t("resources.free")}</div>
</span> </span>
{expanded && ( {expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5"> <div className="pl-0.5 pr-1">
{t("common.bytes", { {t("common.bytes", {
value: data.memory.totalMemMb * 1024 * 1024, value: data.memory.total,
maximumFractionDigits: 1, maximumFractionDigits: 1,
binary: true, binary: true,
})} })}

View File

@@ -1,9 +1,11 @@
import Disk from "./disk"; import Disk from "./disk";
import Cpu from "./cpu"; import Cpu from "./cpu";
import Memory from "./memory"; import Memory from "./memory";
import CpuTemp from "./cputemp";
import Uptime from "./uptime";
export default function Resources({ options }) { export default function Resources({ options }) {
const { expanded } = options; const { expanded, units } = options;
return ( return (
<div className="flex flex-col max-w:full sm:basis-auto self-center grow-0 flex-wrap"> <div className="flex flex-col max-w:full sm:basis-auto self-center grow-0 flex-wrap">
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
@@ -12,6 +14,8 @@ export default function Resources({ options }) {
{Array.isArray(options.disk) {Array.isArray(options.disk)
? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} />) ? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} />)
: options.disk && <Disk options={options} expanded={expanded} />} : options.disk && <Disk options={options} expanded={expanded} />}
{options.cputemp && <CpuTemp expanded={expanded} units={units} />}
{options.uptime && <Uptime />}
</div> </div>
{options.label && ( {options.label && (
<div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div> <div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div>

View File

@@ -0,0 +1,66 @@
import useSWR from "swr";
import { FaRegClock } from "react-icons/fa";
import { BiError } from "react-icons/bi";
import { useTranslation } from "next-i18next";
import UsageBar from "./usage-bar";
export default function Uptime() {
const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, {
refreshInterval: 1500,
});
if (error || data?.error) {
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<BiError className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left">
<span className="text-theme-800 dark:text-theme-200 text-xs">{t("widget.api_error")}</span>
</div>
</div>
);
}
if (!data) {
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5 animate-pulse">
<FaRegClock className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pr-1">{t("resources.temp")}</div>
</span>
</div>
</div>
);
}
const mo = Math.floor(data.uptime / (3600 * 24 * 31));
const d = Math.floor(data.uptime % (3600 * 24 * 31) / (3600 * 24));
const h = Math.floor(data.uptime % (3600 * 24) / 3600);
const m = Math.floor(data.uptime % 3600 / 60);
let uptime;
if (mo > 0) uptime = `${mo}${t("resources.months")} ${d}${t("resources.days")}`;
else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`;
else uptime = `${h}${t("resources.hours")} ${m}${t("resources.minutes")}`;
const percent = Math.round((new Date().getSeconds() / 60) * 100);
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<FaRegClock className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
{uptime}
</div>
<div className="pr-1">{t("resources.uptime")}</div>
</span>
<UsageBar percent={percent} />
</div>
</div>
);
}

View File

@@ -30,7 +30,7 @@ export default async function handler(req, res) {
}); });
} }
const containerNames = containers.map((container) => container.Names[0].replace(/^\//, "")); const containerNames = containers.map((container) => container.Names[0]?.replace(/^\//, ""));
const containerExists = containerNames.includes(containerName); const containerExists = containerNames.includes(containerName);
if (containerExists) { if (containerExists) {
@@ -75,7 +75,7 @@ export default async function handler(req, res) {
} }
} }
return res.status(200).send({ return res.status(404).send({
error: "not found", error: "not found",
}); });
} catch (e) { } catch (e) {

View File

@@ -30,7 +30,7 @@ export default async function handler(req, res) {
}); });
} }
const containerNames = containers.map((container) => container.Names[0].replace(/^\//, "")); const containerNames = containers.map((container) => container.Names[0]?.replace(/^\//, ""));
const containerExists = containerNames.includes(containerName); const containerExists = containerNames.includes(containerName);
if (containerExists) { if (containerExists) {

View File

@@ -4,19 +4,16 @@ import { getPrivateWidgetOptions } from "utils/config/widget-helpers";
const logger = createLogger("glances"); const logger = createLogger("glances");
export default async function handler(req, res) { async function retrieveFromGlancesAPI(privateWidgetOptions, endpoint) {
const { index } = req.query; let errorMessage;
const privateWidgetOptions = await getPrivateWidgetOptions("glances", index);
const url = privateWidgetOptions?.url; const url = privateWidgetOptions?.url;
if (!url) { if (!url) {
const errorMessage = "Missing Glances URL"; errorMessage = "Missing Glances URL";
logger.error(errorMessage); logger.error(errorMessage);
return res.status(400).json({ error: errorMessage }); throw new Error(errorMessage);
} }
const apiUrl = `${url}/api/3/quicklook`; const apiUrl = `${url}/api/3/${endpoint}`;
const headers = { const headers = {
"Accept-Encoding": "application/json" "Accept-Encoding": "application/json"
}; };
@@ -25,16 +22,41 @@ export default async function handler(req, res) {
} }
const params = { method: "GET", headers }; const params = { method: "GET", headers };
const [status, contentType, data] = await httpProxy(apiUrl, params); const [status, , data] = await httpProxy(apiUrl, params);
if (status === 401) { if (status === 401) {
logger.error("Authorization failure getting data from glances API. Data: %s", data); errorMessage = `Authorization failure getting data from glances API. Data: ${data.toString()}`
logger.error(errorMessage);
throw new Error(errorMessage);
} }
if (status !== 200) { if (status !== 200) {
logger.error("HTTP %d getting data from glances API. Data: %s", status, data); errorMessage = `HTTP ${status} getting data from glances API. Data: ${data.toString()}`
logger.error(errorMessage);
throw new Error(errorMessage);
} }
if (contentType) res.setHeader("Content-Type", contentType); return JSON.parse(Buffer.from(data).toString());
return res.status(status).send(data); }
export default async function handler(req, res) {
const { index } = req.query;
const privateWidgetOptions = await getPrivateWidgetOptions("glances", index);
try {
const quicklookData = await retrieveFromGlancesAPI(privateWidgetOptions, "quicklook");
const data = {
quicklook: quicklookData
}
data.uptime = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime");
data.sensors = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors");
return res.status(200).send(data);
} catch (e) {
return res.status(400).json({ error: e.message });
}
} }

View File

@@ -1,15 +1,16 @@
import { existsSync } from "fs"; import { existsSync } from "fs";
import { cpu, drive, mem } from "node-os-utils"; const si = require('systeminformation');
export default async function handler(req, res) { export default async function handler(req, res) {
const { type, target } = req.query; const { type, target } = req.query;
if (type === "cpu") { if (type === "cpu") {
const load = await si.currentLoad();
return res.status(200).json({ return res.status(200).json({
cpu: { cpu: {
usage: await cpu.usage(1000), usage: load.currentLoad,
load: cpu.loadavgTime(5), load: load.avgLoad,
}, },
}); });
} }
@@ -21,14 +22,29 @@ export default async function handler(req, res) {
}); });
} }
const fsSize = await si.fsSize();
return res.status(200).json({ return res.status(200).json({
drive: await drive.info(target || "/"), drive: fsSize.find(fs => fs.mount === target) ?? fsSize.find(fs => fs.mount === "/")
}); });
} }
if (type === "memory") { if (type === "memory") {
return res.status(200).json({ return res.status(200).json({
memory: await mem.info(), memory: await si.mem(),
});
}
if (type === "cputemp") {
return res.status(200).json({
cputemp: await si.cpuTemperature(),
});
}
if (type === "uptime") {
const timeData = await si.time();
return res.status(200).json({
uptime: timeData.uptime
}); });
} }

View File

@@ -4,7 +4,7 @@ import path from "path";
import yaml from "js-yaml"; import yaml from "js-yaml";
import checkAndCopyConfig, { getSettings } from "utils/config/config"; import checkAndCopyConfig, { getSettings, substituteEnvironmentVars } from "utils/config/config";
import { import {
servicesFromConfig, servicesFromConfig,
servicesFromDocker, servicesFromDocker,
@@ -28,7 +28,8 @@ export async function bookmarksResponse() {
checkAndCopyConfig("bookmarks.yaml"); checkAndCopyConfig("bookmarks.yaml");
const bookmarksYaml = path.join(process.cwd(), "config", "bookmarks.yaml"); const bookmarksYaml = path.join(process.cwd(), "config", "bookmarks.yaml");
const fileContents = await fs.readFile(bookmarksYaml, "utf8"); const rawFileContents = await fs.readFile(bookmarksYaml, "utf8");
const fileContents = substituteEnvironmentVars(rawFileContents);
const bookmarks = yaml.load(fileContents); const bookmarks = yaml.load(fileContents);
if (!bookmarks) return []; if (!bookmarks) return [];

View File

@@ -2,8 +2,13 @@
import { join } from "path"; import { join } from "path";
import { existsSync, copyFile, readFileSync } from "fs"; import { existsSync, copyFile, readFileSync } from "fs";
import cache from "memory-cache";
import yaml from "js-yaml"; import yaml from "js-yaml";
const cacheKey = "homepageEnvironmentVariables";
const homepageVarPrefix = "HOMEPAGE_VAR_";
const homepageFilePrefix = "HOMEPAGE_FILE_";
export default function checkAndCopyConfig(config) { export default function checkAndCopyConfig(config) {
const configYaml = join(process.cwd(), "config", config); const configYaml = join(process.cwd(), "config", config);
if (!existsSync(configYaml)) { if (!existsSync(configYaml)) {
@@ -27,10 +32,38 @@ export default function checkAndCopyConfig(config) {
} }
} }
function getCachedEnvironmentVars() {
let cachedVars = cache.get(cacheKey);
if (!cachedVars) {
// initialize cache
cachedVars = Object.entries(process.env).filter(([key, ]) => key.includes(homepageVarPrefix) || key.includes(homepageFilePrefix));
cache.put(cacheKey, cachedVars);
}
return cachedVars;
}
export function substituteEnvironmentVars(str) {
let result = str;
if (result.includes('{{')) { // crude check if we have vars to replace
const cachedVars = getCachedEnvironmentVars();
cachedVars.forEach(([key, value]) => {
if (key.startsWith(homepageVarPrefix)) {
result = result.replaceAll(`{{${key}}}`, value);
} else if (key.startsWith(homepageFilePrefix)) {
const filename = value;
const fileContents = readFileSync(filename, "utf8");
result = result.replaceAll(`{{${key}}}`, fileContents);
}
});
}
return result;
}
export function getSettings() { export function getSettings() {
checkAndCopyConfig("settings.yaml"); checkAndCopyConfig("settings.yaml");
const settingsYaml = join(process.cwd(), "config", "settings.yaml"); const settingsYaml = join(process.cwd(), "config", "settings.yaml");
const fileContents = readFileSync(settingsYaml, "utf8"); const rawFileContents = readFileSync(settingsYaml, "utf8");
const fileContents = substituteEnvironmentVars(rawFileContents);
return yaml.load(fileContents) ?? {}; return yaml.load(fileContents) ?? {};
} }

View File

@@ -3,13 +3,14 @@ import { readFileSync } from "fs";
import yaml from "js-yaml"; import yaml from "js-yaml";
import checkAndCopyConfig from "utils/config/config"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
export default function getDockerArguments(server) { export default function getDockerArguments(server) {
checkAndCopyConfig("docker.yaml"); checkAndCopyConfig("docker.yaml");
const configFile = path.join(process.cwd(), "config", "docker.yaml"); const configFile = path.join(process.cwd(), "config", "docker.yaml");
const configData = readFileSync(configFile, "utf8"); const rawConfigData = readFileSync(configFile, "utf8");
const configData = substituteEnvironmentVars(rawConfigData);
const servers = yaml.load(configData); const servers = yaml.load(configData);
if (!server) { if (!server) {
@@ -26,10 +27,22 @@ export default function getDockerArguments(server) {
} }
if (servers[server].host) { if (servers[server].host) {
return { const res ={
conn: { host: servers[server].host, port: servers[server].port || null }, conn: { host: servers[server].host },
swarm: !!servers[server].swarm, swarm: !!servers[server].swarm,
}; }
if (servers[server].port){
res.conn.port = servers[server].port;
}
if (servers[server].tls){
res.conn.ca = readFileSync(path.join(process.cwd(), "config", servers[server].tls.caFile));
res.conn.cert = readFileSync(path.join(process.cwd(), "config", servers[server].tls.certFile));
res.conn.key = readFileSync(path.join(process.cwd(), "config", servers[server].tls.keyFile));
}
return res;
} }
return servers[server]; return servers[server];

View File

@@ -4,13 +4,14 @@ import { readFileSync } from "fs";
import yaml from "js-yaml"; import yaml from "js-yaml";
import { KubeConfig } from "@kubernetes/client-node"; import { KubeConfig } from "@kubernetes/client-node";
import checkAndCopyConfig from "utils/config/config"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
export default function getKubeConfig() { export default function getKubeConfig() {
checkAndCopyConfig("kubernetes.yaml"); checkAndCopyConfig("kubernetes.yaml");
const configFile = path.join(process.cwd(), "config", "kubernetes.yaml"); const configFile = path.join(process.cwd(), "config", "kubernetes.yaml");
const configData = readFileSync(configFile, "utf8"); const rawConfigData = readFileSync(configFile, "utf8");
const configData = substituteEnvironmentVars(rawConfigData);
const config = yaml.load(configData); const config = yaml.load(configData);
const kc = new KubeConfig(); const kc = new KubeConfig();

View File

@@ -7,17 +7,19 @@ import * as shvl from "shvl";
import { NetworkingV1Api } from "@kubernetes/client-node"; import { NetworkingV1Api } from "@kubernetes/client-node";
import createLogger from "utils/logger"; import createLogger from "utils/logger";
import checkAndCopyConfig from "utils/config/config"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
import getDockerArguments from "utils/config/docker"; import getDockerArguments from "utils/config/docker";
import getKubeConfig from "utils/config/kubernetes"; import getKubeConfig from "utils/config/kubernetes";
const logger = createLogger("service-helpers"); const logger = createLogger("service-helpers");
export async function servicesFromConfig() { export async function servicesFromConfig() {
checkAndCopyConfig("services.yaml"); checkAndCopyConfig("services.yaml");
const servicesYaml = path.join(process.cwd(), "config", "services.yaml"); const servicesYaml = path.join(process.cwd(), "config", "services.yaml");
const fileContents = await fs.readFile(servicesYaml, "utf8"); const rawFileContents = await fs.readFile(servicesYaml, "utf8");
const fileContents = substituteEnvironmentVars(rawFileContents);
const services = yaml.load(fileContents); const services = yaml.load(fileContents);
if (!services) { if (!services) {
@@ -49,7 +51,8 @@ export async function servicesFromDocker() {
checkAndCopyConfig("docker.yaml"); checkAndCopyConfig("docker.yaml");
const dockerYaml = path.join(process.cwd(), "config", "docker.yaml"); const dockerYaml = path.join(process.cwd(), "config", "docker.yaml");
const dockerFileContents = await fs.readFile(dockerYaml, "utf8"); const rawDockerFileContents = await fs.readFile(dockerYaml, "utf8");
const dockerFileContents = substituteEnvironmentVars(rawDockerFileContents);
const servers = yaml.load(dockerFileContents); const servers = yaml.load(dockerFileContents);
if (!servers) { if (!servers) {
@@ -244,7 +247,10 @@ export function cleanServiceGroups(groups) {
namespace, // kubernetes widget namespace, // kubernetes widget
app, app,
podSelector, podSelector,
wan // opnsense widget wan, // opnsense widget,
enableBlocks, // emby/jellyfin
enableNowPlaying,
volume // diskstation widget
} = cleanedService.widget; } = cleanedService.widget;
const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields; const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields;
@@ -275,6 +281,13 @@ export function cleanServiceGroups(groups) {
if (type === "opnsense") { if (type === "opnsense") {
if (wan) cleanedService.widget.wan = wan; if (wan) cleanedService.widget.wan = wan;
} }
if (type === "emby" || type === "jellyfin") {
if (enableBlocks) cleanedService.widget.enableBlocks = enableBlocks;
if (enableNowPlaying) cleanedService.widget.enableNowPlaying = enableNowPlaying;
}
if (type === "diskstation") {
if (volume) cleanedService.widget.volume = volume;
}
} }
return cleanedService; return cleanedService;

View File

@@ -3,7 +3,7 @@ import path from "path";
import yaml from "js-yaml"; import yaml from "js-yaml";
import checkAndCopyConfig from "utils/config/config"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
const exemptWidgets = ["search"]; const exemptWidgets = ["search"];
@@ -11,7 +11,8 @@ export async function widgetsFromConfig() {
checkAndCopyConfig("widgets.yaml"); checkAndCopyConfig("widgets.yaml");
const widgetsYaml = path.join(process.cwd(), "config", "widgets.yaml"); const widgetsYaml = path.join(process.cwd(), "config", "widgets.yaml");
const fileContents = await fs.readFile(widgetsYaml, "utf8"); const rawFileContents = await fs.readFile(widgetsYaml, "utf8");
const fileContents = substituteEnvironmentVars(rawFileContents);
const widgets = yaml.load(fileContents); const widgets = yaml.load(fileContents);
if (!widgets) return []; if (!widgets) return [];

View File

@@ -28,9 +28,14 @@ export default async function credentialedProxyHandler(req, res, map) {
headers["X-CMC_PRO_API_KEY"] = `${widget.key}`; headers["X-CMC_PRO_API_KEY"] = `${widget.key}`;
} else if (widget.type === "gotify") { } else if (widget.type === "gotify") {
headers["X-gotify-Key"] = `${widget.key}`; headers["X-gotify-Key"] = `${widget.key}`;
} else if (widget.type === "authentik") { } else if ([
headers.Authorization = `Bearer ${widget.key}`; "authentik",
} else if (widget.type === "truenas") { "cloudflared",
"ghostfolio",
"truenas",
"pterodactyl",
].includes(widget.type))
{
headers.Authorization = `Bearer ${widget.key}`; headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "proxmox") { } else if (widget.type === "proxmox") {
headers.Authorization = `PVEAPIToken=${widget.username}=${widget.password}`; headers.Authorization = `PVEAPIToken=${widget.username}=${widget.password}`;
@@ -43,10 +48,12 @@ export default async function credentialedProxyHandler(req, res, map) {
headers.Authorization = `Token ${widget.key}`; headers.Authorization = `Token ${widget.key}`;
} else if (widget.type === "miniflux") { } else if (widget.type === "miniflux") {
headers["X-Auth-Token"] = `${widget.key}`; headers["X-Auth-Token"] = `${widget.key}`;
} else if (widget.type === "cloudflared") { } else if (widget.type === "nextcloud") {
headers.Authorization = `Bearer ${widget.key}`; if (widget.key) {
} else if (widget.type === "pterodactyl") { headers["NC-Token"] = `${widget.key}`;
headers.Authorization = `Bearer ${widget.key}`; } else {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
} else { } else {
headers["X-API-Key"] = `${widget.key}`; headers["X-API-Key"] = `${widget.key}`;
} }

View File

@@ -0,0 +1,46 @@
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: librariesData, error: librariesError } = useWidgetAPI(widget, "libraries");
if (librariesError) {
return <Container error={librariesError} />;
}
if (!librariesData) {
return (
<Container service={service}>
<Block label="audiobookshelf.podcasts" />
<Block label="audiobookshelf.podcastsDuration" />
<Block label="audiobookshelf.books" />
<Block label="audiobookshelf.booksDuration" />
</Container>
);
}
const podcastLibraries = librariesData.filter(l => l.mediaType === "podcast");
const bookLibraries = librariesData.filter(l => l.mediaType === "book");
const totalPodcasts = podcastLibraries.reduce((total, pL) => parseInt(pL.stats?.totalItems, 10) + total, 0);
const totalBooks = bookLibraries.reduce((total, bL) => parseInt(bL.stats?.totalItems, 10) + total, 0);
const totalPodcastsDuration = podcastLibraries.reduce((total, pL) => parseFloat(pL.stats?.totalDuration) + total, 0);
const totalBooksDuration = bookLibraries.reduce((total, bL) => parseFloat(bL.stats?.totalDuration) + total, 0);
return (
<Container service={service}>
<Block label="audiobookshelf.podcasts" value={t("common.number", { value: totalPodcasts })} />
<Block label="audiobookshelf.podcastsDuration" value={t("common.number", { value: totalPodcastsDuration / 60, maximumFractionDigits: 0, style: "unit", unit: "minute" })} />
<Block label="audiobookshelf.books" value={t("common.number", { value: totalBooks })} />
<Block label="audiobookshelf.booksDuration" value={t("common.number", { value: totalBooksDuration / 60, maximumFractionDigits: 0, style: "unit", unit: "minute" })} />
</Container>
);
}

View File

@@ -0,0 +1,64 @@
import { httpProxy } from "utils/proxy/http";
import { formatApiCall } from "utils/proxy/api-helpers";
import getServiceWidget from "utils/config/service-helpers";
import createLogger from "utils/logger";
import widgets from "widgets/widgets";
const proxyName = "audiobookshelfProxyHandler";
const logger = createLogger(proxyName);
async function retrieveFromAPI(url, key) {
const headers = {
"content-type": "application/json",
"Authorization": `Bearer ${key}`
};
const [status, , data] = await httpProxy(url, { headers });
if (status !== 200) {
throw new Error(`Error getting data from Audiobookshelf: ${status}. Data: ${data.toString()}`);
}
return JSON.parse(Buffer.from(data).toString());
}
export default async function audiobookshelfProxyHandler(req, res) {
const { group, service, endpoint } = 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" });
}
if (!widget.key) {
logger.debug("Invalid or missing key for service '%s' in group '%s'", service, group);
return res.status(400).json({ error: "Missing widget key" });
}
const apiURL = widgets[widget.type].api;
try {
const url = new URL(formatApiCall(apiURL, { endpoint, ...widget }));
const libraryData = await retrieveFromAPI(url, widget.key);
const libraryStats = await Promise.all(libraryData.libraries.map(async l => {
const stats = await retrieveFromAPI(new URL(formatApiCall(apiURL, { endpoint: `libraries/${l.id}/stats`, ...widget })), widget.key);
return {
...l,
stats
};
}));
return res.status(200).send(libraryStats);
} catch (e) {
logger.error(e.message);
return res.status(500).send({error: {message: e.message}});
}
}

View File

@@ -0,0 +1,14 @@
import audiobookshelfProxyHandler from "./proxy";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: audiobookshelfProxyHandler,
mappings: {
libraries: {
endpoint: "libraries",
},
},
};
export default widget;

View File

@@ -2,6 +2,7 @@ import dynamic from "next/dynamic";
const components = { const components = {
adguard: dynamic(() => import("./adguard/component")), adguard: dynamic(() => import("./adguard/component")),
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
authentik: dynamic(() => import("./authentik/component")), authentik: dynamic(() => import("./authentik/component")),
autobrr: dynamic(() => import("./autobrr/component")), autobrr: dynamic(() => import("./autobrr/component")),
bazarr: dynamic(() => import("./bazarr/component")), bazarr: dynamic(() => import("./bazarr/component")),
@@ -16,6 +17,7 @@ const components = {
emby: dynamic(() => import("./emby/component")), emby: dynamic(() => import("./emby/component")),
fileflows: dynamic(() => import("./fileflows/component")), fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")), flood: dynamic(() => import("./flood/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")),
gluetun: dynamic(() => import("./gluetun/component")), gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")), gotify: dynamic(() => import("./gotify/component")),
grafana: dynamic(() => import("./grafana/component")), grafana: dynamic(() => import("./grafana/component")),
@@ -31,6 +33,7 @@ const components = {
lidarr: dynamic(() => import("./lidarr/component")), lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")), mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")), medusa: dynamic(() => import("./medusa/component")),
minecraft: dynamic(() => import("./minecraft/component")),
miniflux: dynamic(() => import("./miniflux/component")), miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")), mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")), moonraker: dynamic(() => import("./moonraker/component")),

View File

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

View File

@@ -33,8 +33,7 @@ export default function Component({ service }) {
const uptime = `${ t("common.number", { value: days }) } ${ t("diskstation.days") }`; const uptime = `${ t("common.number", { value: days }) } ${ t("diskstation.days") }`;
// storage info // storage info
// TODO: figure out how to display info for more than one volume const volume = widget.volume ? storageData.data.vol_info?.find(vol => vol.name === widget.volume) : storageData.data.vol_info?.[0];
const volume = storageData.data.vol_info?.[0];
const usedBytes = parseFloat(volume?.used_size); const usedBytes = parseFloat(volume?.used_size);
const totalBytes = parseFloat(volume?.total_size); const totalBytes = parseFloat(volume?.total_size);
const freeBytes = totalBytes - usedBytes; const freeBytes = totalBytes - usedBytes;

View File

@@ -1,7 +1,7 @@
import useSWR from "swr"; import useSWR from "swr";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import calculateCPUPercent from "./stats-helpers"; import { calculateCPUPercent, calculateUsedMemory } from "./stats-helpers";
import Container from "components/services/widget/container"; import Container from "components/services/widget/container";
import Block from "components/services/widget/block"; import Block from "components/services/widget/block";
@@ -47,7 +47,7 @@ export default function Component({ service }) {
<Container service={service}> <Container service={service}>
<Block label="docker.cpu" value={t("common.percent", { value: calculateCPUPercent(statsData.stats) })} /> <Block label="docker.cpu" value={t("common.percent", { value: calculateCPUPercent(statsData.stats) })} />
{statsData.stats.memory_stats.usage && {statsData.stats.memory_stats.usage &&
<Block label="docker.mem" value={t("common.bytes", { value: statsData.stats.memory_stats.usage })} /> <Block label="docker.mem" value={t("common.bytes", { value: calculateUsedMemory(statsData.stats) })} />
} }
{network && ( {network && (
<> <>

View File

@@ -1,4 +1,4 @@
export default function calculateCPUPercent(stats) { export function calculateCPUPercent(stats) {
let cpuPercent = 0.0; let cpuPercent = 0.0;
const cpuDelta = stats.cpu_stats.cpu_usage.total_usage - stats.precpu_stats.cpu_usage.total_usage; const cpuDelta = stats.cpu_stats.cpu_usage.total_usage - stats.precpu_stats.cpu_usage.total_usage;
const systemDelta = stats.cpu_stats.system_cpu_usage - stats.precpu_stats.system_cpu_usage; const systemDelta = stats.cpu_stats.system_cpu_usage - stats.precpu_stats.system_cpu_usage;
@@ -9,3 +9,7 @@ export default function calculateCPUPercent(stats) {
return Math.round(cpuPercent * 10) / 10; return Math.round(cpuPercent * 10) / 10;
} }
export function calculateUsedMemory(stats) {
return stats.memory_stats.usage - (stats.memory_stats.stats.cache ?? 0)
}

View File

@@ -2,6 +2,7 @@ import { useTranslation } from "next-i18next";
import { BsVolumeMuteFill, BsFillPlayFill, BsPauseFill, BsCpu, BsFillCpuFill } from "react-icons/bs"; import { BsVolumeMuteFill, BsFillPlayFill, BsPauseFill, BsCpu, BsFillCpuFill } from "react-icons/bs";
import { MdOutlineSmartDisplay } from "react-icons/md"; import { MdOutlineSmartDisplay } from "react-icons/md";
import Block from "components/services/widget/block";
import Container from "components/services/widget/container"; import Container from "components/services/widget/container";
import { formatProxyUrlWithSegments } from "utils/proxy/api-helpers"; import { formatProxyUrlWithSegments } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api"; import useWidgetAPI from "utils/proxy/use-widget-api";
@@ -148,6 +149,33 @@ function SessionEntry({ playCommand, session }) {
); );
} }
function CountBlocks({ service, countData }) {
const { t } = useTranslation();
// allows filtering
// eslint-disable-next-line no-param-reassign
if (service.widget?.type === 'jellyfin') service.widget.type = 'emby'
if (!countData) {
return (
<Container service={service}>
<Block label="emby.movies" />
<Block label="emby.series" />
<Block label="emby.episodes" />
<Block label="emby.songs" />
</Container>
)
}
return (
<Container service={service}>
<Block label="emby.movies" value={t("common.number", { value: countData.MovieCount })} />
<Block label="emby.series" value={t("common.number", { value: countData.SeriesCount })} />
<Block label="emby.episodes" value={t("common.number", { value: countData.EpisodeCount })} />
<Block label="emby.songs" value={t("common.number", { value: countData.SongCount })} />
</Container>
)
}
export default function Component({ service }) { export default function Component({ service }) {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -161,6 +189,12 @@ export default function Component({ service }) {
refreshInterval: 5000, refreshInterval: 5000,
}); });
const {
data: countData,
error: countError,
} = useWidgetAPI(widget, "Count", {
refreshInterval: 60000,});
async function handlePlayCommand(session, command) { async function handlePlayCommand(session, command) {
const url = formatProxyUrlWithSegments(widget, "PlayControl", { const url = formatProxyUrlWithSegments(widget, "PlayControl", {
sessionId: session.Id, sessionId: session.Id,
@@ -171,23 +205,30 @@ export default function Component({ service }) {
}); });
} }
if (sessionsError) { if (sessionsError || countError) {
return <Container error={sessionsError} />; return <Container error={sessionsError ?? countError} />;
} }
if (!sessionsData) { const enableBlocks = service.widget?.enableBlocks
const enableNowPlaying = service.widget?.enableNowPlaying ?? true
if (!sessionsData || !countData) {
return ( return (
<div className="flex flex-col pb-1"> <>
{enableBlocks && <CountBlocks service={service} countData={null} />}
{enableNowPlaying && <div className="flex flex-col pb-1">
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1"> <div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
<span className="absolute left-2 text-xs mt-[2px]">-</span> <span className="absolute left-2 text-xs mt-[2px]">-</span>
</div> </div>
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1"> <div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
<span className="absolute left-2 text-xs mt-[2px]">-</span> <span className="absolute left-2 text-xs mt-[2px]">-</span>
</div> </div>
</div> </div>}
</>
); );
} }
if (enableNowPlaying) {
const playing = sessionsData const playing = sessionsData
.filter((session) => session?.NowPlayingItem) .filter((session) => session?.NowPlayingItem)
.sort((a, b) => { .sort((a, b) => {
@@ -202,6 +243,8 @@ export default function Component({ service }) {
if (playing.length === 0) { if (playing.length === 0) {
return ( return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<div className="flex flex-col pb-1 mx-1"> <div className="flex flex-col pb-1 mx-1">
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1"> <div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
<span className="absolute left-2 text-xs mt-[2px]">{t("emby.no_active")}</span> <span className="absolute left-2 text-xs mt-[2px]">{t("emby.no_active")}</span>
@@ -210,22 +253,29 @@ export default function Component({ service }) {
<span className="absolute left-2 text-xs mt-[2px]">-</span> <span className="absolute left-2 text-xs mt-[2px]">-</span>
</div> </div>
</div> </div>
</>
); );
} }
if (playing.length === 1) { if (playing.length === 1) {
const session = playing[0]; const session = playing[0];
return ( return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<div className="flex flex-col pb-1 mx-1"> <div className="flex flex-col pb-1 mx-1">
<SingleSessionEntry <SingleSessionEntry
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)} playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
session={session} session={session}
/> />
</div> </div>
</>
); );
} }
if (playing.length === -1)
return ( return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<div className="flex flex-col pb-1 mx-1"> <div className="flex flex-col pb-1 mx-1">
{playing.map((session) => ( {playing.map((session) => (
<SessionEntry <SessionEntry
@@ -235,5 +285,13 @@ export default function Component({ service }) {
/> />
))} ))}
</div> </div>
</>
); );
}
if (enableBlocks) {
return (
<CountBlocks service={service} countData={countData} />
)
}
} }

View File

@@ -8,6 +8,15 @@ const widget = {
Sessions: { Sessions: {
endpoint: "Sessions", endpoint: "Sessions",
}, },
Count: {
endpoint: "Items/Counts",
segments: [
"MovieCount",
"SeriesCount",
"EpisodeCount",
"SongCount"
]
},
PlayControl: { PlayControl: {
method: "POST", method: "POST",
endpoint: "Sessions/{sessionId}/Playing/{command}", endpoint: "Sessions/{sessionId}/Playing/{command}",

View File

@@ -0,0 +1,41 @@
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 getPerformancePercent(t, performanceRange) {
return `${(performanceRange.performance.currentGrossPerformancePercent > 0 ? "+" : "")}${t("common.percent", { value: performanceRange.performance.currentGrossPerformancePercent * 100, maximumFractionDigits: 2 })}`
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: performanceToday, error: ghostfolioErrorToday } = useWidgetAPI(widget, "today");
const { data: performanceYear, error: ghostfolioErrorYear } = useWidgetAPI(widget, "year");
const { data: performanceMax, error: ghostfolioErrorMax } = useWidgetAPI(widget, "max");
if (ghostfolioErrorToday || ghostfolioErrorYear || ghostfolioErrorMax) {
const finalError = ghostfolioErrorToday ?? ghostfolioErrorYear ?? ghostfolioErrorMax
return <Container error={finalError} />;
}
if (!performanceToday || !performanceYear || !performanceMax) {
return (
<Container service={service}>
<Block label="ghostfolio.gross_percent_today" />
<Block label="ghostfolio.gross_percent_1y" />
<Block label="ghostfolio.gross_percent_max" />
</Container>
);
}
return (
<Container service={service}>
<Block label="ghostfolio.gross_percent_today" value={getPerformancePercent(t, performanceToday)} />
<Block label="ghostfolio.gross_percent_1y" value={getPerformancePercent(t, performanceYear)} />
<Block label="ghostfolio.gross_percent_max" value={getPerformancePercent(t, performanceMax)} />
</Container>
);
}

View File

@@ -0,0 +1,20 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/v2/portfolio/performance?range={endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
today: {
endpoint: "1d"
},
year: {
endpoint: "1y"
},
max: {
endpoint: "max"
},
},
};
export default widget;

View File

@@ -29,7 +29,7 @@ export default function Component({ service }) {
<Container service={service}> <Container service={service}>
<Block <Block
label="widget.status" label="widget.status"
value={`${homebridgeData.status[0].toUpperCase()}${homebridgeData.status.substr(1)}`} value={t(`homebridge.${homebridgeData.status}`)}
/> />
<Block <Block
label="homebridge.updates" label="homebridge.updates"

View File

@@ -1,8 +1,11 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container"; import Container from "components/services/widget/container";
import Block from "components/services/widget/block"; import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api"; import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) { export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service; const { widget } = service;
const { data: immichData, error: immichError } = useWidgetAPI(widget); const { data: immichData, error: immichError } = useWidgetAPI(widget);
@@ -27,7 +30,17 @@ export default function Component({ service }) {
<Block label="immich.users" value={immichData.usageByUser.length} /> <Block label="immich.users" value={immichData.usageByUser.length} />
<Block label="immich.photos" value={immichData.photos} /> <Block label="immich.photos" value={immichData.photos} />
<Block label="immich.videos" value={immichData.videos} /> <Block label="immich.videos" value={immichData.videos} />
<Block label="immich.storage" value={immichData.usage} /> <Block label="immich.storage"
value={
// backwards-compatible e.g. '9 GiB'
immichData.usage.toString().toLowerCase().includes('b') ?
immichData.usage :
t("common.bytes", {
value: immichData.usage,
maximumFractionDigits: 1,
binary: true // match immich
})
} />
</Container> </Container>
); );
} }

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 { widget } = service;
const { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
const { t } = useTranslation();
if(serverError){
return <Container error={serverError} />;
}
if (!serverData) {
return (
<Container service={service}>
<Block label="minecraft.status"/>
<Block label="minecraft.players" />
<Block label="minecraft.version" />
</Container>
);
}
const statusIndicator = serverData.online ?
<span className="text-green-500">{t("minecraft.up")}</span>:
<span className="text-red-500">{t("minecraft.down")}</span>;
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
const version = serverData.version || "-";
return (
<Container service={service}>
<Block label="minecraft.status" value={statusIndicator} />
<Block label="minecraft.players" value={players} />
<Block label="minecraft.version" value={version} />
</Container>
);
}

View File

@@ -0,0 +1,28 @@
import { pingWithPromise } from "minecraft-ping-js";
import createLogger from "utils/logger";
import getServiceWidget from "utils/config/service-helpers";
const proxyName = "minecraftProxyHandler";
const logger = createLogger(proxyName);
export default async function minecraftProxyHandler(req, res) {
const { group, service } = req.query;
const serviceWidget = await getServiceWidget(group, service);
const url = new URL(serviceWidget.url);
try {
const pingResponse = await pingWithPromise(url.hostname, url.port || 25565);
res.status(200).send({
version: pingResponse.version.name,
online: true,
players: pingResponse.players
});
} catch (e) {
logger.error(e);
res.status(200).send({
version: undefined,
online: false,
players: undefined
});
}
}

View File

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

View File

@@ -1,8 +1,8 @@
import genericProxyHandler from "utils/proxy/handlers/generic"; import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = { const widget = {
api: "{url}/{endpoint}", api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler, proxyHandler: credentialedProxyHandler,
mappings: { mappings: {
serverinfo: { serverinfo: {

View File

@@ -26,7 +26,7 @@ export default function Component({ service }) {
return ( return (
<Container service={service}> <Container service={service}>
<Block label="pyload.speed" value={t("common.bitrate", { value: pyloadData.speed })} /> <Block label="pyload.speed" value={t("common.byterate", { value: pyloadData.speed })} />
<Block label="pyload.active" value={t("common.number", { value: pyloadData.active })} /> <Block label="pyload.active" value={t("common.number", { value: pyloadData.active })} />
<Block label="pyload.queue" value={t("common.number", { value: pyloadData.queue })} /> <Block label="pyload.queue" value={t("common.number", { value: pyloadData.queue })} />
<Block label="pyload.total" value={t("common.number", { value: pyloadData.total })} /> <Block label="pyload.total" value={t("common.number", { value: pyloadData.total })} />

View File

@@ -34,8 +34,8 @@ export default function Component({ service }) {
return ( return (
<Container service={service}> <Container service={service}>
<Block label="rutorrent.active" value={active.length} /> <Block label="rutorrent.active" value={active.length} />
<Block label="rutorrent.upload" value={t("common.bitrate", { value: upload })} /> <Block label="rutorrent.upload" value={t("common.byterate", { value: upload })} />
<Block label="rutorrent.download" value={t("common.bitrate", { value: download })} /> <Block label="rutorrent.download" value={t("common.byterate", { value: download })} />
</Container> </Container>
); );
} }

View File

@@ -1,4 +1,5 @@
import adguard from "./adguard/widget"; import adguard from "./adguard/widget";
import audiobookshelf from "./audiobookshelf/widget";
import authentik from "./authentik/widget"; import authentik from "./authentik/widget";
import autobrr from "./autobrr/widget"; import autobrr from "./autobrr/widget";
import bazarr from "./bazarr/widget"; import bazarr from "./bazarr/widget";
@@ -11,6 +12,7 @@ import downloadstation from "./downloadstation/widget";
import emby from "./emby/widget"; import emby from "./emby/widget";
import fileflows from "./fileflows/widget"; import fileflows from "./fileflows/widget";
import flood from "./flood/widget"; import flood from "./flood/widget";
import ghostfolio from "./ghostfolio/widget"
import gluetun from "./gluetun/widget"; import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget"; import gotify from "./gotify/widget";
import grafana from "./grafana/widget"; import grafana from "./grafana/widget";
@@ -25,6 +27,7 @@ import kopia from "./kopia/widget";
import lidarr from "./lidarr/widget"; import lidarr from "./lidarr/widget";
import mastodon from "./mastodon/widget"; import mastodon from "./mastodon/widget";
import medusa from "./medusa/widget"; import medusa from "./medusa/widget";
import minecraft from "./minecraft/widget";
import miniflux from "./miniflux/widget"; import miniflux from "./miniflux/widget";
import mikrotik from "./mikrotik/widget"; import mikrotik from "./mikrotik/widget";
import moonraker from "./moonraker/widget"; import moonraker from "./moonraker/widget";
@@ -73,6 +76,7 @@ import xteve from "./xteve/widget";
const widgets = { const widgets = {
adguard, adguard,
audiobookshelf,
authentik, authentik,
autobrr, autobrr,
bazarr, bazarr,
@@ -85,6 +89,7 @@ const widgets = {
emby, emby,
fileflows, fileflows,
flood, flood,
ghostfolio,
gluetun, gluetun,
gotify, gotify,
grafana, grafana,
@@ -100,6 +105,7 @@ const widgets = {
lidarr, lidarr,
mastodon, mastodon,
medusa, medusa,
minecraft,
miniflux, miniflux,
mikrotik, mikrotik,
moonraker, moonraker,