Compare commits

..

377 Commits

Author SHA1 Message Date
shamoon
a0fa6367ca Merge pull request #1161 from MrLemur/add-traefik-ingressroute
Feature: Add Traefik IngressRoute support for Kubernetes
2023-04-04 15:56:38 -07:00
shamoon
8378066bd4 Merge pull request #1182 from benphelps/fix-1181
Fix emby/jellyfin now playing > 1
2023-04-04 15:04:16 -07:00
shamoon
db85193bbf Fix emby/jellyfin now playing > 1 2023-04-04 15:00:09 -07:00
shamoon
364c7ce183 make osx-temperature-sensor optional 2023-04-04 14:27:44 -07:00
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
Kassim Benhaddad
df714c7556 feat: add Traefik IngressRoute support for k8s 2023-03-29 23:19:56 +01: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 6644 additions and 5803 deletions

View File

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

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
/node_modules
/.pnp
.pnp.js
.pnpm-store
# testing
/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.
- Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6
- Supports all Raspberry Pi's, most SBCs & Apple Silicon
- Full i18n support with automatic language detection
- Translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
- 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
- Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/)
- Service & Web Bookmarks
- Docker Integration

4989
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -20,9 +20,9 @@
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.4.1",
"memory-cache": "^0.2.0",
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.1",
"next-i18next": "^12.0.1",
"node-os-utils": "^1.3.7",
"pretty-bytes": "^6.0.0",
"raw-body": "^2.5.1",
"react": "^18.2.0",
@@ -31,6 +31,7 @@
"react-icons": "^4.4.0",
"shvl": "^3.0.0",
"swr": "^1.3.0",
"systeminformation": "^5.17.12",
"tough-cookie": "^4.1.2",
"winston": "^3.8.2",
"xml-js": "^1.6.11"
@@ -52,5 +53,8 @@
"tailwind-scrollbar": "^2.0.1",
"tailwindcss": "^3.1.8",
"typescript": "^4.8.3"
},
"optionalDependencies": {
"osx-temperature-sensor": "^1.0.8"
}
}

2247
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,14 @@
"free": "متاح",
"used": "مستخدم",
"load": "الضغط",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "المستخدمون",
@@ -107,13 +114,24 @@
"cpu": "المعالج",
"offline": "غير متصل",
"error": "خطأ",
"unknown": "مجهول"
"unknown": "مجهول",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "يعمل الآن",
"transcoding": "التحويل",
"bitrate": "معدل البت",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"songs": "Songs",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -277,7 +295,11 @@
"glances": {
"cpu": "معالج",
"mem": "الذاكرة",
"wait": "الرجاء الإنتظار"
"wait": "الرجاء الإنتظار",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "مفضلة",
@@ -293,7 +315,10 @@
"update_available": "تحديث متاح",
"up_to_date": "حتى الآن",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "Свободни",
"used": "Заети",
"load": "Натоварване",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Потребители",
@@ -59,13 +66,24 @@
"mem": "MEM",
"cpu": "CPU",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"partial": "Partial",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"healthy": "Healthy"
},
"emby": {
"playing": "Възпроизвежда",
"transcoding": "Конвертира",
"bitrate": "Bitrate",
"no_active": "Няма активни потоци"
"no_active": "Няма активни потоци",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Възпроизвежда",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"rejectedPushes": "Rejected",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Càrrega",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Rebut",
@@ -48,13 +55,24 @@
"cpu": "Processador",
"offline": "Fora de línia",
"error": "Error",
"unknown": "Desconegut"
"unknown": "Desconegut",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Reproduint",
"transcoding": "Transcodificant",
"bitrate": "Taxa de bits",
"no_active": "Sense reproduccions actives"
"no_active": "Sense reproduccions actives",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Reproduint",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Processador",
"mem": "Memòria",
"wait": "Si us plau, espereu"
"wait": "Si us plau, espereu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total d'observats",
@@ -293,7 +315,10 @@
"update_available": "Actualització disponible",
"up_to_date": "Actualitzat",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Aprovat",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": {
"missing_type": "Chybí typ widgetu: {{type}}",
"api_error": "Chyba API",
"status": "Status",
"status": "Stav",
"information": "Informace",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Data odpovědi"
"raw_error": "Nevyřešená chyba",
"response_data": "Data odezvy"
},
"weather": {
"current": "Aktuální poloha",
@@ -35,7 +35,14 @@
"free": "Volné",
"used": "Využité",
"load": "Vytížení",
"mem": "MEM"
"mem": "RAM",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"temp": "TEMP"
},
"unifi": {
"users": "Uživatelé",
@@ -61,13 +68,24 @@
"cpu": "CPU",
"offline": "Offline",
"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": {
"playing": "Přehrává",
"transcoding": "Transkódování",
"bitrate": "Bitrate",
"no_active": "Žádný aktivní stream"
"no_active": "Žádný aktivní stream",
"movies": "Filmy",
"series": "Seriály",
"episodes": "Epizody",
"songs": "Písničky"
},
"changedetectionio": {
"totalObserved": "Celkem zjištěno",
@@ -102,33 +120,33 @@
"transmission": {
"download": "Stahování",
"upload": "Nahrávání",
"leech": "Leecher",
"seed": "Seeder"
"leech": "Leecherů",
"seed": "Seedů"
},
"qbittorrent": {
"download": "Stahování",
"upload": "Nahrávání",
"leech": "Leecher",
"seed": "Seeder"
"leech": "Leechované",
"seed": "Seedované"
},
"sonarr": {
"wanted": "Hledaný",
"wanted": "Hledané",
"queued": "Ve frontě",
"series": "Seriály"
},
"radarr": {
"wanted": "Hledaný",
"wanted": "Hledané",
"missing": "Chybějící",
"queued": "Ve frontě",
"movies": "Filmy"
},
"lidarr": {
"wanted": "Hledaný",
"wanted": "Hledané",
"queued": "Ve frontě",
"albums": "Alba"
},
"readarr": {
"wanted": "Hledaný",
"wanted": "Hledané",
"queued": "Ve frontě",
"books": "Knihy"
},
@@ -139,23 +157,23 @@
"ombi": {
"pending": "Čeká",
"approved": "Schváleno",
"available": "Dostupný"
"available": "Dostupné"
},
"jellyseerr": {
"pending": "Čeká",
"approved": "Schváleno",
"available": "Dostupný"
"available": "Dostupné"
},
"overseerr": {
"pending": "Čeká",
"approved": "Schváleno",
"available": "Dostupný",
"processing": "Zpracováváno"
"available": "Dostupné",
"processing": "Zpracovávání"
},
"pihole": {
"queries": "Dotazy",
"blocked": "Blokováno",
"gravity": "Gravitace"
"gravity": "Gravity"
},
"adguard": {
"queries": "Dotazy",
@@ -289,23 +307,30 @@
"glances": {
"cpu": "CPU",
"mem": "RAM",
"wait": "Prosím počkejte"
"wait": "Prosím počkejte",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Záložka",
"service": "Služba",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"search": "Hledat",
"custom": "Vlastní",
"visit": "Navštivte",
"url": "URL"
},
"homebridge": {
"update_available": "Dostupná aktualizace",
"up_to_date": "Aktuální",
"update_available": "Dostupná",
"up_to_date": "Žádné",
"available_update": "Systém",
"updates": "Aktualizace",
"child_bridges": "Podřadné můstky",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Zapnutý",
"pending": "Čeká se",
"down": "Vypnutý"
},
"watchtower": {
"containers_scanned": "Naskenováno",
@@ -319,22 +344,22 @@
"indexers": "Indexery"
},
"navidrome": {
"nothing_streaming": "Žádné aktivní streams",
"please_wait": "Prosím vyčkejte"
"nothing_streaming": "Žádné aktivní streamy",
"please_wait": "Čekejte prosím"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"total": "Total"
"speed": "Rychlost",
"active": "Aktiv",
"queue": "Fronta",
"total": "Celkem"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "Veřejná IP",
"region": "Oblast",
"country": "Stát"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Kanály",
"hd": "HD"
},
"ping": {
@@ -342,13 +367,13 @@
"ping": "Odezva"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "Přijato",
"failed": "Neúspěšné",
"unknown": "Neznámé"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
"inbox": "Doručená pošta",
"total": "Celkem"
},
"deluge": {
"upload": "Nahrávání",
@@ -369,12 +394,12 @@
"saved": "Uložené"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "Přečteno",
"unread": "Nepřečteno"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Počkejte prosím",
"no_devices": "Žádná přijatá data zařízení"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -394,130 +419,148 @@
"seed": "Seed"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
"cpuLoad": "Zatížení procesoru",
"memoryUsed": "Použitá paměť",
"uptime": "Doba provozu",
"numberOfLeases": "Pronájmy"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "Všechny proudy",
"streams_active": "Aktivní proudy",
"streams_xepg": "Kanály XEPG"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
"cpu": "Zatížení procesoru",
"memory": "Aktivní paměť",
"wanUpload": "Nahrávání WAN",
"wanDownload": "WAN Stažení"
},
"moonraker": {
"print_progress": "Progress",
"printer_state": "Printer State",
"print_status": "Print Status",
"layers": "Layers"
"print_progress": "Progres",
"printer_state": "Stav tiskárny",
"print_status": "Stav tisku",
"layers": "Vrstvy"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"wanted": "Hledané",
"queued": "Fronta",
"series": "Série"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"printer_state": "Stav",
"temp_tool": "Teplota nástroje",
"temp_bed": "Teplota postele",
"job_completion": "Dokončení"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"origin_ip": "Původní IP",
"status": "Stav"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "Datové úložiště",
"failed_tasks_24h": "Neúspěšné úlohy 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Paměť"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "Uživatelé",
"photos": "Fotografie",
"videos": "Videa",
"storage": "Úložiště"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"up": "Stránky Up",
"down": "Stránky Down",
"uptime": "Doba provozu",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
"libraries": "Knihovny",
"series": "Série",
"books": "Knihy"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
"series": "Série",
"issues": "Problémy",
"wanted": "Hledá se"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
"albums": "Alba",
"photos": "Fotografie",
"videos": "Videa",
"people": "Lidé"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
"days": "Dni",
"uptime": "Doba provozu",
"volumeAvailable": "K dispozici"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
"queue": "Fronta",
"processing": "Zpracování",
"processed": "Zpracováno",
"time": "Čas"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
"dashboards": "Přístrojové panely",
"datasources": "Zdroje dat",
"totalalerts": "Celkový počet upozornění",
"alertstriggered": "Spuštěné výstrahy"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "CPU zatížení",
"memoryusage": "Využití paměti",
"freespace": "Volný prostor",
"activeusers": "Aktivní uživatelé"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"status": "Stav",
"size": "Velikost",
"lastrun": "Poslední spuštění",
"nextrun": "Další spuštění",
"failed": "Neúspěšné"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"active_workers": "Aktivní workers",
"total_workers": "Workers celkem",
"records_total": "Délka fronty"
},
"healthchecks": {
"new": "New",
"new": "Nové",
"up": "Online",
"grace": "In Grace Period",
"grace": "V období odkladu",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
"paused": "Pozastaveno",
"status": "Stav",
"last_ping": "Poslední ping",
"never": "Zatím žádné pingy"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
"servers": "Servery",
"nodes": "Uzly"
},
"prometheus": {
"targets_down": "Targets Down",
"targets_total": "Total Targets",
"targets_up": "Targets Up"
"targets_down": "Cíle vypnuté",
"targets_total": "Cíle celkem",
"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": {
"cpu": "CPU",
"mem": "RAM",
"wait": "Vent venligst"
"wait": "Vent venligst",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
},
"wmo": {
"1-day": "Hovedsageligt solrigt",
@@ -134,7 +138,10 @@
"update_available": "Opdateringer tilgængelige",
"up_to_date": "Opdateret",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"widget": {
"missing_type": "Manglende Widget Type: {{type}}",
@@ -160,7 +167,14 @@
"free": "Fri",
"used": "Brugt",
"load": "Belastning",
"mem": "MEM"
"mem": "MEM",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
},
"unifi": {
"users": "Brugere",
@@ -186,13 +200,24 @@
"mem": "RAM",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Afspiller",
"transcoding": "Transcoder",
"bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams"
"no_active": "Ingen Aktive Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observeret",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"status": "Status",
"url": "URL",
"information": "Information",
"raw_error": "Raw Error",
"information": "Informationen",
"raw_error": "Unbearbeiteter Fehler",
"response_data": "Empfangene Daten"
},
"search": {
@@ -17,7 +17,14 @@
"used": "Gebraucht",
"load": "Last",
"cpu": "CPU",
"mem": "MEM"
"mem": "RAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Rx",
@@ -25,14 +32,25 @@
"mem": "Mem",
"cpu": "Prozessor",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"error": "Fehler",
"unknown": "Unbekannt",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Spielen",
"transcoding": "Transcodierung",
"bitrate": "Bitrate",
"no_active": "Keine aktiven Streams"
"no_active": "Keine aktiven Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Spielen",
@@ -106,7 +124,7 @@
"pending": "Ausstehend",
"approved": "Genehmigt",
"available": "Verfügbar",
"processing": "Processing"
"processing": "Wird verarbeitet"
},
"sabnzbd": {
"rate": "Geschwindigkeit",
@@ -205,7 +223,7 @@
"devices": "Geräte",
"lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN Geräte",
"empty_data": "Subsystem status unknown"
"empty_data": "Subsystem status unbekannt"
},
"plex": {
"streams": "Aktive Streams",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Prozessor",
"mem": "RAM",
"wait": "Bitte warten"
"wait": "Bitte warten",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Gesamt beobachtet",
@@ -282,9 +304,9 @@
"quicklaunch": {
"bookmark": "Lesezeichen",
"service": "Dienst",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"search": "Suchen",
"custom": "Benutzerdefiniert",
"visit": "Besuchen",
"url": "URL"
},
"homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Aktualisierung verfügbar",
"up_to_date": "Aktuell",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Genehmigt",
@@ -319,36 +344,36 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
"nothing_streaming": "Keine Aktiven Übertragungen",
"please_wait": "Bitte warten"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"total": "Total"
"speed": "Geschwindigkeit",
"active": "Aktiv",
"queue": "Warteschlange",
"total": "Gesamt"
},
"gluetun": {
"public_ip": "Public IP",
"public_ip": "Öffentliche IP",
"region": "Region",
"country": "Country"
"country": "Land"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Kanäle",
"hd": "HD"
},
"ping": {
"ping": "Ping",
"error": "Error"
"error": "Fehler"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "Bestanden",
"failed": "Fehlgeschlagen",
"unknown": "Unbekannt"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
"inbox": "Eingang",
"total": "Gesamt"
},
"deluge": {
"download": "Download",
@@ -363,29 +388,29 @@
"seed": "Seed"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
"queue": "Warteschlange",
"processed": "Verarbeitet",
"errored": "Fehlgeschlagen",
"saved": "Gespeichert"
},
"miniflux": {
"unread": "Unread",
"read": "Read"
"unread": "Ungelesen",
"read": "Lesen"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Bitte Warten",
"no_devices": "Keine Daten empfangen"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"connectedAp": "Verbundene APs",
"activeUser": "Aktive Geräte",
"alerts": "Meldungen",
"connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switches"
},
"downloadstation": {
"download": "Download",
@@ -394,107 +419,107 @@
"seed": "Seed"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"cpuLoad": "CPU Auslastung",
"memoryUsed": "RAM Verbrauch",
"uptime": "Laufzeit",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "Keine Übertragungen",
"streams_active": "Aktive Streams",
"streams_xepg": "XEPG Kanäle"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"cpu": "CPU Auslastung",
"memory": "Aktiver RAM",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
"printer_state": "Drucker Status",
"print_status": "Druck Status",
"print_progress": "Fortschritt",
"layers": "Schichten"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"wanted": "Gesucht",
"queued": "Wartend",
"series": "Serie"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"temp_tool": "Düsen Temp",
"temp_bed": "Bett Temp",
"job_completion": "Fortschritt"
},
"cloudflared": {
"origin_ip": "Origin IP",
"origin_ip": "Ursprüngliche IP",
"status": "Status"
},
"proxmoxbackupserver": {
"cpu_usage": "CPU",
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"memory_usage": "Memory"
"datastore_usage": "Datenspeicher",
"failed_tasks_24h": "Fehlgeschlagene Prozesse 24h",
"memory_usage": "RAM"
},
"immich": {
"users": "Users",
"photos": "Photos",
"users": "Benutzer",
"photos": "Fotos",
"videos": "Videos",
"storage": "Storage"
"storage": "Speicher"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar",
"uptime": "Laufzeit",
"incident": "Vorfall",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
"libraries": "Bibliotheken",
"series": "Serie",
"books": "Bücher"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
"series": "Serie",
"issues": "Probleme",
"wanted": "Gesucht"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"albums": "Alben",
"photos": "Fotos",
"videos": "Videos",
"people": "People"
"people": "Personen"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
"days": "Tage",
"uptime": "Laufzeit",
"volumeAvailable": "Verfügbar"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
"queue": "Warteschlange",
"processing": "Wird verarbeitet",
"processed": "Verarbeitet",
"time": "Zeit"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
"datasources": "Datenquellen",
"totalalerts": "Gesamte Meldungen",
"alertstriggered": "Ausgelöste Alarme"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "CPU Last",
"memoryusage": "RAM Verbrauch",
"freespace": "Freier Speicher",
"activeusers": "Aktive Nutzer"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"size": "Größe",
"lastrun": "Letzter Durchlauf",
"nextrun": "Nächster Durchlauf",
"failed": "Fehlgeschlagen"
},
"unmanic": {
"active_workers": "Active Workers",
@@ -503,21 +528,39 @@
},
"healthchecks": {
"grace": "In Grace Period",
"new": "New",
"new": "Neu",
"up": "Online",
"down": "Offline",
"paused": "Paused",
"paused": "Pausiert",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
"last_ping": "Letzter Ping",
"never": "Noch keine Pings"
},
"pterodactyl": {
"servers": "Servers",
"servers": "Server",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Users",
@@ -60,9 +67,16 @@
"tx": "TX",
"mem": "MEM",
"cpu": "CPU",
"running": "Running",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"healthy": "Healthy",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial"
},
"ping": {
"error": "Error",
@@ -72,7 +86,11 @@
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Download",
@@ -262,6 +280,13 @@
"queued": "Queued",
"series": "Series"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
@@ -280,7 +305,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
@@ -354,7 +383,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"
},
"healthchecks": {
"new": "New",
@@ -528,5 +560,16 @@
"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": "Libera",
"used": "Uzata",
"load": "Ŝarĝo",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"months": "mo",
"max": "Max",
"uptime": "UP",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Uzantoj",
@@ -49,7 +56,14 @@
"cpu": "Ĉefprocesoro",
"offline": "Offline",
"error": "Eraro",
"unknown": "Nekonata"
"unknown": "Nekonata",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"ping": {
"error": "Eraro",
@@ -59,7 +73,11 @@
"playing": "Ludante",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -233,7 +251,11 @@
"glances": {
"cpu": "Ĉefprocesoro",
"mem": "Memoro",
"wait": "Bonvolu atendi"
"wait": "Bonvolu atendi",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
@@ -307,7 +329,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"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Carga",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMPORAL",
"max": "Máximo",
"uptime": "ARRIBA",
"months": "Meses",
"days": "Días",
"hours": "Horas",
"minutes": "Minutos"
},
"docker": {
"rx": "Recibido",
@@ -26,13 +33,24 @@
"cpu": "Procesador",
"offline": "Desconectado",
"error": "Fallo",
"unknown": "Desconocido"
"unknown": "Desconocido",
"running": "Ejecutando",
"starting": "Comenzando",
"unhealthy": "Insalubre",
"not_found": "No encontrado",
"exited": "Salida",
"partial": "Parcial",
"healthy": "Saludable"
},
"emby": {
"playing": "Reproduciendo",
"transcoding": "Transcodificando",
"bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas"
"no_active": "Sin transmisiones activas",
"movies": "Películas",
"series": "Serie",
"episodes": "Episodios",
"songs": "Canciones"
},
"tautulli": {
"playing": "Reproduciendo",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Procesador",
"mem": "Memoria",
"wait": "Espere por favor"
"wait": "Espere por favor",
"temp": "TEMPORAL",
"uptime": "ARRIBA",
"days": "Días",
"hours": "Horas"
},
"changedetectionio": {
"totalObserved": "Total Observados",
@@ -284,7 +306,7 @@
"service": "Servicio",
"search": "Buscar",
"custom": "Personalizado",
"visit": "Visit",
"visit": "Visita",
"url": "URL"
},
"homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Actualización disponible",
"up_to_date": "Actualizado",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Arriba",
"pending": "Pendiente",
"down": "Abajo"
},
"autobrr": {
"approvedPushes": "Aprobado",
@@ -519,5 +544,23 @@
"targets_up": "Objetivos arriba",
"targets_down": "Objetivos abajo",
"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",
"used": "Käytetty",
"load": "Kuorma",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Toistaa",
"transcoding": "Transkoodaa",
"bitrate": "Bittinopeus",
"no_active": "Ei aktiivisia striimejä"
"no_active": "Ei aktiivisia striimejä",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Toistaa",
@@ -215,7 +233,11 @@
"glances": {
"wait": "Please wait",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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é",
"load": "Charge",
"cpu": "CPU",
"mem": "MÉM"
"mem": "MÉM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Cpu",
"offline": "Hors ligne",
"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": {
"playing": "En lecture",
"transcoding": "Transcodage",
"bitrate": "Débit",
"no_active": "Aucun flux actif"
"no_active": "Aucun flux actif",
"movies": "Films",
"series": "Séries TV",
"episodes": "Épisodes",
"songs": "Musique"
},
"tautulli": {
"playing": "En lecture",
@@ -47,12 +65,12 @@
},
"sonarr": {
"wanted": "Demande",
"queued": "En attente",
"queued": "Attente",
"series": "Séries"
},
"radarr": {
"wanted": "Demande",
"queued": "En attente",
"queued": "Attente",
"movies": "Films",
"missing": "Manquant"
},
@@ -103,14 +121,14 @@
"wait": "Veuillez patienter"
},
"overseerr": {
"pending": "En attente",
"pending": "Attente",
"approved": "Demande",
"available": "Disponible",
"processing": "En traitement"
"processing": "Traitement"
},
"sabnzbd": {
"rate": "Débit",
"queue": "Queue",
"queue": "En attente",
"timeleft": "Temps restant"
},
"nzbget": {
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Cpu",
"mem": "Mém",
"wait": "Merci de patienter"
"wait": "Merci de patienter",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observé",
@@ -284,7 +306,7 @@
"service": "Service",
"search": "Recherche",
"custom": "Personnalisé",
"visit": "Visit",
"visit": "Aller vers",
"url": "URL"
},
"homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Mise à jour disponible",
"up_to_date": "À jour",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approuvé",
@@ -366,7 +391,7 @@
"queue": "À traiter",
"processed": "Traité",
"errored": "En erreur",
"saved": "Enregistré"
"saved": "Economisé"
},
"miniflux": {
"read": "Lu",
@@ -472,7 +497,7 @@
"volumeAvailable": "Disponible"
},
"fileflows": {
"queue": "Queue",
"queue": "À traiter",
"processing": "Traitement",
"processed": "Traité",
"time": "Temps"
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "בשימוש",
"load": "עומס",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "מעבד",
"offline": "כבוי",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "מנגן",
"transcoding": "מקודד",
"bitrate": "סיביות",
"no_active": "אין הזרמות פעילות"
"no_active": "אין הזרמות פעילות",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "מנגן",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"used": "Used",
"load": "Load",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Users",
@@ -83,13 +90,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -223,7 +241,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
@@ -297,7 +319,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"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Opterećenje",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"minutes": "m",
"max": "Max",
"uptime": "UP",
"months": "mo",
"temp": "TEMP",
"days": "d",
"hours": "h"
},
"sabnzbd": {
"rate": "Stopa",
@@ -73,13 +80,24 @@
"cpu": "CPU",
"offline": "Nepovezan",
"error": "Greška",
"unknown": "Nepoznato"
"unknown": "Nepoznato",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Reprodukcija",
"transcoding": "Prekodiranje",
"bitrate": "Stopa bitova",
"no_active": "Nema aktivnih prijenosa"
"no_active": "Nema aktivnih prijenosa",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Reprodukcija",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Pričekaj"
"wait": "Pričekaj",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Ukupno promatrano",
@@ -293,7 +315,10 @@
"update_available": "Dostupna je nova verzija",
"up_to_date": "Aktualno",
"child_bridges": "Podređeni mosotvi",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"rejectedPushes": "Odbijeno",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Terhelés",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"unhealthy": "Unhealthy",
"running": "Running",
"starting": "Starting",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"lidarr": {
"albums": "Albumok",
@@ -52,7 +66,11 @@
"playing": "Lejátszás",
"transcoding": "Átkódolás",
"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": {
"playing": "Lejátszás folyamatban",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"rx": "RX",
"error": "Errore",
"unknown": "Sconosciuto"
"unknown": "Sconosciuto",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "In riproduzione",
"transcoding": "Transcodifica",
"bitrate": "Bitrate",
"no_active": "Nessuno Stream Attivo"
"no_active": "Nessuno Stream Attivo",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "In riproduzione",
@@ -53,7 +64,14 @@
"used": "In utilizzo",
"load": "Carico",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"rutorrent": {
"active": "Attivo",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Attendere prego"
"wait": "Attendere prego",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Totale Osservato",
@@ -293,7 +315,10 @@
"update_available": "Aggiornamento Disponibile",
"up_to_date": "Aggiornato",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approvato",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": {
"mem": "MEM",
"cpu": "CPU",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"autobrr": {
"filters": "Filters",
@@ -58,7 +62,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": {
"users": "Users",
@@ -84,7 +95,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"ping": {
"error": "Error",
@@ -94,7 +112,11 @@
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Download",
@@ -351,7 +373,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"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"used": "Izmantojas",
"load": "Ielādē",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Lietotāji",
@@ -53,7 +60,14 @@
"cpu": "CPU",
"offline": "Bezsaistē",
"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": {
"error": "Kļūda",
@@ -63,7 +77,11 @@
"playing": "Atskaņo",
"transcoding": "Pārkodē",
"bitrate": "Bitrate",
"no_active": "Nav aktīvu straumju"
"no_active": "Nav aktīvu straumju",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Lejupielāde",
@@ -271,7 +289,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
},
"quicklaunch": {
"bookmark": "Bookmark",
@@ -345,7 +367,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"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"used": "Telah diguna",
"load": "Beban",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"uptime": "Masa Operasi Sistem",
@@ -60,7 +67,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Sila tunggu"
"wait": "Sila tunggu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Tandabuku",
@@ -158,7 +169,14 @@
"cpu": "CPU",
"offline": "Luar talian",
"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": {
"totalObserved": "Jumlah Diperhatikan",
@@ -168,7 +186,11 @@
"playing": "Sedang dimainkan",
"transcoding": "Transkoding",
"bitrate": "Kadar bit",
"no_active": "Tiada Strim Aktif"
"no_active": "Tiada Strim Aktif",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Sedang Dimainkan",
@@ -293,7 +315,10 @@
"updates": "Kemaskini",
"update_available": "Kemaskini Tersedia",
"up_to_date": "Terkemaskini",
"child_bridges": "Jambatan Anak"
"child_bridges": "Jambatan Anak",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Terimbas",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Last inn",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Mottatt",
@@ -26,13 +33,24 @@
"cpu": "Prosessor",
"offline": "Frakoblet",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"exited": "Exited",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Spiller",
"transcoding": "Transkoding",
"bitrate": "Bitrate",
"no_active": "Ingen aktive strømmer"
"no_active": "Ingen aktive strømmer",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Spiller",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": {
"missing_type": "Missing Widget Type: {{type}}",
"missing_type": "Missend Widget Type: {{type}}",
"api_error": "API Error",
"status": "Status",
"information": "Informatie",
@@ -14,7 +14,14 @@
"used": "Gebruikt",
"load": "Laadt",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"days": "d",
"hours": "h",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -23,7 +30,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Fout",
"unknown": "Onbekend"
"unknown": "Onbekend",
"running": "Running",
"starting": "Starten",
"unhealthy": "Ongezond",
"not_found": "Niet Gevonden",
"exited": "Verlaten",
"partial": "Gedeeltelijk",
"healthy": "Gezond"
},
"speedtest": {
"upload": "Upload",
@@ -48,13 +62,17 @@
"playing": "Afspelen",
"transcoding": "Transcodering",
"bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Steams"
"no_active": "Geen Actieve Steams",
"movies": "Films",
"series": "Series",
"episodes": "Afleveringen",
"songs": "Liedjes"
},
"tautulli": {
"playing": "Afspelen",
"transcoding": "Transcodering",
"bitrate": "Bitsnelheid",
"no_active": "No Active Streams"
"no_active": "Geen Actieve Streams"
},
"rutorrent": {
"active": "Actief",
@@ -70,12 +88,12 @@
"movies": "Films",
"wanted": "Gezocht",
"queued": "In de wachtrij",
"missing": "Missing"
"missing": "Missend"
},
"readarr": {
"wanted": "Wanted",
"queued": "Queued",
"books": "Books"
"wanted": "Gezocht",
"queued": "In de wachtrij",
"books": "Boeken"
},
"ombi": {
"pending": "In afwachting",
@@ -103,32 +121,32 @@
"total": "Totaal"
},
"overseerr": {
"pending": "Pending",
"approved": "Approved",
"available": "Available",
"pending": "In Afwachting",
"approved": "Goedgekeurd",
"available": "Beschikbaar",
"processing": "Processing"
},
"sabnzbd": {
"rate": "Rate",
"queue": "Queue",
"queue": "Wachtrij",
"timeleft": "Time Left"
},
"nzbget": {
"rate": "Rate",
"remaining": "Remaining",
"downloaded": "Downloaded"
"remaining": "Resterend",
"downloaded": "Gedownload"
},
"coinmarketcap": {
"configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour",
"7days": "7 Days",
"1day": "1 Day",
"30days": "30 Days"
"1hour": "1 Uur",
"7days": "7 Dagen",
"1day": "1 Dag",
"30days": "30 Dagen"
},
"gotify": {
"apps": "Applications",
"apps": "Applicaties",
"clients": "Clients",
"messages": "Messages"
"messages": "Berichten"
},
"prowlarr": {
"enableIndexers": "Indexers",
@@ -144,21 +162,21 @@
"seed": "Seed"
},
"jackett": {
"configured": "Configured",
"configured": "Geconfigureerd",
"errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
"missingEpisodes": "Ontbrekende Afleveringen",
"missingMovies": "Ontbrekende Films"
},
"lidarr": {
"wanted": "Wanted",
"queued": "Queued",
"wanted": "Gezocht",
"queued": "In de wachtrij",
"albums": "Albums"
},
"adguard": {
"queries": "Queries",
"blocked": "Blocked",
"blocked": "Geblokkeerd",
"filtered": "Filtered",
"latency": "Latency"
},
@@ -171,7 +189,7 @@
"mastodon": {
"user_count": "Users",
"status_count": "Posts",
"domain_count": "Domains"
"domain_count": "Domeinen"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
@@ -180,7 +198,7 @@
"transferRate": "Rate"
},
"authentik": {
"users": "Users",
"users": "Gebruikers",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
@@ -208,33 +226,37 @@
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
"movies": "Movies",
"tv": "TV Shows"
"streams": "Actieve Streams",
"movies": "Films",
"tv": "TV Series"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Totaal waargenomen",
"diffsDetected": "Diffs Detected"
"diffsDetected": "Verschillen Gedetecteerd"
},
"wmo": {
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"3-day": "Cloudy",
"99-night": "Thunderstorm With Hail",
"3-night": "Cloudy",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"45-day": "Foggy",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"0-day": "Zonnig",
"0-night": "Helder",
"1-day": "Overwegend Zonnig",
"1-night": "Overwegend Helder",
"3-day": "Bewolkt",
"99-night": "Onweersbui Met Hagel",
"3-night": "Bewolkt",
"2-day": "Gedeeltelijk Bewolkt",
"2-night": "Gedeeltelijk Bewolkt",
"45-day": "Mistig",
"45-night": "Mistig",
"48-day": "Mistig",
"48-night": "Mistig",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-day": "Drizzle",
@@ -245,22 +267,22 @@
"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",
"61-day": "Lichte Regen",
"61-night": "Lichte Regen",
"63-day": "Regen",
"63-night": "Regen",
"65-day": "Hevige Regen",
"65-night": "Hevige Regen",
"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",
"71-day": "Lichte Sneeuw",
"71-night": "Lichte Sneeuw",
"73-day": "Sneeuw",
"73-night": "Sneeuw",
"75-day": "Hevige Sneeuw",
"75-night": "Hevige Sneeuw",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
@@ -273,43 +295,46 @@
"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"
"95-day": "Onweersbui",
"95-night": "Onweersbui",
"96-day": "Onweersbui Met Hagel",
"96-night": "Onweersbui Met Hagel",
"99-day": "Onweersbui Met Hagel"
},
"quicklaunch": {
"bookmark": "Bookmark",
"bookmark": "Bladwijzer",
"service": "Service",
"search": "Search",
"search": "Zoek",
"custom": "Custom",
"visit": "Visit",
"visit": "Bezoek",
"url": "URL"
},
"homebridge": {
"available_update": "System",
"available_update": "Systeem",
"updates": "Updates",
"update_available": "Update Available",
"update_available": "Update Beschikbaar",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "In afwachting van",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"approvedPushes": "Goedgekeurd",
"rejectedPushes": "Afgewezen",
"filters": "Filters",
"indexers": "Indexers"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_scanned": "Gescanned",
"containers_updated": "Updated",
"containers_failed": "Failed"
"containers_failed": "Gefaald"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"channels": "Kanalen",
"playlists": "Playlists"
},
"truenas": {
@@ -319,22 +344,22 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
"nothing_streaming": "Geen Actieve Streams",
"please_wait": "Even geduld aub"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"total": "Total",
"queue": "Queue"
"speed": "Snelheid",
"active": "Actief",
"total": "Totaal",
"queue": "Wachtrij"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "Publiek IP",
"region": "Regio",
"country": "Land"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Kanalen",
"hd": "HD"
},
"ping": {
@@ -343,12 +368,12 @@
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"failed": "Gefaald",
"unknown": "Onbekend"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
"total": "Totaal"
},
"deluge": {
"download": "Download",
@@ -363,18 +388,18 @@
"seed": "Seed"
},
"tdarr": {
"queue": "Queue",
"queue": "Wachtrij",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "Gelezen",
"unread": "Ongelezen"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Even geduld aub",
"no_devices": "Geen Apparaat Data Ontvangen"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -382,8 +407,8 @@
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"activeUser": "Actieve apparaten",
"alerts": "Meldingen",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
},
@@ -394,8 +419,8 @@
"seed": "Seed"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"cpuLoad": "CPU Belasting",
"memoryUsed": "Geheugen Gebruikt",
"uptime": "Uptime",
"numberOfLeases": "Leases"
},
@@ -405,8 +430,8 @@
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"cpu": "CPU Belasting",
"memory": "Actief Geheugen",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
@@ -435,13 +460,13 @@
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Geheugen"
},
"immich": {
"users": "Users",
"photos": "Photos",
"users": "Gebruikers",
"photos": "Foto's",
"videos": "Videos",
"storage": "Storage"
"storage": "Opslag"
},
"uptimekuma": {
"up": "Sites Up",
@@ -451,31 +476,31 @@
"m": "m"
},
"komga": {
"libraries": "Libraries",
"libraries": "Bibliotheken",
"series": "Series",
"books": "Books"
"books": "Boeken"
},
"mylar": {
"wanted": "Wanted",
"series": "Series",
"issues": "Issues"
"issues": "Problemen"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"photos": "Foto's",
"videos": "Videos",
"people": "People"
"people": "Personen"
},
"diskstation": {
"days": "Days",
"days": "Dagen",
"uptime": "Uptime",
"volumeAvailable": "Available"
"volumeAvailable": "Beschikbaar"
},
"fileflows": {
"queue": "Queue",
"queue": "Wachtrij",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
"time": "Tijd"
},
"grafana": {
"dashboards": "Dashboards",
@@ -484,32 +509,32 @@
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "Cpu Belasting",
"memoryusage": "Geheugen Gebruik",
"freespace": "Vrije Ruimte",
"activeusers": "Actieve Gebruikers"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"size": "Grootte",
"lastrun": "Laatste Run",
"nextrun": "Volgende Run",
"failed": "Gefaald"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"active_workers": "Actieve Werkers",
"total_workers": "Totale Werkers",
"records_total": "Wachtrij Lengte"
},
"healthchecks": {
"new": "New",
"new": "Nieuw",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"paused": "Gepauzeerd",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
"last_ping": "Laatste Ping",
"never": "Nog geen pings"
},
"pterodactyl": {
"servers": "Servers",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"free": "Wolne",
"cpu": "CPU",
"mem": "MEM"
"mem": "PAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"emby": {
"no_active": "Brak aktywnych strumieni",
"playing": "Odtwarzanie",
"transcoding": "Transkodowanie",
"bitrate": "Bitrate"
"bitrate": "Bitrate",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Odtwarzanie",
@@ -66,7 +77,14 @@
"cpu": "Procesor",
"offline": "Offline",
"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": {
"rate": "Szybkość",
@@ -205,7 +223,7 @@
"devices": "Urządzenia",
"lan_devices": "Urządzenia LAN",
"wlan_devices": "Urządzenia WLAN",
"empty_data": "Subsystem status unknown"
"empty_data": "Nieznany stan"
},
"plex": {
"streams": "Aktywne strumienie",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Procesor",
"mem": "Pamięć",
"wait": "Proszę czekać"
"wait": "Proszę czekać",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"diffsDetected": "Wykryto różnic",
@@ -293,7 +315,10 @@
"update_available": "Dostępna aktualizacja",
"up_to_date": "Aktualny",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Zaakceptowane",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"load": "Carregamento",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Recebido",
@@ -60,13 +67,24 @@
"cpu": "CPU",
"offline": "Desligado",
"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": {
"playing": "Reproduzindo",
"transcoding": "Transcodificando",
"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": {
"playing": "Reproduzindo",
@@ -135,7 +153,7 @@
"pihole": {
"queries": "Consultas",
"blocked": "Bloqueados",
"gravity": "Gravity"
"gravity": "Gravidade"
},
"adguard": {
"queries": "Consultas",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Por favor aguarde"
"wait": "Por favor aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Observados",
@@ -284,7 +306,7 @@
"service": "Serviço",
"search": "Busca",
"custom": "Personalizado",
"visit": "Visit",
"visit": "Visitar",
"url": "URL"
},
"homebridge": {
@@ -293,7 +315,10 @@
"update_available": "Atualização Disponível",
"up_to_date": "Atualizado",
"child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Aprovado",
@@ -497,8 +522,8 @@
"failed": "Falha"
},
"unmanic": {
"active_workers": "Workers Ativos",
"total_workers": "Total Workers",
"active_workers": "Trabalhadores Ativos",
"total_workers": "Total Trabalhadores",
"records_total": "Comprimento da Fila"
},
"healthchecks": {
@@ -516,8 +541,26 @@
"nodes": "Nós"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
"targets_up": "Alvo ativo",
"targets_down": "Alvo inativo",
"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",
"load": "Carga",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "CPU",
"offline": "Desligado",
"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": {
"playing": "A reproduzir",
"transcoding": "Transcodificação",
"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": {
"playing": "Reproduzindo",
@@ -198,7 +216,7 @@
"users": "Utilizadores"
},
"proxmox": {
"mem": "MEM",
"mem": "Memória",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
@@ -218,7 +236,7 @@
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown"
"empty_data": "Status de Subsistema Desconhecido"
},
"plex": {
"streams": "Streams Ativas",
@@ -228,7 +246,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Por favor, aguarde"
"wait": "Por favor, aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observado",
@@ -254,38 +276,38 @@
"53-night": "Chuvisco",
"55-day": "Aguaceiro Forte",
"55-night": "Aguaceiro Forte",
"56-day": "Light Freezing Drizzle",
"56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle",
"66-day": "Freezing Rain",
"56-day": "Leve Garoa Congelante",
"56-night": "Leve Garoa Congelante",
"57-day": "Garoa Congelante",
"57-night": "Garoa Congelante",
"66-day": "Chuva Congelante",
"61-day": "Chuva fraca",
"61-night": "Chuva fraca",
"63-day": "Chuva",
"63-night": "Chuva",
"65-day": "Chuva forte",
"66-night": "Freezing Rain",
"66-night": "Chuva Congelante",
"65-night": "Chuva forte",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"67-day": "Chuva Congelante",
"67-night": "Chuva Congelante",
"71-day": "Neve fraca",
"71-night": "Neve fraca",
"73-day": "Neve",
"73-night": "Neve",
"75-day": "Neve forte",
"75-night": "Neve forte",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"77-day": "Grãos de Neve",
"77-night": "Grãos de Neve",
"80-day": "Neve fraca",
"80-night": "Chuviscos ligeiros",
"81-day": "Chuviscos",
"81-night": "Chuviscos",
"82-day": "Chuviscos fortes",
"82-night": "Chuviscos fortes",
"85-day": "Snow Showers",
"85-night": "Snow Showers",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"85-day": "Precipitação de Neve",
"85-night": "Precipitação de Neve",
"86-day": "Precipitação de Neve",
"86-night": "Precipitação de Neve",
"95-day": "Trovoada",
"95-night": "Trovoada",
"96-day": "Trovoada com granizo",
@@ -295,9 +317,9 @@
"quicklaunch": {
"bookmark": "Marcador",
"service": "Serviço",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"search": "Busca",
"custom": "Personalizado",
"visit": "Visitar",
"url": "URL"
},
"homebridge": {
@@ -305,8 +327,11 @@
"updates": "Atualizações",
"update_available": "Atualização disponível",
"up_to_date": "Atualizado",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Aprovado",
@@ -406,7 +431,7 @@
"cpuLoad": "Carga do CPU",
"memoryUsed": "Memória Utilizada",
"uptime": "Ativo",
"numberOfLeases": "Leases"
"numberOfLeases": "Concessões"
},
"xteve": {
"streams_all": "Todos os Streams",
@@ -420,113 +445,131 @@
"wanDownload": "WAN Descarga"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
"printer_state": "Estado da Impressora",
"print_status": "Estado da Impressora",
"print_progress": "Progresso",
"layers": "Camadas"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"wanted": "Desejado",
"queued": "Na fila",
"series": "Séries"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"printer_state": "Estado",
"temp_tool": "Temp. Ferramenta",
"temp_bed": "Temp. Cama",
"job_completion": "Conclusão"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"origin_ip": "IP Origem",
"status": "Estado"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "Armaz. de Dados",
"failed_tasks_24h": "Tarefas Falhas 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Memória"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "Utilizadores",
"photos": "Fotos",
"videos": "Vídeos",
"storage": "Armazenamento"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"up": "Sites no Ar",
"down": "Sites Fora do Ar",
"uptime": "Tempo Ativo",
"incident": "Incidente",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
"libraries": "Bibliotecas",
"series": "Séries",
"books": "Livros"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
"series": "Séries",
"issues": "Problemas",
"wanted": "Desejado"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
"albums": "Álbuns",
"photos": "Fotos",
"videos": "Vídeos",
"people": "Pessoa"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
"days": "Dias",
"uptime": "Tempo Ativo",
"volumeAvailable": "Disponível"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
"queue": "Fila",
"processing": "Processando",
"processed": "Processado",
"time": "Hora"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
"dashboards": "Painéis",
"datasources": "Origem de Dados",
"totalalerts": "Total Alertas",
"alertstriggered": "Alertas Disparados"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "Carga de CPU",
"memoryusage": "Memória Utilizada",
"freespace": "Espaço Livre",
"activeusers": "Utilizadores Ativos"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"status": "Estado",
"size": "Tamanho",
"lastrun": "Ultima Execução",
"nextrun": "Próxima Execução",
"failed": "Falha"
},
"unmanic": {
"active_workers": "Active Workers",
"active_workers": "Workers Ativos",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"records_total": "Comprimento da Fila"
},
"healthchecks": {
"never": "No pings yet",
"new": "New",
"never": "Nenhum ping ainda",
"new": "Novo",
"up": "Online",
"grace": "In Grace Period",
"grace": "Em Período Gratuito",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping"
"paused": "Pausado",
"status": "Estado",
"last_ping": "Ultimo Ping"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
"servers": "Servidores",
"nodes": "Nós"
},
"prometheus": {
"targets_up": "Targets Up",
"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",
"free": "Disponibili",
"cpu": "Procesor",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"jellyseerr": {
"approved": "Aprobate",
@@ -65,10 +79,10 @@
"missing_type": "Lipsește Tipul de Widget: {{type}}",
"api_error": "Eroare API",
"status": "Status",
"information": "Information",
"information": "Informație",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"raw_error": "Eroare Raw",
"response_data": "Date de raspuns"
},
"search": {
"placeholder": "Caută…"
@@ -88,7 +102,11 @@
"playing": "Activ",
"transcoding": "Transcodare",
"bitrate": "Bitrate",
"no_active": "Niciun stream activ"
"no_active": "Niciun stream activ",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"sabnzbd": {
"rate": "Rată",
@@ -199,13 +217,13 @@
"wlan_users": "Utilizatori WLAN",
"up": "Pornit",
"down": "Oprit",
"wait": "Va rugam asteptati",
"wait": "Vă rugăm așteptați",
"lan": "LAN",
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
"devices": "Dispozitive",
"lan_devices": "Dispozitive LAN",
"wlan_devices": "Dispozitive WLAN",
"empty_data": "Starea subsistemului este necunoscut"
},
"plex": {
"streams": "Fluxuri active",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "Procesor",
"mem": "Memorie",
"wait": "Te rugam sa astepti"
"wait": "Te rugam sa astepti",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -293,7 +315,10 @@
"child_bridges": "Child Bridges",
"available_update": "System",
"updates": "Updates",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@@ -377,7 +402,7 @@
"no_devices": "No Device Data Received"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibyterate": "{{valoare, rata(bits: fals; binar: adevarat)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
@@ -494,12 +519,12 @@
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"failed": "Eșuat"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"active_workers": "Muncitori activi",
"total_workers": "Muncitori totali",
"records_total": "Lungimea cozii"
},
"healthchecks": {
"new": "New",
@@ -512,12 +537,30 @@
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
"servers": "Servere",
"nodes": "Noduri"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "Использовано",
"load": "Загрузка",
"cpu": "Процессор",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Процессор",
"offline": "Не в сети",
"error": "Ошибка",
"unknown": "Неизвестный"
"unknown": "Неизвестный",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Воспроизведение",
"transcoding": "Транскодирование",
"bitrate": "Битрейт",
"no_active": "Нет активных потоков"
"no_active": "Нет активных потоков",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Воспроизведение",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Всего наблюдаемых",
@@ -293,7 +315,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges_status": "{{ok}}/{{total}}",
"child_bridges": "Child Bridges"
"child_bridges": "Child Bridges",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"used": "Used",
"load": "Load",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Users",
@@ -49,13 +56,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Playing",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_total": "Total Targets",
"targets_up": "Targets Up",
"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",
"used": "Använt",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -29,7 +36,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"exited": "Exited",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
},
"search": {
"placeholder": "Sök…"
@@ -38,7 +52,11 @@
"playing": "Spelar",
"transcoding": "Omkodning",
"bitrate": "Bitrate",
"no_active": "Inga aktiva strömmar"
"no_active": "Inga aktiva strömmar",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Spelar",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Vänligen vänta"
"wait": "Vänligen vänta",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "మిగిలింది",
"used": "ఉపయోగించబడిన",
"load": "లోడ్",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -49,13 +56,24 @@
"cpu": "సీపియూ",
"offline": "ఆఫ్‌లైన్",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "ఆడుతున్నారు",
"transcoding": "ట్రాన్స్‌కోడింగ్",
"bitrate": "బిట్రేట్",
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు"
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "ఆడుతున్నారు",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "సీపియూ",
"mem": "MEM",
"wait": "దయచేసి వేచి ఉండండి"
"wait": "దయచేసి వేచి ఉండండి",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "మొత్తం గమనించబడింది",
@@ -293,7 +315,10 @@
"update_available": "అందుబాటులో నవీకరణ",
"up_to_date": "తాజాగా",
"child_bridges": "పిల్ల వంతెనలు",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"rejectedPushes": "తిరస్కరించారు",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "ซีพียู",
"offline": "ออฟไลน์",
"error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ"
"unknown": "ไม่ทราบ",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -89,7 +96,14 @@
"total": "ทั้งหมด",
"free": "ฟรี",
"used": "ใช้แล้ว",
"load": "โหลด"
"load": "โหลด",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
},
"ping": {
"error": "ข้อผิดพลาด",
@@ -99,7 +113,11 @@
"playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่"
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่",
"movies": "Movies",
"series": "Series",
"songs": "Songs",
"episodes": "Episodes"
},
"deluge": {
"download": "ดาวน์โหลด",
@@ -291,7 +309,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
@@ -365,7 +387,10 @@
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System"
"available_update": "System",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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",
"used": "Kullanımda",
"load": "Yük",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"unifi": {
"users": "Kullanıcılar",
@@ -49,13 +56,24 @@
"cpu": "İşlemci",
"offline": "Çevrimdışı",
"error": "Hata",
"unknown": "Bilinmiyor"
"unknown": "Bilinmiyor",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı",
"no_active": "Aktif akış yok"
"no_active": "Aktif akış yok",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Oynatılıyor",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "İşlemci",
"mem": "Bellek",
"wait": "Lütfen bekleyiniz"
"wait": "Lütfen bekleyiniz",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Toplam Gözlenen",
@@ -293,7 +315,10 @@
"update_available": "Güncelleme Kullanılabilir",
"up_to_date": "Güncel",
"child_bridges": "Alt Köprüler",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Onaylandı",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "Вільно",
"used": "Використано",
"load": "Навантаження",
"mem": "Пам'ять"
"mem": "Пам'ять",
"temp": "TEMP",
"max": "Max",
"uptime": "Відправка",
"months": "міс",
"days": "д",
"hours": "г",
"minutes": "хв"
},
"unifi": {
"users": "Користувачі",
@@ -154,7 +161,14 @@
"cpu": "CPU",
"offline": "Офлайн",
"error": "Помилка",
"unknown": "Невідомий"
"unknown": "Невідомий",
"starting": "Запуск",
"unhealthy": "Нездоровий",
"not_found": "Не знайдено",
"exited": "Вийшов",
"partial": "Частковий",
"running": "Запущено",
"healthy": "Здоров'я"
},
"ping": {
"error": "Помилка",
@@ -164,7 +178,11 @@
"playing": "Відтворення",
"transcoding": "Перекодування",
"bitrate": "Бітрейт",
"no_active": "Немає активних потоків"
"no_active": "Немає активних потоків",
"movies": "Фільми",
"series": "Серії",
"episodes": "Епізоди",
"songs": "Пісні"
},
"flood": {
"download": "Завантаження",
@@ -339,14 +357,18 @@
"glances": {
"cpu": "CPU",
"mem": "Пам'ять",
"wait": "Будь ласка, зачекайте"
"wait": "Будь ласка, зачекайте",
"temp": "TEMP",
"uptime": "Відправка",
"days": "д",
"hours": "г"
},
"quicklaunch": {
"bookmark": "Закладка",
"service": "Сервіс",
"search": "Пошук",
"custom": "Користувацький",
"visit": "Visit",
"visit": "Відвідайте",
"url": "URL"
},
"homebridge": {
@@ -355,7 +377,10 @@
"child_bridges_status": "{{ok}}/{{total}}",
"update_available": "Доступне оновлення",
"up_to_date": "Актуально",
"child_bridges": "Дитячі мости"
"child_bridges": "Дитячі мости",
"up": "Вгору",
"pending": "В очікуванні",
"down": "Вниз"
},
"watchtower": {
"containers_scanned": "Відскановано",
@@ -516,8 +541,26 @@
"nodes": "Вузли"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
"targets_up": "Цілі вгору",
"targets_down": "Цілі вниз",
"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",
"load": "Load",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "RX",
@@ -26,13 +33,24 @@
"cpu": "CPU",
"offline": "Ngoại tuyến",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Đang chơi",
"transcoding": "Chuyển định dạng",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Đang chơi",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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",
"down": "Down",
"pending": "Pending"
},
"autobrr": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "轉碼緊",
"bitrate": "比特率",
"playing": "播放緊",
"no_active": "無任何活動"
"no_active": "無任何活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "播放緊",
@@ -41,7 +45,14 @@
"used": "用咗",
"load": "負荷",
"cpu": "CPU",
"mem": "MEM"
"mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"docker": {
"rx": "接收",
@@ -50,7 +61,14 @@
"cpu": "處理器",
"offline": "離線",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"nzbget": {
"rate": "速度",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@@ -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": {
"approvedPushes": "Approved",
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": "已用",
"load": "负载",
"cpu": "处理器",
"mem": "内存"
"mem": "内存",
"temp": "温度",
"max": "最大",
"uptime": "运行时间",
"months": "月",
"days": "天",
"hours": "时",
"minutes": "分"
},
"docker": {
"rx": "接收",
@@ -26,13 +33,24 @@
"cpu": "处理器",
"offline": "离线",
"error": "错误",
"unknown": "未知"
"unknown": "未知",
"starting": "启动中",
"unhealthy": "不健康的",
"not_found": "未找到",
"running": "运行中",
"exited": "已退出",
"partial": "部分",
"healthy": "健康的"
},
"emby": {
"playing": "播放中",
"transcoding": "转码",
"bitrate": "比特率",
"no_active": "暂无播放"
"no_active": "暂无播放",
"movies": "电影",
"series": "系列",
"episodes": "剧集",
"songs": "歌曲"
},
"tautulli": {
"playing": "播放中",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "处理器",
"mem": "内存",
"wait": "请稍等"
"wait": "请稍等",
"temp": "TEMP",
"uptime": "UP",
"days": "天",
"hours": "时"
},
"changedetectionio": {
"totalObserved": "观察到的总数",
@@ -240,66 +262,69 @@
"51-night": "小雨",
"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",
"55-day": "毛毛雨",
"55-night": "毛毛雨",
"56-day": "小冻毛雨",
"56-night": "小冻毛雨",
"57-day": "冻毛雨",
"57-night": "冻毛雨",
"61-day": "小雨",
"61-night": "小雨",
"63-day": "",
"63-night": "",
"65-day": "大雨",
"65-night": "大雨",
"66-day": "冻雨",
"66-night": "冻雨",
"67-day": "冻雨",
"67-night": "冻雨",
"71-day": "小雪",
"71-night": "小雪",
"73-day": "中雪",
"75-night": "大雪",
"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"
"77-day": "雪粒",
"77-night": "雪粒",
"80-day": "微阵雨",
"80-night": "微阵雨",
"81-day": "阵雨",
"81-night": "阵雨",
"82-day": "强阵雨",
"82-night": "强阵雨",
"85-day": "阵雪",
"85-night": "阵雪",
"86-day": "阵雪",
"86-night": "阵雪",
"95-day": "雷雨",
"95-night": "雷雨",
"96-day": "雷雨伴随冰雹",
"96-night": "雷雨伴随冰雹",
"99-day": "雷雨伴随冰雹",
"99-night": "雷雨伴随冰雹"
},
"quicklaunch": {
"bookmark": "书签",
"service": "服务",
"search": "搜索",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
"custom": "自定",
"visit": "访问",
"url": "网址"
},
"homebridge": {
"available_update": "System",
"updates": "Updates",
"update_available": "Update Available",
"updates": "更新",
"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": "待定中",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"approvedPushes": "已核准",
"rejectedPushes": "拒绝",
"filters": "Filters",
"indexers": "Indexers"
"indexers": "索引器"
},
"watchtower": {
"containers_scanned": "以扫描",
@@ -307,10 +332,10 @@
"containers_failed": "失败"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"playlists": "Playlists"
"downloads": "队列",
"videos": "影片",
"channels": "频道",
"playlists": "播放清单"
},
"truenas": {
"load": "系统负载",
@@ -323,18 +348,18 @@
"please_wait": "请等待"
},
"pyload": {
"speed": "Speed",
"speed": "速度",
"active": "Active",
"queue": "Queue",
"queue": "队列",
"total": "Total"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"country": "国家"
},
"hdhomerun": {
"channels": "Channels",
"channels": "频道",
"hd": "HD"
},
"ping": {
@@ -342,12 +367,12 @@
"ping": "Ping"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "通过",
"failed": "失败",
"unknown": "未知的"
},
"paperlessngx": {
"inbox": "Inbox",
"inbox": "收件箱",
"total": "Total"
},
"deluge": {
@@ -363,25 +388,25 @@
"seed": "做种"
},
"tdarr": {
"saved": "Saved",
"saved": "已保存",
"queue": "队列",
"processed": "Processed",
"processed": "已处理",
"errored": "出错"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "已读",
"unread": "未读"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "请稍候",
"no_devices": "没有接收到设备数据"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"connectedAp": "连接中的AP",
"activeUser": "活跃设备",
"alerts": "警报",
"connectedGateway": "已连接网关",
@@ -400,9 +425,9 @@
"numberOfLeases": "已连接"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "所有播放活动",
"streams_active": "正在播放",
"streams_xepg": "XEPG 频道"
},
"opnsense": {
"cpu": "处理器负载",
@@ -411,24 +436,24 @@
"wanDownload": "WAN下载"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"printer_state": "打印机状态",
"print_status": "打印状态",
"print_progress": "Progress",
"layers": "Layers"
"layers": ""
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"wanted": "关注中",
"queued": "已加入队列",
"series": "Series"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"temp_tool": "喷头温度",
"temp_bed": "平台温度",
"job_completion": "完成度"
},
"cloudflared": {
"origin_ip": "Origin IP",
"origin_ip": "IP",
"status": "Status"
},
"proxmoxbackupserver": {
@@ -438,10 +463,10 @@
"memory_usage": "内存"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "使用者",
"photos": "照片",
"videos": "影片",
"storage": "储存空间"
},
"uptimekuma": {
"up": "在线网站",
@@ -457,8 +482,8 @@
},
"mylar": {
"series": "系列",
"issues": "Issues",
"wanted": "Wanted"
"issues": "问题",
"wanted": "关注中"
},
"photoprism": {
"albums": "相册",
@@ -472,52 +497,70 @@
"days": "天"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
"queue": "队列",
"processing": "处理中",
"processed": "已处理",
"time": "时间"
},
"grafana": {
"totalalerts": "Total Alerts",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"alertstriggered": "Alerts Triggered"
"totalalerts": "警报总数",
"dashboards": "控制面板",
"datasources": "数据来源",
"alertstriggered": "触发的警报"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "处理器负载",
"memoryusage": "内存占用",
"freespace": "剩余空间",
"activeusers": "活跃用户"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"status": "状态",
"size": "大小",
"lastrun": "最后运行",
"nextrun": "下次运行",
"failed": "失败"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"active_workers": "在线工作节点",
"total_workers": "工作节点总数",
"records_total": "队列长度"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
"new": "新建立",
"up": "在线的",
"grace": "延缓中",
"down": "离线",
"paused": "暂停",
"status": "状态",
"last_ping": "上次检查",
"never": "尚未检查"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
"servers": "服务器",
"nodes": "节点"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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": {
"missing_type": "遺失小工具的類型: {{type}}",
"api_error": "API錯誤",
"api_error": "API 錯誤",
"status": "狀態",
"information": "資訊",
"url": "網址",
@@ -21,13 +21,24 @@
"mem": "記憶體",
"cpu": "處理器",
"error": "錯誤",
"unknown": "未知的"
"unknown": "未知的",
"running": "執行中",
"starting": "啟動中",
"unhealthy": "不健康的",
"not_found": "未找到",
"exited": "Exited",
"partial": "Partial",
"healthy": "健康的"
},
"emby": {
"playing": "正在播放",
"transcoding": "轉碼",
"bitrate": "位元率",
"no_active": "無播放活動"
"no_active": "無播放活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "正在播放",
@@ -49,7 +60,14 @@
"used": "已使用",
"load": "負載",
"cpu": "CPU",
"mem": "記憶體"
"mem": "記憶體",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
},
"nzbget": {
"rate": "速率",
@@ -215,7 +233,11 @@
"glances": {
"cpu": "CPU",
"mem": "記憶體",
"wait": "請稍後"
"wait": "請稍後",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"changedetectionio": {
"totalObserved": "總監測數",
@@ -293,7 +315,10 @@
"update_available": "有可用的更新",
"up_to_date": "已更新至最新",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "已核准",
@@ -357,8 +382,8 @@
"seed": "已完成下載"
},
"flood": {
"download": "下速率",
"upload": "上速率",
"download": "下速率",
"upload": "上速率",
"leech": "未完成下載",
"seed": "已完成下載"
},
@@ -519,5 +544,23 @@
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"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) {
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(() => {
@@ -87,7 +87,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
if (searchDescriptions) {
newResults = newResults.sort((a, b) => b.priority - a.priority);
}
if (searchProvider) {
newResults.push(
{

View File

@@ -6,7 +6,7 @@ export default function KubernetesStatus({ service }) {
const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`);
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>
}

View File

@@ -7,41 +7,54 @@ export default function Status({ service }) {
const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`);
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>
}
if (data && data.status?.includes("running")) {
if (data.health === "starting") {
if (data) {
let statusLabel = "";
if (data.status?.includes("running")) {
if (data.health === "starting") {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.starting")}>
<div className="text-[8px] font-bold text-blue-500/80 uppercase">{t("docker.starting")}</div>
</div>
);
}
if (data.health === "unhealthy") {
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={t("docker.unhealthy")}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{t("docker.unhealthy")}</div>
</div>
);
}
if (!data.health) {
statusLabel = data.status.replace("running", t("docker.running"))
} else {
statusLabel = data.health === "healthy" ? t("docker.healthy") : data.health
}
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="text-[8px] font-bold text-blue-500/80 uppercase">{data.health}</div>
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusLabel}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{statusLabel}</div>
</div>
);
}
if (data.health === "unhealthy") {
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 (
<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="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.health}</div>
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusLabel}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{statusLabel}</div>
</div>
);
}
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health || data.status}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health || data.status}</div>
</div>
);
}
if (data && (data.status === "not found" || data.status === "exited" || data.status?.startsWith("partial"))) {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.status}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div>
</div>
);
}
return (

View File

@@ -1,11 +1,17 @@
import useSWR from "swr";
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 { useTranslation } from "next-i18next";
import UsageBar from "../resources/usage-bar";
const cpuSensorLabels = ["cpu_thermal", "Core"];
function convertToFahrenheit(t) {
return t * 9/5 + 32
}
export default function Widget({ options }) {
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 (
<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">
@@ -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="pl-0.5">
{t("common.number", {
value: data.cpu,
value: data.quicklook.cpu,
style: "unit",
unit: "percent",
maximumFractionDigits: 0,
@@ -81,7 +105,7 @@ export default function Widget({ options }) {
</div>
<div className="pr-1">{t("glances.cpu")}</div>
</div>
<UsageBar percent={data.cpu} />
<UsageBar percent={data.quicklook.cpu} />
</div>
</div>
<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="pl-0.5">
{t("common.number", {
value: data.mem,
value: data.quicklook.mem,
style: "unit",
unit: "percent",
maximumFractionDigits: 0,
@@ -98,9 +122,40 @@ export default function Widget({ options }) {
</div>
<div className="pr-1">{t("glances.mem")}</div>
</div>
<UsageBar percent={data.mem} />
<UsageBar percent={data.quicklook.mem} />
</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>
{options.label && (
<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" />
<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="pl-0.5">-</div>
<div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.cpu")}</div>
</div>
{expanded && (
<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>
)}
@@ -51,7 +51,7 @@ export default function Cpu({ expanded }) {
<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="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", {
value: data.cpu.usage,
style: "unit",
@@ -63,7 +63,7 @@ export default function Cpu({ expanded }) {
</div>
{expanded && (
<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", {
value: data.cpu.load,
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" />
<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="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</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="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div>
</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 (
<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" />
<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.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>
</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.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>
</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" />
<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="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</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="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div>
</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 (
<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" />
<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.bytes", { value: data.memory.freeMemMb * 1024 * 1024, maximumFractionDigits: 1, binary: true })}
<div className="pl-0.5 pr-1">
{t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })}
</div>
<div className="pr-1">{t("resources.free")}</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 className="pl-0.5 pr-1">
{t("common.bytes", {
value: data.memory.totalMemMb * 1024 * 1024,
value: data.memory.total,
maximumFractionDigits: 1,
binary: true,
})}

View File

@@ -1,9 +1,11 @@
import Disk from "./disk";
import Cpu from "./cpu";
import Memory from "./memory";
import CpuTemp from "./cputemp";
import Uptime from "./uptime";
export default function Resources({ options }) {
const { expanded } = options;
const { expanded, units } = options;
return (
<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">
@@ -12,6 +14,8 @@ export default function Resources({ options }) {
{Array.isArray(options.disk)
? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} />)
: options.disk && <Disk options={options} expanded={expanded} />}
{options.cputemp && <CpuTemp expanded={expanded} units={units} />}
{options.uptime && <Uptime />}
</div>
{options.label && (
<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);
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",
});
} 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);
if (containerExists) {

View File

@@ -4,19 +4,16 @@ import { getPrivateWidgetOptions } from "utils/config/widget-helpers";
const logger = createLogger("glances");
export default async function handler(req, res) {
const { index } = req.query;
const privateWidgetOptions = await getPrivateWidgetOptions("glances", index);
async function retrieveFromGlancesAPI(privateWidgetOptions, endpoint) {
let errorMessage;
const url = privateWidgetOptions?.url;
if (!url) {
const errorMessage = "Missing Glances URL";
errorMessage = "Missing Glances URL";
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 = {
"Accept-Encoding": "application/json"
};
@@ -25,16 +22,41 @@ export default async function handler(req, res) {
}
const params = { method: "GET", headers };
const [status, contentType, data] = await httpProxy(apiUrl, params);
const [status, , data] = await httpProxy(apiUrl, params);
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) {
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 res.status(status).send(data);
return JSON.parse(Buffer.from(data).toString());
}
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 { cpu, drive, mem } from "node-os-utils";
const si = require('systeminformation');
export default async function handler(req, res) {
const { type, target } = req.query;
if (type === "cpu") {
const load = await si.currentLoad();
return res.status(200).json({
cpu: {
usage: await cpu.usage(1000),
load: cpu.loadavgTime(5),
usage: load.currentLoad,
load: load.avgLoad,
},
});
}
@@ -21,14 +22,29 @@ export default async function handler(req, res) {
});
}
const fsSize = await si.fsSize();
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") {
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 checkAndCopyConfig, { getSettings } from "utils/config/config";
import checkAndCopyConfig, { getSettings, substituteEnvironmentVars } from "utils/config/config";
import {
servicesFromConfig,
servicesFromDocker,
@@ -28,7 +28,8 @@ export async function bookmarksResponse() {
checkAndCopyConfig("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);
if (!bookmarks) return [];

View File

@@ -2,8 +2,13 @@
import { join } from "path";
import { existsSync, copyFile, readFileSync } from "fs";
import cache from "memory-cache";
import yaml from "js-yaml";
const cacheKey = "homepageEnvironmentVariables";
const homepageVarPrefix = "HOMEPAGE_VAR_";
const homepageFilePrefix = "HOMEPAGE_FILE_";
export default function checkAndCopyConfig(config) {
const configYaml = join(process.cwd(), "config", config);
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() {
checkAndCopyConfig("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) ?? {};
}
}

View File

@@ -3,13 +3,14 @@ import { readFileSync } from "fs";
import yaml from "js-yaml";
import checkAndCopyConfig from "utils/config/config";
import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
export default function getDockerArguments(server) {
checkAndCopyConfig("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);
if (!server) {
@@ -26,10 +27,22 @@ export default function getDockerArguments(server) {
}
if (servers[server].host) {
return {
conn: { host: servers[server].host, port: servers[server].port || null },
const res ={
conn: { host: servers[server].host },
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];

View File

@@ -4,13 +4,14 @@ import { readFileSync } from "fs";
import yaml from "js-yaml";
import { KubeConfig } from "@kubernetes/client-node";
import checkAndCopyConfig from "utils/config/config";
import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
export default function getKubeConfig() {
checkAndCopyConfig("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 kc = new KubeConfig();

View File

@@ -4,20 +4,22 @@ import path from "path";
import yaml from "js-yaml";
import Docker from "dockerode";
import * as shvl from "shvl";
import { NetworkingV1Api } from "@kubernetes/client-node";
import { CustomObjectsApi, NetworkingV1Api } from "@kubernetes/client-node";
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 getKubeConfig from "utils/config/kubernetes";
const logger = createLogger("service-helpers");
export async function servicesFromConfig() {
checkAndCopyConfig("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);
if (!services) {
@@ -49,7 +51,8 @@ export async function servicesFromDocker() {
checkAndCopyConfig("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);
if (!servers) {
@@ -142,6 +145,7 @@ export async function servicesFromKubernetes() {
return [];
}
const networking = kc.makeApiClient(NetworkingV1Api);
const crd = kc.makeApiClient(CustomObjectsApi);
const ingressList = await networking.listIngressForAllNamespaces(null, null, null, null)
.then((response) => response.body)
@@ -149,6 +153,20 @@ export async function servicesFromKubernetes() {
logger.error("Error getting ingresses: %d %s %s", error.statusCode, error.body, error.response);
return null;
});
const traefikIngressList = await crd.listClusterCustomObject("traefik.containo.us", "v1alpha1", "ingressroutes")
.then((response) => response.body)
.catch((error) => {
logger.error("Error getting traefik ingresses: %d %s %s", error.statusCode, error.body, error.response);
return null;
});
if (traefikIngressList && traefikIngressList.items.length > 0) {
const traefikServices = traefikIngressList.items
.filter((ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/href`])
ingressList.items.push(...traefikServices);
}
if (!ingressList) {
return [];
}
@@ -244,7 +262,10 @@ export function cleanServiceGroups(groups) {
namespace, // kubernetes widget
app,
podSelector,
wan // opnsense widget
wan, // opnsense widget,
enableBlocks, // emby/jellyfin
enableNowPlaying,
volume // diskstation widget
} = cleanedService.widget;
const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields;
@@ -275,6 +296,13 @@ export function cleanServiceGroups(groups) {
if (type === "opnsense") {
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;

View File

@@ -3,7 +3,7 @@ import path from "path";
import yaml from "js-yaml";
import checkAndCopyConfig from "utils/config/config";
import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
const exemptWidgets = ["search"];
@@ -11,7 +11,8 @@ export async function widgetsFromConfig() {
checkAndCopyConfig("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);
if (!widgets) return [];

View File

@@ -28,10 +28,15 @@ export default async function credentialedProxyHandler(req, res, map) {
headers["X-CMC_PRO_API_KEY"] = `${widget.key}`;
} else if (widget.type === "gotify") {
headers["X-gotify-Key"] = `${widget.key}`;
} else if (widget.type === "authentik") {
headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "truenas") {
headers.Authorization = `Bearer ${widget.key}`;
} else if ([
"authentik",
"cloudflared",
"ghostfolio",
"truenas",
"pterodactyl",
].includes(widget.type))
{
headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "proxmox") {
headers.Authorization = `PVEAPIToken=${widget.username}=${widget.password}`;
} else if (widget.type === "proxmoxbackupserver") {
@@ -43,10 +48,12 @@ export default async function credentialedProxyHandler(req, res, map) {
headers.Authorization = `Token ${widget.key}`;
} else if (widget.type === "miniflux") {
headers["X-Auth-Token"] = `${widget.key}`;
} else if (widget.type === "cloudflared") {
headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "pterodactyl") {
headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "nextcloud") {
if (widget.key) {
headers["NC-Token"] = `${widget.key}`;
} else {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
} else {
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 = {
adguard: dynamic(() => import("./adguard/component")),
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
authentik: dynamic(() => import("./authentik/component")),
autobrr: dynamic(() => import("./autobrr/component")),
bazarr: dynamic(() => import("./bazarr/component")),
@@ -16,6 +17,7 @@ const components = {
emby: dynamic(() => import("./emby/component")),
fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")),
gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")),
grafana: dynamic(() => import("./grafana/component")),
@@ -31,6 +33,7 @@ const components = {
lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")),
minecraft: dynamic(() => import("./minecraft/component")),
miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")),

View File

@@ -44,9 +44,9 @@ export default function Component({ service }) {
return (
<Container service={service}>
<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.upload" value={t("common.bitrate", { value: rateUl })} />
<Block label="deluge.upload" value={t("common.byterate", { value: rateUl })} />
</Container>
);
}

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
export default function calculateCPUPercent(stats) {
export function calculateCPUPercent(stats) {
let cpuPercent = 0.0;
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;
@@ -9,3 +9,7 @@ export default function calculateCPUPercent(stats) {
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 { MdOutlineSmartDisplay } from "react-icons/md";
import Block from "components/services/widget/block";
import Container from "components/services/widget/container";
import { formatProxyUrlWithSegments } from "utils/proxy/api-helpers";
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 }) {
const { t } = useTranslation();
@@ -161,6 +189,12 @@ export default function Component({ service }) {
refreshInterval: 5000,
});
const {
data: countData,
error: countError,
} = useWidgetAPI(widget, "Count", {
refreshInterval: 60000,});
async function handlePlayCommand(session, command) {
const url = formatProxyUrlWithSegments(widget, "PlayControl", {
sessionId: session.Id,
@@ -171,69 +205,93 @@ export default function Component({ service }) {
});
}
if (sessionsError) {
return <Container error={sessionsError} />;
if (sessionsError || countError) {
return <Container error={sessionsError ?? countError} />;
}
if (!sessionsData) {
const enableBlocks = service.widget?.enableBlocks
const enableNowPlaying = service.widget?.enableNowPlaying ?? true
if (!sessionsData || !countData) {
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">
<span className="absolute left-2 text-xs mt-[2px]">-</span>
</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">
<span className="absolute left-2 text-xs mt-[2px]">-</span>
</div>
</div>
</div>}
</>
);
}
const playing = sessionsData
.filter((session) => session?.NowPlayingItem)
.sort((a, b) => {
if (a.PlayState.PositionTicks > b.PlayState.PositionTicks) {
return 1;
}
if (a.PlayState.PositionTicks < b.PlayState.PositionTicks) {
return -1;
}
return 0;
});
if (playing.length === 0) {
if (enableNowPlaying) {
const playing = sessionsData
.filter((session) => session?.NowPlayingItem)
.sort((a, b) => {
if (a.PlayState.PositionTicks > b.PlayState.PositionTicks) {
return 1;
}
if (a.PlayState.PositionTicks < b.PlayState.PositionTicks) {
return -1;
}
return 0;
});
if (playing.length === 0) {
return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<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">
<span className="absolute left-2 text-xs mt-[2px]">{t("emby.no_active")}</span>
</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">
<span className="absolute left-2 text-xs mt-[2px]">-</span>
</div>
</div>
</>
);
}
if (playing.length === 1) {
const session = playing[0];
return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<div className="flex flex-col pb-1 mx-1">
<SingleSessionEntry
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
session={session}
/>
</div>
</>
);
}
if (playing.length > 0)
return (
<>
{enableBlocks && <CountBlocks service={service} countData={countData} />}
<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">
<span className="absolute left-2 text-xs mt-[2px]">{t("emby.no_active")}</span>
</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">
<span className="absolute left-2 text-xs mt-[2px]">-</span>
</div>
{playing.map((session) => (
<SessionEntry
key={session.Id}
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
session={session}
/>
))}
</div>
</>
);
}
if (playing.length === 1) {
const session = playing[0];
if (enableBlocks) {
return (
<div className="flex flex-col pb-1 mx-1">
<SingleSessionEntry
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
session={session}
/>
</div>
);
<CountBlocks service={service} countData={countData} />
)
}
return (
<div className="flex flex-col pb-1 mx-1">
{playing.map((session) => (
<SessionEntry
key={session.Id}
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
session={session}
/>
))}
</div>
);
}

View File

@@ -8,6 +8,15 @@ const widget = {
Sessions: {
endpoint: "Sessions",
},
Count: {
endpoint: "Items/Counts",
segments: [
"MovieCount",
"SeriesCount",
"EpisodeCount",
"SongCount"
]
},
PlayControl: {
method: "POST",
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}>
<Block
label="widget.status"
value={`${homebridgeData.status[0].toUpperCase()}${homebridgeData.status.substr(1)}`}
value={t(`homebridge.${homebridgeData.status}`)}
/>
<Block
label="homebridge.updates"

View File

@@ -1,8 +1,11 @@
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: 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.photos" value={immichData.photos} />
<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>
);
}

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 = {
api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler,
proxyHandler: credentialedProxyHandler,
mappings: {
serverinfo: {
@@ -11,4 +11,4 @@ const widget = {
},
};
export default widget;
export default widget;

View File

@@ -26,7 +26,7 @@ export default function Component({ service }) {
return (
<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.queue" value={t("common.number", { value: pyloadData.queue })} />
<Block label="pyload.total" value={t("common.number", { value: pyloadData.total })} />

View File

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

View File

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