Merge branch 'benphelps:main' into trusted-proxies

This commit is contained in:
Jesús Ramos 2023-03-29 23:57:16 +02:00 committed by GitHub
commit 3335832029
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 1053 additions and 396 deletions

View File

@ -23,7 +23,7 @@
"minecraft-ping-js": "^1.0.2", "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",
@ -32,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"

View File

@ -25,7 +25,7 @@ specifiers:
minecraft-ping-js: ^1.0.2 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
postcss: ^8.4.16 postcss: ^8.4.16
prettier: ^2.7.1 prettier: ^2.7.1
pretty-bytes: ^6.0.0 pretty-bytes: ^6.0.0
@ -36,6 +36,7 @@ specifiers:
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
tailwind-scrollbar: ^2.0.1 tailwind-scrollbar: ^2.0.1
tailwindcss: ^3.1.8 tailwindcss: ^3.1.8
tough-cookie: ^4.1.2 tough-cookie: ^4.1.2
@ -57,7 +58,7 @@ dependencies:
minecraft-ping-js: 1.0.2 minecraft-ping-js: 1.0.2
next: 12.3.1_biqbaboplfbrettd7655fr4n2y next: 12.3.1_biqbaboplfbrettd7655fr4n2y
next-i18next: 12.0.1_azq6kxkn3od7qdylwkyksrwopy next-i18next: 12.0.1_azq6kxkn3od7qdylwkyksrwopy
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
@ -66,6 +67,7 @@ dependencies:
react-icons: 4.4.0_react@18.2.0 react-icons: 4.4.0_react@18.2.0
shvl: 3.0.0 shvl: 3.0.0
swr: 1.3.0_react@18.2.0 swr: 1.3.0_react@18.2.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
@ -2301,10 +2303,6 @@ packages:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
dev: false dev: false
/node-os-utils/1.3.7:
resolution: {integrity: sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==}
dev: false
/node-releases/2.0.6: /node-releases/2.0.6:
resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
dev: true dev: true
@ -2446,6 +2444,13 @@ packages:
word-wrap: 1.2.3 word-wrap: 1.2.3
dev: true dev: true
/osx-temperature-sensor/1.0.8:
resolution: {integrity: sha512-Gl3b+bn7+oDDnqPa+4v/cg3yg9lnE8ppS7ivL3opBZh4i7h99JNmkm6zWmo0m2a83UUJu+C9D7lGP0OS8IlehA==}
engines: {node: '>=4.0.0'}
os: [darwin]
requiresBuild: true
dev: false
/p-limit/3.1.0: /p-limit/3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -3063,6 +3068,13 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/systeminformation/5.17.12:
resolution: {integrity: sha512-I3pfMW2vue53u+X08BNxaJieaHkRoMMKjWetY9lbYJeWFaeWPO6P4FkNc4XOCX8F9vbQ0HqQ25RJoz3U/B7liw==}
engines: {node: '>=8.0.0'}
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
dev: false
/tailwind-scrollbar/2.0.1_tailwindcss@3.1.8: /tailwind-scrollbar/2.0.1_tailwindcss@3.1.8:
resolution: {integrity: sha512-OcR7qHBbux4k+k6bWqnEQFYFooLK/F4dhkBz6nvswIoaA9ancZ5h20e0tyV7ifSWLDCUBtpG+1NHRA8HMRH/wg==} resolution: {integrity: sha512-OcR7qHBbux4k+k6bWqnEQFYFooLK/F4dhkBz6nvswIoaA9ancZ5h20e0tyV7ifSWLDCUBtpG+1NHRA8HMRH/wg==}
engines: {node: '>=12.13.0'} engines: {node: '>=12.13.0'}

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": "المستخدمون",
@ -288,7 +295,11 @@
"glances": { "glances": {
"cpu": "معالج", "cpu": "معالج",
"mem": "الذاكرة", "mem": "الذاكرة",
"wait": "الرجاء الإنتظار" "wait": "الرجاء الإنتظار",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "مفضلة", "bookmark": "مفضلة",

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": "Потребители",
@ -226,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",

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",
@ -226,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",

View File

@ -35,7 +35,14 @@
"free": "Volné", "free": "Volné",
"used": "Využité", "used": "Využité",
"load": "Vytížení", "load": "Vytížení",
"mem": "RAM" "mem": "RAM",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"temp": "TEMP"
}, },
"unifi": { "unifi": {
"users": "Uživatelé", "users": "Uživatelé",
@ -300,7 +307,11 @@
"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",

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",
@ -163,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",

View File

@ -17,7 +17,14 @@
"used": "Gebraucht", "used": "Gebraucht",
"load": "Last", "load": "Last",
"cpu": "CPU", "cpu": "CPU",
"mem": "RAM" "mem": "RAM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@ -226,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",

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",
@ -298,7 +305,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

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",
@ -244,7 +251,11 @@
"glances": { "glances": {
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
"mem": "Memoro", "mem": "Memoro",
"wait": "Bonvolu atendi" "wait": "Bonvolu atendi",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

View File

@ -17,7 +17,14 @@
"used": "Usado", "used": "Usado",
"load": "Carga", "load": "Carga",
"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": "Recibido", "rx": "Recibido",
@ -226,7 +233,11 @@
"glances": { "glances": {
"cpu": "Procesador", "cpu": "Procesador",
"mem": "Memoria", "mem": "Memoria",
"wait": "Espere por favor" "wait": "Espere por favor",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observados", "totalObserved": "Total Observados",

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",
@ -226,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",

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",
@ -226,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é",

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",
@ -226,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",

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",
@ -234,7 +241,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

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",
@ -226,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",

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",
@ -226,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",

View File

@ -64,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",
@ -226,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",

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",

View File

@ -41,7 +41,14 @@
"total": "총합", "total": "총합",
"free": "남음", "free": "남음",
"used": "사용", "used": "사용",
"load": "부하" "load": "부하",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "사용자", "users": "사용자",
@ -293,7 +300,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

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",
@ -282,7 +289,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"uptime": "UP",
"days": "d",
"hours": "h",
"temp": "TEMP"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

View File

@ -5,7 +5,14 @@
"free": "Bebas", "free": "Bebas",
"used": "Telah diguna", "used": "Telah diguna",
"load": "Beban", "load": "Beban",
"mem": "MEM" "mem": "MEM",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"uptime": "Masa Operasi Sistem", "uptime": "Masa Operasi Sistem",
@ -60,7 +67,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Sila tunggu" "wait": "Sila tunggu",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Tandabuku", "bookmark": "Tandabuku",

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",
@ -226,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",

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",
@ -25,12 +32,12 @@
"error": "Fout", "error": "Fout",
"unknown": "Onbekend", "unknown": "Onbekend",
"running": "Running", "running": "Running",
"starting": "Starting", "starting": "Starten",
"unhealthy": "Unhealthy", "unhealthy": "Ongezond",
"not_found": "Not Found", "not_found": "Niet Gevonden",
"exited": "Exited", "exited": "Verlaten",
"partial": "Partial", "partial": "Gedeeltelijk",
"healthy": "Healthy" "healthy": "Gezond"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Upload",
@ -56,16 +63,16 @@
"transcoding": "Transcodering", "transcoding": "Transcodering",
"bitrate": "Bitsnelheid", "bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Steams", "no_active": "Geen Actieve Steams",
"movies": "Movies", "movies": "Films",
"series": "Series", "series": "Series",
"episodes": "Episodes", "episodes": "Afleveringen",
"songs": "Songs" "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",
@ -81,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",
@ -114,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",
@ -155,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"
}, },
@ -182,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",
@ -191,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)"
}, },
@ -219,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",
@ -256,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",
@ -284,46 +295,46 @@
"85-night": "Snow Showers", "85-night": "Snow Showers",
"86-day": "Snow Showers", "86-day": "Snow Showers",
"86-night": "Snow Showers", "86-night": "Snow Showers",
"95-day": "Thunderstorm", "95-day": "Onweersbui",
"95-night": "Thunderstorm", "95-night": "Onweersbui",
"96-day": "Thunderstorm With Hail", "96-day": "Onweersbui Met Hagel",
"96-night": "Thunderstorm With Hail", "96-night": "Onweersbui Met Hagel",
"99-day": "Thunderstorm With Hail" "99-day": "Onweersbui Met Hagel"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bladwijzer",
"service": "Service", "service": "Service",
"search": "Search", "search": "Zoek",
"custom": "Custom", "custom": "Custom",
"visit": "Visit", "visit": "Bezoek",
"url": "URL" "url": "URL"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "Systeem",
"updates": "Updates", "updates": "Updates",
"update_available": "Update Available", "update_available": "Update Beschikbaar",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Up",
"pending": "Pending", "pending": "In afwachting van",
"down": "Down" "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": {
@ -333,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": {
@ -357,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",
@ -377,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)}}",
@ -396,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"
}, },
@ -408,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"
}, },
@ -419,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"
}, },
@ -449,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",
@ -465,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",
@ -498,32 +509,32 @@
"alertstriggered": "Alerts Triggered" "alertstriggered": "Alerts Triggered"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Load", "cpuload": "Cpu Belasting",
"memoryusage": "Memory Usage", "memoryusage": "Geheugen Gebruik",
"freespace": "Free Space", "freespace": "Vrije Ruimte",
"activeusers": "Active Users" "activeusers": "Actieve Gebruikers"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Grootte",
"lastrun": "Last Run", "lastrun": "Laatste Run",
"nextrun": "Next Run", "nextrun": "Volgende Run",
"failed": "Failed" "failed": "Gefaald"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Actieve Werkers",
"total_workers": "Total Workers", "total_workers": "Totale Werkers",
"records_total": "Queue Length" "records_total": "Wachtrij Lengte"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Nieuw",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Gepauzeerd",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Laatste Ping",
"never": "No pings yet" "never": "Nog geen pings"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servers",
@ -535,21 +546,21 @@
"targets_total": "Total Targets" "targets_total": "Total Targets"
}, },
"minecraft": { "minecraft": {
"players": "Players", "players": "Spelers",
"version": "Version", "version": "Versie",
"status": "Status", "status": "Status",
"up": "Online", "up": "Online",
"down": "Offline" "down": "Offline"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Vandaag",
"gross_percent_1y": "One year", "gross_percent_1y": "Een jaar",
"gross_percent_max": "All time" "gross_percent_max": "All time"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",
"books": "Books", "books": "Boeken",
"podcastsDuration": "Duration", "podcastsDuration": "Duur",
"booksDuration": "Duration" "booksDuration": "Duur"
} }
} }

View File

@ -14,7 +14,14 @@
"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",
@ -71,13 +78,13 @@
"offline": "Offline", "offline": "Offline",
"error": "Błąd", "error": "Błąd",
"unknown": "Nieznany", "unknown": "Nieznany",
"running": "Running", "running": "Działa",
"starting": "Starting", "starting": "Starting",
"unhealthy": "Unhealthy", "unhealthy": "Unhealthy",
"not_found": "Not Found", "not_found": "Not Found",
"exited": "Exited", "exited": "Exited",
"partial": "Partial", "partial": "Partial",
"healthy": "Healthy" "healthy": "Zdrowy"
}, },
"nzbget": { "nzbget": {
"rate": "Szybkość", "rate": "Szybkość",
@ -216,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",
@ -226,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",

View File

@ -51,7 +51,14 @@
"used": "Usado", "used": "Usado",
"load": "Carregamento", "load": "Carregamento",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM" "mem": "MEM",
"max": "Max",
"temp": "TEMP",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "Recebido", "rx": "Recebido",
@ -226,7 +233,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Por favor aguarde" "wait": "Por favor aguarde",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Observados", "totalObserved": "Observados",

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",
@ -239,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",

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",
@ -226,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",

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",
@ -226,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": "Всего наблюдаемых",

View File

@ -167,7 +167,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",
@ -390,7 +397,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

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",
@ -226,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",

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",
@ -226,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",

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",
@ -226,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": "మొత్తం గమనించబడింది",

View File

@ -96,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": "ข้อผิดพลาด",
@ -302,7 +309,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"wait": "Please wait" "wait": "Please wait",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",

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",
@ -226,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",

View File

@ -128,7 +128,14 @@
"free": "Вільно", "free": "Вільно",
"used": "Використано", "used": "Використано",
"load": "Навантаження", "load": "Навантаження",
"mem": "Пам'ять" "mem": "Пам'ять",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Користувачі", "users": "Користувачі",
@ -350,7 +357,11 @@
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"mem": "Пам'ять", "mem": "Пам'ять",
"wait": "Будь ласка, зачекайте" "wait": "Будь ласка, зачекайте",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Закладка", "bookmark": "Закладка",

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",
@ -226,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",

View File

@ -45,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": "接收",
@ -226,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",

View File

@ -17,7 +17,14 @@
"used": "已用", "used": "已用",
"load": "负载", "load": "负载",
"cpu": "处理器", "cpu": "处理器",
"mem": "内存" "mem": "内存",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"docker": { "docker": {
"rx": "接收", "rx": "接收",
@ -27,23 +34,23 @@
"offline": "离线", "offline": "离线",
"error": "错误", "error": "错误",
"unknown": "未知", "unknown": "未知",
"starting": "Starting", "starting": "启动中",
"unhealthy": "Unhealthy", "unhealthy": "不健康的",
"not_found": "Not Found", "not_found": "未找到",
"running": "Running", "running": "运行中",
"exited": "Exited", "exited": "已退出",
"partial": "Partial", "partial": "部分",
"healthy": "Healthy" "healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "播放中", "playing": "播放中",
"transcoding": "转码", "transcoding": "转码",
"bitrate": "比特率", "bitrate": "比特率",
"no_active": "暂无播放", "no_active": "暂无播放",
"movies": "Movies", "movies": "电影",
"series": "Series", "series": "系列",
"episodes": "Episodes", "episodes": "剧集",
"songs": "Songs" "songs": "歌曲"
}, },
"tautulli": { "tautulli": {
"playing": "播放中", "playing": "播放中",
@ -226,7 +233,11 @@
"glances": { "glances": {
"cpu": "处理器", "cpu": "处理器",
"mem": "内存", "mem": "内存",
"wait": "请稍等" "wait": "请稍等",
"temp": "TEMP",
"uptime": "UP",
"days": "d",
"hours": "h"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "观察到的总数", "totalObserved": "观察到的总数",
@ -251,69 +262,69 @@
"51-night": "小雨", "51-night": "小雨",
"53-day": "Drizzle", "53-day": "Drizzle",
"53-night": "Drizzle", "53-night": "Drizzle",
"55-day": "Heavy Drizzle", "55-day": "毛毛雨",
"55-night": "Heavy Drizzle", "55-night": "毛毛雨",
"56-day": "Light Freezing Drizzle", "56-day": "小冻毛雨",
"56-night": "Light Freezing Drizzle", "56-night": "小冻毛雨",
"57-day": "Freezing Drizzle", "57-day": "冻毛雨",
"57-night": "Freezing Drizzle", "57-night": "冻毛雨",
"61-day": "Light Rain", "61-day": "小雨",
"61-night": "Light Rain", "61-night": "小雨",
"63-day": "Rain", "63-day": "",
"63-night": "Rain", "63-night": "",
"65-day": "Heavy Rain", "65-day": "大雨",
"65-night": "Heavy Rain", "65-night": "大雨",
"66-day": "Freezing Rain", "66-day": "冻雨",
"66-night": "Freezing Rain", "66-night": "冻雨",
"67-day": "Freezing Rain", "67-day": "冻雨",
"67-night": "Freezing Rain", "67-night": "冻雨",
"71-day": "小雪", "71-day": "小雪",
"71-night": "小雪", "71-night": "小雪",
"73-day": "中雪", "73-day": "中雪",
"75-night": "大雪", "75-night": "大雪",
"77-day": "Snow Grains", "77-day": "雪粒",
"77-night": "Snow Grains", "77-night": "雪粒",
"80-day": "Light Showers", "80-day": "微阵雨",
"80-night": "Light Showers", "80-night": "微阵雨",
"81-day": "Showers", "81-day": "阵雨",
"81-night": "Showers", "81-night": "阵雨",
"82-day": "Heavy Showers", "82-day": "强阵雨",
"82-night": "Heavy Showers", "82-night": "强阵雨",
"85-day": "Snow Showers", "85-day": "阵雪",
"85-night": "Snow Showers", "85-night": "阵雪",
"86-day": "Snow Showers", "86-day": "阵雪",
"86-night": "Snow Showers", "86-night": "阵雪",
"95-day": "Thunderstorm", "95-day": "雷雨",
"95-night": "Thunderstorm", "95-night": "雷雨",
"96-day": "Thunderstorm With Hail", "96-day": "雷雨伴随冰雹",
"96-night": "Thunderstorm With Hail", "96-night": "雷雨伴随冰雹",
"99-day": "Thunderstorm With Hail", "99-day": "雷雨伴随冰雹",
"99-night": "Thunderstorm With Hail" "99-night": "雷雨伴随冰雹"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "书签", "bookmark": "书签",
"service": "服务", "service": "服务",
"search": "搜索", "search": "搜索",
"custom": "Custom", "custom": "自定",
"visit": "Visit", "visit": "访问",
"url": "URL" "url": "网址"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
"updates": "Updates", "updates": "更新",
"update_available": "Update Available", "update_available": "有可用的更新",
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Up",
"pending": "Pending", "pending": "待定中",
"down": "Down" "down": "Down"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approved", "approvedPushes": "已核准",
"rejectedPushes": "Rejected", "rejectedPushes": "拒绝",
"filters": "Filters", "filters": "Filters",
"indexers": "Indexers" "indexers": "索引器"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "以扫描", "containers_scanned": "以扫描",
@ -321,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": "系统负载",
@ -337,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": {
@ -356,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": {
@ -377,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": "已连接网关",
@ -414,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": "处理器负载",
@ -425,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": {
@ -452,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": "在线网站",
@ -471,8 +482,8 @@
}, },
"mylar": { "mylar": {
"series": "系列", "series": "系列",
"issues": "Issues", "issues": "问题",
"wanted": "Wanted" "wanted": "关注中"
}, },
"photoprism": { "photoprism": {
"albums": "相册", "albums": "相册",
@ -486,16 +497,16 @@
"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": "处理器负载", "cpuload": "处理器负载",
@ -504,30 +515,30 @@
"activeusers": "活跃用户" "activeusers": "活跃用户"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "状态",
"size": "Size", "size": "大小",
"lastrun": "Last Run", "lastrun": "最后运行",
"nextrun": "Next Run", "nextrun": "下次运行",
"failed": "Failed" "failed": "失败"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "在线工作节点",
"total_workers": "Total Workers", "total_workers": "工作节点总数",
"records_total": "Queue Length" "records_total": "队列长度"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "新建立",
"up": "Online", "up": "在线的",
"grace": "In Grace Period", "grace": "延缓中",
"down": "Offline", "down": "离线",
"paused": "Paused", "paused": "暂停",
"status": "Status", "status": "状态",
"last_ping": "Last Ping", "last_ping": "上次检查",
"never": "No pings yet" "never": "尚未检查"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "服务器",
"nodes": "Nodes" "nodes": "节点"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Targets Up",
@ -535,21 +546,21 @@
"targets_total": "Total Targets" "targets_total": "Total Targets"
}, },
"minecraft": { "minecraft": {
"players": "Players", "players": "播放中",
"version": "Version", "version": "版本",
"status": "Status", "status": "状态",
"up": "Online", "up": "在线的",
"down": "Offline" "down": "离线"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "今天",
"gross_percent_1y": "One year", "gross_percent_1y": "一年",
"gross_percent_max": "All time" "gross_percent_max": "所有时间"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "播客",
"books": "Books", "books": "图书",
"podcastsDuration": "Duration", "podcastsDuration": "持续时间",
"booksDuration": "Duration" "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": "網址",
@ -22,13 +22,13 @@
"cpu": "處理器", "cpu": "處理器",
"error": "錯誤", "error": "錯誤",
"unknown": "未知的", "unknown": "未知的",
"running": "Running", "running": "執行中",
"starting": "Starting", "starting": "啟動中",
"unhealthy": "Unhealthy", "unhealthy": "不健康的",
"not_found": "Not Found", "not_found": "未找到",
"exited": "Exited", "exited": "Exited",
"partial": "Partial", "partial": "Partial",
"healthy": "Healthy" "healthy": "健康的"
}, },
"emby": { "emby": {
"playing": "正在播放", "playing": "正在播放",
@ -60,7 +60,14 @@
"used": "已使用", "used": "已使用",
"load": "負載", "load": "負載",
"cpu": "CPU", "cpu": "CPU",
"mem": "記憶體" "mem": "記憶體",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
}, },
"nzbget": { "nzbget": {
"rate": "速率", "rate": "速率",
@ -226,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": "總監測數",
@ -371,8 +382,8 @@
"seed": "已完成下載" "seed": "已完成下載"
}, },
"flood": { "flood": {
"download": "下速率", "download": "下速率",
"upload": "上速率", "upload": "上速率",
"leech": "未完成下載", "leech": "未完成下載",
"seed": "已完成下載" "seed": "已完成下載"
}, },

View File

@ -1,6 +1,6 @@
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";
@ -64,6 +64,9 @@ export default function Widget({ options }) {
); );
} }
const unit = options.units === "imperial" ? "fahrenheit" : "celsius";
const mainTemp = (options.cputemp && data.sensors && unit === "celsius") ? data.sensors.find(s => s.label.includes("cpu_thermal")).value : data.sensors.find(s => s.label.includes("cpu_thermal")).value * 5/9 + 32;
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 +76,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 +84,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 +93,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 +101,38 @@ 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 &&
(<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>
</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>
</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

@ -0,0 +1,79 @@
import useSWR from "swr";
import { FaThermometerHalf } from "react-icons/fa";
import { BiError } from "react-icons/bi";
import { useTranslation } from "next-i18next";
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) {
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>
);
}
const unit = units === "imperial" ? "fahrenheit" : "celsius";
const mainTemp = (unit === "celsius") ? data.cputemp.main : data.cputemp.main * 5/9 + 32;
const maxTemp = (unit === "celsius") ? data.cputemp.max : data.cputemp.max * 5/9 + 32;
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>
)}
</div>
</div>
);
}

View File

@ -44,19 +44,19 @@ export default function Disk({ options, expanded }) {
); );
} }
const percent = Math.round((data.drive.usedGb / data.drive.totalGb) * 100); const percent = Math.round((data.drive.used / 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 pr-1">{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 pr-1">{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

@ -44,7 +44,7 @@ export default function Memory({ expanded }) {
); );
} }
const percent = Math.round((data.memory.usedMemMb / data.memory.totalMemMb) * 100); const percent = Math.round((data.memory.used / 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">
@ -52,7 +52,7 @@ export default function Memory({ expanded }) {
<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 pr-1"> <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.free, maximumFractionDigits: 1, binary: true })}
</div> </div>
<div className="pr-1">{t("resources.free")}</div> <div className="pr-1">{t("resources.free")}</div>
</span> </span>
@ -60,7 +60,7 @@ export default function Memory({ 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 pr-1"> <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,61 @@
import useSWR from "swr";
import { FaRegClock } from "react-icons/fa";
import { BiError } from "react-icons/bi";
import { useTranslation } from "next-i18next";
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")}`;
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>
</div>
</div>
);
}

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

@ -27,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];