Merge branch 'main' into ngrok
pushing main code to ngrok to update the branch
This commit is contained in:
commit
52c6ee2c98
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes",
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@
|
||||
"qbittorrent": {
|
||||
"download": "Descàrrega",
|
||||
"upload": "Pujada",
|
||||
"leech": "Companys",
|
||||
"leech": "Clients",
|
||||
"seed": "Llavors"
|
||||
},
|
||||
"mastodon": {
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,10 +98,20 @@
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"changedetectionio": {
|
||||
"totalObserved": "Total Observed",
|
||||
"diffsDetected": "Diffs Detected"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
{
|
||||
"widget": {
|
||||
"missing_type": "Missing Widget Type: {{type}}",
|
||||
"api_error": "API Error",
|
||||
"missing_type": "Manka Tipo de Fenestraĵo: {{type}}",
|
||||
"api_error": "Eraro de API",
|
||||
"information": "Informo",
|
||||
"status": "Stato",
|
||||
"url": "URL",
|
||||
"raw_error": "Raw Error",
|
||||
"response_data": "Response Data"
|
||||
"raw_error": "Kruda Eraro",
|
||||
"response_data": "Respondoj de Demandoj"
|
||||
},
|
||||
"weather": {
|
||||
"current": "Aktuala loko",
|
||||
"allow": "Click to allow",
|
||||
"updating": "Updating",
|
||||
"wait": "Please wait"
|
||||
"allow": "Klaku por permesi",
|
||||
"updating": "Ĝisdatiganta",
|
||||
"wait": "Bonvolu atendi"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Serĉi…"
|
||||
@ -26,58 +26,58 @@
|
||||
"mem": "MEM",
|
||||
"temp": "TEMP",
|
||||
"months": "mo",
|
||||
"max": "Max",
|
||||
"max": "Maks",
|
||||
"uptime": "UP",
|
||||
"days": "d",
|
||||
"days": "t",
|
||||
"hours": "h",
|
||||
"minutes": "m"
|
||||
},
|
||||
"unifi": {
|
||||
"users": "Uzantoj",
|
||||
"uptime": "System Uptime",
|
||||
"uptime": "Uptempo de la Sistemo",
|
||||
"days": "Tagoj",
|
||||
"wan": "WAN",
|
||||
"lan": "LAN",
|
||||
"wlan": "WLAN",
|
||||
"devices": "Aparatoj",
|
||||
"lan_devices": "LAN Devices",
|
||||
"wlan_devices": "WLAN Devices",
|
||||
"lan_users": "LAN Users",
|
||||
"wlan_users": "WLAN Users",
|
||||
"lan_devices": "LAN-Aparatoj",
|
||||
"wlan_devices": "WLAN-Aparatoj",
|
||||
"lan_users": "LAN-Uzantoj",
|
||||
"wlan_users": "WLAN-Uzantoj",
|
||||
"up": "UP",
|
||||
"down": "DOWN",
|
||||
"wait": "Please wait",
|
||||
"empty_data": "Subsystem status unknown"
|
||||
"wait": "Bonvolu atendi",
|
||||
"empty_data": "Subsistemostatuso nekonata"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "RX",
|
||||
"tx": "TX",
|
||||
"mem": "Memoro",
|
||||
"cpu": "Ĉefprocesoro",
|
||||
"offline": "Offline",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPO",
|
||||
"offline": "Malkonekta",
|
||||
"error": "Eraro",
|
||||
"unknown": "Nekonata",
|
||||
"running": "Running",
|
||||
"starting": "Starting",
|
||||
"unhealthy": "Unhealthy",
|
||||
"not_found": "Not Found",
|
||||
"exited": "Exited",
|
||||
"partial": "Partial",
|
||||
"healthy": "Healthy"
|
||||
"running": "Rulata",
|
||||
"starting": "Lanĉante",
|
||||
"unhealthy": "Malsana",
|
||||
"not_found": "Ne trovita",
|
||||
"exited": "Eliris",
|
||||
"partial": "Parta",
|
||||
"healthy": "Sana"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Eraro",
|
||||
"ping": "Ping"
|
||||
"ping": "Sondaĵo"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Ludante",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"transcoding": "Transkodigo",
|
||||
"bitrate": "Bitrapido",
|
||||
"no_active": "No Active Streams",
|
||||
"movies": "Movies",
|
||||
"series": "Series",
|
||||
"episodes": "Episodes",
|
||||
"songs": "Songs"
|
||||
"movies": "Filmoj",
|
||||
"series": "Serioj",
|
||||
"episodes": "Epizodoj",
|
||||
"songs": "Kantoj"
|
||||
},
|
||||
"changedetectionio": {
|
||||
"totalObserved": "Total Observed",
|
||||
@ -382,8 +382,8 @@
|
||||
"total": "Totalo"
|
||||
},
|
||||
"flood": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"load": "Carga",
|
||||
"cpu": "CPU",
|
||||
"mem": "MEM",
|
||||
"temp": "TEMPORAL",
|
||||
"temp": "TEMP",
|
||||
"max": "Máx.",
|
||||
"uptime": "ARRIBA",
|
||||
"months": "Meses",
|
||||
@ -183,7 +183,7 @@
|
||||
"qbittorrent": {
|
||||
"download": "Bajada",
|
||||
"upload": "Subida",
|
||||
"leech": "Compañeros",
|
||||
"leech": "Pares",
|
||||
"seed": "Semillas"
|
||||
},
|
||||
"mastodon": {
|
||||
@ -564,8 +564,18 @@
|
||||
"booksDuration": "Duración"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"people_home": "Inicio de personas",
|
||||
"lights_on": "Luces encendidas",
|
||||
"switches_on": "Encendido"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Suscripciones",
|
||||
"unread": "Sin leer"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -234,9 +234,9 @@
|
||||
"cpu": "Cpu",
|
||||
"mem": "Mém",
|
||||
"wait": "Merci de patienter",
|
||||
"temp": "TEMP",
|
||||
"uptime": "UP",
|
||||
"days": "d",
|
||||
"temp": "Temp",
|
||||
"uptime": "Up",
|
||||
"days": "j",
|
||||
"hours": "h"
|
||||
},
|
||||
"changedetectionio": {
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lumières allumées",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"unread": "Non lu",
|
||||
"subscriptions": "Abonnements"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -564,8 +564,18 @@
|
||||
"booksDuration": "Trajanje"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"people_home": "Ljudi doma",
|
||||
"lights_on": "Upaljena svjetla",
|
||||
"switches_on": "Prekidači uključeni"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Pretplate",
|
||||
"unread": "Nepročitano"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes",
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,10 +15,10 @@
|
||||
"free": "Wolne",
|
||||
"cpu": "CPU",
|
||||
"mem": "PAM",
|
||||
"temp": "TYMCZASOWE",
|
||||
"temp": "TEMP.",
|
||||
"max": "Max",
|
||||
"uptime": "UP",
|
||||
"months": "misiąc",
|
||||
"months": "miesiąc",
|
||||
"days": "dni",
|
||||
"hours": "h",
|
||||
"minutes": "minuty"
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,8 +54,8 @@
|
||||
"mem": "MEM",
|
||||
"max": "Máximo",
|
||||
"temp": "TEMP",
|
||||
"uptime": "CIMA",
|
||||
"months": "mo",
|
||||
"uptime": "LIGADO",
|
||||
"months": "mês",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"minutes": "m"
|
||||
@ -235,7 +235,7 @@
|
||||
"mem": "MEM",
|
||||
"wait": "Por favor aguarde",
|
||||
"temp": "TEMP",
|
||||
"uptime": "CIMA",
|
||||
"uptime": "LIGADO",
|
||||
"days": "d",
|
||||
"hours": "h"
|
||||
},
|
||||
@ -316,9 +316,9 @@
|
||||
"up_to_date": "Atualizado",
|
||||
"child_bridges": "Pontes Filhas",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Cima",
|
||||
"up": "Ligado",
|
||||
"pending": "Pendente",
|
||||
"down": "Baixo"
|
||||
"down": "Desligado"
|
||||
},
|
||||
"autobrr": {
|
||||
"approvedPushes": "Aprovado",
|
||||
@ -564,8 +564,18 @@
|
||||
"booksDuration": "Duração"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"people_home": "Pessoas em Casa",
|
||||
"lights_on": "Luzes Ligadas",
|
||||
"switches_on": "Interruptores Ligados"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
"max": "Máximo",
|
||||
"temp": "TEMP",
|
||||
"uptime": "CIMA",
|
||||
"months": "mo",
|
||||
"months": "mês",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"minutes": "m"
|
||||
@ -573,8 +573,18 @@
|
||||
"booksDuration": "Duração"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"people_home": "Pessoas em Casa",
|
||||
"lights_on": "Luzes Acesas",
|
||||
"switches_on": "Interruptores Ligados"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
581
public/locales/sl/common.json
Normal file
581
public/locales/sl/common.json
Normal file
@ -0,0 +1,581 @@
|
||||
{
|
||||
"common": {
|
||||
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
||||
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"available": "Available",
|
||||
"pending": "Pending",
|
||||
"approved": "Approved"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Pending",
|
||||
"processing": "Processing",
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "Queries",
|
||||
"blocked": "Blocked",
|
||||
"gravity": "Gravity"
|
||||
},
|
||||
"adguard": {
|
||||
"filtered": "Filtered",
|
||||
"latency": "Latency",
|
||||
"queries": "Queries",
|
||||
"blocked": "Blocked"
|
||||
},
|
||||
"opnsense": {
|
||||
"wanUpload": "WAN Upload",
|
||||
"wanDownload": "WAN Download",
|
||||
"cpu": "CPU Load",
|
||||
"memory": "Active Memory"
|
||||
},
|
||||
"octoprint": {
|
||||
"temp_bed": "Bed temp",
|
||||
"job_completion": "Completion",
|
||||
"printer_state": "Status",
|
||||
"temp_tool": "Tool temp"
|
||||
},
|
||||
"cloudflared": {
|
||||
"origin_ip": "Origin IP",
|
||||
"status": "Status"
|
||||
},
|
||||
"proxmoxbackupserver": {
|
||||
"datastore_usage": "Datastore",
|
||||
"failed_tasks_24h": "Failed Tasks 24h",
|
||||
"cpu_usage": "CPU",
|
||||
"memory_usage": "Memory"
|
||||
},
|
||||
"mylar": {
|
||||
"wanted": "Wanted",
|
||||
"series": "Series",
|
||||
"issues": "Issues"
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Albums",
|
||||
"photos": "Photos",
|
||||
"videos": "Videos",
|
||||
"people": "People"
|
||||
},
|
||||
"grafana": {
|
||||
"alertstriggered": "Alerts Triggered",
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
"totalalerts": "Total Alerts"
|
||||
},
|
||||
"nextcloud": {
|
||||
"cpuload": "Cpu Load",
|
||||
"memoryusage": "Memory Usage",
|
||||
"freespace": "Free Space",
|
||||
"activeusers": "Active Users"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "Status",
|
||||
"size": "Size",
|
||||
"lastrun": "Last Run",
|
||||
"nextrun": "Next Run",
|
||||
"failed": "Failed"
|
||||
},
|
||||
"pterodactyl": {
|
||||
"nodes": "Nodes",
|
||||
"servers": "Servers"
|
||||
},
|
||||
"widget": {
|
||||
"missing_type": "Manjka tip widgeta: {{type}}",
|
||||
"api_error": "API napaka",
|
||||
"information": "Informacija",
|
||||
"raw_error": "Surova napaka",
|
||||
"response_data": "Podatki iz odgovora",
|
||||
"status": "Status",
|
||||
"url": "URL"
|
||||
},
|
||||
"weather": {
|
||||
"current": "Trenutna lokacija",
|
||||
"allow": "Kliknite za dovolitev",
|
||||
"updating": "Posodabljam",
|
||||
"wait": "Prosimo počakajte"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Iskanje…"
|
||||
},
|
||||
"resources": {
|
||||
"cpu": "CPU",
|
||||
"mem": "MEM",
|
||||
"total": "Skupaj",
|
||||
"free": "Prosto",
|
||||
"used": "V uporabi",
|
||||
"load": "Bremenitev",
|
||||
"temp": "TEMP",
|
||||
"max": "Maks.",
|
||||
"uptime": "Gor",
|
||||
"months": "me",
|
||||
"days": "d",
|
||||
"hours": "u",
|
||||
"minutes": "m"
|
||||
},
|
||||
"unifi": {
|
||||
"devices": "Naprave",
|
||||
"lan_devices": "LAN naprave",
|
||||
"wlan_devices": "WLAN naprave",
|
||||
"lan_users": "LAN uporabniki",
|
||||
"wlan_users": "WLAN uporabniki",
|
||||
"up": "Gor",
|
||||
"down": "Dol",
|
||||
"wait": "Prosimo počakajte",
|
||||
"users": "Uporabniki",
|
||||
"uptime": "Čas delovanja",
|
||||
"days": "Dni",
|
||||
"wan": "WAN",
|
||||
"lan": "LAN",
|
||||
"wlan": "WLAN",
|
||||
"empty_data": "Neznani status podsistema"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "RX",
|
||||
"tx": "TX",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU",
|
||||
"running": "Deluje",
|
||||
"offline": "Ni povezan",
|
||||
"error": "Napaka",
|
||||
"unknown": "Neznano",
|
||||
"healthy": "Zdrav",
|
||||
"starting": "Se zaganja",
|
||||
"unhealthy": "Ni zdrav",
|
||||
"not_found": "Ni najden",
|
||||
"exited": "V izhodu",
|
||||
"partial": "Delni"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Napaka",
|
||||
"ping": "Ping"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Predvaja",
|
||||
"transcoding": "Transkodira",
|
||||
"bitrate": "Pasovna širina",
|
||||
"no_active": "Ni aktivne vsebine",
|
||||
"movies": "Filmi",
|
||||
"series": "Serije",
|
||||
"episodes": "Epizode",
|
||||
"songs": "Pesmi"
|
||||
},
|
||||
"tautulli": {
|
||||
"transcoding": "Transkodira",
|
||||
"bitrate": "Pasovna širina",
|
||||
"playing": "Predvaja",
|
||||
"no_active": "Ni aktivne vsebine"
|
||||
},
|
||||
"flood": {
|
||||
"download": "Prenos",
|
||||
"upload": "Nalaganje",
|
||||
"leech": "Pijavka",
|
||||
"seed": "Sejanje"
|
||||
},
|
||||
"changedetectionio": {
|
||||
"totalObserved": "Skupaj opazovano",
|
||||
"diffsDetected": "Zaznanih sprememb"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "Povezanih AP",
|
||||
"activeUser": "Aktivne naprave",
|
||||
"alerts": "Opozorila",
|
||||
"connectedGateway": "Povezan prehod",
|
||||
"connectedSwitches": "Povezana stikala"
|
||||
},
|
||||
"nzbget": {
|
||||
"rate": "Razmerje",
|
||||
"remaining": "Še preostane",
|
||||
"downloaded": "Preneseno"
|
||||
},
|
||||
"plex": {
|
||||
"streams": "Aktivna vsebina",
|
||||
"movies": "Filmi",
|
||||
"tv": "TV serije"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "Razmerje",
|
||||
"queue": "Vrsta",
|
||||
"timeleft": "Preostali čas"
|
||||
},
|
||||
"rutorrent": {
|
||||
"active": "Aktiven",
|
||||
"upload": "Nalaganje",
|
||||
"download": "Prenašanje"
|
||||
},
|
||||
"transmission": {
|
||||
"download": "Prenos",
|
||||
"upload": "Nalaganje",
|
||||
"leech": "Pijavka",
|
||||
"seed": "Sejanje"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "Prenos",
|
||||
"upload": "Nalaganje",
|
||||
"leech": "Pijavka",
|
||||
"seed": "Sejanje"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "Prenos",
|
||||
"upload": "Upload",
|
||||
"leech": "Pijavka",
|
||||
"seed": "Sejanje"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "Prenos",
|
||||
"upload": "Nalaganje",
|
||||
"leech": "Pijavka",
|
||||
"seed": "Sejanje"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "Upload",
|
||||
"download": "Download",
|
||||
"ping": "Ping"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"total": "Total"
|
||||
},
|
||||
"tdarr": {
|
||||
"queue": "Queue",
|
||||
"processed": "Processed",
|
||||
"errored": "Errored",
|
||||
"saved": "Saved"
|
||||
},
|
||||
"npm": {
|
||||
"disabled": "Disabled",
|
||||
"total": "Total",
|
||||
"enabled": "Enabled"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Configure one or more crypto currencies to track",
|
||||
"1hour": "1 Hour",
|
||||
"1day": "1 Day",
|
||||
"7days": "7 Days",
|
||||
"30days": "30 Days"
|
||||
},
|
||||
"traefik": {
|
||||
"routers": "Routers",
|
||||
"services": "Services",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Applications",
|
||||
"clients": "Clients",
|
||||
"messages": "Messages"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Please Wait"
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "Indexers",
|
||||
"numberOfGrabs": "Grabs",
|
||||
"numberOfQueries": "Queries",
|
||||
"numberOfFailGrabs": "Fail Grabs",
|
||||
"numberOfFailQueries": "Fail Queries"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Configured",
|
||||
"errored": "Errored"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "Sessions",
|
||||
"numConnections": "Connections",
|
||||
"dataRelayed": "Relayed",
|
||||
"transferRate": "Rate"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Users",
|
||||
"status_count": "Posts",
|
||||
"domain_count": "Domains"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"series": "Series"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "Players",
|
||||
"version": "Version",
|
||||
"status": "Status",
|
||||
"up": "Online",
|
||||
"down": "Offline"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Read",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"proxmox": {
|
||||
"lxc": "LXC",
|
||||
"vms": "VMs",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU"
|
||||
},
|
||||
"glances": {
|
||||
"cpu": "CPU",
|
||||
"mem": "MEM",
|
||||
"wait": "Please wait",
|
||||
"temp": "TEMP",
|
||||
"uptime": "UP",
|
||||
"days": "d",
|
||||
"hours": "h"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "Users",
|
||||
"loginsLast24H": "Logins (24h)",
|
||||
"failedLoginsLast24H": "Failed Logins (24h)"
|
||||
},
|
||||
"quicklaunch": {
|
||||
"bookmark": "Bookmark",
|
||||
"service": "Service",
|
||||
"search": "Search",
|
||||
"custom": "Custom",
|
||||
"url": "URL",
|
||||
"visit": "Visit"
|
||||
},
|
||||
"wmo": {
|
||||
"3-night": "Cloudy",
|
||||
"45-day": "Foggy",
|
||||
"0-day": "Sunny",
|
||||
"0-night": "Clear",
|
||||
"1-day": "Mainly Sunny",
|
||||
"1-night": "Mainly Clear",
|
||||
"45-night": "Foggy",
|
||||
"2-day": "Partly Cloudy",
|
||||
"2-night": "Partly Cloudy",
|
||||
"3-day": "Cloudy",
|
||||
"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",
|
||||
"63-night": "Rain",
|
||||
"65-day": "Heavy Rain",
|
||||
"65-night": "Heavy Rain",
|
||||
"66-day": "Freezing Rain",
|
||||
"66-night": "Freezing Rain",
|
||||
"57-night": "Freezing Drizzle",
|
||||
"61-day": "Light Rain",
|
||||
"61-night": "Light Rain",
|
||||
"67-day": "Freezing Rain",
|
||||
"63-day": "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",
|
||||
"85-night": "Snow Showers",
|
||||
"86-day": "Snow Showers",
|
||||
"80-night": "Light Showers",
|
||||
"81-day": "Showers",
|
||||
"81-night": "Showers",
|
||||
"82-day": "Heavy Showers",
|
||||
"82-night": "Heavy Showers",
|
||||
"85-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": {
|
||||
"child_bridges": "Child Bridges",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Up",
|
||||
"available_update": "System",
|
||||
"updates": "Updates",
|
||||
"update_available": "Update Available",
|
||||
"up_to_date": "Up to Date",
|
||||
"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"
|
||||
},
|
||||
"moonraker": {
|
||||
"printer_state": "Printer State",
|
||||
"print_status": "Print Status",
|
||||
"print_progress": "Progress",
|
||||
"layers": "Layers"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"fileflows": {
|
||||
"queue": "Queue",
|
||||
"processing": "Processing",
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"prometheus": {
|
||||
"targets_up": "Targets Up",
|
||||
"targets_down": "Targets Down",
|
||||
"targets_total": "Total Targets"
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Active Workers",
|
||||
"total_workers": "Total Workers",
|
||||
"records_total": "Queue Length"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"books": "Books",
|
||||
"podcastsDuration": "Duration",
|
||||
"booksDuration": "Duration"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes",
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -564,8 +564,18 @@
|
||||
"booksDuration": "Тривалість"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"people_home": "Люди вдома",
|
||||
"lights_on": "Світло ввімкнено",
|
||||
"switches_on": "Вмикається"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,5 +567,15 @@
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "Shows",
|
||||
"recordings": "Recordings",
|
||||
"scheduled": "Scheduled",
|
||||
"passes": "Passes"
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ export default function Ping({ service }) {
|
||||
|
||||
const statusText = `${service.ping}: HTTP status ${data.status}`;
|
||||
|
||||
if (data && data.status !== 200) {
|
||||
if (data.status > 403) {
|
||||
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={statusText}>
|
||||
<div className="text-[8px] font-bold text-rose-500/80">{data.status}</div>
|
||||
@ -33,12 +33,10 @@ export default function Ping({ service }) {
|
||||
);
|
||||
}
|
||||
|
||||
if (data && data.status === 200) {
|
||||
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={statusText}>
|
||||
<div className="text-[8px] font-bold text-emerald-500/80">{t("common.ms", { value: data.latency, style: "unit", unit: "millisecond", unitDisplay: "narrow", maximumFractionDigits: 0 })}</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={statusText}>
|
||||
<div className="text-[8px] font-bold text-emerald-500/80">{t("common.ms", { value: data.latency, style: "unit", unit: "millisecond", unitDisplay: "narrow", maximumFractionDigits: 0 })}</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import { useTranslation } from "next-i18next";
|
||||
|
||||
import UsageBar from "../resources/usage-bar";
|
||||
|
||||
const cpuSensorLabels = ["cpu_thermal", "Core"];
|
||||
const cpuSensorLabels = ["cpu_thermal", "Core", "Tctl"];
|
||||
|
||||
function convertToFahrenheit(t) {
|
||||
return t * 9/5 + 32
|
||||
|
||||
@ -21,7 +21,7 @@ export default async function handler(req, res) {
|
||||
});
|
||||
let endTime = performance.now();
|
||||
|
||||
if (status >= 400) {
|
||||
if (status > 403) {
|
||||
// try one more time as a GET in case HEAD is rejected for whatever reason
|
||||
startTime = performance.now();
|
||||
[status] = await httpProxy(pingURL);
|
||||
|
||||
@ -318,15 +318,26 @@ function Home({ initialSettings }) {
|
||||
|
||||
export default function Wrapper({ initialSettings, fallback }) {
|
||||
const wrappedStyle = {};
|
||||
let backgroundBlur = false;
|
||||
let backgroundSaturate = false;
|
||||
let backgroundBrightness = false;
|
||||
if (initialSettings && initialSettings.background) {
|
||||
const opacity = initialSettings.backgroundOpacity ?? 1;
|
||||
let opacity = initialSettings.backgroundOpacity ?? 1;
|
||||
let backgroundImage = initialSettings.background;
|
||||
if (typeof initialSettings.background === 'object') {
|
||||
backgroundImage = initialSettings.background.image;
|
||||
backgroundBlur = initialSettings.background.blur !== undefined;
|
||||
backgroundSaturate = initialSettings.background.saturate !== undefined;
|
||||
backgroundBrightness = initialSettings.background.brightness !== undefined;
|
||||
if (initialSettings.background.opacity !== undefined) opacity = initialSettings.background.opacity / 100;
|
||||
}
|
||||
const opacityValue = 1 - opacity;
|
||||
wrappedStyle.backgroundImage = `
|
||||
linear-gradient(
|
||||
rgb(var(--bg-color) / ${opacityValue}),
|
||||
rgb(var(--bg-color) / ${opacityValue})
|
||||
),
|
||||
url(${initialSettings.background})`;
|
||||
url(${backgroundImage})`;
|
||||
wrappedStyle.backgroundPosition = "center";
|
||||
wrappedStyle.backgroundSize = "cover";
|
||||
}
|
||||
@ -345,7 +356,15 @@ export default function Wrapper({ initialSettings, fallback }) {
|
||||
className="fixed overflow-auto w-full h-full bg-theme-50 dark:bg-theme-800 transition-all"
|
||||
style={wrappedStyle}
|
||||
>
|
||||
<Index initialSettings={initialSettings} fallback={fallback} />
|
||||
<div
|
||||
id="inner_wrapper"
|
||||
className={classNames(
|
||||
backgroundBlur && `backdrop-blur${initialSettings.background.blur.length ? '-' : ""}${initialSettings.background.blur}`,
|
||||
backgroundSaturate && `backdrop-saturate-${initialSettings.background.saturate}`,
|
||||
backgroundBrightness && `backdrop-brightness-${initialSettings.background.brightness}`,
|
||||
)}>
|
||||
<Index initialSettings={initialSettings} fallback={fallback} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
36
src/widgets/channelsdvrserver/component.jsx
Normal file
36
src/widgets/channelsdvrserver/component.jsx
Normal file
@ -0,0 +1,36 @@
|
||||
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: channelsData, error: channelsError } = useWidgetAPI(widget, "status");
|
||||
|
||||
if (channelsError) {
|
||||
return <Container error={channelsError} />;
|
||||
}
|
||||
|
||||
if (!channelsData) {
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="channelsdvrserver.shows" />
|
||||
<Block label="channelsdvrserver.recordings" />
|
||||
<Block label="channelsdvrserver.scheduled" />
|
||||
<Block label="channelsdvrserver.passes" />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="channelsdvrserver.shows" value={t("common.number", { value: channelsData.stats.groups })} />
|
||||
<Block label="channelsdvrserver.recordings" value={t("common.number", { value: channelsData.stats.files })} />
|
||||
<Block label="channelsdvrserver.scheduled" value={t("common.number", { value: channelsData.stats.jobs })} />
|
||||
<Block label="channelsdvrserver.passes" value={t("common.number", { value: channelsData.stats.rules })} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
14
src/widgets/channelsdvrserver/widget.js
Normal file
14
src/widgets/channelsdvrserver/widget.js
Normal file
@ -0,0 +1,14 @@
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/{endpoint}",
|
||||
proxyHandler: genericProxyHandler,
|
||||
|
||||
mappings: {
|
||||
status: {
|
||||
endpoint: "dvr",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default widget;
|
||||
@ -7,6 +7,7 @@ const components = {
|
||||
autobrr: dynamic(() => import("./autobrr/component")),
|
||||
bazarr: dynamic(() => import("./bazarr/component")),
|
||||
changedetectionio: dynamic(() => import("./changedetectionio/component")),
|
||||
channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")),
|
||||
cloudflared: dynamic(() => import("./cloudflared/component")),
|
||||
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
|
||||
deluge: dynamic(() => import("./deluge/component")),
|
||||
@ -17,6 +18,7 @@ const components = {
|
||||
emby: dynamic(() => import("./emby/component")),
|
||||
fileflows: dynamic(() => import("./fileflows/component")),
|
||||
flood: dynamic(() => import("./flood/component")),
|
||||
freshrss: dynamic(() => import("./freshrss/component")),
|
||||
ghostfolio: dynamic(() => import("./ghostfolio/component")),
|
||||
gluetun: dynamic(() => import("./gluetun/component")),
|
||||
gotify: dynamic(() => import("./gotify/component")),
|
||||
|
||||
33
src/widgets/freshrss/component.jsx
Normal file
33
src/widgets/freshrss/component.jsx
Normal file
@ -0,0 +1,33 @@
|
||||
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: freshrssData, error: freshrssError } = useWidgetAPI(widget, "info");
|
||||
|
||||
if (freshrssError) {
|
||||
return <Container error={freshrssError} />;
|
||||
}
|
||||
|
||||
if (!freshrssData) {
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="freshrss.unread" />
|
||||
<Block label="freshrss.subscriptions" />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="freshrss.unread" value={t("common.number", { value: freshrssData.unread })} />
|
||||
<Block label="freshrss.subscriptions" value={t("common.number", { value: freshrssData.subscriptions })} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
97
src/widgets/freshrss/proxy.js
Normal file
97
src/widgets/freshrss/proxy.js
Normal file
@ -0,0 +1,97 @@
|
||||
import cache from "memory-cache";
|
||||
|
||||
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 = "freshrssProxyHandler";
|
||||
const sessionTokenCacheKey = `${proxyName}__sessionToken`;
|
||||
const logger = createLogger(proxyName);
|
||||
|
||||
async function login(widget, service) {
|
||||
const endpoint = "accounts/ClientLogin";
|
||||
const api = widgets?.[widget.type]?.api
|
||||
const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget }));
|
||||
const headers = { "Content-Type": "application/x-www-form-urlencoded" };
|
||||
|
||||
const [, , data,] = await httpProxy(loginUrl, {
|
||||
method: "POST",
|
||||
body: new URLSearchParams({
|
||||
Email: widget.username,
|
||||
Passwd: widget.password
|
||||
}).toString(),
|
||||
headers,
|
||||
});
|
||||
|
||||
try {
|
||||
const [, token] = data.toString().split("\n").find(line => line.startsWith("Auth=")).split("=")
|
||||
cache.put(`${sessionTokenCacheKey}.${service}`, token);
|
||||
return { token };
|
||||
} catch (e) {
|
||||
logger.error("Unable to login to FreshRSS API: %s", e);
|
||||
}
|
||||
|
||||
return { token: false };
|
||||
}
|
||||
|
||||
async function apiCall(widget, endpoint, service) {
|
||||
const key = `${sessionTokenCacheKey}.${service}`;
|
||||
const headers = {
|
||||
"Authorization": `GoogleLogin auth=${cache.get(key)}`,
|
||||
}
|
||||
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
|
||||
const method = "GET";
|
||||
|
||||
let [status, contentType, data, responseHeaders] = await httpProxy(url, {
|
||||
method,
|
||||
headers,
|
||||
});
|
||||
|
||||
if (status === 401) {
|
||||
logger.debug("FreshRSS API rejected the request, attempting to obtain new session token");
|
||||
const { token } = await login(widget, service);
|
||||
headers.Authorization = `GoogleLogin auth=${token}`;
|
||||
|
||||
// retry the request, now with the new session token
|
||||
[status, contentType, data, responseHeaders] = await httpProxy(url, {
|
||||
method,
|
||||
headers,
|
||||
});
|
||||
}
|
||||
|
||||
if (status !== 200) {
|
||||
logger.error("Error getting data from FreshRSS: %s status %d. Data: %s", url, status, data);
|
||||
return { status, contentType, data: null, responseHeaders };
|
||||
}
|
||||
|
||||
return { status, contentType, data: JSON.parse(data.toString()), responseHeaders };
|
||||
}
|
||||
|
||||
export default async function freshrssProxyHandler(req, res) {
|
||||
const { group, service } = req.query;
|
||||
|
||||
if (!group || !service) {
|
||||
logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
|
||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||
}
|
||||
|
||||
const widget = await getServiceWidget(group, service);
|
||||
if (!widget) {
|
||||
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
|
||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||
}
|
||||
|
||||
if (!cache.get(`${sessionTokenCacheKey}.${service}`)) {
|
||||
await login(widget, service);
|
||||
}
|
||||
|
||||
const { data: subscriptionData } = await apiCall(widget, "reader/api/0/subscription/list", service);
|
||||
const { data: unreadCountData } = await apiCall(widget, "reader/api/0/unread-count", service);
|
||||
|
||||
return res.status(200).send({
|
||||
subscriptions: subscriptionData?.subscriptions.length,
|
||||
unread: unreadCountData?.max
|
||||
});
|
||||
}
|
||||
13
src/widgets/freshrss/widget.js
Normal file
13
src/widgets/freshrss/widget.js
Normal file
@ -0,0 +1,13 @@
|
||||
import freshrssProxyHandler from "./proxy";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/greader.php/{endpoint}?output=json",
|
||||
proxyHandler: freshrssProxyHandler,
|
||||
mappings: {
|
||||
info: {
|
||||
endpoint: "/"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export default widget;
|
||||
@ -52,7 +52,7 @@ async function apiCall(widget, endpoint, service) {
|
||||
|
||||
if (status === 401 || status === 403) {
|
||||
logger.debug("Homebridge API rejected the request, attempting to obtain new session token");
|
||||
const { accessToken } = login(widget, service);
|
||||
const { accessToken } = await login(widget, service);
|
||||
headers.Authorization = `Bearer ${accessToken}`;
|
||||
|
||||
// retry the request, now with the new session token
|
||||
|
||||
@ -33,7 +33,9 @@ export default async function transmissionProxyHandler(req, res) {
|
||||
cache.put(`${headerCacheKey}.${service}`, headers);
|
||||
}
|
||||
|
||||
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
|
||||
const api = `${widget.url}${widget.rpcUrl || widgets[widget.type].rpcUrl}rpc`;
|
||||
|
||||
const url = new URL(formatApiCall(api, { endpoint, ...widget }));
|
||||
const csrfHeaderName = "x-transmission-session-id";
|
||||
|
||||
const method = "POST";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import transmissionProxyHandler from "./proxy";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/transmission/rpc",
|
||||
rpcUrl: "/transmission/",
|
||||
proxyHandler: transmissionProxyHandler,
|
||||
};
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ import authentik from "./authentik/widget";
|
||||
import autobrr from "./autobrr/widget";
|
||||
import bazarr from "./bazarr/widget";
|
||||
import changedetectionio from "./changedetectionio/widget";
|
||||
import channelsdvrserver from "./channelsdvrserver/widget";
|
||||
import cloudflared from "./cloudflared/widget";
|
||||
import coinmarketcap from "./coinmarketcap/widget";
|
||||
import deluge from "./deluge/widget";
|
||||
@ -12,7 +13,8 @@ import downloadstation from "./downloadstation/widget";
|
||||
import emby from "./emby/widget";
|
||||
import fileflows from "./fileflows/widget";
|
||||
import flood from "./flood/widget";
|
||||
import ghostfolio from "./ghostfolio/widget"
|
||||
import freshrss from "./freshrss/widget";
|
||||
import ghostfolio from "./ghostfolio/widget";
|
||||
import gluetun from "./gluetun/widget";
|
||||
import gotify from "./gotify/widget";
|
||||
import grafana from "./grafana/widget";
|
||||
@ -83,6 +85,7 @@ const widgets = {
|
||||
autobrr,
|
||||
bazarr,
|
||||
changedetectionio,
|
||||
channelsdvrserver,
|
||||
cloudflared,
|
||||
coinmarketcap,
|
||||
deluge,
|
||||
@ -91,6 +94,7 @@ const widgets = {
|
||||
emby,
|
||||
fileflows,
|
||||
flood,
|
||||
freshrss,
|
||||
ghostfolio,
|
||||
gluetun,
|
||||
gotify,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user