Compare commits

..

517 Commits

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-03-01 07:13:19 +01:00
shamoon
65b23b9674 Merge pull request #1067 from Sairenity/1042-minecraft-server-status
Minecraft server status widget
2023-02-28 22:13:13 -08:00
Jason Fischer
3db5435c19 Merge pull request #1043 from jameswynn/variable-substitution
Added support for environment variable substitution
2023-02-28 20:14:30 -08:00
shamoon
c6e76f4e31 move minecraft proxy & use url key 2023-02-28 08:50:43 -08:00
Sairenity
b36ef0234e refactor widget.js, return http 200 when server is offline 2023-02-28 16:22:43 +00:00
shamoon
af2566c237 Merge pull request #1069 from rommelkott/main
Refactor Healthchecks widget API host to be parametrized
2023-02-28 07:58:20 -08:00
Sairenity
ad66637ff1 rewrite minecraft server status widget to directly ping server 2023-02-28 11:49:39 +00:00
Rommel Kott
bf2f527f76 Refactor API host to be parametrized 2023-02-28 01:04:44 -06:00
Anonymous
009b13817a Translated using Weblate (Thai)
Currently translated at 12.8% (47 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-28 05:17:49 +01:00
Anonymous
397dfa98a2 Translated using Weblate (Latvian)
Currently translated at 32.5% (119 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-28 05:17:49 +01:00
Anonymous
b46f07244a Translated using Weblate (Japanese)
Currently translated at 4.0% (15 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-28 05:17:49 +01:00
Anonymous
371aec0d98 Translated using Weblate (Ukrainian)
Currently translated at 98.6% (361 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-28 05:17:48 +01:00
Anonymous
f6aef7e2f9 Translated using Weblate (Esperanto)
Currently translated at 28.1% (103 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-28 05:17:48 +01:00
Anonymous
8a1be1e02d Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-28 05:17:48 +01:00
Anonymous
e2d5f94b04 Translated using Weblate (Malay)
Currently translated at 69.1% (253 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-28 05:17:48 +01:00
Anonymous
7b455e0c1b Translated using Weblate (Danish)
Currently translated at 54.0% (198 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-28 05:17:47 +01:00
Anonymous
4aedbe4bdc Translated using Weblate (Czech)
Currently translated at 68.3% (250 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-28 05:17:47 +01:00
Anonymous
c2ed7feab7 Translated using Weblate (Arabic)
Currently translated at 71.5% (262 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-28 05:17:47 +01:00
Anonymous
0989c02d38 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-28 05:17:46 +01:00
Anonymous
dd026c85d9 Translated using Weblate (Turkish)
Currently translated at 86.6% (317 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-28 05:17:46 +01:00
Anonymous
66e45d2594 Translated using Weblate (Bulgarian)
Currently translated at 12.5% (46 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-28 05:17:46 +01:00
Anonymous
ea578d6185 Translated using Weblate (Telugu)
Currently translated at 59.2% (217 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-28 05:17:45 +01:00
Anonymous
aadb2ecdb3 Translated using Weblate (Finnish)
Currently translated at 48.6% (178 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-28 05:17:45 +01:00
Anonymous
296e80b7d5 Translated using Weblate (Yue)
Currently translated at 32.2% (118 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-28 05:17:45 +01:00
Anonymous
6f298eb4ee Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.6% (361 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-28 05:17:44 +01:00
Anonymous
644fcdc57b Translated using Weblate (Romanian)
Currently translated at 37.4% (137 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-28 05:17:44 +01:00
Anonymous
f9b963da6b Translated using Weblate (Hebrew)
Currently translated at 27.5% (101 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-28 05:17:44 +01:00
Anonymous
56be3474db Translated using Weblate (Hungarian)
Currently translated at 29.5% (108 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-28 05:17:43 +01:00
Anonymous
2850111024 Translated using Weblate (Croatian)
Currently translated at 78.1% (286 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-28 05:17:43 +01:00
Anonymous
abe20929c3 Translated using Weblate (Swedish)
Currently translated at 36.0% (132 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-28 05:17:43 +01:00
Anonymous
820eaa67d7 Translated using Weblate (Polish)
Currently translated at 77.8% (285 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-28 05:17:43 +01:00
Anonymous
3ce25830cc Translated using Weblate (Catalan)
Currently translated at 70.4% (258 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-28 05:17:42 +01:00
Anonymous
6e899c0684 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.7% (354 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-28 05:17:42 +01:00
Anonymous
40bf9202ec Translated using Weblate (Dutch)
Currently translated at 24.0% (88 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-28 05:17:42 +01:00
Anonymous
92ba57e1e0 Translated using Weblate (Vietnamese)
Currently translated at 12.0% (44 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-28 05:17:41 +01:00
Anonymous
34ca28b65f Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.5% (79 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-28 05:17:41 +01:00
Anonymous
34ebf27b06 Translated using Weblate (Italian)
Currently translated at 78.6% (288 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-28 05:17:41 +01:00
Anonymous
3adfaf9e26 Translated using Weblate (Chinese (Simplified))
Currently translated at 90.4% (331 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-28 05:17:40 +01:00
Anonymous
5bdef9c6a1 Translated using Weblate (Russian)
Currently translated at 13.1% (48 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-28 05:17:40 +01:00
Anonymous
e5bd5bb423 Translated using Weblate (Portuguese)
Currently translated at 69.9% (256 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-28 05:17:40 +01:00
Anonymous
5bc7fc168c Translated using Weblate (French)
Currently translated at 99.4% (364 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-28 05:17:40 +01:00
Anonymous
44c99af690 Translated using Weblate (Spanish)
Currently translated at 99.4% (364 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-28 05:17:39 +01:00
Anonymous
befefd9af6 Translated using Weblate (German)
Currently translated at 62.2% (228 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-28 05:17:39 +01:00
shamoon
78e92dac22 Merge pull request #1068 from Aesop7/main
Add Quicklaunch feature to jump to a url
2023-02-27 20:15:26 -08:00
shamoon
af147c0da0 Support open url in quicklaunch 2023-02-27 20:06:30 -08:00
danny
6d5434fa3a Add the ability to go to a URL from quicklaunch
disable shift indicator whenever modal is closed

Add prefix to make feature more explicit

Hide the results when shift is pressed

fix typo - className not class

Revert "Add the ability to go to a URL from quicklaunch"

This reverts commit c52184df275b2819a968db0a3f2a57d56b988ac9.
2023-02-27 17:29:43 -08:00
Sairenity
f418ee6327 Add minecraft server status indicator 2023-02-27 11:59:37 +00:00
shamoon
cbf11e3fb4 Merge pull request #1063 from benphelps/issue-1060
Change: Alter cloudflare widget to use api token [Breaking Change]
2023-02-26 08:31:11 -08:00
shamoon
e9790e5677 Change cloudflare widget to use api tokens 2023-02-26 08:18:47 -08:00
gallegonovato
86383e5dce Translated using Weblate (Spanish)
Currently translated at 100.0% (364 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-26 16:36:39 +01:00
shamoon
449c23a63d fix service widgets import organization 2023-02-24 22:24:30 -08:00
Anonymous
829f7e33bc Translated using Weblate (Thai)
Currently translated at 12.9% (47 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-25 07:10:38 +01:00
Anonymous
9f4237f07d Translated using Weblate (Latvian)
Currently translated at 32.6% (119 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-25 07:10:38 +01:00
Anonymous
7458b9f685 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-25 07:10:37 +01:00
Anonymous
9a11cd5f81 Translated using Weblate (Ukrainian)
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-25 07:10:37 +01:00
Anonymous
81aaf5aa56 Translated using Weblate (Esperanto)
Currently translated at 28.2% (103 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-25 07:10:37 +01:00
Anonymous
716660318b Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-25 07:10:36 +01:00
Anonymous
a861971ba6 Translated using Weblate (Malay)
Currently translated at 69.5% (253 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-25 07:10:36 +01:00
Anonymous
6a7a30b423 Translated using Weblate (Danish)
Currently translated at 54.3% (198 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-25 07:10:36 +01:00
Anonymous
e60768d156 Translated using Weblate (Czech)
Currently translated at 68.6% (250 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-25 07:10:35 +01:00
Anonymous
dfa9cf29f9 Translated using Weblate (Arabic)
Currently translated at 71.9% (262 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-25 07:10:35 +01:00
Anonymous
ab576f173b Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-25 07:10:35 +01:00
Anonymous
10604fc5d2 Translated using Weblate (Turkish)
Currently translated at 87.0% (317 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-25 07:10:34 +01:00
Anonymous
ebc8b745a4 Translated using Weblate (Bulgarian)
Currently translated at 12.6% (46 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-25 07:10:34 +01:00
Anonymous
f0151a5d57 Translated using Weblate (Telugu)
Currently translated at 59.6% (217 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-25 07:10:34 +01:00
Anonymous
76274a7843 Translated using Weblate (Finnish)
Currently translated at 48.9% (178 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-25 07:10:33 +01:00
Anonymous
20635da031 Translated using Weblate (Yue)
Currently translated at 32.4% (118 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-25 07:10:33 +01:00
Anonymous
a52f4ed984 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-25 07:10:33 +01:00
Anonymous
1f4e89cf10 Translated using Weblate (Romanian)
Currently translated at 37.6% (137 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-25 07:10:32 +01:00
Anonymous
2ae71a27fe Translated using Weblate (Hebrew)
Currently translated at 27.7% (101 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-25 07:10:32 +01:00
Anonymous
eb508170f0 Translated using Weblate (Hungarian)
Currently translated at 29.6% (108 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-25 07:10:32 +01:00
Anonymous
7ba37c894d Translated using Weblate (Croatian)
Currently translated at 78.5% (286 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-25 07:10:32 +01:00
Anonymous
37d7a94d8a Translated using Weblate (Swedish)
Currently translated at 36.2% (132 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-25 07:10:31 +01:00
Anonymous
98595a84e2 Translated using Weblate (Polish)
Currently translated at 78.2% (285 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-25 07:10:31 +01:00
Anonymous
509d0a785e Translated using Weblate (Catalan)
Currently translated at 70.8% (258 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-25 07:10:31 +01:00
Anonymous
49e564af8a Translated using Weblate (Chinese (Traditional))
Currently translated at 97.2% (354 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-25 07:10:30 +01:00
Anonymous
72a65e9a15 Translated using Weblate (Dutch)
Currently translated at 24.1% (88 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-25 07:10:30 +01:00
Anonymous
dcbfd25d04 Translated using Weblate (Vietnamese)
Currently translated at 12.0% (44 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-25 07:10:30 +01:00
Anonymous
e7e46db9a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.7% (79 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-25 07:10:29 +01:00
Anonymous
4c2cbb180f Translated using Weblate (Italian)
Currently translated at 79.1% (288 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-25 07:10:29 +01:00
Anonymous
6b56311955 Translated using Weblate (Chinese (Simplified))
Currently translated at 90.9% (331 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-25 07:10:29 +01:00
Anonymous
7cce64a91a Translated using Weblate (Russian)
Currently translated at 13.1% (48 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-25 07:10:28 +01:00
Anonymous
aaf4a5855e Translated using Weblate (Portuguese)
Currently translated at 70.3% (256 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-25 07:10:28 +01:00
Anonymous
2e83eec155 Translated using Weblate (French)
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-25 07:10:28 +01:00
Anonymous
21e9b55b74 Translated using Weblate (Spanish)
Currently translated at 98.6% (359 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-25 07:10:27 +01:00
Anonymous
5976a3c27f Translated using Weblate (German)
Currently translated at 62.6% (228 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-25 07:10:27 +01:00
Dan
cb9755d8e6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-25 07:09:58 +01:00
Bruno Rossetto
c139fbebd7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-25 07:09:58 +01:00
Nonoss117
8ef7b301ec Translated using Weblate (French)
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-25 07:09:58 +01:00
shamoon
102ce2b1fe Merge pull request #1056 from tristo7/prometheus-widget
add prometheus service widget
2023-02-24 22:09:51 -08:00
shamoon
fe494a4ab3 add prometheus widget data validation 2023-02-24 22:07:42 -08:00
Tristin Terry
8dcb3a27bd add prometheus service widget 2023-02-24 19:55:13 -06:00
shamoon
7740f7e2dd Revert #1044 2023-02-24 11:58:29 -08:00
shamoon
99efe2e7aa Merge pull request #1051 from benphelps/dependabot/github_actions/actions/checkout-3 2023-02-24 11:36:59 -08:00
dependabot[bot]
79df42a743 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-24 17:03:59 +00:00
Anonymous
555e9463e8 Translated using Weblate (Thai)
Currently translated at 13.0% (47 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-24 16:54:25 +01:00
Anonymous
a2424ea0bd Translated using Weblate (Latvian)
Currently translated at 32.9% (119 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-24 16:54:25 +01:00
Anonymous
743e9dcbf8 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-24 16:54:24 +01:00
Anonymous
350bb1ff25 Translated using Weblate (Ukrainian)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-24 16:54:24 +01:00
Anonymous
bf50eaff17 Translated using Weblate (Esperanto)
Currently translated at 28.5% (103 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-24 16:54:24 +01:00
Anonymous
2594068fd0 Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-24 16:54:24 +01:00
Anonymous
72f66385ae Translated using Weblate (Malay)
Currently translated at 70.0% (253 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-24 16:54:23 +01:00
Anonymous
9cae86d88b Translated using Weblate (Danish)
Currently translated at 54.8% (198 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-24 16:54:23 +01:00
Anonymous
9f5b381b17 Translated using Weblate (Czech)
Currently translated at 69.2% (250 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-24 16:54:23 +01:00
Anonymous
707bb93ad6 Translated using Weblate (Arabic)
Currently translated at 72.5% (262 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-24 16:54:22 +01:00
Anonymous
dfcd4d8e84 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-24 16:54:22 +01:00
Anonymous
3d99302e33 Translated using Weblate (Turkish)
Currently translated at 87.8% (317 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-24 16:54:21 +01:00
Anonymous
a5036a701b Translated using Weblate (Bulgarian)
Currently translated at 12.7% (46 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-24 16:54:21 +01:00
Anonymous
3aa0fd594c Translated using Weblate (Telugu)
Currently translated at 60.1% (217 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-24 16:54:21 +01:00
Anonymous
67c60b4256 Translated using Weblate (Finnish)
Currently translated at 49.3% (178 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-24 16:54:20 +01:00
Anonymous
42675c2e71 Translated using Weblate (Yue)
Currently translated at 32.6% (118 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-24 16:54:20 +01:00
Anonymous
35098385c0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 69.8% (252 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-24 16:54:19 +01:00
Anonymous
409204c564 Translated using Weblate (Romanian)
Currently translated at 37.9% (137 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-24 16:54:19 +01:00
Anonymous
7ad59dc85f Translated using Weblate (Hebrew)
Currently translated at 27.9% (101 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-24 16:54:19 +01:00
Anonymous
f87d3d4ae3 Translated using Weblate (Hungarian)
Currently translated at 29.9% (108 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-24 16:54:19 +01:00
Anonymous
c84fecd981 Translated using Weblate (Croatian)
Currently translated at 79.2% (286 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-24 16:54:18 +01:00
Anonymous
321ede5297 Translated using Weblate (Swedish)
Currently translated at 36.5% (132 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-24 16:54:18 +01:00
Anonymous
6bea32ad83 Translated using Weblate (Polish)
Currently translated at 78.9% (285 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-24 16:54:18 +01:00
Anonymous
2a73b603c9 Translated using Weblate (Catalan)
Currently translated at 71.4% (258 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-24 16:54:17 +01:00
Anonymous
8203537915 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.0% (354 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-24 16:54:17 +01:00
Anonymous
c56f48fb42 Translated using Weblate (Dutch)
Currently translated at 24.3% (88 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-24 16:54:17 +01:00
Anonymous
743267ba7b Translated using Weblate (Vietnamese)
Currently translated at 12.1% (44 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-24 16:54:16 +01:00
Anonymous
218327b4a2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.8% (79 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-24 16:54:16 +01:00
Anonymous
7754b8b8f1 Translated using Weblate (Italian)
Currently translated at 79.7% (288 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-24 16:54:16 +01:00
Anonymous
c0df7db05e Translated using Weblate (Chinese (Simplified))
Currently translated at 91.6% (331 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-24 16:54:15 +01:00
Anonymous
2c8aea1cd9 Translated using Weblate (Russian)
Currently translated at 13.2% (48 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-24 16:54:15 +01:00
Anonymous
d0ba6aebbf Translated using Weblate (Portuguese)
Currently translated at 70.9% (256 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-24 16:54:15 +01:00
Anonymous
5ed50bbb57 Translated using Weblate (French)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-24 16:54:14 +01:00
Anonymous
311b7b1cea Translated using Weblate (Spanish)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-24 16:54:14 +01:00
Anonymous
101b706cd9 Translated using Weblate (German)
Currently translated at 63.1% (228 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-24 16:54:14 +01:00
Bruno Rossetto
bdfb09b1a4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 70.1% (252 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-24 16:53:50 +01:00
shamoon
65c06adb5a Merge pull request #1026 from Oupsman/pterodactyl
Pterodactyl widget: initial commit
2023-02-24 07:53:45 -08:00
shamoon
8c26da6655 Merge pull request #1047 from jameswynn/chart-commons-version 2023-02-24 07:50:19 -08:00
James Wynn
c0d58d8206 Typo in common lib version 2023-02-24 08:58:41 -06:00
shamoon
c2136e8353 Merge pull request #1044 from jameswynn/helm-chart 2023-02-24 06:52:00 -08:00
Dan
bc26d4f3b3 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-24 02:46:32 +01:00
James Wynn
563cc9ce60 Migrated helm chart from jameswynn/helm-charts
Standard chart release pipeline from:
https://helm.sh/docs/howto/chart_releaser_action/
2023-02-23 14:36:55 -06: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
shamoon
060d5afcaa Simplify pterodactyl to only show server / node counts 2023-02-23 07:50:13 -08:00
Benoit SERRA
8e9ce016b1 Pterodactyl widget: initial commit 2023-02-23 07:50:13 -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
shamoon
b65f6fca19 Merge pull request #1040 from jameswynn/external-services
Added "external" boolean annotation to specify external services
2023-02-22 08:27:06 -08:00
James Wynn
f8f96645b0 Added "external" boolean annotation to specify external services
External services define a kubernetes service pointing to an application
hosted outside of the cluster. These services should not attempt to get
the status based on kubernetes deployments. The new boolean flag disables
this functionality. Since this is an edge case, the default value is "false".
2023-02-22 09:05:26 -06:00
Anonymous
81a2e1e692 Translated using Weblate (Czech)
Currently translated at 69.6% (250 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-22 06:14:06 +01:00
Chun Chi Hsieh
50a9bdbcb8 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.6% (354 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-22 06:14:05 +01:00
shamoon
601edb8d6b Merge pull request #1033 from DanBrezeanu/877-remove-bottom-version
Configuration option for removing bottom version
2023-02-21 08:20:40 -08:00
Dan Brezeanu
9eafac346b Configuration option for removing bottom version 2023-02-21 10:11:24 +02:00
shamoon
767fc1ec39 Better handle homebridge errors 2023-02-20 17:39:16 -08:00
Tomáš Plášek
09fa08b037 Translated using Weblate (Czech)
Currently translated at 69.6% (250 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-21 02:07:54 +01:00
Nonoss117
fe204dd0c3 Translated using Weblate (French)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-21 02:07:53 +01:00
Antonio Sanchez Castellón
93fe847667 Translated using Weblate (Spanish)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-21 02:07:53 +01:00
gallegonovato
f474b746d3 Translated using Weblate (Spanish)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-21 02:07:52 +01:00
shamoon
b69bb94253 Merge pull request #1031 from benphelps/fix-1025
Fix homebridge config UI-X API expires login with 403
2023-02-20 14:59:46 -08:00
shamoon
9df4ba0881 Fix homebridge config UI-X API expires login with 403 2023-02-20 14:58:19 -08:00
shamoon
b2f26e1a43 Update status.jsx 2023-02-20 14:55:01 -08:00
94 changed files with 7417 additions and 6070 deletions

View File

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

1
.gitignore vendored
View File

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

View File

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

4985
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

2249
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,14 @@
"free": "متاح", "free": "متاح",
"used": "مستخدم", "used": "مستخدم",
"load": "الضغط", "load": "الضغط",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "المستخدمون", "users": "المستخدمون",
@@ -107,13 +114,24 @@
"cpu": "المعالج", "cpu": "المعالج",
"offline": "غير متصل", "offline": "غير متصل",
"error": "خطأ", "error": "خطأ",
"unknown": "مجهول" "unknown": "مجهول",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "يعمل الآن", "playing": "يعمل الآن",
"transcoding": "التحويل", "transcoding": "التحويل",
"bitrate": "معدل البت", "bitrate": "معدل البت",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"songs": "Songs",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -277,13 +295,19 @@
"glances": { "glances": {
"cpu": "معالج", "cpu": "معالج",
"mem": "الذاكرة", "mem": "الذاكرة",
"wait": "الرجاء الإنتظار" "wait": "الرجاء الإنتظار",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "مفضلة", "bookmark": "مفضلة",
"service": "خدمة", "service": "خدمة",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "نظام", "available_update": "نظام",
@@ -291,7 +315,10 @@
"update_available": "تحديث متاح", "update_available": "تحديث متاح",
"up_to_date": "حتى الآن", "up_to_date": "حتى الآن",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -33,7 +33,14 @@
"free": "Свободни", "free": "Свободни",
"used": "Заети", "used": "Заети",
"load": "Натоварване", "load": "Натоварване",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Потребители", "users": "Потребители",
@@ -59,13 +66,24 @@
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"partial": "Partial",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Възпроизвежда", "playing": "Възпроизвежда",
"transcoding": "Конвертира", "transcoding": "Конвертира",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Няма активни потоци" "no_active": "Няма активни потоци",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Възпроизвежда", "playing": "Възпроизвежда",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "Rejected", "rejectedPushes": "Rejected",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -39,7 +39,14 @@
"used": "Utilitzat", "used": "Utilitzat",
"load": "Càrrega", "load": "Càrrega",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rebut", "rx": "Rebut",
@@ -48,13 +55,24 @@
"cpu": "Processador", "cpu": "Processador",
"offline": "Fora de línia", "offline": "Fora de línia",
"error": "Error", "error": "Error",
"unknown": "Desconegut" "unknown": "Desconegut",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Reproduint", "playing": "Reproduint",
"transcoding": "Transcodificant", "transcoding": "Transcodificant",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sense reproduccions actives" "no_active": "Sense reproduccions actives",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduint", "playing": "Reproduint",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Processador", "cpu": "Processador",
"mem": "Memòria", "mem": "Memòria",
"wait": "Si us plau, espereu" "wait": "Si us plau, espereu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total d'observats", "totalObserved": "Total d'observats",
@@ -283,7 +305,9 @@
"bookmark": "Marcador", "bookmark": "Marcador",
"service": "Servei", "service": "Servei",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sistema", "available_update": "Sistema",
@@ -291,7 +315,10 @@
"update_available": "Actualització disponible", "update_available": "Actualització disponible",
"up_to_date": "Actualitzat", "up_to_date": "Actualitzat",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprovat", "approvedPushes": "Aprovat",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -14,11 +14,11 @@
"widget": { "widget": {
"missing_type": "Chybí typ widgetu: {{type}}", "missing_type": "Chybí typ widgetu: {{type}}",
"api_error": "Chyba API", "api_error": "Chyba API",
"status": "Status", "status": "Stav",
"information": "Information", "information": "Informace",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Nevyřešená chyba",
"response_data": "Response Data" "response_data": "Data odezvy"
}, },
"weather": { "weather": {
"current": "Aktuální poloha", "current": "Aktuální poloha",
@@ -35,7 +35,14 @@
"free": "Volné", "free": "Volné",
"used": "Využité", "used": "Využité",
"load": "Vytížení", "load": "Vytížení",
"mem": "MEM" "mem": "RAM",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"temp": "TEMP"
}, },
"unifi": { "unifi": {
"users": "Uživatelé", "users": "Uživatelé",
@@ -52,7 +59,7 @@
"up": "BĚŽÍ", "up": "BĚŽÍ",
"down": "NEBĚŽÍ", "down": "NEBĚŽÍ",
"wait": "Počkejte prosím", "wait": "Počkejte prosím",
"empty_data": "Subsystem status unknown" "empty_data": "Status podsystému neznámý"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -60,14 +67,25 @@
"mem": "RAM", "mem": "RAM",
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Chyba",
"unknown": "Unknown" "unknown": "Neznámý",
"running": "Běží",
"starting": "Startuje",
"unhealthy": "Nezdravý",
"not_found": "Nenalezen",
"exited": "Ukončen",
"partial": "Částečný",
"healthy": "Zdravý"
}, },
"emby": { "emby": {
"playing": "Přehrává", "playing": "Přehrává",
"transcoding": "Transkódování", "transcoding": "Transkódování",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Žádný aktivní stream" "no_active": "Žádný aktivní stream",
"movies": "Filmy",
"series": "Seriály",
"episodes": "Epizody",
"songs": "Písničky"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Celkem zjištěno", "totalObserved": "Celkem zjištěno",
@@ -102,33 +120,33 @@
"transmission": { "transmission": {
"download": "Stahování", "download": "Stahování",
"upload": "Nahrávání", "upload": "Nahrávání",
"leech": "Leecher", "leech": "Leecherů",
"seed": "Seeder" "seed": "Seedů"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Stahování", "download": "Stahování",
"upload": "Nahrávání", "upload": "Nahrávání",
"leech": "Leecher", "leech": "Leechované",
"seed": "Seeder" "seed": "Seedované"
}, },
"sonarr": { "sonarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"series": "Seriály" "series": "Seriály"
}, },
"radarr": { "radarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"missing": "Chybějící", "missing": "Chybějící",
"queued": "Ve frontě", "queued": "Ve frontě",
"movies": "Filmy" "movies": "Filmy"
}, },
"lidarr": { "lidarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"albums": "Alba" "albums": "Alba"
}, },
"readarr": { "readarr": {
"wanted": "Hledaný", "wanted": "Hledané",
"queued": "Ve frontě", "queued": "Ve frontě",
"books": "Knihy" "books": "Knihy"
}, },
@@ -139,23 +157,23 @@
"ombi": { "ombi": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný" "available": "Dostupné"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný" "available": "Dostupné"
}, },
"overseerr": { "overseerr": {
"pending": "Čeká", "pending": "Čeká",
"approved": "Schváleno", "approved": "Schváleno",
"available": "Dostupný", "available": "Dostupné",
"processing": "Processing" "processing": "Zpracovávání"
}, },
"pihole": { "pihole": {
"queries": "Dotazy", "queries": "Dotazy",
"blocked": "Blokováno", "blocked": "Blokováno",
"gravity": "Gravitace" "gravity": "Gravity"
}, },
"adguard": { "adguard": {
"queries": "Dotazy", "queries": "Dotazy",
@@ -289,21 +307,30 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "RAM", "mem": "RAM",
"wait": "Prosím počkejte" "wait": "Prosím počkejte",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Záložka", "bookmark": "Záložka",
"service": "Služba", "service": "Služba",
"search": "Search", "search": "Hledat",
"custom": "Custom" "custom": "Vlastní",
"visit": "Navštivte",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"update_available": "Dostupná aktualizace", "update_available": "Dostupná",
"up_to_date": "Aktuální", "up_to_date": "Žádné",
"available_update": "Systém", "available_update": "Systém",
"updates": "Aktualizace", "updates": "Aktualizace",
"child_bridges": "Podřadné můstky", "child_bridges": "Podřadné můstky",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Zapnutý",
"pending": "Čeká se",
"down": "Vypnutý"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Naskenováno", "containers_scanned": "Naskenováno",
@@ -317,196 +344,223 @@
"indexers": "Indexery" "indexers": "Indexery"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "No Active Streams", "nothing_streaming": "Žádné aktivní streamy",
"please_wait": "Please Wait" "please_wait": "Čekejte prosím"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Rychlost",
"active": "Active", "active": "Aktiv",
"queue": "Queue", "queue": "Fronta",
"total": "Total" "total": "Celkem"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Veřejná IP",
"region": "Region", "region": "Oblast",
"country": "Country" "country": "Stát"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanály",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
"error": "Error", "error": "Chyba",
"ping": "Ping" "ping": "Odezva"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Přijato",
"failed": "Failed", "failed": "Neúspěšné",
"unknown": "Unknown" "unknown": "Neznámé"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Doručená pošta",
"total": "Total" "total": "Celkem"
}, },
"deluge": { "deluge": {
"upload": "Upload", "upload": "Nahrávání",
"leech": "Leech", "leech": "Leech",
"seed": "Seed", "seed": "Seed",
"download": "Download" "download": "Stahování"
}, },
"flood": { "flood": {
"download": "Download", "download": "Stahování",
"upload": "Upload", "upload": "Nahrávání",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Fronta",
"processed": "Processed", "processed": "Zpracováno",
"errored": "Errored", "errored": "Chybné",
"saved": "Saved" "saved": "Uložené"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Přečteno",
"unread": "Unread" "unread": "Nepřečteno"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Počkejte prosím",
"no_devices": "No Device Data Received" "no_devices": "Žádná přijatá data zařízení"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Připojené APs",
"activeUser": "Active devices", "activeUser": "Aktivní zařízení",
"alerts": "Alerts", "alerts": "Upozornění",
"connectedGateway": "Connected gateways", "connectedGateway": "Připojené brány",
"connectedSwitches": "Connected switches" "connectedSwitches": "Připojené přepínače"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Stahování",
"upload": "Upload", "upload": "Nahrávání",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "Zatížení procesoru",
"memoryUsed": "Memory Used", "memoryUsed": "Použitá paměť",
"uptime": "Uptime", "uptime": "Doba provozu",
"numberOfLeases": "Leases" "numberOfLeases": "Pronájmy"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Všechny proudy",
"streams_active": "Active Streams", "streams_active": "Aktivní proudy",
"streams_xepg": "XEPG Channels" "streams_xepg": "Kanály XEPG"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "Zatížení procesoru",
"memory": "Active Memory", "memory": "Aktivní paměť",
"wanUpload": "WAN Upload", "wanUpload": "Nahrávání WAN",
"wanDownload": "WAN Download" "wanDownload": "WAN Stažení"
}, },
"moonraker": { "moonraker": {
"print_progress": "Progress", "print_progress": "Progres",
"printer_state": "Printer State", "printer_state": "Stav tiskárny",
"print_status": "Print Status", "print_status": "Stav tisku",
"layers": "Layers" "layers": "Vrstvy"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Hledané",
"queued": "Queued", "queued": "Fronta",
"series": "Series" "series": "Série"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Stav",
"temp_tool": "Tool temp", "temp_tool": "Teplota nástroje",
"temp_bed": "Bed temp", "temp_bed": "Teplota postele",
"job_completion": "Completion" "job_completion": "Dokončení"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Původní IP",
"status": "Status" "status": "Stav"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Datové úložiště",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Neúspěšné úlohy 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Paměť"
}, },
"immich": { "immich": {
"users": "Users", "users": "Uživatelé",
"photos": "Photos", "photos": "Fotografie",
"videos": "Videos", "videos": "Videa",
"storage": "Storage" "storage": "Úložiště"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Stránky Up",
"down": "Sites Down", "down": "Stránky Down",
"uptime": "Uptime", "uptime": "Doba provozu",
"incident": "Incident", "incident": "Incident",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Knihovny",
"series": "Series", "series": "Série",
"books": "Books" "books": "Knihy"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Série",
"issues": "Issues", "issues": "Problémy",
"wanted": "Wanted" "wanted": "Hledá se"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Alba",
"photos": "Photos", "photos": "Fotografie",
"videos": "Videos", "videos": "Videa",
"people": "People" "people": "Lidé"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dni",
"uptime": "Uptime", "uptime": "Doba provozu",
"volumeAvailable": "Available" "volumeAvailable": "K dispozici"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Fronta",
"processing": "Processing", "processing": "Zpracování",
"processed": "Processed", "processed": "Zpracováno",
"time": "Time" "time": "Čas"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Přístrojové panely",
"datasources": "Data Sources", "datasources": "Zdroje dat",
"totalalerts": "Total Alerts", "totalalerts": "Celkový počet upozornění",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Spuštěné výstrahy"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "CPU zatížení",
"memoryusage": "Memory Usage", "memoryusage": "Využití paměti",
"freespace": "Free Space", "freespace": "Volný prostor",
"activeusers": "Active Users" "activeusers": "Aktivní uživatelé"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Stav",
"size": "Size", "size": "Velikost",
"lastrun": "Last Run", "lastrun": "Poslední spuštění",
"nextrun": "Next Run", "nextrun": "Další spuštění",
"failed": "Failed" "failed": "Neúspěšné"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Aktivní workers",
"total_workers": "Total Workers", "total_workers": "Workers celkem",
"records_total": "Queue Length" "records_total": "Délka fronty"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nové",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "V období odkladu",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pozastaveno",
"status": "Status", "status": "Stav",
"last_ping": "Last Ping", "last_ping": "Poslední ping",
"never": "No pings yet" "never": "Zatím žádné pingy"
},
"pterodactyl": {
"servers": "Servery",
"nodes": "Uzly"
},
"prometheus": {
"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": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "RAM", "mem": "RAM",
"wait": "Vent venligst" "wait": "Vent venligst",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
}, },
"wmo": { "wmo": {
"1-day": "Hovedsageligt solrigt", "1-day": "Hovedsageligt solrigt",
@@ -134,7 +138,10 @@
"update_available": "Opdateringer tilgængelige", "update_available": "Opdateringer tilgængelige",
"up_to_date": "Opdateret", "up_to_date": "Opdateret",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"widget": { "widget": {
"missing_type": "Manglende Widget Type: {{type}}", "missing_type": "Manglende Widget Type: {{type}}",
@@ -160,7 +167,14 @@
"free": "Fri", "free": "Fri",
"used": "Brugt", "used": "Brugt",
"load": "Belastning", "load": "Belastning",
"mem": "MEM" "mem": "MEM",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
}, },
"unifi": { "unifi": {
"users": "Brugere", "users": "Brugere",
@@ -186,13 +200,24 @@
"mem": "RAM", "mem": "RAM",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Afspiller", "playing": "Afspiller",
"transcoding": "Transcoder", "transcoding": "Transcoder",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams" "no_active": "Ingen Aktive Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observeret", "totalObserved": "Total Observeret",
@@ -291,7 +316,9 @@
"bookmark": "Bogmærker", "bookmark": "Bogmærker",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scannet", "containers_scanned": "Scannet",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": {
"booksDuration": "Duration",
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration"
} }
} }

View File

@@ -4,8 +4,8 @@
"api_error": "API-Fehler", "api_error": "API-Fehler",
"status": "Status", "status": "Status",
"url": "URL", "url": "URL",
"information": "Information", "information": "Informationen",
"raw_error": "Raw Error", "raw_error": "Unbearbeiteter Fehler",
"response_data": "Empfangene Daten" "response_data": "Empfangene Daten"
}, },
"search": { "search": {
@@ -17,7 +17,14 @@
"used": "Gebraucht", "used": "Gebraucht",
"load": "Last", "load": "Last",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "RAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -25,14 +32,25 @@
"mem": "Mem", "mem": "Mem",
"cpu": "Prozessor", "cpu": "Prozessor",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Fehler",
"unknown": "Unknown" "unknown": "Unbekannt",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Spielen", "playing": "Spielen",
"transcoding": "Transcodierung", "transcoding": "Transcodierung",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Keine aktiven Streams" "no_active": "Keine aktiven Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spielen", "playing": "Spielen",
@@ -106,7 +124,7 @@
"pending": "Ausstehend", "pending": "Ausstehend",
"approved": "Genehmigt", "approved": "Genehmigt",
"available": "Verfügbar", "available": "Verfügbar",
"processing": "Processing" "processing": "Wird verarbeitet"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Geschwindigkeit", "rate": "Geschwindigkeit",
@@ -205,7 +223,7 @@
"devices": "Geräte", "devices": "Geräte",
"lan_devices": "LAN-Geräte", "lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN Geräte", "wlan_devices": "WLAN Geräte",
"empty_data": "Subsystem status unknown" "empty_data": "Subsystem status unbekannt"
}, },
"plex": { "plex": {
"streams": "Aktive Streams", "streams": "Aktive Streams",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Prozessor", "cpu": "Prozessor",
"mem": "RAM", "mem": "RAM",
"wait": "Bitte warten" "wait": "Bitte warten",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Gesamt beobachtet", "totalObserved": "Gesamt beobachtet",
@@ -282,8 +304,10 @@
"quicklaunch": { "quicklaunch": {
"bookmark": "Lesezeichen", "bookmark": "Lesezeichen",
"service": "Dienst", "service": "Dienst",
"search": "Search", "search": "Suchen",
"custom": "Custom" "custom": "Benutzerdefiniert",
"visit": "Besuchen",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Aktualisierung verfügbar", "update_available": "Aktualisierung verfügbar",
"up_to_date": "Aktuell", "up_to_date": "Aktuell",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Genehmigt", "approvedPushes": "Genehmigt",
@@ -317,36 +344,36 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "No Active Streams", "nothing_streaming": "Keine Aktiven Übertragungen",
"please_wait": "Please Wait" "please_wait": "Bitte warten"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Geschwindigkeit",
"active": "Active", "active": "Aktiv",
"queue": "Queue", "queue": "Warteschlange",
"total": "Total" "total": "Gesamt"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Öffentliche IP",
"region": "Region", "region": "Region",
"country": "Country" "country": "Land"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanäle",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
"ping": "Ping", "ping": "Ping",
"error": "Error" "error": "Fehler"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Bestanden",
"failed": "Failed", "failed": "Fehlgeschlagen",
"unknown": "Unknown" "unknown": "Unbekannt"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Eingang",
"total": "Total" "total": "Gesamt"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Download",
@@ -361,29 +388,29 @@
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Warteschlange",
"processed": "Processed", "processed": "Verarbeitet",
"errored": "Errored", "errored": "Fehlgeschlagen",
"saved": "Saved" "saved": "Gespeichert"
}, },
"miniflux": { "miniflux": {
"unread": "Unread", "unread": "Ungelesen",
"read": "Read" "read": "Lesen"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Bitte Warten",
"no_devices": "No Device Data Received" "no_devices": "Keine Daten empfangen"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Verbundene APs",
"activeUser": "Active devices", "activeUser": "Aktive Geräte",
"alerts": "Alerts", "alerts": "Meldungen",
"connectedGateway": "Connected gateways", "connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Verbundene Switches"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
@@ -392,107 +419,107 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "CPU Auslastung",
"memoryUsed": "Memory Used", "memoryUsed": "RAM Verbrauch",
"uptime": "Uptime", "uptime": "Laufzeit",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Keine Übertragungen",
"streams_active": "Active Streams", "streams_active": "Aktive Streams",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG Kanäle"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "CPU Auslastung",
"memory": "Active Memory", "memory": "Aktiver RAM",
"wanUpload": "WAN Upload", "wanUpload": "WAN Upload",
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Drucker Status",
"print_status": "Print Status", "print_status": "Druck Status",
"print_progress": "Progress", "print_progress": "Fortschritt",
"layers": "Layers" "layers": "Schichten"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Gesucht",
"queued": "Queued", "queued": "Wartend",
"series": "Series" "series": "Serie"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "Düsen Temp",
"temp_bed": "Bed temp", "temp_bed": "Bett Temp",
"job_completion": "Completion" "job_completion": "Fortschritt"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Ursprüngliche IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"cpu_usage": "CPU", "cpu_usage": "CPU",
"datastore_usage": "Datastore", "datastore_usage": "Datenspeicher",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Fehlgeschlagene Prozesse 24h",
"memory_usage": "Memory" "memory_usage": "RAM"
}, },
"immich": { "immich": {
"users": "Users", "users": "Benutzer",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Videos",
"storage": "Storage" "storage": "Speicher"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Seiten verfügbar",
"down": "Sites Down", "down": "Seiten nicht verfügbar",
"uptime": "Uptime", "uptime": "Laufzeit",
"incident": "Incident", "incident": "Vorfall",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotheken",
"series": "Series", "series": "Serie",
"books": "Books" "books": "Bücher"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Serie",
"issues": "Issues", "issues": "Probleme",
"wanted": "Wanted" "wanted": "Gesucht"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Alben",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Videos",
"people": "People" "people": "Personen"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Tage",
"uptime": "Uptime", "uptime": "Laufzeit",
"volumeAvailable": "Available" "volumeAvailable": "Verfügbar"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Warteschlange",
"processing": "Processing", "processing": "Wird verarbeitet",
"processed": "Processed", "processed": "Verarbeitet",
"time": "Time" "time": "Zeit"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Datenquellen",
"totalalerts": "Total Alerts", "totalalerts": "Gesamte Meldungen",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Ausgelöste Alarme"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "CPU Last",
"memoryusage": "Memory Usage", "memoryusage": "RAM Verbrauch",
"freespace": "Free Space", "freespace": "Freier Speicher",
"activeusers": "Active Users" "activeusers": "Aktive Nutzer"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Größe",
"lastrun": "Last Run", "lastrun": "Letzter Durchlauf",
"nextrun": "Next Run", "nextrun": "Nächster Durchlauf",
"failed": "Failed" "failed": "Fehlgeschlagen"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Active Workers",
@@ -501,12 +528,39 @@
}, },
"healthchecks": { "healthchecks": {
"grace": "In Grace Period", "grace": "In Grace Period",
"new": "New", "new": "Neu",
"up": "Online", "up": "Online",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pausiert",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Letzter Ping",
"never": "No pings yet" "never": "Noch keine Pings"
},
"pterodactyl": {
"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", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load" "load": "Load",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -60,9 +67,16 @@
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"running": "Running",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"healthy": "Healthy",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial"
}, },
"ping": { "ping": {
"error": "Error", "error": "Error",
@@ -72,7 +86,11 @@
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -262,6 +280,13 @@
"queued": "Queued", "queued": "Queued",
"series": "Series" "series": "Series"
}, },
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",
"unread": "Unread" "unread": "Unread"
@@ -280,13 +305,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Sunny", "0-day": "Sunny",
@@ -352,7 +383,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
@@ -517,5 +551,25 @@
"active_workers": "Active Workers", "active_workers": "Active Workers",
"total_workers": "Total Workers", "total_workers": "Total Workers",
"records_total": "Queue Length" "records_total": "Queue Length"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": "Libera", "free": "Libera",
"used": "Uzata", "used": "Uzata",
"load": "Ŝarĝo", "load": "Ŝarĝo",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"months": "mo",
"max": "Max",
"uptime": "UP",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Uzantoj", "users": "Uzantoj",
@@ -49,7 +56,14 @@
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
"offline": "Offline", "offline": "Offline",
"error": "Eraro", "error": "Eraro",
"unknown": "Nekonata" "unknown": "Nekonata",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Eraro", "error": "Eraro",
@@ -59,7 +73,11 @@
"playing": "Ludante", "playing": "Ludante",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -233,13 +251,19 @@
"glances": { "glances": {
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
"mem": "Memoro", "mem": "Memoro",
"wait": "Bonvolu atendi" "wait": "Bonvolu atendi",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Servo", "service": "Servo",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Suna", "0-day": "Suna",
@@ -305,7 +329,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": "Usado", "used": "Usado",
"load": "Carga", "load": "Carga",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMPORAL",
"max": "Máximo",
"uptime": "ARRIBA",
"months": "Meses",
"days": "Días",
"hours": "Horas",
"minutes": "Minutos"
}, },
"docker": { "docker": {
"rx": "Recibido", "rx": "Recibido",
@@ -26,13 +33,24 @@
"cpu": "Procesador", "cpu": "Procesador",
"offline": "Desconectado", "offline": "Desconectado",
"error": "Fallo", "error": "Fallo",
"unknown": "Desconocido" "unknown": "Desconocido",
"running": "Ejecutando",
"starting": "Comenzando",
"unhealthy": "Insalubre",
"not_found": "No encontrado",
"exited": "Salida",
"partial": "Parcial",
"healthy": "Saludable"
}, },
"emby": { "emby": {
"playing": "Reproduciendo", "playing": "Reproduciendo",
"transcoding": "Transcodificando", "transcoding": "Transcodificando",
"bitrate": "Tasa de bits", "bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas" "no_active": "Sin transmisiones activas",
"movies": "Películas",
"series": "Serie",
"episodes": "Episodios",
"songs": "Canciones"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduciendo", "playing": "Reproduciendo",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesador", "cpu": "Procesador",
"mem": "Memoria", "mem": "Memoria",
"wait": "Espere por favor" "wait": "Espere por favor",
"temp": "TEMPORAL",
"uptime": "ARRIBA",
"days": "Días",
"hours": "Horas"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observados", "totalObserved": "Total Observados",
@@ -283,7 +305,9 @@
"bookmark": "Marcadores", "bookmark": "Marcadores",
"service": "Servicio", "service": "Servicio",
"search": "Buscar", "search": "Buscar",
"custom": "Personalizado" "custom": "Personalizado",
"visit": "Visita",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sistema", "available_update": "Sistema",
@@ -291,7 +315,10 @@
"update_available": "Actualización disponible", "update_available": "Actualización disponible",
"up_to_date": "Actualizado", "up_to_date": "Actualizado",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Arriba",
"pending": "Pendiente",
"down": "Abajo"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprobado", "approvedPushes": "Aprobado",
@@ -500,13 +527,40 @@
"records_total": "Duración de la cola" "records_total": "Duración de la cola"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nuevo",
"up": "Online", "up": "Conectado",
"down": "Offline", "down": "Desconectado",
"grace": "In Grace Period", "grace": "En Periodo de Gracia",
"paused": "Paused", "paused": "Pausado",
"status": "Status", "status": "Estado",
"last_ping": "Last Ping", "last_ping": "Último Ping",
"never": "No pings yet" "never": "Aún no hay pings"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nodos"
},
"prometheus": {
"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", "free": "Vapaana",
"used": "Käytetty", "used": "Käytetty",
"load": "Kuorma", "load": "Kuorma",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Toistaa", "playing": "Toistaa",
"transcoding": "Transkoodaa", "transcoding": "Transkoodaa",
"bitrate": "Bittinopeus", "bitrate": "Bittinopeus",
"no_active": "Ei aktiivisia striimejä" "no_active": "Ei aktiivisia striimejä",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Toistaa", "playing": "Toistaa",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"wait": "Please wait", "wait": "Please wait",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": "Utilisé", "used": "Utilisé",
"load": "Charge", "load": "Charge",
"cpu": "CPU", "cpu": "CPU",
"mem": "MÉM" "mem": "MÉM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Cpu", "cpu": "Cpu",
"offline": "Hors ligne", "offline": "Hors ligne",
"error": "Erreur", "error": "Erreur",
"unknown": "Inconnu" "unknown": "Inconnu",
"running": "Démarré",
"starting": "Démarrage",
"unhealthy": "Dysfonctionnement",
"not_found": "Inconnu",
"exited": "Arrêté",
"partial": "Partiel",
"healthy": "Fonctionnel"
}, },
"emby": { "emby": {
"playing": "En lecture", "playing": "En lecture",
"transcoding": "Transcodage", "transcoding": "Transcodage",
"bitrate": "Débit", "bitrate": "Débit",
"no_active": "Aucun flux actif" "no_active": "Aucun flux actif",
"movies": "Films",
"series": "Séries TV",
"episodes": "Épisodes",
"songs": "Musique"
}, },
"tautulli": { "tautulli": {
"playing": "En lecture", "playing": "En lecture",
@@ -47,12 +65,12 @@
}, },
"sonarr": { "sonarr": {
"wanted": "Demande", "wanted": "Demande",
"queued": "En attente", "queued": "Attente",
"series": "Séries" "series": "Séries"
}, },
"radarr": { "radarr": {
"wanted": "Demande", "wanted": "Demande",
"queued": "En attente", "queued": "Attente",
"movies": "Films", "movies": "Films",
"missing": "Manquant" "missing": "Manquant"
}, },
@@ -103,14 +121,14 @@
"wait": "Veuillez patienter" "wait": "Veuillez patienter"
}, },
"overseerr": { "overseerr": {
"pending": "En attente", "pending": "Attente",
"approved": "Demande", "approved": "Demande",
"available": "Disponible", "available": "Disponible",
"processing": "En traitement" "processing": "Traitement"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Débit", "rate": "Débit",
"queue": "Queue", "queue": "En attente",
"timeleft": "Temps restant" "timeleft": "Temps restant"
}, },
"nzbget": { "nzbget": {
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Cpu", "cpu": "Cpu",
"mem": "Mém", "mem": "Mém",
"wait": "Merci de patienter" "wait": "Merci de patienter",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observé", "totalObserved": "Total Observé",
@@ -283,7 +305,9 @@
"bookmark": "Signet", "bookmark": "Signet",
"service": "Service", "service": "Service",
"search": "Recherche", "search": "Recherche",
"custom": "Personnalisé" "custom": "Personnalisé",
"visit": "Aller vers",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Système", "available_update": "Système",
@@ -291,7 +315,10 @@
"update_available": "Mise à jour disponible", "update_available": "Mise à jour disponible",
"up_to_date": "À jour", "up_to_date": "À jour",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approuvé", "approvedPushes": "Approuvé",
@@ -364,7 +391,7 @@
"queue": "À traiter", "queue": "À traiter",
"processed": "Traité", "processed": "Traité",
"errored": "En erreur", "errored": "En erreur",
"saved": "Enregistré" "saved": "Economisé"
}, },
"miniflux": { "miniflux": {
"read": "Lu", "read": "Lu",
@@ -470,7 +497,7 @@
"volumeAvailable": "Disponible" "volumeAvailable": "Disponible"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "À traiter",
"processing": "Traitement", "processing": "Traitement",
"processed": "Traité", "processed": "Traité",
"time": "Temps" "time": "Temps"
@@ -500,13 +527,40 @@
"records_total": "En attente" "records_total": "En attente"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nouveau",
"up": "Online", "up": "En ligne",
"grace": "In Grace Period", "grace": "En Période de Grâce",
"down": "Offline", "down": "Hors ligne",
"paused": "Paused", "paused": "En Pause",
"status": "Status", "status": "Statut",
"last_ping": "Last Ping", "last_ping": "Dernier Ping",
"never": "No pings yet" "never": "Pas de Ping"
},
"pterodactyl": {
"servers": "Serveurs",
"nodes": "Nœuds"
},
"prometheus": {
"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": "בשימוש", "used": "בשימוש",
"load": "עומס", "load": "עומס",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -32,13 +39,24 @@
"cpu": "מעבד", "cpu": "מעבד",
"offline": "כבוי", "offline": "כבוי",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "מנגן", "playing": "מנגן",
"transcoding": "מקודד", "transcoding": "מקודד",
"bitrate": "סיביות", "bitrate": "סיביות",
"no_active": "אין הזרמות פעילות" "no_active": "אין הזרמות פעילות",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "מנגן", "playing": "מנגן",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Offline", "down": "Offline",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -57,7 +57,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -83,13 +90,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -223,13 +241,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Sunny", "0-day": "Sunny",
@@ -295,7 +319,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -14,7 +14,14 @@
"used": "Korišteno", "used": "Korišteno",
"load": "Opterećenje", "load": "Opterećenje",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"minutes": "m",
"max": "Max",
"uptime": "UP",
"months": "mo",
"temp": "TEMP",
"days": "d",
"hours": "h"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Stopa", "rate": "Stopa",
@@ -73,13 +80,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Nepovezan", "offline": "Nepovezan",
"error": "Greška", "error": "Greška",
"unknown": "Nepoznato" "unknown": "Nepoznato",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Reprodukcija", "playing": "Reprodukcija",
"transcoding": "Prekodiranje", "transcoding": "Prekodiranje",
"bitrate": "Stopa bitova", "bitrate": "Stopa bitova",
"no_active": "Nema aktivnih prijenosa" "no_active": "Nema aktivnih prijenosa",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Reprodukcija", "playing": "Reprodukcija",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Pričekaj" "wait": "Pričekaj",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Ukupno promatrano", "totalObserved": "Ukupno promatrano",
@@ -283,7 +305,9 @@
"bookmark": "Straničnik", "bookmark": "Straničnik",
"service": "Usluga", "service": "Usluga",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sustav", "available_update": "Sustav",
@@ -291,7 +315,10 @@
"update_available": "Dostupna je nova verzija", "update_available": "Dostupna je nova verzija",
"up_to_date": "Aktualno", "up_to_date": "Aktualno",
"child_bridges": "Podređeni mosotvi", "child_bridges": "Podređeni mosotvi",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "Odbijeno", "rejectedPushes": "Odbijeno",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -5,7 +5,14 @@
"used": "Használt", "used": "Használt",
"load": "Terhelés", "load": "Terhelés",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"unhealthy": "Unhealthy",
"running": "Running",
"starting": "Starting",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"lidarr": { "lidarr": {
"albums": "Albumok", "albums": "Albumok",
@@ -52,7 +66,11 @@
"playing": "Lejátszás", "playing": "Lejátszás",
"transcoding": "Átkódolás", "transcoding": "Átkódolás",
"bitrate": "Bitráta", "bitrate": "Bitráta",
"no_active": "Nincs aktív lejátszás" "no_active": "Nincs aktív lejátszás",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Lejátszás folyamatban", "playing": "Lejátszás folyamatban",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -6,13 +6,24 @@
"offline": "Offline", "offline": "Offline",
"rx": "RX", "rx": "RX",
"error": "Errore", "error": "Errore",
"unknown": "Sconosciuto" "unknown": "Sconosciuto",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "In riproduzione", "playing": "In riproduzione",
"transcoding": "Transcodifica", "transcoding": "Transcodifica",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Nessuno Stream Attivo" "no_active": "Nessuno Stream Attivo",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "In riproduzione", "playing": "In riproduzione",
@@ -53,7 +64,14 @@
"used": "In utilizzo", "used": "In utilizzo",
"load": "Carico", "load": "Carico",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"rutorrent": { "rutorrent": {
"active": "Attivo", "active": "Attivo",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Attendere prego" "wait": "Attendere prego",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Totale Osservato", "totalObserved": "Totale Osservato",
@@ -283,7 +305,9 @@
"bookmark": "Segnalibro", "bookmark": "Segnalibro",
"service": "Servizio", "service": "Servizio",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sistema", "available_update": "Sistema",
@@ -291,7 +315,10 @@
"update_available": "Aggiornamento Disponibile", "update_available": "Aggiornamento Disponibile",
"up_to_date": "Aggiornato", "up_to_date": "Aggiornato",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approvato", "approvedPushes": "Approvato",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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,11 @@
"glances": { "glances": {
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"autobrr": { "autobrr": {
"filters": "Filters", "filters": "Filters",
@@ -58,7 +62,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -84,7 +95,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Error", "error": "Error",
@@ -94,7 +112,11 @@
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Sunny", "0-day": "Sunny",
@@ -349,7 +373,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"paused": "Paused", "paused": "Paused",
"status": "Status", "status": "Status",
"last_ping": "Last Ping" "last_ping": "Last Ping"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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_max": "All time",
"gross_percent_today": "Today",
"gross_percent_1y": "One year"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
} }
} }

View File

@@ -0,0 +1,566 @@
{
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"rutorrent": {
"download": "다운로드",
"active": "활성",
"upload": "업로드"
},
"authentik": {
"users": "Users",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"pterodactyl": {
"nodes": "Nodes",
"servers": "Servers"
},
"widget": {
"missing_type": "Missing Widget Type: {{type}}",
"api_error": "API 오류",
"information": "정보",
"status": "상태",
"url": "URL",
"raw_error": "Raw 오류",
"response_data": "응답 데이터"
},
"weather": {
"current": "현재 위치",
"allow": "클릭하여 허용",
"updating": "갱신 중",
"wait": "잠시만 기다리세요"
},
"search": {
"placeholder": "검색…"
},
"resources": {
"cpu": "CPU",
"mem": "MEM",
"total": "총합",
"free": "남음",
"used": "사용",
"load": "부하",
"temp": "온도",
"max": "최대",
"uptime": "가동",
"months": "달",
"days": "일",
"hours": "시간",
"minutes": "분"
},
"unifi": {
"users": "사용자",
"uptime": "시스템 업타임",
"days": "일",
"wan": "WAN",
"lan": "LAN",
"wlan": "WLAN",
"devices": "장치",
"lan_devices": "LAN 장치",
"wlan_devices": "WLAN 장치",
"lan_users": "LAN 사용자",
"wlan_users": "WLAN 사용자",
"up": "UP",
"down": "DOWN",
"wait": "잠시만 기다리세요",
"empty_data": "서브시스템 상태 알 수 없음"
},
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "MEM",
"cpu": "CPU",
"running": "가동 중",
"offline": "중지",
"error": "오류",
"unknown": "알 수 없음",
"healthy": "좋음",
"starting": "시작 중",
"unhealthy": "이상",
"not_found": "찾을 수 없음",
"exited": "종료됨",
"partial": "부분적"
},
"ping": {
"error": "오류",
"ping": "Ping"
},
"emby": {
"playing": "재생 중",
"transcoding": "트랜스코딩",
"bitrate": "비트레이트",
"no_active": "활성 스트림 없음",
"movies": "영화",
"series": "시리즈",
"episodes": "에피소드",
"songs": "음악"
},
"flood": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"changedetectionio": {
"totalObserved": "Total Observed",
"diffsDetected": "변경 감지됨"
},
"tautulli": {
"playing": "재생 중",
"transcoding": "트랜스코딩",
"bitrate": "비트레이트",
"no_active": "활성 스트림 없음"
},
"omada": {
"connectedAp": "연결된 AP",
"activeUser": "활성 장치",
"alerts": "경고",
"connectedGateway": "연결된 게이트웨이",
"connectedSwitches": "연결된 스위치"
},
"nzbget": {
"rate": "비율",
"remaining": "남음",
"downloaded": "다운로드됨"
},
"plex": {
"streams": "활성 스트림",
"movies": "영화",
"tv": "TV 쇼"
},
"sabnzbd": {
"rate": "비율",
"queue": "대기열",
"timeleft": "남은 시간"
},
"transmission": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"qbittorrent": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"deluge": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"downloadstation": {
"download": "다운로드",
"upload": "업로드",
"leech": "리치",
"seed": "시드"
},
"sonarr": {
"wanted": "요청",
"queued": "대기 중",
"series": "시리즈"
},
"radarr": {
"wanted": "요청",
"missing": "빠짐",
"queued": "대기 중",
"movies": "영화"
},
"lidarr": {
"wanted": "요청",
"queued": "대기 중",
"albums": "앨범"
},
"readarr": {
"wanted": "요청",
"queued": "대기 중",
"books": "책"
},
"bazarr": {
"missingEpisodes": "빠진 에피소드",
"missingMovies": "빠진 영화"
},
"ombi": {
"pending": "대기 중",
"approved": "승인됨",
"available": "이용 가능"
},
"jellyseerr": {
"pending": "대기 중",
"approved": "승인됨",
"available": "사용 가능"
},
"overseerr": {
"pending": "대기 중",
"processing": "처리 중",
"approved": "승인됨",
"available": "사용 가능"
},
"pihole": {
"queries": "쿼리",
"blocked": "차단됨",
"gravity": "Gravity"
},
"adguard": {
"queries": "쿼리",
"blocked": "차단됨",
"filtered": "필터링됨",
"latency": "지연"
},
"speedtest": {
"upload": "업로드",
"download": "다운로드",
"ping": "Ping"
},
"portainer": {
"running": "가동 중",
"stopped": "중지",
"total": "총합"
},
"tdarr": {
"queue": "대기열",
"processed": "처리됨",
"errored": "오류",
"saved": "저장됨"
},
"traefik": {
"routers": "라우터",
"services": "서비스",
"middleware": "미들웨어"
},
"navidrome": {
"nothing_streaming": "활성 스트림 없음",
"please_wait": "잠시만 기다리세요"
},
"npm": {
"enabled": "활성",
"disabled": "비활성",
"total": "총합"
},
"coinmarketcap": {
"configure": "한 개 이상의 가상화폐를 설정하여 추적",
"1hour": "1시간",
"1day": "1일",
"7days": "7일",
"30days": "30일"
},
"gotify": {
"apps": "어플리케이션",
"clients": "클라이언트",
"messages": "메시지"
},
"prowlarr": {
"enableIndexers": "인덱서",
"numberOfGrabs": "Grabs",
"numberOfQueries": "Queries",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailQueries": "Fail Queries"
},
"jackett": {
"configured": "Configured",
"errored": "Errored"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Connections",
"dataRelayed": "Relayed",
"transferRate": "Rate"
},
"mastodon": {
"user_count": "Users",
"status_count": "Posts",
"domain_count": "Domains"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
},
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"3-day": "Cloudy",
"3-night": "Cloudy",
"45-day": "Foggy",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-day": "Drizzle",
"53-night": "Drizzle",
"55-day": "Heavy Drizzle",
"55-night": "Heavy Drizzle",
"56-day": "Light Freezing Drizzle",
"56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle",
"61-day": "Light Rain",
"61-night": "Light Rain",
"63-day": "Rain",
"63-night": "Rain",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"75-night": "Heavy Snow",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
"80-night": "Light Showers",
"81-day": "Showers",
"81-night": "Showers",
"82-day": "Heavy Showers",
"82-night": "Heavy Showers",
"85-day": "Snow Showers",
"85-night": "Snow Showers",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"95-day": "Thunderstorm",
"95-night": "Thunderstorm",
"96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail"
},
"homebridge": {
"available_update": "System",
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
"containers_failed": "Failed"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"filters": "Filters",
"indexers": "Indexers"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"alerts": "Alerts",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"total": "Total"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
},
"hdhomerun": {
"channels": "Channels",
"hd": "HD"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@@ -27,7 +27,14 @@
"free": "Brīvs", "free": "Brīvs",
"used": "Izmantojas", "used": "Izmantojas",
"load": "Ielādē", "load": "Ielādē",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Lietotāji", "users": "Lietotāji",
@@ -53,7 +60,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Bezsaistē", "offline": "Bezsaistē",
"error": "Kļūda", "error": "Kļūda",
"unknown": "Nezināms" "unknown": "Nezināms",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"ping": { "ping": {
"error": "Kļūda", "error": "Kļūda",
@@ -63,7 +77,11 @@
"playing": "Atskaņo", "playing": "Atskaņo",
"transcoding": "Pārkodē", "transcoding": "Pārkodē",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Nav aktīvu straumju" "no_active": "Nav aktīvu straumju",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"flood": { "flood": {
"download": "Lejupielāde", "download": "Lejupielāde",
@@ -271,13 +289,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Saulains", "0-day": "Saulains",
@@ -343,7 +367,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"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", "free": "Bebas",
"used": "Telah diguna", "used": "Telah diguna",
"load": "Beban", "load": "Beban",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"uptime": "Masa Operasi Sistem", "uptime": "Masa Operasi Sistem",
@@ -60,13 +67,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Sila tunggu" "wait": "Sila tunggu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Tandabuku", "bookmark": "Tandabuku",
"service": "Servis", "service": "Servis",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"0-day": "Terik", "0-day": "Terik",
@@ -156,7 +169,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Luar talian", "offline": "Luar talian",
"error": "Ralat", "error": "Ralat",
"unknown": "Tidak Diketahui" "unknown": "Tidak Diketahui",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Jumlah Diperhatikan", "totalObserved": "Jumlah Diperhatikan",
@@ -166,7 +186,11 @@
"playing": "Sedang dimainkan", "playing": "Sedang dimainkan",
"transcoding": "Transkoding", "transcoding": "Transkoding",
"bitrate": "Kadar bit", "bitrate": "Kadar bit",
"no_active": "Tiada Strim Aktif" "no_active": "Tiada Strim Aktif",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Sedang Dimainkan", "playing": "Sedang Dimainkan",
@@ -291,7 +315,10 @@
"updates": "Kemaskini", "updates": "Kemaskini",
"update_available": "Kemaskini Tersedia", "update_available": "Kemaskini Tersedia",
"up_to_date": "Terkemaskini", "up_to_date": "Terkemaskini",
"child_bridges": "Jambatan Anak" "child_bridges": "Jambatan Anak",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Terimbas", "containers_scanned": "Terimbas",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": "Brukt", "used": "Brukt",
"load": "Last inn", "load": "Last inn",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Mottatt", "rx": "Mottatt",
@@ -26,13 +33,24 @@
"cpu": "Prosessor", "cpu": "Prosessor",
"offline": "Frakoblet", "offline": "Frakoblet",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"exited": "Exited",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Spiller", "playing": "Spiller",
"transcoding": "Transkoding", "transcoding": "Transkoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen aktive strømmer" "no_active": "Ingen aktive strømmer",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spiller", "playing": "Spiller",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

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

@@ -33,14 +33,14 @@
"status": "Status", "status": "Status",
"information": "Informação", "information": "Informação",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Erro Bruto",
"response_data": "Dados de Resposta" "response_data": "Dados de Resposta"
}, },
"weather": { "weather": {
"current": "Localização atual", "current": "Localização atual",
"allow": "Clique para permitir", "allow": "Clique para permitir",
"updating": "Atualizando", "updating": "Atualizando",
"wait": "Aguarde, por favor" "wait": "Por favor aguarde"
}, },
"search": { "search": {
"placeholder": "Buscar…" "placeholder": "Buscar…"
@@ -51,7 +51,14 @@
"used": "Usado", "used": "Usado",
"load": "Carregamento", "load": "Carregamento",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Recebido", "rx": "Recebido",
@@ -60,13 +67,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Desligado", "offline": "Desligado",
"error": "Erro", "error": "Erro",
"unknown": "Desconhecido" "unknown": "Desconhecido",
"running": "Executando",
"starting": "Iniciando",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"partial": "Parcial",
"healthy": "Saudável"
}, },
"emby": { "emby": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
"transcoding": "Transcodificando", "transcoding": "Transcodificando",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sem transmissões ativas" "no_active": "Sem transmissões ativas",
"movies": "Filmes",
"series": "Séries",
"episodes": "Episódios",
"songs": "Musicas"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
@@ -134,8 +152,8 @@
}, },
"pihole": { "pihole": {
"queries": "Consultas", "queries": "Consultas",
"blocked": "Bloquado", "blocked": "Bloqueados",
"gravity": "Gravity" "gravity": "Gravidade"
}, },
"adguard": { "adguard": {
"queries": "Consultas", "queries": "Consultas",
@@ -165,9 +183,9 @@
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexadores", "enableIndexers": "Indexadores",
"numberOfGrabs": "Pegos", "numberOfGrabs": "Buscas",
"numberOfQueries": "Consultas", "numberOfQueries": "Consultas",
"numberOfFailGrabs": "Fail Grabs", "numberOfFailGrabs": "Buscas sem êxito",
"numberOfFailQueries": "Consultas Falhas" "numberOfFailQueries": "Consultas Falhas"
}, },
"jackett": { "jackett": {
@@ -182,11 +200,11 @@
"authentik": { "authentik": {
"users": "Usuários", "users": "Usuários",
"loginsLast24H": "Logins (24h)", "loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)" "failedLoginsLast24H": "Logins Falhos (24h)"
}, },
"proxmox": { "proxmox": {
"mem": "Memória", "mem": "Memória",
"cpu": "Processador", "cpu": "CPU",
"lxc": "LXC", "lxc": "LXC",
"vms": "VMs" "vms": "VMs"
}, },
@@ -199,13 +217,13 @@
"wlan_users": "Usuarios WLAN", "wlan_users": "Usuarios WLAN",
"up": "LIGADO", "up": "LIGADO",
"down": "CÁIDO", "down": "CÁIDO",
"wait": "Por favor guarde", "wait": "Por favor aguarde",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Dispositivos", "devices": "Dispositivos",
"lan_devices": "Dispositivos LAN", "lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN", "wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Status de Subsistema Desconhecido"
}, },
"plex": { "plex": {
"streams": "Transmissões ativas", "streams": "Transmissões ativas",
@@ -215,105 +233,114 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Por favor aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Observados", "totalObserved": "Observados",
"diffsDetected": "Mudanças" "diffsDetected": "Mudanças"
}, },
"wmo": { "wmo": {
"1-night": "Mainly Clear", "1-night": "Principalmente Limpo",
"2-day": "Partly Cloudy", "2-day": "Parcialmente Nublado",
"2-night": "Parcialmente nublado", "2-night": "Parcialmente nublado",
"3-day": "Nublado", "3-day": "Nublado",
"3-night": "Nublado", "3-night": "Nublado",
"45-day": "Névoa", "45-day": "Névoa",
"45-night": "Foggy", "45-night": "Névoa",
"48-day": "Foggy", "48-day": "Névoa",
"48-night": "Foggy", "48-night": "Névoa",
"56-night": "Light Freezing Drizzle", "56-night": "Leve Garoa Congelante",
"57-day": "Freezing Drizzle", "57-day": "Garoa Congelante",
"99-day": "Thunderstorm With Hail", "99-day": "Trovoada Com Granizo",
"99-night": "Thunderstorm With Hail", "99-night": "Trovoada Com Granizo",
"0-day": "Ensolarado", "0-day": "Ensolarado",
"53-day": "Drizzle", "53-day": "Garoando",
"0-night": "Limpo", "0-night": "Limpo",
"1-day": "Mainly Sunny", "1-day": "Principalmente Ensolarado",
"51-day": "Light Drizzle", "51-day": "Leve Garoa",
"51-night": "Light Drizzle", "51-night": "Leve Garoa",
"53-night": "Drizzle", "53-night": "Garoando",
"55-day": "Heavy Drizzle", "55-day": "Garoa Pesada",
"55-night": "Heavy Drizzle", "55-night": "Garoa Pesada",
"56-day": "Light Freezing Drizzle", "56-day": "Leve Garoa Congelante",
"57-night": "Freezing Drizzle", "57-night": "Garoa Congelante",
"61-day": "Light Rain", "61-day": "Chuva Leve",
"61-night": "Light Rain", "61-night": "Chuva Leve",
"63-day": "Rain", "63-day": "Chuva",
"63-night": "Rain", "63-night": "Chuva",
"65-day": "Heavy Rain", "65-day": "Chuva Pesada",
"65-night": "Heavy Rain", "65-night": "Chuva Pesada",
"66-day": "Freezing Rain", "66-day": "Chuva Congelante",
"66-night": "Freezing Rain", "66-night": "Chuva Congelante",
"67-day": "Freezing Rain", "67-day": "Chuva Congelante",
"67-night": "Freezing Rain", "67-night": "Chuva Congelante",
"71-day": "Light Snow", "71-day": "Neve Leve",
"71-night": "Light Snow", "71-night": "Neve Leve",
"73-day": "Snow", "73-day": "Neve",
"73-night": "Snow", "73-night": "Neve",
"75-day": "Heavy Snow", "75-day": "Neve Pesada",
"75-night": "Heavy Snow", "75-night": "Neve Pesada",
"77-day": "Snow Grains", "77-day": "Grãos de Neve",
"77-night": "Snow Grains", "77-night": "Grãos de Neve",
"80-day": "Light Showers", "80-day": "Chuviscos Leve",
"80-night": "Light Showers", "80-night": "Chuviscos Leve",
"81-day": "Showers", "81-day": "Chuviscos",
"81-night": "Showers", "81-night": "Chuviscos",
"82-day": "Heavy Showers", "82-day": "Chuviscos Pesado",
"82-night": "Heavy Showers", "82-night": "Chuviscos Pesado",
"85-day": "Snow Showers", "85-day": "Precipitação de Neve",
"85-night": "Snow Showers", "85-night": "Precipitação de Neve",
"86-day": "Snow Showers", "86-day": "Precipitação de Neve",
"86-night": "Snow Showers", "86-night": "Precipitação de Neve",
"95-day": "Thunderstorm", "95-day": "Trovoada",
"95-night": "Thunderstorm", "95-night": "Trovoada",
"96-day": "Thunderstorm With Hail", "96-day": "Trovoada Com Granizo",
"96-night": "Thunderstorm With Hail" "96-night": "Trovoada Com Granizo"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Favorito",
"service": "Service", "service": "Serviço",
"search": "Search", "search": "Busca",
"custom": "Custom" "custom": "Personalizado",
"visit": "Visitar",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "Sistema",
"updates": "Updates", "updates": "Atualizações",
"update_available": "Update Available", "update_available": "Atualização Disponível",
"up_to_date": "Up to Date", "up_to_date": "Atualizado",
"child_bridges": "Child Bridges", "child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Aprovado",
"rejectedPushes": "Rejected", "rejectedPushes": "Rejeitado",
"filters": "Filters", "filters": "Filtros",
"indexers": "Indexers" "indexers": "Indexadores"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Escaneado",
"containers_updated": "Updated", "containers_updated": "Atualizado",
"containers_failed": "Failed" "containers_failed": "Falha"
}, },
"tubearchivist": { "tubearchivist": {
"downloads": "Queue", "downloads": "Fila",
"videos": "Videos", "videos": "Vídeos",
"channels": "Channels", "channels": "Canais",
"playlists": "Playlists" "playlists": "Listas"
}, },
"truenas": { "truenas": {
"load": "System Load", "load": "Carga do Sistema",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"alerts": "Alerts", "alerts": "Alertas",
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
@@ -321,18 +348,18 @@
"please_wait": "Por favor aguarde" "please_wait": "Por favor aguarde"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Velocidade",
"active": "Active", "active": "Ativo",
"queue": "Queue", "queue": "Fila",
"total": "Total" "total": "Total"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "IP Público",
"region": "Region", "region": "Região",
"country": "Country" "country": "País"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Canais",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
@@ -340,12 +367,12 @@
"ping": "Ping" "ping": "Ping"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Passou",
"failed": "Failed", "failed": "Falha",
"unknown": "Unknown" "unknown": "Desconhecido"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Caixa de Entrada",
"total": "Total" "total": "Total"
}, },
"deluge": { "deluge": {
@@ -371,8 +398,8 @@
"unread": "Não Lidos" "unread": "Não Lidos"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Por favor aguarde",
"no_devices": "No Device Data Received" "no_devices": "Nenhum dado de dispositivo recebido"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -392,121 +419,148 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "Carga de CPU",
"memoryUsed": "Memory Used", "memoryUsed": "Memória Utilizada",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"numberOfLeases": "Leases" "numberOfLeases": "Concessões"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Todos Fluxos",
"streams_active": "Active Streams", "streams_active": "Fluxos Ativos",
"streams_xepg": "XEPG Channels" "streams_xepg": "Canais XEPG"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "Carga de CPU",
"memory": "Active Memory", "memory": "Memória Ativa",
"wanUpload": "WAN Upload", "wanUpload": "WAN Upload",
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Estado da Impressora",
"print_status": "Print Status", "print_status": "Status da Impressora",
"print_progress": "Progress", "print_progress": "Progresso",
"layers": "Layers" "layers": "Camadas"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Desejado",
"queued": "Queued", "queued": "Na fila",
"series": "Series" "series": "Séries"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "Temp. Ferramenta",
"temp_bed": "Bed temp", "temp_bed": "Temp. Cama",
"job_completion": "Completion" "job_completion": "Conclusão"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "IP Origem",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Armaz. de Dados",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Tarefas Falhas 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Memória"
}, },
"immich": { "immich": {
"users": "Users", "users": "Usuários",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Vídeos",
"storage": "Storage" "storage": "Armazenamento"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sites no Ar",
"down": "Sites Down", "down": "Sites Fora do Ar",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"incident": "Incident", "incident": "Incidente",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotecas",
"series": "Series", "series": "Séries",
"books": "Books" "books": "Livros"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Séries",
"issues": "Issues", "issues": "Problemas",
"wanted": "Wanted" "wanted": "Desejado"
}, },
"photoprism": { "photoprism": {
"videos": "Videos", "videos": "Vídeos",
"albums": "Albums", "albums": "Álbuns",
"photos": "Photos", "photos": "Fotos",
"people": "People" "people": "Pessoa"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dias",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"volumeAvailable": "Available" "volumeAvailable": "Disponível"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Fila",
"processing": "Processing", "processing": "Processando",
"processed": "Processed", "processed": "Processado",
"time": "Time" "time": "Hora"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Painéis",
"datasources": "Data Sources", "datasources": "Origem de Dados",
"totalalerts": "Total Alerts", "totalalerts": "Total Alertas",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Alertas Disparados"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "Carga de CPU",
"memoryusage": "Memory Usage", "memoryusage": "Memória Utilizada",
"freespace": "Free Space", "freespace": "Espaço Livre",
"activeusers": "Active Users" "activeusers": "Usuários Ativos"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Tamanho",
"lastrun": "Last Run", "lastrun": "Ultima Execução",
"nextrun": "Next Run", "nextrun": "Próxima Execução",
"failed": "Failed" "failed": "Falha"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Trabalhadores Ativos",
"total_workers": "Total Workers", "total_workers": "Total Trabalhadores",
"records_total": "Queue Length" "records_total": "Comprimento da Fila"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Novo",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "Em Período Gratuito",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pausado",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Ultimo Ping",
"never": "No pings yet" "never": "Nenhum ping ainda"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nós"
},
"prometheus": {
"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", "used": "Utilizado",
"load": "Carga", "load": "Carga",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Desligado", "offline": "Desligado",
"error": "Erro", "error": "Erro",
"unknown": "Desconhecido" "unknown": "Desconhecido",
"partial": "Parcial",
"running": "A correr",
"starting": "A iniciar",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"healthy": "Saudável"
}, },
"emby": { "emby": {
"playing": "A reproduzir", "playing": "A reproduzir",
"transcoding": "Transcodificação", "transcoding": "Transcodificação",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sem streams ativas" "no_active": "Sem streams ativas",
"movies": "Filmes",
"series": "Séries",
"episodes": "Episódios",
"songs": "Canções"
}, },
"tautulli": { "tautulli": {
"playing": "Reproduzindo", "playing": "Reproduzindo",
@@ -198,7 +216,7 @@
"users": "Utilizadores" "users": "Utilizadores"
}, },
"proxmox": { "proxmox": {
"mem": "MEM", "mem": "Memória",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LXC", "lxc": "LXC",
"vms": "VMs" "vms": "VMs"
@@ -218,7 +236,7 @@
"devices": "Dispositivos", "devices": "Dispositivos",
"lan_devices": "Dispositivos LAN", "lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN", "wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Status de Subsistema Desconhecido"
}, },
"plex": { "plex": {
"streams": "Streams Ativas", "streams": "Streams Ativas",
@@ -228,7 +246,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Por favor, aguarde" "wait": "Por favor, aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observado", "totalObserved": "Total Observado",
@@ -254,38 +276,38 @@
"53-night": "Chuvisco", "53-night": "Chuvisco",
"55-day": "Aguaceiro Forte", "55-day": "Aguaceiro Forte",
"55-night": "Aguaceiro Forte", "55-night": "Aguaceiro Forte",
"56-day": "Light Freezing Drizzle", "56-day": "Leve Garoa Congelante",
"56-night": "Light Freezing Drizzle", "56-night": "Leve Garoa Congelante",
"57-day": "Freezing Drizzle", "57-day": "Garoa Congelante",
"57-night": "Freezing Drizzle", "57-night": "Garoa Congelante",
"66-day": "Freezing Rain", "66-day": "Chuva Congelante",
"61-day": "Chuva fraca", "61-day": "Chuva fraca",
"61-night": "Chuva fraca", "61-night": "Chuva fraca",
"63-day": "Chuva", "63-day": "Chuva",
"63-night": "Chuva", "63-night": "Chuva",
"65-day": "Chuva forte", "65-day": "Chuva forte",
"66-night": "Freezing Rain", "66-night": "Chuva Congelante",
"65-night": "Chuva forte", "65-night": "Chuva forte",
"67-day": "Freezing Rain", "67-day": "Chuva Congelante",
"67-night": "Freezing Rain", "67-night": "Chuva Congelante",
"71-day": "Neve fraca", "71-day": "Neve fraca",
"71-night": "Neve fraca", "71-night": "Neve fraca",
"73-day": "Neve", "73-day": "Neve",
"73-night": "Neve", "73-night": "Neve",
"75-day": "Neve forte", "75-day": "Neve forte",
"75-night": "Neve forte", "75-night": "Neve forte",
"77-day": "Snow Grains", "77-day": "Grãos de Neve",
"77-night": "Snow Grains", "77-night": "Grãos de Neve",
"80-day": "Neve fraca", "80-day": "Neve fraca",
"80-night": "Chuviscos ligeiros", "80-night": "Chuviscos ligeiros",
"81-day": "Chuviscos", "81-day": "Chuviscos",
"81-night": "Chuviscos", "81-night": "Chuviscos",
"82-day": "Chuviscos fortes", "82-day": "Chuviscos fortes",
"82-night": "Chuviscos fortes", "82-night": "Chuviscos fortes",
"85-day": "Snow Showers", "85-day": "Precipitação de Neve",
"85-night": "Snow Showers", "85-night": "Precipitação de Neve",
"86-day": "Snow Showers", "86-day": "Precipitação de Neve",
"86-night": "Snow Showers", "86-night": "Precipitação de Neve",
"95-day": "Trovoada", "95-day": "Trovoada",
"95-night": "Trovoada", "95-night": "Trovoada",
"96-day": "Trovoada com granizo", "96-day": "Trovoada com granizo",
@@ -295,16 +317,21 @@
"quicklaunch": { "quicklaunch": {
"bookmark": "Marcador", "bookmark": "Marcador",
"service": "Serviço", "service": "Serviço",
"search": "Search", "search": "Busca",
"custom": "Custom" "custom": "Personalizado",
"visit": "Visitar",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sistema", "available_update": "Sistema",
"updates": "Atualizações", "updates": "Atualizações",
"update_available": "Atualização disponível", "update_available": "Atualização disponível",
"up_to_date": "Atualizado", "up_to_date": "Atualizado",
"child_bridges": "Child Bridges", "child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Aprovado", "approvedPushes": "Aprovado",
@@ -404,7 +431,7 @@
"cpuLoad": "Carga do CPU", "cpuLoad": "Carga do CPU",
"memoryUsed": "Memória Utilizada", "memoryUsed": "Memória Utilizada",
"uptime": "Ativo", "uptime": "Ativo",
"numberOfLeases": "Leases" "numberOfLeases": "Concessões"
}, },
"xteve": { "xteve": {
"streams_all": "Todos os Streams", "streams_all": "Todos os Streams",
@@ -418,104 +445,131 @@
"wanDownload": "WAN Descarga" "wanDownload": "WAN Descarga"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Estado da Impressora",
"print_status": "Print Status", "print_status": "Estado da Impressora",
"print_progress": "Progress", "print_progress": "Progresso",
"layers": "Layers" "layers": "Camadas"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Desejado",
"queued": "Queued", "queued": "Na fila",
"series": "Series" "series": "Séries"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Estado",
"temp_tool": "Tool temp", "temp_tool": "Temp. Ferramenta",
"temp_bed": "Bed temp", "temp_bed": "Temp. Cama",
"job_completion": "Completion" "job_completion": "Conclusão"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "IP Origem",
"status": "Status" "status": "Estado"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Armaz. de Dados",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Tarefas Falhas 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Memória"
}, },
"immich": { "immich": {
"users": "Users", "users": "Utilizadores",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Vídeos",
"storage": "Storage" "storage": "Armazenamento"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sites no Ar",
"down": "Sites Down", "down": "Sites Fora do Ar",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"incident": "Incident", "incident": "Incidente",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Bibliotecas",
"series": "Series", "series": "Séries",
"books": "Books" "books": "Livros"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Séries",
"issues": "Issues", "issues": "Problemas",
"wanted": "Wanted" "wanted": "Desejado"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Álbuns",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Vídeos",
"people": "People" "people": "Pessoa"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dias",
"uptime": "Uptime", "uptime": "Tempo Ativo",
"volumeAvailable": "Available" "volumeAvailable": "Disponível"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "Fila",
"processing": "Processing", "processing": "Processando",
"processed": "Processed", "processed": "Processado",
"time": "Time" "time": "Hora"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Painéis",
"datasources": "Data Sources", "datasources": "Origem de Dados",
"totalalerts": "Total Alerts", "totalalerts": "Total Alertas",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Alertas Disparados"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "Carga de CPU",
"memoryusage": "Memory Usage", "memoryusage": "Memória Utilizada",
"freespace": "Free Space", "freespace": "Espaço Livre",
"activeusers": "Active Users" "activeusers": "Utilizadores Ativos"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Estado",
"size": "Size", "size": "Tamanho",
"lastrun": "Last Run", "lastrun": "Ultima Execução",
"nextrun": "Next Run", "nextrun": "Próxima Execução",
"failed": "Failed" "failed": "Falha"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Workers Ativos",
"total_workers": "Total Workers", "total_workers": "Total Workers",
"records_total": "Queue Length" "records_total": "Comprimento da Fila"
}, },
"healthchecks": { "healthchecks": {
"never": "No pings yet", "never": "Nenhum ping ainda",
"new": "New", "new": "Novo",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "Em Período Gratuito",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pausado",
"status": "Status", "status": "Estado",
"last_ping": "Last Ping" "last_ping": "Ultimo Ping"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nós"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total de Alvos"
},
"minecraft": {
"players": "Reprodutores",
"version": "Versão",
"status": "Estado",
"up": "Online",
"down": "Offline"
},
"ghostfolio": {
"gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano",
"gross_percent_max": "Todo o tempo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livros",
"podcastsDuration": "Duração",
"booksDuration": "Duração"
} }
} }

View File

@@ -5,7 +5,14 @@
"total": "Total", "total": "Total",
"free": "Disponibili", "free": "Disponibili",
"cpu": "Procesor", "cpu": "Procesor",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -14,7 +21,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"jellyseerr": { "jellyseerr": {
"approved": "Aprobate", "approved": "Aprobate",
@@ -65,10 +79,10 @@
"missing_type": "Lipsește Tipul de Widget: {{type}}", "missing_type": "Lipsește Tipul de Widget: {{type}}",
"api_error": "Eroare API", "api_error": "Eroare API",
"status": "Status", "status": "Status",
"information": "Information", "information": "Informație",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Eroare Raw",
"response_data": "Response Data" "response_data": "Date de raspuns"
}, },
"search": { "search": {
"placeholder": "Caută…" "placeholder": "Caută…"
@@ -88,7 +102,11 @@
"playing": "Activ", "playing": "Activ",
"transcoding": "Transcodare", "transcoding": "Transcodare",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Niciun stream activ" "no_active": "Niciun stream activ",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rată", "rate": "Rată",
@@ -199,13 +217,13 @@
"wlan_users": "Utilizatori WLAN", "wlan_users": "Utilizatori WLAN",
"up": "Pornit", "up": "Pornit",
"down": "Oprit", "down": "Oprit",
"wait": "Va rugam asteptati", "wait": "Vă rugăm așteptați",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Devices", "devices": "Dispozitive",
"lan_devices": "LAN Devices", "lan_devices": "Dispozitive LAN",
"wlan_devices": "WLAN Devices", "wlan_devices": "Dispozitive WLAN",
"empty_data": "Subsystem status unknown" "empty_data": "Starea subsistemului este necunoscut"
}, },
"plex": { "plex": {
"streams": "Fluxuri active", "streams": "Fluxuri active",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesor", "cpu": "Procesor",
"mem": "Memorie", "mem": "Memorie",
"wait": "Te rugam sa astepti" "wait": "Te rugam sa astepti",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"update_available": "Update Available", "update_available": "Update Available",
@@ -291,7 +315,10 @@
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"available_update": "System", "available_update": "System",
"updates": "Updates", "updates": "Updates",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -375,7 +402,7 @@
"no_devices": "No Device Data Received" "no_devices": "No Device Data Received"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{valoare, rata(bits: fals; binar: adevarat)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
@@ -492,12 +519,12 @@
"size": "Size", "size": "Size",
"lastrun": "Last Run", "lastrun": "Last Run",
"nextrun": "Next Run", "nextrun": "Next Run",
"failed": "Failed" "failed": "Eșuat"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Muncitori activi",
"total_workers": "Total Workers", "total_workers": "Muncitori totali",
"records_total": "Queue Length" "records_total": "Lungimea cozii"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"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": "Использовано", "used": "Использовано",
"load": "Загрузка", "load": "Загрузка",
"cpu": "Процессор", "cpu": "Процессор",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -26,13 +33,24 @@
"cpu": "Процессор", "cpu": "Процессор",
"offline": "Не в сети", "offline": "Не в сети",
"error": "Ошибка", "error": "Ошибка",
"unknown": "Неизвестный" "unknown": "Неизвестный",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Воспроизведение", "playing": "Воспроизведение",
"transcoding": "Транскодирование", "transcoding": "Транскодирование",
"bitrate": "Битрейт", "bitrate": "Битрейт",
"no_active": "Нет активных потоков" "no_active": "Нет активных потоков",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Воспроизведение", "playing": "Воспроизведение",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Всего наблюдаемых", "totalObserved": "Всего наблюдаемых",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"child_bridges": "Child Bridges" "child_bridges": "Child Bridges",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

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

View File

@@ -23,7 +23,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Users",
@@ -49,13 +56,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "Playing",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"nodes": "Nodes",
"servers": "Servers"
},
"prometheus": {
"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", "free": "Ledigt",
"used": "Använt", "used": "Använt",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -29,7 +36,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"exited": "Exited",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
}, },
"search": { "search": {
"placeholder": "Sök…" "placeholder": "Sök…"
@@ -38,7 +52,11 @@
"playing": "Spelar", "playing": "Spelar",
"transcoding": "Omkodning", "transcoding": "Omkodning",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Inga aktiva strömmar" "no_active": "Inga aktiva strömmar",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spelar", "playing": "Spelar",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Vänligen vänta" "wait": "Vänligen vänta",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -40,7 +40,14 @@
"free": "మిగిలింది", "free": "మిగిలింది",
"used": "ఉపయోగించబడిన", "used": "ఉపయోగించబడిన",
"load": "లోడ్", "load": "లోడ్",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -49,13 +56,24 @@
"cpu": "సీపియూ", "cpu": "సీపియూ",
"offline": "ఆఫ్‌లైన్", "offline": "ఆఫ్‌లైన్",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "ఆడుతున్నారు", "playing": "ఆడుతున్నారు",
"transcoding": "ట్రాన్స్‌కోడింగ్", "transcoding": "ట్రాన్స్‌కోడింగ్",
"bitrate": "బిట్రేట్", "bitrate": "బిట్రేట్",
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు" "no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "ఆడుతున్నారు", "playing": "ఆడుతున్నారు",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "సీపియూ", "cpu": "సీపియూ",
"mem": "MEM", "mem": "MEM",
"wait": "దయచేసి వేచి ఉండండి" "wait": "దయచేసి వేచి ఉండండి",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "మొత్తం గమనించబడింది", "totalObserved": "మొత్తం గమనించబడింది",
@@ -283,7 +305,9 @@
"bookmark": "బుక్మార్క్", "bookmark": "బుక్మార్క్",
"service": "సేవ", "service": "సేవ",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"url": "URL",
"visit": "Visit"
}, },
"homebridge": { "homebridge": {
"available_update": "వ్యవస్థ", "available_update": "వ్యవస్థ",
@@ -291,7 +315,10 @@
"update_available": "అందుబాటులో నవీకరణ", "update_available": "అందుబాటులో నవీకరణ",
"up_to_date": "తాజాగా", "up_to_date": "తాజాగా",
"child_bridges": "పిల్ల వంతెనలు", "child_bridges": "పిల్ల వంతెనలు",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"rejectedPushes": "తిరస్కరించారు", "rejectedPushes": "తిరస్కరించారు",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -42,7 +42,14 @@
"cpu": "ซีพียู", "cpu": "ซีพียู",
"offline": "ออฟไลน์", "offline": "ออฟไลน์",
"error": "ข้อผิดพลาด", "error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ" "unknown": "ไม่ทราบ",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -89,7 +96,14 @@
"total": "ทั้งหมด", "total": "ทั้งหมด",
"free": "ฟรี", "free": "ฟรี",
"used": "ใช้แล้ว", "used": "ใช้แล้ว",
"load": "โหลด" "load": "โหลด",
"hours": "h",
"minutes": "m",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d"
}, },
"ping": { "ping": {
"error": "ข้อผิดพลาด", "error": "ข้อผิดพลาด",
@@ -99,7 +113,11 @@
"playing": "กำลังเล่น", "playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส", "transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต", "bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่" "no_active": "ไม่มีสตรีมที่ใช้งานอยู่",
"movies": "Movies",
"series": "Series",
"songs": "Songs",
"episodes": "Episodes"
}, },
"deluge": { "deluge": {
"download": "ดาวน์โหลด", "download": "ดาวน์โหลด",
@@ -291,13 +309,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"wmo": { "wmo": {
"67-day": "Freezing Rain", "67-day": "Freezing Rain",
@@ -363,7 +387,10 @@
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System" "available_update": "System",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Scanned", "containers_scanned": "Scanned",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -23,7 +23,14 @@
"free": "Boşta", "free": "Boşta",
"used": "Kullanımda", "used": "Kullanımda",
"load": "Yük", "load": "Yük",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Kullanıcılar", "users": "Kullanıcılar",
@@ -49,13 +56,24 @@
"cpu": "İşlemci", "cpu": "İşlemci",
"offline": "Çevrimdışı", "offline": "Çevrimdışı",
"error": "Hata", "error": "Hata",
"unknown": "Bilinmiyor" "unknown": "Bilinmiyor",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor", "transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı", "bitrate": "Bit Oranı",
"no_active": "Aktif akış yok" "no_active": "Aktif akış yok",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "İşlemci", "cpu": "İşlemci",
"mem": "Bellek", "mem": "Bellek",
"wait": "Lütfen bekleyiniz" "wait": "Lütfen bekleyiniz",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Toplam Gözlenen", "totalObserved": "Toplam Gözlenen",
@@ -283,7 +305,9 @@
"bookmark": "Yer İmi", "bookmark": "Yer İmi",
"service": "Hizmet", "service": "Hizmet",
"search": "Ara", "search": "Ara",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Sistem", "available_update": "Sistem",
@@ -291,7 +315,10 @@
"update_available": "Güncelleme Kullanılabilir", "update_available": "Güncelleme Kullanılabilir",
"up_to_date": "Güncel", "up_to_date": "Güncel",
"child_bridges": "Alt Köprüler", "child_bridges": "Alt Köprüler",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Onaylandı", "approvedPushes": "Onaylandı",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -128,7 +128,14 @@
"free": "Вільно", "free": "Вільно",
"used": "Використано", "used": "Використано",
"load": "Навантаження", "load": "Навантаження",
"mem": "Пам'ять" "mem": "Пам'ять",
"temp": "TEMP",
"max": "Max",
"uptime": "Відправка",
"months": "міс",
"days": "д",
"hours": "г",
"minutes": "хв"
}, },
"unifi": { "unifi": {
"users": "Користувачі", "users": "Користувачі",
@@ -154,7 +161,14 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Офлайн", "offline": "Офлайн",
"error": "Помилка", "error": "Помилка",
"unknown": "Невідомий" "unknown": "Невідомий",
"starting": "Запуск",
"unhealthy": "Нездоровий",
"not_found": "Не знайдено",
"exited": "Вийшов",
"partial": "Частковий",
"running": "Запущено",
"healthy": "Здоров'я"
}, },
"ping": { "ping": {
"error": "Помилка", "error": "Помилка",
@@ -164,7 +178,11 @@
"playing": "Відтворення", "playing": "Відтворення",
"transcoding": "Перекодування", "transcoding": "Перекодування",
"bitrate": "Бітрейт", "bitrate": "Бітрейт",
"no_active": "Немає активних потоків" "no_active": "Немає активних потоків",
"movies": "Фільми",
"series": "Серії",
"episodes": "Епізоди",
"songs": "Пісні"
}, },
"flood": { "flood": {
"download": "Завантаження", "download": "Завантаження",
@@ -339,13 +357,19 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "Пам'ять", "mem": "Пам'ять",
"wait": "Будь ласка, зачекайте" "wait": "Будь ласка, зачекайте",
"temp": "TEMP",
"uptime": "Відправка",
"days": "д",
"hours": "г"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Закладка", "bookmark": "Закладка",
"service": "Сервіс", "service": "Сервіс",
"search": "Пошук", "search": "Пошук",
"custom": "Користувацький" "custom": "Користувацький",
"visit": "Відвідайте",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "Система", "available_update": "Система",
@@ -353,7 +377,10 @@
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"update_available": "Доступне оновлення", "update_available": "Доступне оновлення",
"up_to_date": "Актуально", "up_to_date": "Актуально",
"child_bridges": "Дитячі мости" "child_bridges": "Дитячі мости",
"up": "Вгору",
"pending": "В очікуванні",
"down": "Вниз"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Відскановано", "containers_scanned": "Відскановано",
@@ -500,13 +527,40 @@
"records_total": "Довжина черги" "records_total": "Довжина черги"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Новий",
"up": "Online", "up": "Онлайн",
"down": "Offline", "down": "Офлайн",
"grace": "In Grace Period", "grace": "У пільговий період",
"paused": "Paused", "paused": "Призупинено",
"status": "Status", "status": "Стан",
"last_ping": "Last Ping", "last_ping": "Останній пінг",
"never": "No pings yet" "never": "Пінгів ще немає"
},
"pterodactyl": {
"servers": "Сервери",
"nodes": "Вузли"
},
"prometheus": {
"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", "used": "Đã dùng",
"load": "Load", "load": "Load",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
@@ -26,13 +33,24 @@
"cpu": "CPU", "cpu": "CPU",
"offline": "Ngoại tuyến", "offline": "Ngoại tuyến",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Đang chơi", "playing": "Đang chơi",
"transcoding": "Chuyển định dạng", "transcoding": "Chuyển định dạng",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams" "no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Đang chơi", "playing": "Đang chơi",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"down": "Down",
"pending": "Pending"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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

@@ -3,7 +3,11 @@
"transcoding": "轉碼緊", "transcoding": "轉碼緊",
"bitrate": "比特率", "bitrate": "比特率",
"playing": "播放緊", "playing": "播放緊",
"no_active": "無任何活動" "no_active": "無任何活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "播放緊", "playing": "播放緊",
@@ -41,7 +45,14 @@
"used": "用咗", "used": "用咗",
"load": "負荷", "load": "負荷",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "接收", "rx": "接收",
@@ -50,7 +61,14 @@
"cpu": "處理器", "cpu": "處理器",
"offline": "離線", "offline": "離線",
"error": "Error", "error": "Error",
"unknown": "Unknown" "unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
}, },
"nzbget": { "nzbget": {
"rate": "速度", "rate": "速度",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@@ -283,7 +305,9 @@
"bookmark": "Bookmark", "bookmark": "Bookmark",
"service": "Service", "service": "Service",
"search": "Search", "search": "Search",
"custom": "Custom" "custom": "Custom",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
@@ -291,7 +315,10 @@
"update_available": "Update Available", "update_available": "Update Available",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "Approved",
@@ -508,5 +535,32 @@
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
"never": "No pings yet" "never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"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": "已用", "used": "已用",
"load": "负载", "load": "负载",
"cpu": "处理器", "cpu": "处理器",
"mem": "内存" "mem": "内存",
"temp": "温度",
"max": "最大",
"uptime": "运行时间",
"months": "月",
"days": "天",
"hours": "时",
"minutes": "分"
}, },
"docker": { "docker": {
"rx": "接收", "rx": "接收",
@@ -26,13 +33,24 @@
"cpu": "处理器", "cpu": "处理器",
"offline": "离线", "offline": "离线",
"error": "错误", "error": "错误",
"unknown": "未知" "unknown": "未知",
"starting": "启动中",
"unhealthy": "不健康的",
"not_found": "未找到",
"running": "运行中",
"exited": "已退出",
"partial": "部分",
"healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "播放中", "playing": "播放中",
"transcoding": "转码", "transcoding": "转码",
"bitrate": "比特率", "bitrate": "比特率",
"no_active": "暂无播放" "no_active": "暂无播放",
"movies": "电影",
"series": "系列",
"episodes": "剧集",
"songs": "歌曲"
}, },
"tautulli": { "tautulli": {
"playing": "播放中", "playing": "播放中",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "处理器", "cpu": "处理器",
"mem": "内存", "mem": "内存",
"wait": "请稍等" "wait": "请稍等",
"temp": "TEMP",
"uptime": "UP",
"days": "天",
"hours": "时"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "观察到的总数", "totalObserved": "观察到的总数",
@@ -240,64 +262,69 @@
"51-night": "小雨", "51-night": "小雨",
"53-day": "Drizzle", "53-day": "Drizzle",
"53-night": "Drizzle", "53-night": "Drizzle",
"55-day": "Heavy Drizzle", "55-day": "毛毛雨",
"55-night": "Heavy Drizzle", "55-night": "毛毛雨",
"56-day": "Light Freezing Drizzle", "56-day": "小冻毛雨",
"56-night": "Light Freezing Drizzle", "56-night": "小冻毛雨",
"57-day": "Freezing Drizzle", "57-day": "冻毛雨",
"57-night": "Freezing Drizzle", "57-night": "冻毛雨",
"61-day": "Light Rain", "61-day": "小雨",
"61-night": "Light Rain", "61-night": "小雨",
"63-day": "Rain", "63-day": "",
"63-night": "Rain", "63-night": "",
"65-day": "Heavy Rain", "65-day": "大雨",
"65-night": "Heavy Rain", "65-night": "大雨",
"66-day": "Freezing Rain", "66-day": "冻雨",
"66-night": "Freezing Rain", "66-night": "冻雨",
"67-day": "Freezing Rain", "67-day": "冻雨",
"67-night": "Freezing Rain", "67-night": "冻雨",
"71-day": "小雪", "71-day": "小雪",
"71-night": "小雪", "71-night": "小雪",
"73-day": "中雪", "73-day": "中雪",
"75-night": "大雪", "75-night": "大雪",
"77-day": "Snow Grains", "77-day": "雪粒",
"77-night": "Snow Grains", "77-night": "雪粒",
"80-day": "Light Showers", "80-day": "微阵雨",
"80-night": "Light Showers", "80-night": "微阵雨",
"81-day": "Showers", "81-day": "阵雨",
"81-night": "Showers", "81-night": "阵雨",
"82-day": "Heavy Showers", "82-day": "强阵雨",
"82-night": "Heavy Showers", "82-night": "强阵雨",
"85-day": "Snow Showers", "85-day": "阵雪",
"85-night": "Snow Showers", "85-night": "阵雪",
"86-day": "Snow Showers", "86-day": "阵雪",
"86-night": "Snow Showers", "86-night": "阵雪",
"95-day": "Thunderstorm", "95-day": "雷雨",
"95-night": "Thunderstorm", "95-night": "雷雨",
"96-day": "Thunderstorm With Hail", "96-day": "雷雨伴随冰雹",
"96-night": "Thunderstorm With Hail", "96-night": "雷雨伴随冰雹",
"99-day": "Thunderstorm With Hail", "99-day": "雷雨伴随冰雹",
"99-night": "Thunderstorm With Hail" "99-night": "雷雨伴随冰雹"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "书签", "bookmark": "书签",
"service": "服务", "service": "服务",
"search": "搜索", "search": "搜索",
"custom": "Custom" "custom": "自定",
"visit": "访问",
"url": "网址"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
"updates": "Updates", "updates": "更新",
"update_available": "Update Available", "update_available": "有可用的更新",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "待定中",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "已核准",
"rejectedPushes": "Rejected", "rejectedPushes": "拒绝",
"filters": "Filters", "filters": "Filters",
"indexers": "Indexers" "indexers": "索引器"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "以扫描", "containers_scanned": "以扫描",
@@ -305,10 +332,10 @@
"containers_failed": "失败" "containers_failed": "失败"
}, },
"tubearchivist": { "tubearchivist": {
"downloads": "Queue", "downloads": "队列",
"videos": "Videos", "videos": "影片",
"channels": "Channels", "channels": "频道",
"playlists": "Playlists" "playlists": "播放清单"
}, },
"truenas": { "truenas": {
"load": "系统负载", "load": "系统负载",
@@ -321,18 +348,18 @@
"please_wait": "请等待" "please_wait": "请等待"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "速度",
"active": "Active", "active": "Active",
"queue": "Queue", "queue": "队列",
"total": "Total" "total": "Total"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country" "country": "国家"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "频道",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
@@ -340,12 +367,12 @@
"ping": "Ping" "ping": "Ping"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "通过",
"failed": "Failed", "failed": "失败",
"unknown": "Unknown" "unknown": "未知的"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "收件箱",
"total": "Total" "total": "Total"
}, },
"deluge": { "deluge": {
@@ -361,25 +388,25 @@
"seed": "做种" "seed": "做种"
}, },
"tdarr": { "tdarr": {
"saved": "Saved", "saved": "已保存",
"queue": "队列", "queue": "队列",
"processed": "Processed", "processed": "已处理",
"errored": "出错" "errored": "出错"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "已读",
"unread": "Unread" "unread": "未读"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "请稍候",
"no_devices": "No Device Data Received" "no_devices": "没有接收到设备数据"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "连接中的AP",
"activeUser": "活跃设备", "activeUser": "活跃设备",
"alerts": "警报", "alerts": "警报",
"connectedGateway": "已连接网关", "connectedGateway": "已连接网关",
@@ -398,9 +425,9 @@
"numberOfLeases": "已连接" "numberOfLeases": "已连接"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "所有播放活动",
"streams_active": "Active Streams", "streams_active": "正在播放",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG 频道"
}, },
"opnsense": { "opnsense": {
"cpu": "处理器负载", "cpu": "处理器负载",
@@ -409,24 +436,24 @@
"wanDownload": "WAN下载" "wanDownload": "WAN下载"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "打印机状态",
"print_status": "Print Status", "print_status": "打印状态",
"print_progress": "Progress", "print_progress": "Progress",
"layers": "Layers" "layers": ""
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "关注中",
"queued": "Queued", "queued": "已加入队列",
"series": "Series" "series": "Series"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "喷头温度",
"temp_bed": "Bed temp", "temp_bed": "平台温度",
"job_completion": "Completion" "job_completion": "完成度"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
@@ -436,10 +463,10 @@
"memory_usage": "内存" "memory_usage": "内存"
}, },
"immich": { "immich": {
"users": "Users", "users": "使用者",
"photos": "Photos", "photos": "照片",
"videos": "Videos", "videos": "影片",
"storage": "Storage" "storage": "储存空间"
}, },
"uptimekuma": { "uptimekuma": {
"up": "在线网站", "up": "在线网站",
@@ -455,8 +482,8 @@
}, },
"mylar": { "mylar": {
"series": "系列", "series": "系列",
"issues": "Issues", "issues": "问题",
"wanted": "Wanted" "wanted": "关注中"
}, },
"photoprism": { "photoprism": {
"albums": "相册", "albums": "相册",
@@ -470,43 +497,70 @@
"days": "天" "days": "天"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "队列",
"processing": "Processing", "processing": "处理中",
"processed": "Processed", "processed": "已处理",
"time": "Time" "time": "时间"
}, },
"grafana": { "grafana": {
"totalalerts": "Total Alerts", "totalalerts": "警报总数",
"dashboards": "Dashboards", "dashboards": "控制面板",
"datasources": "Data Sources", "datasources": "数据来源",
"alertstriggered": "Alerts Triggered" "alertstriggered": "触发的警报"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "处理器负载",
"memoryusage": "Memory Usage", "memoryusage": "内存占用",
"freespace": "Free Space", "freespace": "剩余空间",
"activeusers": "Active Users" "activeusers": "活跃用户"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "状态",
"size": "Size", "size": "大小",
"lastrun": "Last Run", "lastrun": "最后运行",
"nextrun": "Next Run", "nextrun": "下次运行",
"failed": "Failed" "failed": "失败"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "在线工作节点",
"total_workers": "Total Workers", "total_workers": "工作节点总数",
"records_total": "Queue Length" "records_total": "队列长度"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "新建立",
"up": "Online", "up": "在线的",
"grace": "In Grace Period", "grace": "延缓中",
"down": "Offline", "down": "离线",
"paused": "Paused", "paused": "暂停",
"status": "Status", "status": "状态",
"last_ping": "Last Ping", "last_ping": "上次检查",
"never": "No pings yet" "never": "尚未检查"
},
"pterodactyl": {
"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": { "widget": {
"missing_type": "遺失小工具的類型: {{type}}", "missing_type": "遺失小工具的類型: {{type}}",
"api_error": "API錯誤", "api_error": "API 錯誤",
"status": "狀態", "status": "狀態",
"information": "資訊", "information": "資訊",
"url": "網址", "url": "網址",
@@ -21,13 +21,24 @@
"mem": "記憶體", "mem": "記憶體",
"cpu": "處理器", "cpu": "處理器",
"error": "錯誤", "error": "錯誤",
"unknown": "未知的" "unknown": "未知的",
"running": "執行中",
"starting": "啟動中",
"unhealthy": "不健康的",
"not_found": "未找到",
"exited": "Exited",
"partial": "Partial",
"healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "正在播放", "playing": "正在播放",
"transcoding": "轉碼", "transcoding": "轉碼",
"bitrate": "位元率", "bitrate": "位元率",
"no_active": "無播放活動" "no_active": "無播放活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "正在播放", "playing": "正在播放",
@@ -49,7 +60,14 @@
"used": "已使用", "used": "已使用",
"load": "負載", "load": "負載",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "記憶體",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"nzbget": { "nzbget": {
"rate": "速率", "rate": "速率",
@@ -197,15 +215,15 @@
"wan": "WAN", "wan": "WAN",
"lan_users": "LAN使用者", "lan_users": "LAN使用者",
"wlan_users": "WLAN使用者", "wlan_users": "WLAN使用者",
"up": "UP", "up": "上線",
"down": "DOWN", "down": "離線",
"wait": "請稍後", "wait": "請稍後",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "設備", "devices": "設備",
"lan_devices": "LAN設備", "lan_devices": "LAN設備",
"wlan_devices": "WLAN設備", "wlan_devices": "WLAN設備",
"empty_data": "Subsystem status unknown" "empty_data": "子系統狀態未知"
}, },
"plex": { "plex": {
"streams": "正在播放", "streams": "正在播放",
@@ -215,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "記憶體", "mem": "記憶體",
"wait": "請稍後" "wait": "請稍後",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "總監測數", "totalObserved": "總監測數",
@@ -283,7 +305,9 @@
"bookmark": "書籤", "bookmark": "書籤",
"service": "服務", "service": "服務",
"search": "搜尋", "search": "搜尋",
"custom": "自訂" "custom": "自訂",
"visit": "Visit",
"url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "系統", "available_update": "系統",
@@ -291,7 +315,10 @@
"update_available": "有可用的更新", "update_available": "有可用的更新",
"up_to_date": "已更新至最新", "up_to_date": "已更新至最新",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}" "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "已核准", "approvedPushes": "已核准",
@@ -355,8 +382,8 @@
"seed": "已完成下載" "seed": "已完成下載"
}, },
"flood": { "flood": {
"download": "下速率", "download": "下速率",
"upload": "上速率", "upload": "上速率",
"leech": "未完成下載", "leech": "未完成下載",
"seed": "已完成下載" "seed": "已完成下載"
}, },
@@ -404,7 +431,7 @@
}, },
"opnsense": { "opnsense": {
"cpu": "CPU負載", "cpu": "CPU負載",
"memory": "Active Memory", "memory": "記憶體",
"wanUpload": "WAN上傳", "wanUpload": "WAN上傳",
"wanDownload": "WAN下載" "wanDownload": "WAN下載"
}, },
@@ -454,45 +481,45 @@
"books": "書刊" "books": "書刊"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "系列",
"issues": "Issues", "issues": "出版",
"wanted": "Wanted" "wanted": "關注中"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "相簿",
"photos": "Photos", "photos": "照片",
"videos": "Videos", "videos": "影片",
"people": "People" "people": "人物"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "",
"uptime": "Uptime", "uptime": "運行時間",
"volumeAvailable": "Available" "volumeAvailable": "剩餘容量"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "佇列",
"processing": "Processing", "processing": "處理中",
"processed": "Processed", "processed": "已處理",
"time": "Time" "time": "時間"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "控制面板",
"datasources": "Data Sources", "datasources": "數據來源",
"totalalerts": "Total Alerts", "totalalerts": "警報總數",
"alertstriggered": "Alerts Triggered" "alertstriggered": "觸發的警報"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "處理器負載",
"memoryusage": "Memory Usage", "memoryusage": "記憶體用量",
"freespace": "Free Space", "freespace": "可用空間",
"activeusers": "Active Users" "activeusers": "活躍用戶"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "狀態",
"size": "Size", "size": "檔案大小",
"lastrun": "Last Run", "lastrun": "上次運行",
"nextrun": "Next Run", "nextrun": "下次運行",
"failed": "Failed" "failed": "失敗"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Active Workers",
@@ -500,13 +527,40 @@
"records_total": "Queue Length" "records_total": "Queue Length"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "新建立",
"up": "Online", "up": "上線",
"grace": "In Grace Period", "grace": "延緩中",
"down": "Offline", "down": "離線",
"paused": "Paused", "paused": "擱置中",
"status": "狀態",
"last_ping": "上次檢查",
"never": "尚未檢查"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
},
"minecraft": {
"players": "Players",
"version": "Version",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "up": "Online",
"never": "No pings yet" "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,18 +6,20 @@ import ResolvedIcon from "./resolvedicon";
import { SettingsContext } from "utils/contexts/settings"; import { SettingsContext } from "utils/contexts/settings";
export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchDescriptions, searchProvider}) { export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchProvider}) {
const { t } = useTranslation(); const { t } = useTranslation();
const { settings } = useContext(SettingsContext); const { settings } = useContext(SettingsContext);
const { searchDescriptions, hideVisitURL } = settings?.quicklaunch ? settings.quicklaunch : { searchDescriptions: false, hideVisitURL: false };
const searchField = useRef(); const searchField = useRef();
const [results, setResults] = useState([]); const [results, setResults] = useState([]);
const [currentItemIndex, setCurrentItemIndex] = useState(null); const [currentItemIndex, setCurrentItemIndex] = useState(null);
const [url, setUrl] = useState(null);
function openCurrentItem(newWindow) { function openCurrentItem(newWindow) {
const result = results[currentItemIndex]; const result = results[currentItemIndex];
window.open(result.href, newWindow ? "_blank" : result.target ?? settings.target ?? "_blank"); window.open(result.href, newWindow ? "_blank" : result.target ?? settings.target ?? "_blank", 'noreferrer');
} }
const closeAndReset = useCallback(() => { const closeAndReset = useCallback(() => {
@@ -29,7 +31,16 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
}, [close, setSearchString, setCurrentItemIndex]); }, [close, setSearchString, setCurrentItemIndex]);
function handleSearchChange(event) { function handleSearchChange(event) {
setSearchString(event.target.value.toLowerCase()) const rawSearchString = event.target.value.toLowerCase();
try {
if (!/.+[.:].+/g.test(rawSearchString)) throw new Error(); // basic test for probably a url
let urlString = rawSearchString;
if (urlString.indexOf('http') !== 0) urlString = `https://${rawSearchString}`;
setUrl(new URL(urlString)); // basic validation
} catch (e) {
setUrl(null);
}
setSearchString(rawSearchString);
} }
function handleSearchKeyDown(event) { function handleSearchKeyDown(event) {
@@ -76,6 +87,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
if (searchDescriptions) { if (searchDescriptions) {
newResults = newResults.sort((a, b) => b.priority - a.priority); newResults = newResults.sort((a, b) => b.priority - a.priority);
} }
if (searchProvider) { if (searchProvider) {
newResults.push( newResults.push(
{ {
@@ -86,13 +98,23 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
) )
} }
if (!hideVisitURL && url) {
newResults.unshift(
{
href: url.toString(),
name: `${t("quicklaunch.visit")} URL`,
type: 'url',
}
)
}
setResults(newResults); setResults(newResults);
if (newResults.length) { if (newResults.length) {
setCurrentItemIndex(0); setCurrentItemIndex(0);
} }
} }
}, [searchString, servicesAndBookmarks, searchDescriptions, searchProvider, t]); }, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchProvider, url, t]);
const [hidden, setHidden] = useState(true); const [hidden, setHidden] = useState(true);

View File

@@ -91,7 +91,7 @@ export default function Item({ service }) {
<span className="sr-only">View container stats</span> <span className="sr-only">View container stats</span>
</button> </button>
)} )}
{service.app && ( {(service.app && !service.external) && (
<button <button
type="button" type="button"
onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))} onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))}

View File

@@ -6,7 +6,7 @@ export default function KubernetesStatus({ service }) {
const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`); const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`);
if (error) { if (error) {
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.status}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.error")}>
<div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div> <div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div>
</div> </div>
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -175,7 +175,7 @@ function Home({ initialSettings }) {
const { data: services } = useSWR("/api/services"); const { data: services } = useSWR("/api/services");
const { data: bookmarks } = useSWR("/api/bookmarks"); const { data: bookmarks } = useSWR("/api/bookmarks");
const { data: widgets } = useSWR("/api/widgets"); const { data: widgets } = useSWR("/api/widgets");
const servicesAndBookmarks = [...services.map(sg => sg.services).flat(), ...bookmarks.map(bg => bg.bookmarks).flat()] const servicesAndBookmarks = [...services.map(sg => sg.services).flat(), ...bookmarks.map(bg => bg.bookmarks).flat()]
useEffect(() => { useEffect(() => {
@@ -265,7 +265,6 @@ function Home({ initialSettings }) {
setSearchString={setSearchString} setSearchString={setSearchString}
isOpen={searching} isOpen={searching}
close={setSearching} close={setSearching}
searchDescriptions={settings.quicklaunch?.searchDescriptions}
searchProvider={settings.quicklaunch?.hideInternetSearch ? null : searchProvider} searchProvider={settings.quicklaunch?.hideInternetSearch ? null : searchProvider}
/> />
{widgets && ( {widgets && (
@@ -310,7 +309,7 @@ function Home({ initialSettings }) {
</div> </div>
<div className="flex p-8 pt-4 w-full justify-end"> <div className="flex p-8 pt-4 w-full justify-end">
<Version /> {!initialSettings?.hideVersion && <Version />}
</div> </div>
</div> </div>
</> </>

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,17 +7,19 @@ import * as shvl from "shvl";
import { NetworkingV1Api } from "@kubernetes/client-node"; import { NetworkingV1Api } from "@kubernetes/client-node";
import createLogger from "utils/logger"; import createLogger from "utils/logger";
import checkAndCopyConfig from "utils/config/config"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config";
import getDockerArguments from "utils/config/docker"; import getDockerArguments from "utils/config/docker";
import getKubeConfig from "utils/config/kubernetes"; import getKubeConfig from "utils/config/kubernetes";
const logger = createLogger("service-helpers"); const logger = createLogger("service-helpers");
export async function servicesFromConfig() { export async function servicesFromConfig() {
checkAndCopyConfig("services.yaml"); checkAndCopyConfig("services.yaml");
const servicesYaml = path.join(process.cwd(), "config", "services.yaml"); const servicesYaml = path.join(process.cwd(), "config", "services.yaml");
const fileContents = await fs.readFile(servicesYaml, "utf8"); const rawFileContents = await fs.readFile(servicesYaml, "utf8");
const fileContents = substituteEnvironmentVars(rawFileContents);
const services = yaml.load(fileContents); const services = yaml.load(fileContents);
if (!services) { if (!services) {
@@ -49,7 +51,8 @@ export async function servicesFromDocker() {
checkAndCopyConfig("docker.yaml"); checkAndCopyConfig("docker.yaml");
const dockerYaml = path.join(process.cwd(), "config", "docker.yaml"); const dockerYaml = path.join(process.cwd(), "config", "docker.yaml");
const dockerFileContents = await fs.readFile(dockerYaml, "utf8"); const rawDockerFileContents = await fs.readFile(dockerYaml, "utf8");
const dockerFileContents = substituteEnvironmentVars(rawDockerFileContents);
const servers = yaml.load(dockerFileContents); const servers = yaml.load(dockerFileContents);
if (!servers) { if (!servers) {
@@ -164,7 +167,11 @@ export async function servicesFromKubernetes() {
weight: ingress.metadata.annotations[`${ANNOTATION_BASE}/weight`] || '0', weight: ingress.metadata.annotations[`${ANNOTATION_BASE}/weight`] || '0',
icon: ingress.metadata.annotations[`${ANNOTATION_BASE}/icon`] || '', icon: ingress.metadata.annotations[`${ANNOTATION_BASE}/icon`] || '',
description: ingress.metadata.annotations[`${ANNOTATION_BASE}/description`] || '', description: ingress.metadata.annotations[`${ANNOTATION_BASE}/description`] || '',
external: false,
}; };
if (ingress.metadata.annotations[`${ANNOTATION_BASE}/external`]) {
constructedService.external = String(ingress.metadata.annotations[`${ANNOTATION_BASE}/external`]).toLowerCase() === "true"
}
if (ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]) { if (ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]) {
constructedService.podSelector = ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]; constructedService.podSelector = ingress.metadata.annotations[ANNOTATION_POD_SELECTOR];
} }
@@ -240,7 +247,10 @@ export function cleanServiceGroups(groups) {
namespace, // kubernetes widget namespace, // kubernetes widget
app, app,
podSelector, podSelector,
wan // opnsense widget wan, // opnsense widget,
enableBlocks, // emby/jellyfin
enableNowPlaying,
volume // diskstation widget
} = cleanedService.widget; } = cleanedService.widget;
const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields; const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields;
@@ -271,6 +281,13 @@ export function cleanServiceGroups(groups) {
if (type === "opnsense") { if (type === "opnsense") {
if (wan) cleanedService.widget.wan = wan; if (wan) cleanedService.widget.wan = wan;
} }
if (type === "emby" || type === "jellyfin") {
if (enableBlocks) cleanedService.widget.enableBlocks = enableBlocks === 'true';
if (enableNowPlaying) cleanedService.widget.enableNowPlaying = enableNowPlaying === 'true';
}
if (type === "diskstation") {
if (volume) cleanedService.widget.volume = volume;
}
} }
return cleanedService; return cleanedService;

View File

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

View File

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

View File

@@ -0,0 +1,46 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: librariesData, error: librariesError } = useWidgetAPI(widget, "libraries");
if (librariesError) {
return <Container error={librariesError} />;
}
if (!librariesData) {
return (
<Container service={service}>
<Block label="audiobookshelf.podcasts" />
<Block label="audiobookshelf.podcastsDuration" />
<Block label="audiobookshelf.books" />
<Block label="audiobookshelf.booksDuration" />
</Container>
);
}
const podcastLibraries = librariesData.filter(l => l.mediaType === "podcast");
const bookLibraries = librariesData.filter(l => l.mediaType === "book");
const totalPodcasts = podcastLibraries.reduce((total, pL) => parseInt(pL.stats?.totalItems, 10) + total, 0);
const totalBooks = bookLibraries.reduce((total, bL) => parseInt(bL.stats?.totalItems, 10) + total, 0);
const totalPodcastsDuration = podcastLibraries.reduce((total, pL) => parseFloat(pL.stats?.totalDuration) + total, 0);
const totalBooksDuration = bookLibraries.reduce((total, bL) => parseFloat(bL.stats?.totalDuration) + total, 0);
return (
<Container service={service}>
<Block label="audiobookshelf.podcasts" value={t("common.number", { value: totalPodcasts })} />
<Block label="audiobookshelf.podcastsDuration" value={t("common.number", { value: totalPodcastsDuration / 60, maximumFractionDigits: 0, style: "unit", unit: "minute" })} />
<Block label="audiobookshelf.books" value={t("common.number", { value: totalBooks })} />
<Block label="audiobookshelf.booksDuration" value={t("common.number", { value: totalBooksDuration / 60, maximumFractionDigits: 0, style: "unit", unit: "minute" })} />
</Container>
);
}

View File

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

View File

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

View File

@@ -2,6 +2,7 @@ import dynamic from "next/dynamic";
const components = { const components = {
adguard: dynamic(() => import("./adguard/component")), adguard: dynamic(() => import("./adguard/component")),
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
authentik: dynamic(() => import("./authentik/component")), authentik: dynamic(() => import("./authentik/component")),
autobrr: dynamic(() => import("./autobrr/component")), autobrr: dynamic(() => import("./autobrr/component")),
bazarr: dynamic(() => import("./bazarr/component")), bazarr: dynamic(() => import("./bazarr/component")),
@@ -16,12 +17,14 @@ const components = {
emby: dynamic(() => import("./emby/component")), emby: dynamic(() => import("./emby/component")),
fileflows: dynamic(() => import("./fileflows/component")), fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")), flood: dynamic(() => import("./flood/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")),
gluetun: dynamic(() => import("./gluetun/component")), gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")), gotify: dynamic(() => import("./gotify/component")),
grafana: dynamic(() => import("./grafana/component")), grafana: dynamic(() => import("./grafana/component")),
hdhomerun: dynamic(() => import("./hdhomerun/component")), hdhomerun: dynamic(() => import("./hdhomerun/component")),
homebridge: dynamic(() => import("./homebridge/component")), homebridge: dynamic(() => import("./homebridge/component")),
healthchecks: dynamic(() => import("./healthchecks/component")), healthchecks: dynamic(() => import("./healthchecks/component")),
immich: dynamic(() => import("./immich/component")),
jackett: dynamic(() => import("./jackett/component")), jackett: dynamic(() => import("./jackett/component")),
jellyfin: dynamic(() => import("./emby/component")), jellyfin: dynamic(() => import("./emby/component")),
jellyseerr: dynamic(() => import("./jellyseerr/component")), jellyseerr: dynamic(() => import("./jellyseerr/component")),
@@ -30,6 +33,7 @@ const components = {
lidarr: dynamic(() => import("./lidarr/component")), lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")), mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")), medusa: dynamic(() => import("./medusa/component")),
minecraft: dynamic(() => import("./minecraft/component")),
miniflux: dynamic(() => import("./miniflux/component")), miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")), mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")), moonraker: dynamic(() => import("./moonraker/component")),
@@ -50,8 +54,10 @@ const components = {
pihole: dynamic(() => import("./pihole/component")), pihole: dynamic(() => import("./pihole/component")),
plex: dynamic(() => import("./plex/component")), plex: dynamic(() => import("./plex/component")),
portainer: dynamic(() => import("./portainer/component")), portainer: dynamic(() => import("./portainer/component")),
prometheus: dynamic(() => import("./prometheus/component")),
prowlarr: dynamic(() => import("./prowlarr/component")), prowlarr: dynamic(() => import("./prowlarr/component")),
proxmox: dynamic(() => import("./proxmox/component")), proxmox: dynamic(() => import("./proxmox/component")),
pterodactyl: dynamic(() => import("./pterodactyl/component")),
pyload: dynamic(() => import("./pyload/component")), pyload: dynamic(() => import("./pyload/component")),
qbittorrent: dynamic(() => import("./qbittorrent/component")), qbittorrent: dynamic(() => import("./qbittorrent/component")),
radarr: dynamic(() => import("./radarr/component")), radarr: dynamic(() => import("./radarr/component")),
@@ -70,10 +76,9 @@ const components = {
truenas: dynamic(() => import("./truenas/component")), truenas: dynamic(() => import("./truenas/component")),
unifi: dynamic(() => import("./unifi/component")), unifi: dynamic(() => import("./unifi/component")),
unmanic: dynamic(() => import("./unmanic/component")), unmanic: dynamic(() => import("./unmanic/component")),
uptimekuma: dynamic(() => import("./uptimekuma/component")),
watchtower: dynamic(() => import("./watchtower/component")), watchtower: dynamic(() => import("./watchtower/component")),
xteve: dynamic(() => import("./xteve/component")), xteve: dynamic(() => import("./xteve/component")),
immich: dynamic(() => import("./immich/component")),
uptimekuma: dynamic(() => import("./uptimekuma/component")),
}; };
export default components; export default components;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = { const widget = {
api: "https://healthchecks.io/api/v2/{endpoint}/{uuid}", api: "{url}/api/v2/{endpoint}/{uuid}",
proxyHandler: credentialedProxyHandler, proxyHandler: credentialedProxyHandler,
mappings: { mappings: {

View File

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

View File

@@ -50,7 +50,7 @@ async function apiCall(widget, endpoint, service) {
headers, headers,
}); });
if (status === 401) { if (status === 401 || status === 403) {
logger.debug("Homebridge API rejected the request, attempting to obtain new session token"); logger.debug("Homebridge API rejected the request, attempting to obtain new session token");
const { accessToken } = login(widget, service); const { accessToken } = login(widget, service);
headers.Authorization = `Bearer ${accessToken}`; headers.Authorization = `Bearer ${accessToken}`;
@@ -63,7 +63,8 @@ async function apiCall(widget, endpoint, service) {
} }
if (status !== 200) { if (status !== 200) {
logger.error("Error getting data from Homebridge: %d. Data: %s", status, data); logger.error("Error getting data from Homebridge: %s status %d. Data: %s", url, status, data);
return { status, contentType, data: null, responseHeaders };
} }
return { status, contentType, data: JSON.parse(data.toString()), responseHeaders }; return { status, contentType, data: JSON.parse(data.toString()), responseHeaders };

View File

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

View File

@@ -0,0 +1,39 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { widget } = service;
const { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
const { t } = useTranslation();
if(serverError){
return <Container error={serverError} />;
}
if (!serverData) {
return (
<Container service={service}>
<Block label="minecraft.status"/>
<Block label="minecraft.players" />
<Block label="minecraft.version" />
</Container>
);
}
const statusIndicator = serverData.online ?
<span className="text-green-500">{t("minecraft.up")}</span>:
<span className="text-red-500">{t("minecraft.down")}</span>;
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
const version = serverData.version || "-";
return (
<Container service={service}>
<Block label="minecraft.status" value={statusIndicator} />
<Block label="minecraft.players" value={players} />
<Block label="minecraft.version" value={version} />
</Container>
);
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,38 @@
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: targetsData, error: targetsError } = useWidgetAPI(widget, "targets");
if (targetsError) {
return <Container error={targetsError} />;
}
if (!targetsData) {
return (
<Container service={service}>
<Block label="prometheus.targets_up" />
<Block label="prometheus.targets_down" />
<Block label="prometheus.targets_total" />
</Container>
);
}
const upCount = targetsData.data.activeTargets.filter(a => a.health === "up").length;
const downCount = targetsData.data.activeTargets.filter(a => a.health === "down").length;
const totalCount = targetsData.data.activeTargets.length;
return (
<Container service={service}>
<Block label="prometheus.targets_up" value={t("common.number", { value: upCount })} />
<Block label="prometheus.targets_down" value={t("common.number", { value: downCount })} />
<Block label="prometheus.targets_total" value={t("common.number", { value: totalCount })} />
</Container>
);
}

View File

@@ -0,0 +1,17 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/v1/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
targets: {
endpoint: "targets",
validate: [
"data"
]
},
},
};
export default widget;

View File

@@ -0,0 +1,34 @@
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: nodesData, error: nodesError} = useWidgetAPI(widget, "nodes");
if (nodesError) {
return <Container error={ nodesError } />;
}
if (!nodesData) {
return (
<Container service={service}>
<Block label="pterodactyl.nodes" />
<Block label="pterodactyl.servers" />
</Container>
);
}
const totalServers = nodesData.data.reduce((total, node) =>
node.attributes?.relationships?.servers?.data?.length ?? 0 + total, 0);
return (
<Container service={service}>
<Block label="pterodactyl.nodes" value={nodesData.data.length} />
<Block label="pterodactyl.servers" value={totalServers} />
</Container>
);
}

View File

@@ -0,0 +1,17 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/application/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
nodes: {
endpoint: "nodes?include=servers",
validate: [
"data"
]
},
},
};
export default widget;

View File

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

View File

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

View File

@@ -1,4 +1,5 @@
import adguard from "./adguard/widget"; import adguard from "./adguard/widget";
import audiobookshelf from "./audiobookshelf/widget";
import authentik from "./authentik/widget"; import authentik from "./authentik/widget";
import autobrr from "./autobrr/widget"; import autobrr from "./autobrr/widget";
import bazarr from "./bazarr/widget"; import bazarr from "./bazarr/widget";
@@ -11,12 +12,14 @@ import downloadstation from "./downloadstation/widget";
import emby from "./emby/widget"; import emby from "./emby/widget";
import fileflows from "./fileflows/widget"; import fileflows from "./fileflows/widget";
import flood from "./flood/widget"; import flood from "./flood/widget";
import ghostfolio from "./ghostfolio/widget"
import gluetun from "./gluetun/widget"; import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget"; import gotify from "./gotify/widget";
import grafana from "./grafana/widget"; import grafana from "./grafana/widget";
import hdhomerun from "./hdhomerun/widget"; import hdhomerun from "./hdhomerun/widget";
import homebridge from "./homebridge/widget"; import homebridge from "./homebridge/widget";
import healthchecks from "./healthchecks/widget"; import healthchecks from "./healthchecks/widget";
import immich from "./immich/widget";
import jackett from "./jackett/widget"; import jackett from "./jackett/widget";
import jellyseerr from "./jellyseerr/widget"; import jellyseerr from "./jellyseerr/widget";
import komga from "./komga/widget"; import komga from "./komga/widget";
@@ -24,6 +27,7 @@ import kopia from "./kopia/widget";
import lidarr from "./lidarr/widget"; import lidarr from "./lidarr/widget";
import mastodon from "./mastodon/widget"; import mastodon from "./mastodon/widget";
import medusa from "./medusa/widget"; import medusa from "./medusa/widget";
import minecraft from "./minecraft/widget";
import miniflux from "./miniflux/widget"; import miniflux from "./miniflux/widget";
import mikrotik from "./mikrotik/widget"; import mikrotik from "./mikrotik/widget";
import moonraker from "./moonraker/widget"; import moonraker from "./moonraker/widget";
@@ -44,8 +48,10 @@ import proxmoxbackupserver from "./proxmoxbackupserver/widget";
import pihole from "./pihole/widget"; import pihole from "./pihole/widget";
import plex from "./plex/widget"; import plex from "./plex/widget";
import portainer from "./portainer/widget"; import portainer from "./portainer/widget";
import prometheus from "./prometheus/widget";
import prowlarr from "./prowlarr/widget"; import prowlarr from "./prowlarr/widget";
import proxmox from "./proxmox/widget"; import proxmox from "./proxmox/widget";
import pterodactyl from "./pterodactyl/widget";
import pyload from "./pyload/widget"; import pyload from "./pyload/widget";
import qbittorrent from "./qbittorrent/widget"; import qbittorrent from "./qbittorrent/widget";
import radarr from "./radarr/widget"; import radarr from "./radarr/widget";
@@ -63,14 +69,14 @@ import transmission from "./transmission/widget";
import tubearchivist from "./tubearchivist/widget"; import tubearchivist from "./tubearchivist/widget";
import truenas from "./truenas/widget"; import truenas from "./truenas/widget";
import unifi from "./unifi/widget"; import unifi from "./unifi/widget";
import unmanic from "./unmanic/widget";
import uptimekuma from "./uptimekuma/widget";
import watchtower from "./watchtower/widget"; import watchtower from "./watchtower/widget";
import xteve from "./xteve/widget"; import xteve from "./xteve/widget";
import immich from "./immich/widget";
import uptimekuma from "./uptimekuma/widget";
import unmanic from "./unmanic/widget";
const widgets = { const widgets = {
adguard, adguard,
audiobookshelf,
authentik, authentik,
autobrr, autobrr,
bazarr, bazarr,
@@ -83,12 +89,14 @@ const widgets = {
emby, emby,
fileflows, fileflows,
flood, flood,
ghostfolio,
gluetun, gluetun,
gotify, gotify,
grafana, grafana,
hdhomerun, hdhomerun,
homebridge, homebridge,
healthchecks, healthchecks,
immich,
jackett, jackett,
jellyfin: emby, jellyfin: emby,
jellyseerr, jellyseerr,
@@ -97,6 +105,7 @@ const widgets = {
lidarr, lidarr,
mastodon, mastodon,
medusa, medusa,
minecraft,
miniflux, miniflux,
mikrotik, mikrotik,
moonraker, moonraker,
@@ -117,8 +126,10 @@ const widgets = {
pihole, pihole,
plex, plex,
portainer, portainer,
prometheus,
prowlarr, prowlarr,
proxmox, proxmox,
pterodactyl,
pyload, pyload,
qbittorrent, qbittorrent,
radarr, radarr,
@@ -138,10 +149,9 @@ const widgets = {
unifi, unifi,
unifi_console: unifi, unifi_console: unifi,
unmanic, unmanic,
uptimekuma,
watchtower, watchtower,
xteve, xteve,
immich,
uptimekuma,
}; };
export default widgets; export default widgets;