Merge branch 'main' into add-whatsupdocker-widget

This commit is contained in:
RichyHBM 2023-03-27 18:32:36 +00:00
commit 3fb635be75
56 changed files with 2611 additions and 550 deletions

View File

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

View File

@ -107,13 +107,24 @@
"cpu": "المعالج",
"offline": "غير متصل",
"error": "خطأ",
"unknown": "مجهول"
"unknown": "مجهول",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "يعمل الآن",
"transcoding": "التحويل",
"bitrate": "معدل البت",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"songs": "Songs",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@ -293,7 +304,10 @@
"update_available": "تحديث متاح",
"up_to_date": "حتى الآن",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -59,13 +59,24 @@
"mem": "MEM",
"cpu": "CPU",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"partial": "Partial",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"healthy": "Healthy"
},
"emby": {
"playing": "Възпроизвежда",
"transcoding": "Конвертира",
"bitrate": "Bitrate",
"no_active": "Няма активни потоци"
"no_active": "Няма активни потоци",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Възпроизвежда",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"rejectedPushes": "Rejected",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -48,13 +48,24 @@
"cpu": "Processador",
"offline": "Fora de línia",
"error": "Error",
"unknown": "Desconegut"
"unknown": "Desconegut",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Reproduint",
"transcoding": "Transcodificant",
"bitrate": "Taxa de bits",
"no_active": "Sense reproduccions actives"
"no_active": "Sense reproduccions actives",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Reproduint",
@ -293,7 +304,10 @@
"update_available": "Actualització disponible",
"up_to_date": "Actualitzat",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Aprovat",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

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

View File

@ -134,7 +134,10 @@
"update_available": "Opdateringer tilgængelige",
"up_to_date": "Opdateret",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"widget": {
"missing_type": "Manglende Widget Type: {{type}}",
@ -186,13 +189,24 @@
"mem": "RAM",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Afspiller",
"transcoding": "Transcoder",
"bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams"
"no_active": "Ingen Aktive Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observeret",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"booksDuration": "Duration",
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration"
}
}

View File

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

View File

@ -60,9 +60,16 @@
"tx": "TX",
"mem": "MEM",
"cpu": "CPU",
"running": "Running",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"healthy": "Healthy",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial"
},
"ping": {
"error": "Error",
@ -72,7 +79,11 @@
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Download",
@ -361,7 +372,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"healthchecks": {
"new": "New",
@ -541,6 +555,12 @@
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
},
"whatsupdocker": {
"monitoring": "Monitoring",
"updates": "Updates"

View File

@ -49,7 +49,14 @@
"cpu": "Ĉefprocesoro",
"offline": "Offline",
"error": "Eraro",
"unknown": "Nekonata"
"unknown": "Nekonata",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"ping": {
"error": "Eraro",
@ -59,7 +66,11 @@
"playing": "Ludante",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@ -307,7 +318,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "Procesador",
"offline": "Desconectado",
"error": "Fallo",
"unknown": "Desconocido"
"unknown": "Desconocido",
"running": "Ejecutando",
"starting": "Comenzando",
"unhealthy": "Insalubre",
"not_found": "No encontrado",
"exited": "Salida",
"partial": "Parcial",
"healthy": "Saludable"
},
"emby": {
"playing": "Reproduciendo",
"transcoding": "Transcodificando",
"bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas"
"no_active": "Sin transmisiones activas",
"movies": "Películas",
"series": "Serie",
"episodes": "Episodios",
"songs": "Canciones"
},
"tautulli": {
"playing": "Reproduciendo",
@ -293,7 +304,10 @@
"update_available": "Actualización disponible",
"up_to_date": "Actualizado",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Arriba",
"pending": "Pendiente",
"down": "Abajo"
},
"autobrr": {
"approvedPushes": "Aprobado",
@ -531,5 +545,11 @@
"gross_percent_today": "Hoy",
"gross_percent_1y": "Un año",
"gross_percent_max": "Todo el tiempo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Libros",
"podcastsDuration": "Duración",
"booksDuration": "Duración"
}
}

View File

@ -32,13 +32,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Toistaa",
"transcoding": "Transkoodaa",
"bitrate": "Bittinopeus",
"no_active": "Ei aktiivisia striimejä"
"no_active": "Ei aktiivisia striimejä",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Toistaa",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "Cpu",
"offline": "Hors ligne",
"error": "Erreur",
"unknown": "Inconnu"
"unknown": "Inconnu",
"running": "Démarré",
"starting": "Démarrage",
"unhealthy": "Dysfonctionnement",
"not_found": "Inconnu",
"exited": "Arrêté",
"partial": "Partiel",
"healthy": "Fonctionnel"
},
"emby": {
"playing": "En lecture",
"transcoding": "Transcodage",
"bitrate": "Débit",
"no_active": "Aucun flux actif"
"no_active": "Aucun flux actif",
"movies": "Films",
"series": "Séries TV",
"episodes": "Épisodes",
"songs": "Musique"
},
"tautulli": {
"playing": "En lecture",
@ -47,12 +58,12 @@
},
"sonarr": {
"wanted": "Demande",
"queued": "En attente",
"queued": "Attente",
"series": "Séries"
},
"radarr": {
"wanted": "Demande",
"queued": "En attente",
"queued": "Attente",
"movies": "Films",
"missing": "Manquant"
},
@ -103,10 +114,10 @@
"wait": "Veuillez patienter"
},
"overseerr": {
"pending": "En attente",
"pending": "Attente",
"approved": "Demande",
"available": "Disponible",
"processing": "En traitement"
"processing": "Traitement"
},
"sabnzbd": {
"rate": "Débit",
@ -293,7 +304,10 @@
"update_available": "Mise à jour disponible",
"up_to_date": "À jour",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approuvé",
@ -531,5 +545,11 @@
"gross_percent_today": "Aujourd'hui",
"gross_percent_1y": "Un an",
"gross_percent_max": "Depuis le début"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livres",
"podcastsDuration": "Durée",
"booksDuration": "Durée"
}
}

View File

@ -32,13 +32,24 @@
"cpu": "מעבד",
"offline": "כבוי",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "מנגן",
"transcoding": "מקודד",
"bitrate": "סיביות",
"no_active": "אין הזרמות פעילות"
"no_active": "אין הזרמות פעילות",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "מנגן",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -83,13 +83,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"changedetectionio": {
"totalObserved": "Total Observed",
@ -297,7 +308,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -73,13 +73,24 @@
"cpu": "CPU",
"offline": "Nepovezan",
"error": "Greška",
"unknown": "Nepoznato"
"unknown": "Nepoznato",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Reprodukcija",
"transcoding": "Prekodiranje",
"bitrate": "Stopa bitova",
"no_active": "Nema aktivnih prijenosa"
"no_active": "Nema aktivnih prijenosa",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Reprodukcija",
@ -293,7 +304,10 @@
"update_available": "Dostupna je nova verzija",
"up_to_date": "Aktualno",
"child_bridges": "Podređeni mosotvi",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"rejectedPushes": "Odbijeno",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -14,7 +14,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"unhealthy": "Unhealthy",
"running": "Running",
"starting": "Starting",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"lidarr": {
"albums": "Albumok",
@ -52,7 +59,11 @@
"playing": "Lejátszás",
"transcoding": "Átkódolás",
"bitrate": "Bitráta",
"no_active": "Nincs aktív lejátszás"
"no_active": "Nincs aktív lejátszás",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Lejátszás folyamatban",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -6,13 +6,24 @@
"offline": "Offline",
"rx": "RX",
"error": "Errore",
"unknown": "Sconosciuto"
"unknown": "Sconosciuto",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "In riproduzione",
"transcoding": "Transcodifica",
"bitrate": "Bitrate",
"no_active": "Nessuno Stream Attivo"
"no_active": "Nessuno Stream Attivo",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "In riproduzione",
@ -293,7 +304,10 @@
"update_available": "Aggiornamento Disponibile",
"up_to_date": "Aggiornato",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approvato",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -84,7 +84,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"ping": {
"error": "Error",
@ -94,7 +101,11 @@
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Download",
@ -351,7 +362,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_max": "All time",
"gross_percent_today": "Today",
"gross_percent_1y": "One year"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

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

View File

@ -53,7 +53,14 @@
"cpu": "CPU",
"offline": "Bezsaistē",
"error": "Kļūda",
"unknown": "Nezināms"
"unknown": "Nezināms",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"ping": {
"error": "Kļūda",
@ -63,7 +70,11 @@
"playing": "Atskaņo",
"transcoding": "Pārkodē",
"bitrate": "Bitrate",
"no_active": "Nav aktīvu straumju"
"no_active": "Nav aktīvu straumju",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"flood": {
"download": "Lejupielāde",
@ -345,7 +356,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -158,7 +158,14 @@
"cpu": "CPU",
"offline": "Luar talian",
"error": "Ralat",
"unknown": "Tidak Diketahui"
"unknown": "Tidak Diketahui",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"changedetectionio": {
"totalObserved": "Jumlah Diperhatikan",
@ -168,7 +175,11 @@
"playing": "Sedang dimainkan",
"transcoding": "Transkoding",
"bitrate": "Kadar bit",
"no_active": "Tiada Strim Aktif"
"no_active": "Tiada Strim Aktif",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Sedang Dimainkan",
@ -293,7 +304,10 @@
"updates": "Kemaskini",
"update_available": "Kemaskini Tersedia",
"up_to_date": "Terkemaskini",
"child_bridges": "Jambatan Anak"
"child_bridges": "Jambatan Anak",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Terimbas",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "Prosessor",
"offline": "Frakoblet",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"exited": "Exited",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Spiller",
"transcoding": "Transkoding",
"bitrate": "Bitrate",
"no_active": "Ingen aktive strømmer"
"no_active": "Ingen aktive strømmer",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Spiller",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -23,7 +23,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Fout",
"unknown": "Onbekend"
"unknown": "Onbekend",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"speedtest": {
"upload": "Upload",
@ -48,7 +55,11 @@
"playing": "Afspelen",
"transcoding": "Transcodering",
"bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Steams"
"no_active": "Geen Actieve Steams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Afspelen",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -20,7 +20,11 @@
"no_active": "Brak aktywnych strumieni",
"playing": "Odtwarzanie",
"transcoding": "Transkodowanie",
"bitrate": "Bitrate"
"bitrate": "Bitrate",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Odtwarzanie",
@ -66,7 +70,14 @@
"cpu": "Procesor",
"offline": "Offline",
"error": "Błąd",
"unknown": "Nieznany"
"unknown": "Nieznany",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"nzbget": {
"rate": "Szybkość",
@ -293,7 +304,10 @@
"update_available": "Dostępna aktualizacja",
"up_to_date": "Aktualny",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Zaakceptowane",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -60,13 +60,24 @@
"cpu": "CPU",
"offline": "Desligado",
"error": "Erro",
"unknown": "Desconhecido"
"unknown": "Desconhecido",
"running": "Executando",
"starting": "Iniciando",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"partial": "Parcial",
"healthy": "Saudável"
},
"emby": {
"playing": "Reproduzindo",
"transcoding": "Transcodificando",
"bitrate": "Taxa de bits",
"no_active": "Sem transmissões ativas"
"no_active": "Sem transmissões ativas",
"movies": "Filmes",
"series": "Séries",
"episodes": "Episódios",
"songs": "Musicas"
},
"tautulli": {
"playing": "Reproduzindo",
@ -135,7 +146,7 @@
"pihole": {
"queries": "Consultas",
"blocked": "Bloqueados",
"gravity": "Gravity"
"gravity": "Gravidade"
},
"adguard": {
"queries": "Consultas",
@ -284,7 +295,7 @@
"service": "Serviço",
"search": "Busca",
"custom": "Personalizado",
"visit": "Visit",
"visit": "Visitar",
"url": "URL"
},
"homebridge": {
@ -293,7 +304,10 @@
"update_available": "Atualização Disponível",
"up_to_date": "Atualizado",
"child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Aprovado",
@ -497,8 +511,8 @@
"failed": "Falha"
},
"unmanic": {
"active_workers": "Workers Ativos",
"total_workers": "Total Workers",
"active_workers": "Trabalhadores Ativos",
"total_workers": "Total Trabalhadores",
"records_total": "Comprimento da Fila"
},
"healthchecks": {
@ -516,20 +530,26 @@
"nodes": "Nós"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
"targets_up": "Alvo ativo",
"targets_down": "Alvo inativo",
"targets_total": "Alvos totais"
},
"minecraft": {
"players": "Players",
"version": "Version",
"players": "Reprodutores",
"version": "Versão",
"status": "Status",
"up": "Online",
"down": "Offline"
"up": "Conectado",
"down": "Desconectado"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
"gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano",
"gross_percent_max": "Todo periodo"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Livros",
"podcastsDuration": "Duração",
"booksDuration": "Duração"
}
}

View File

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

View File

@ -14,7 +14,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"jellyseerr": {
"approved": "Aprobate",
@ -65,10 +72,10 @@
"missing_type": "Lipsește Tipul de Widget: {{type}}",
"api_error": "Eroare API",
"status": "Status",
"information": "Information",
"information": "Informație",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"raw_error": "Eroare Raw",
"response_data": "Date de raspuns"
},
"search": {
"placeholder": "Caută…"
@ -88,7 +95,11 @@
"playing": "Activ",
"transcoding": "Transcodare",
"bitrate": "Bitrate",
"no_active": "Niciun stream activ"
"no_active": "Niciun stream activ",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"sabnzbd": {
"rate": "Rată",
@ -199,13 +210,13 @@
"wlan_users": "Utilizatori WLAN",
"up": "Pornit",
"down": "Oprit",
"wait": "Va rugam asteptati",
"wait": "Vă rugăm așteptați",
"lan": "LAN",
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
"devices": "Dispozitive",
"lan_devices": "Dispozitive LAN",
"wlan_devices": "Dispozitive WLAN",
"empty_data": "Starea subsistemului este necunoscut"
},
"plex": {
"streams": "Fluxuri active",
@ -293,7 +304,10 @@
"child_bridges": "Child Bridges",
"available_update": "System",
"updates": "Updates",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -377,7 +391,7 @@
"no_devices": "No Device Data Received"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibyterate": "{{valoare, rata(bits: fals; binar: adevarat)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
@ -494,12 +508,12 @@
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
"failed": "Eșuat"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
"active_workers": "Muncitori activi",
"total_workers": "Muncitori totali",
"records_total": "Lungimea cozii"
},
"healthchecks": {
"new": "New",
@ -512,8 +526,8 @@
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
"servers": "Servere",
"nodes": "Noduri"
},
"prometheus": {
"targets_up": "Targets Up",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "Процессор",
"offline": "Не в сети",
"error": "Ошибка",
"unknown": "Неизвестный"
"unknown": "Неизвестный",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Воспроизведение",
"transcoding": "Транскодирование",
"bitrate": "Битрейт",
"no_active": "Нет активных потоков"
"no_active": "Нет активных потоков",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Воспроизведение",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges_status": "{{ok}}/{{total}}",
"child_bridges": "Child Bridges"
"child_bridges": "Child Bridges",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

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

View File

@ -49,13 +49,24 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Playing",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -29,7 +29,14 @@
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"exited": "Exited",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"partial": "Partial",
"healthy": "Healthy"
},
"search": {
"placeholder": "Sök…"
@ -38,7 +45,11 @@
"playing": "Spelar",
"transcoding": "Omkodning",
"bitrate": "Bitrate",
"no_active": "Inga aktiva strömmar"
"no_active": "Inga aktiva strömmar",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Spelar",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -49,13 +49,24 @@
"cpu": "సీపియూ",
"offline": "ఆఫ్‌లైన్",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "ఆడుతున్నారు",
"transcoding": "ట్రాన్స్‌కోడింగ్",
"bitrate": "బిట్రేట్",
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు"
"no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "ఆడుతున్నారు",
@ -293,7 +304,10 @@
"update_available": "అందుబాటులో నవీకరణ",
"up_to_date": "తాజాగా",
"child_bridges": "పిల్ల వంతెనలు",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"rejectedPushes": "తిరస్కరించారు",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -42,7 +42,14 @@
"cpu": "ซีพียู",
"offline": "ออฟไลน์",
"error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ"
"unknown": "ไม่ทราบ",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
@ -99,7 +106,11 @@
"playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่"
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่",
"movies": "Movies",
"series": "Series",
"songs": "Songs",
"episodes": "Episodes"
},
"deluge": {
"download": "ดาวน์โหลด",
@ -365,7 +376,10 @@
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System"
"available_update": "System",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"watchtower": {
"containers_scanned": "Scanned",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -49,13 +49,24 @@
"cpu": "İşlemci",
"offline": "Çevrimdışı",
"error": "Hata",
"unknown": "Bilinmiyor"
"unknown": "Bilinmiyor",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı",
"no_active": "Aktif akış yok"
"no_active": "Aktif akış yok",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Oynatılıyor",
@ -293,7 +304,10 @@
"update_available": "Güncelleme Kullanılabilir",
"up_to_date": "Güncel",
"child_bridges": "Alt Köprüler",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Onaylandı",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -154,7 +154,14 @@
"cpu": "CPU",
"offline": "Офлайн",
"error": "Помилка",
"unknown": "Невідомий"
"unknown": "Невідомий",
"starting": "Запуск",
"unhealthy": "Нездоровий",
"not_found": "Не знайдено",
"exited": "Вийшов",
"partial": "Частковий",
"running": "Запущено",
"healthy": "Здоров'я"
},
"ping": {
"error": "Помилка",
@ -164,7 +171,11 @@
"playing": "Відтворення",
"transcoding": "Перекодування",
"bitrate": "Бітрейт",
"no_active": "Немає активних потоків"
"no_active": "Немає активних потоків",
"movies": "Фільми",
"series": "Серії",
"episodes": "Епізоди",
"songs": "Пісні"
},
"flood": {
"download": "Завантаження",
@ -355,7 +366,10 @@
"child_bridges_status": "{{ok}}/{{total}}",
"update_available": "Доступне оновлення",
"up_to_date": "Актуально",
"child_bridges": "Дитячі мости"
"child_bridges": "Дитячі мости",
"up": "Вгору",
"pending": "В очікуванні",
"down": "Вниз"
},
"watchtower": {
"containers_scanned": "Відскановано",
@ -531,5 +545,11 @@
"gross_percent_today": "Сьогодні",
"gross_percent_1y": "Один рік",
"gross_percent_max": "Весь час"
},
"audiobookshelf": {
"podcasts": "Подкасти",
"books": "Книжки",
"podcastsDuration": "Тривалість",
"booksDuration": "Тривалість"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "CPU",
"offline": "Ngoại tuyến",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "Đang chơi",
"transcoding": "Chuyển định dạng",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "Đang chơi",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"down": "Down",
"pending": "Pending"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -3,7 +3,11 @@
"transcoding": "轉碼緊",
"bitrate": "比特率",
"playing": "播放緊",
"no_active": "無任何活動"
"no_active": "無任何活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "播放緊",
@ -50,7 +54,14 @@
"cpu": "處理器",
"offline": "離線",
"error": "Error",
"unknown": "Unknown"
"unknown": "Unknown",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"nzbget": {
"rate": "速度",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -26,13 +26,24 @@
"cpu": "处理器",
"offline": "离线",
"error": "错误",
"unknown": "未知"
"unknown": "未知",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"running": "Running",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "播放中",
"transcoding": "转码",
"bitrate": "比特率",
"no_active": "暂无播放"
"no_active": "暂无播放",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "播放中",
@ -293,7 +304,10 @@
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "Approved",
@ -484,10 +498,10 @@
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
"cpuload": "处理器负载",
"memoryusage": "内存占用",
"freespace": "剩余空间",
"activeusers": "活跃用户"
},
"kopia": {
"status": "Status",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

@ -21,13 +21,24 @@
"mem": "記憶體",
"cpu": "處理器",
"error": "錯誤",
"unknown": "未知的"
"unknown": "未知的",
"running": "Running",
"starting": "Starting",
"unhealthy": "Unhealthy",
"not_found": "Not Found",
"exited": "Exited",
"partial": "Partial",
"healthy": "Healthy"
},
"emby": {
"playing": "正在播放",
"transcoding": "轉碼",
"bitrate": "位元率",
"no_active": "無播放活動"
"no_active": "無播放活動",
"movies": "Movies",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
},
"tautulli": {
"playing": "正在播放",
@ -293,7 +304,10 @@
"update_available": "有可用的更新",
"up_to_date": "已更新至最新",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pending",
"down": "Down"
},
"autobrr": {
"approvedPushes": "已核准",
@ -531,5 +545,11 @@
"gross_percent_today": "Today",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Books",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
}
}

View File

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

View File

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

View File

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

View File

@ -29,12 +29,12 @@ export default function Disk({ options, expanded }) {
<FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div>
</span>
)}
@ -51,12 +51,12 @@ export default function Disk({ options, expanded }) {
<FiHardDrive className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">{t("common.bytes", { value: data.drive.freeGb * 1024 * 1024 * 1024 })}</div>
<div className="pl-0.5 pr-1">{t("common.bytes", { value: data.drive.freeGb * 1024 * 1024 * 1024 })}</div>
<div className="pr-1">{t("resources.free")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">{t("common.bytes", { value: data.drive.totalGb * 1024 * 1024 * 1024 })}</div>
<div className="pl-0.5 pr-1">{t("common.bytes", { value: data.drive.totalGb * 1024 * 1024 * 1024 })}</div>
<div className="pr-1">{t("resources.total")}</div>
</span>
)}

View File

@ -29,12 +29,12 @@ export default function Memory({ expanded }) {
<FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.free")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">-</div>
<div className="pl-0.5 pr-1">-</div>
<div className="pr-1">{t("resources.total")}</div>
</span>
)}
@ -51,14 +51,14 @@ export default function Memory({ expanded }) {
<FaMemory className="text-theme-800 dark:text-theme-200 w-5 h-5" />
<div className="flex flex-col ml-3 text-left min-w-[85px]">
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
<div className="pl-0.5 pr-1">
{t("common.bytes", { value: data.memory.freeMemMb * 1024 * 1024, maximumFractionDigits: 1, binary: true })}
</div>
<div className="pr-1">{t("resources.free")}</div>
</span>
{expanded && (
<span className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">
<div className="pl-0.5 pr-1">
{t("common.bytes", {
value: data.memory.totalMemMb * 1024 * 1024,
maximumFractionDigits: 1,

View File

@ -247,7 +247,9 @@ export function cleanServiceGroups(groups) {
namespace, // kubernetes widget
app,
podSelector,
wan // opnsense widget
wan, // opnsense widget,
enableBlocks, // emby/jellyfin
enableNowPlaying
} = cleanedService.widget;
const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields;
@ -278,6 +280,10 @@ export function cleanServiceGroups(groups) {
if (type === "opnsense") {
if (wan) cleanedService.widget.wan = wan;
}
if (type === "emby" || type === "jellyfin") {
if (enableBlocks) cleanedService.widget.enableBlocks = enableBlocks === 'true';
if (enableNowPlaying) cleanedService.widget.enableNowPlaying = enableNowPlaying === 'true';
}
}
return cleanedService;

View File

@ -48,6 +48,12 @@ export default async function credentialedProxyHandler(req, res, map) {
headers.Authorization = `Token ${widget.key}`;
} else if (widget.type === "miniflux") {
headers["X-Auth-Token"] = `${widget.key}`;
} else if (widget.type === "nextcloud") {
if (widget.key) {
headers["NC-Token"] = `${widget.key}`;
} else {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
} else {
headers["X-API-Key"] = `${widget.key}`;
}

View File

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

View File

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

View File

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

View File

@ -2,6 +2,7 @@ import dynamic from "next/dynamic";
const components = {
adguard: dynamic(() => import("./adguard/component")),
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
authentik: dynamic(() => import("./authentik/component")),
autobrr: dynamic(() => import("./autobrr/component")),
bazarr: dynamic(() => import("./bazarr/component")),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,5 @@
import adguard from "./adguard/widget";
import audiobookshelf from "./audiobookshelf/widget";
import authentik from "./authentik/widget";
import autobrr from "./autobrr/widget";
import bazarr from "./bazarr/widget";
@ -76,6 +77,7 @@ import xteve from "./xteve/widget";
const widgets = {
adguard,
audiobookshelf,
authentik,
autobrr,
bazarr,