Merge branch 'dev'

This commit is contained in:
shamoon 2025-08-08 11:32:29 -04:00
commit c0ddb5f816
No known key found for this signature in database
11 changed files with 167 additions and 134 deletions

View File

@ -43,7 +43,7 @@
"mem": "MEM", "mem": "MEM",
"total": "Total", "total": "Total",
"free": "Libre", "free": "Libre",
"used": "Usado", "used": "Utilizado",
"load": "Carga", "load": "Carga",
"temp": "TEMP", "temp": "TEMP",
"max": "Máx.", "max": "Máx.",
@ -61,9 +61,9 @@
"wlan_devices": "Dispositivos WLAN", "wlan_devices": "Dispositivos WLAN",
"lan_users": "Usuarios LAN", "lan_users": "Usuarios LAN",
"wlan_users": "Usuarios WLAN", "wlan_users": "Usuarios WLAN",
"up": "UP", "up": "ACTIVO",
"down": "CAÍDO", "down": "CAÍDO",
"wait": "Please wait", "wait": "Espere, por favor",
"empty_data": "Se desconoce el estado del subsistema" "empty_data": "Se desconoce el estado del subsistema"
}, },
"docker": { "docker": {
@ -168,10 +168,10 @@
"passes": "Pases" "passes": "Pases"
}, },
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "Reproduciendo",
"transcoding": "Transcoding", "transcoding": "Transcodificando",
"bitrate": "Bitrate", "bitrate": "Tasa de bits",
"no_active": "No Active Streams", "no_active": "Sin transmisiones activas",
"plex_connection_error": "Comprueba la conexión a Plex" "plex_connection_error": "Comprueba la conexión a Plex"
}, },
"omada": { "omada": {
@ -189,7 +189,7 @@
"plex": { "plex": {
"streams": "Transmisiones activas", "streams": "Transmisiones activas",
"albums": "Álbumes", "albums": "Álbumes",
"movies": "Movies", "movies": "Películas",
"tv": "Series" "tv": "Series"
}, },
"sabnzbd": { "sabnzbd": {
@ -199,20 +199,20 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Activo", "active": "Activo",
"upload": "Upload", "upload": "Subida",
"download": "Download" "download": "Descarga"
}, },
"transmission": { "transmission": {
"download": "Download", "download": "Descarga",
"upload": "Upload", "upload": "Subida",
"leech": "Leech", "leech": "Descargando",
"seed": "Seed" "seed": "Semillas"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "Descarga",
"upload": "Upload", "upload": "Subida",
"leech": "Leech", "leech": "Descargando",
"seed": "Seed" "seed": "Semillas"
}, },
"qnap": { "qnap": {
"cpuUsage": "Uso de la CPU", "cpuUsage": "Uso de la CPU",
@ -223,44 +223,44 @@
"invalid": "No válido" "invalid": "No válido"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Descarga",
"upload": "Upload", "upload": "Subida",
"leech": "Leech", "leech": "Descargando",
"seed": "Seed" "seed": "Semillas"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Bytes encontrados en caché", "cachehitbytes": "Bytes encontrados en caché",
"cachemissbytes": "Bytes faltantes en caché" "cachemissbytes": "Bytes faltantes en caché"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Descarga",
"upload": "Upload", "upload": "Subida",
"leech": "Leech", "leech": "Descargando",
"seed": "Seed" "seed": "Semillas"
}, },
"sonarr": { "sonarr": {
"wanted": "Buscando", "wanted": "Buscando",
"queued": "En cola", "queued": "En cola",
"series": "Series", "series": "Series",
"queue": "Queue", "queue": "Cola",
"unknown": "Unknown" "unknown": "Desconocido"
}, },
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "Buscando",
"missing": "Faltantes", "missing": "Faltantes",
"queued": "Queued", "queued": "En cola",
"movies": "Movies", "movies": "Películas",
"queue": "Queue", "queue": "Cola",
"unknown": "Unknown" "unknown": "Desconocido"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "Buscando",
"queued": "Queued", "queued": "En cola",
"artists": "Artistas" "artists": "Artistas"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "Buscando",
"queued": "Queued", "queued": "En cola",
"books": "Libros" "books": "Libros"
}, },
"bazarr": { "bazarr": {
@ -273,19 +273,19 @@
"available": "Disponible" "available": "Disponible"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "Pendiente",
"approved": "Approved", "approved": "Aprobado",
"available": "Available" "available": "Disponible"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Pendiente",
"processing": "Procesando", "processing": "Procesando",
"approved": "Approved", "approved": "Aprobado",
"available": "Available" "available": "Disponible"
}, },
"netalertx": { "netalertx": {
"total": "Total", "total": "Total",
"connected": "Connected", "connected": "Conectado",
"new_devices": "Nuevos dispositivos", "new_devices": "Nuevos dispositivos",
"down_alerts": "Alertas de caída" "down_alerts": "Alertas de caída"
}, },
@ -296,26 +296,26 @@
"gravity": "Gravity" "gravity": "Gravity"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Consultas",
"blocked": "Blocked", "blocked": "Bloqueado",
"filtered": "Filtrado", "filtered": "Filtrado",
"latency": "Latencia" "latency": "Latencia"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Subida",
"download": "Download", "download": "Descarga",
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Running", "running": "En ejecución",
"stopped": "Detenido", "stopped": "Detenido",
"total": "Total" "total": "Total"
}, },
"suwayomi": { "suwayomi": {
"download": "Downloaded", "download": "Descargado",
"nondownload": "No descargado", "nondownload": "No descargado",
"read": "Read", "read": "Leído",
"unread": "Unread", "unread": "Sin leer",
"downloadedread": "Descargado y leído", "downloadedread": "Descargado y leído",
"downloadedunread": "Descargado y no leído", "downloadedunread": "Descargado y no leído",
"nondownloadedread": "No descargado y leído", "nondownloadedread": "No descargado y leído",
@ -336,7 +336,7 @@
"ago": "Hace {{value}}" "ago": "Hace {{value}}"
}, },
"technitium": { "technitium": {
"totalQueries": "Queries", "totalQueries": "Consultas",
"totalNoError": "Éxitos", "totalNoError": "Éxitos",
"totalServerFailure": "Fallas", "totalServerFailure": "Fallas",
"totalNxDomain": "Dominios NX", "totalNxDomain": "Dominios NX",
@ -370,8 +370,8 @@
"please_wait": "Por favor, espera" "please_wait": "Por favor, espera"
}, },
"npm": { "npm": {
"enabled": "Activado", "enabled": "Activos",
"disabled": "Desactivado", "disabled": "Inactivos",
"total": "Total" "total": "Total"
}, },
"coinmarketcap": { "coinmarketcap": {
@ -383,19 +383,19 @@
}, },
"gotify": { "gotify": {
"apps": "Aplicaciones", "apps": "Aplicaciones",
"clients": "Clients", "clients": "Clientes",
"messages": "Mensajes" "messages": "Mensajes"
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexadores", "enableIndexers": "Indexadores",
"numberOfGrabs": "Capturas", "numberOfGrabs": "Capturas",
"numberOfQueries": "Queries", "numberOfQueries": "Consultas",
"numberOfFailGrabs": "Capturas fallidas", "numberOfFailGrabs": "Capturas fallidas",
"numberOfFailQueries": "Consultas fallidas" "numberOfFailQueries": "Consultas fallidas"
}, },
"jackett": { "jackett": {
"configured": "Configurado", "configured": "Configurado",
"errored": "Errored" "errored": "Con fallo"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sesiones", "numActiveSessions": "Sesiones",
@ -529,9 +529,9 @@
"up_to_date": "Actualizado", "up_to_date": "Actualizado",
"child_bridges": "Bridges secundarios", "child_bridges": "Bridges secundarios",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Activo",
"pending": "Pending", "pending": "Pendiente",
"down": "Down" "down": "Inactivo"
}, },
"healthchecks": { "healthchecks": {
"new": "Nuevo", "new": "Nuevo",
@ -647,7 +647,7 @@
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "IP de origen", "origin_ip": "IP de origen",
"status": "Status" "status": "Estado"
}, },
"pfsense": { "pfsense": {
"load": "Promedio de carga", "load": "Promedio de carga",
@ -700,8 +700,8 @@
"wanted": "Wanted" "wanted": "Wanted"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Álbumes",
"photos": "Photos", "photos": "Fotos",
"videos": "Videos", "videos": "Videos",
"people": "Personas" "people": "Personas"
}, },
@ -776,16 +776,16 @@
"updates": "Updates" "updates": "Updates"
}, },
"calibreweb": { "calibreweb": {
"books": "Books", "books": "Libros",
"authors": "Autores", "authors": "Autores",
"categories": "Categories", "categories": "Categorías",
"series": "Series" "series": "Series"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue", "downloadCount": "En cola",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Restante",
"downloadTotalBytes": "Size", "downloadTotalBytes": "Tamaño",
"downloadSpeed": "Speed" "downloadSpeed": "Velocidad"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Series",
@ -930,9 +930,9 @@
"bans": "Baneos" "bans": "Baneos"
}, },
"wgeasy": { "wgeasy": {
"connected": "Connected", "connected": "Conectados",
"enabled": "Enabled", "enabled": "Activo",
"disabled": "Disabled", "disabled": "Inactivos",
"total": "Total" "total": "Total"
}, },
"swagdashboard": { "swagdashboard": {
@ -1042,14 +1042,14 @@
}, },
"slskd": { "slskd": {
"slskStatus": "Network", "slskStatus": "Network",
"connected": "Connected", "connected": "Conectado",
"disconnected": "Disconnected", "disconnected": "Desconectado",
"updateStatus": "Actualización", "updateStatus": "Actualización",
"update_yes": "Available", "update_yes": "Disponible",
"update_no": "Up to Date", "update_no": "Actualizado",
"downloads": "Descargas", "downloads": "Descargas",
"uploads": "Subidas", "uploads": "Subidas",
"sharedFiles": "Files" "sharedFiles": "Compartidos"
}, },
"jellystat": { "jellystat": {
"songs": "Songs", "songs": "Songs",

View File

@ -451,7 +451,7 @@
"crit": "Krytyczyny", "crit": "Krytyczyny",
"read": "Read", "read": "Read",
"write": "Zapis", "write": "Zapis",
"gpu": "Karta graficzna", "gpu": "GPU",
"mem": "Pamięć", "mem": "Pamięć",
"swap": "Swap" "swap": "Swap"
}, },

View File

@ -241,7 +241,7 @@
"sonarr": { "sonarr": {
"wanted": "Розыск", "wanted": "Розыск",
"queued": "В очереди", "queued": "В очереди",
"series": "Серии", "series": "Сериалы",
"queue": "Очередь", "queue": "Очередь",
"unknown": "Неизвестно" "unknown": "Неизвестно"
}, },

View File

@ -421,7 +421,7 @@
"down": "Offline" "down": "Offline"
}, },
"miniflux": { "miniflux": {
"read": "Okunmayan", "read": "Okunm",
"unread": "Okunmamış" "unread": "Okunmamış"
}, },
"authentik": { "authentik": {

View File

@ -112,7 +112,7 @@
"offline_alt": "Offline", "offline_alt": "Offline",
"online": "Онлайн", "online": "Онлайн",
"total": "Total", "total": "Total",
"unknown": "Unknown" "unknown": "Невідомо"
}, },
"evcc": { "evcc": {
"pv_power": "Виробництво", "pv_power": "Виробництво",

View File

@ -63,7 +63,7 @@
"wlan_users": "无线局域网用户", "wlan_users": "无线局域网用户",
"up": "UP", "up": "UP",
"down": "离线", "down": "离线",
"wait": "请稍", "wait": "请稍",
"empty_data": "子系统状态未知" "empty_data": "子系统状态未知"
}, },
"docker": { "docker": {
@ -83,19 +83,19 @@
"partial": "部分" "partial": "部分"
}, },
"ping": { "ping": {
"error": "Error", "error": "错误",
"ping": "Ping", "ping": "延迟",
"down": "Down", "down": "离线",
"up": "Up", "up": "在线",
"not_available": "不可用" "not_available": "不可用"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "HTTP 状态", "http_status": "HTTP 状态",
"error": "Error", "error": "错误",
"response": "响应", "response": "响应",
"down": "Down", "down": "离线",
"up": "Up", "up": "在线",
"not_available": "Not Available" "not_available": "不可用"
}, },
"emby": { "emby": {
"playing": "播放中", "playing": "播放中",
@ -116,7 +116,7 @@
}, },
"evcc": { "evcc": {
"pv_power": "正式环境", "pv_power": "正式环境",
"battery_soc": "Battery", "battery_soc": "电量",
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Consumption", "home_power": "Consumption",
"charge_power": "Charger", "charge_power": "Charger",
@ -189,7 +189,7 @@
"plex": { "plex": {
"streams": "活动流", "streams": "活动流",
"albums": "专辑", "albums": "专辑",
"movies": "Movies", "movies": "电影",
"tv": "电视节目" "tv": "电视节目"
}, },
"sabnzbd": { "sabnzbd": {
@ -204,15 +204,15 @@
}, },
"transmission": { "transmission": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "下载速率",
"upload": "Upload", "upload": "上传速率",
"leech": "Leech", "leech": "下载中",
"seed": "Seed" "seed": "做种"
}, },
"qnap": { "qnap": {
"cpuUsage": "处理器", "cpuUsage": "处理器",
@ -236,31 +236,31 @@
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "做种"
}, },
"sonarr": { "sonarr": {
"wanted": "想看", "wanted": "想看",
"queued": "排队", "queued": "排队",
"series": "Series", "series": "系列",
"queue": "Queue", "queue": "队列",
"unknown": "Unknown" "unknown": "未知"
}, },
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "想看",
"missing": "丢失", "missing": "丢失",
"queued": "Queued", "queued": "队列中",
"movies": "Movies", "movies": "电影",
"queue": "Queue", "queue": "队列",
"unknown": "Unknown" "unknown": "未知"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "想看",
"queued": "Queued", "queued": "队列中",
"artists": "Artists" "artists": "Artists"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "想看",
"queued": "Queued", "queued": "队列中",
"books": "书籍" "books": "书籍"
}, },
"bazarr": { "bazarr": {
@ -273,7 +273,7 @@
"available": "可用" "available": "可用"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "待办的",
"approved": "Approved", "approved": "Approved",
"available": "Available" "available": "Available"
}, },
@ -437,20 +437,20 @@
}, },
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"load": "Load", "load": "负载",
"wait": "Please wait", "wait": "请稍候",
"temp": "TEMP", "temp": "温度",
"_temp": "Temp", "_temp": "Temp",
"warn": "Warn", "warn": "Warn",
"uptime": "UP", "uptime": "运行时间",
"total": "Total", "total": "总计",
"free": "Free", "free": "空闲",
"used": "Used", "used": "已使用",
"days": "d", "days": "",
"hours": "h", "hours": "",
"crit": "Crit", "crit": "Crit",
"read": "Read", "read": "Read",
"write": "Write", "write": "写入",
"gpu": "GPU", "gpu": "GPU",
"mem": "Mem", "mem": "Mem",
"swap": "Swap" "swap": "Swap"

View File

@ -1,5 +1,5 @@
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import { useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { WiCloudDown } from "react-icons/wi"; import { WiCloudDown } from "react-icons/wi";
import useSWR from "swr"; import useSWR from "swr";
@ -64,7 +64,7 @@ export default function OpenMeteo({ options }) {
setLocation({ latitude: options.latitude, longitude: options.longitude }); setLocation({ latitude: options.latitude, longitude: options.longitude });
} }
const requestLocation = () => { const requestLocation = useCallback(() => {
setRequesting(true); setRequesting(true);
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
navigator.geolocation.getCurrentPosition( navigator.geolocation.getCurrentPosition(
@ -82,7 +82,17 @@ export default function OpenMeteo({ options }) {
}, },
); );
} }
}; }, []);
useEffect(() => {
if (!options.latitude && !options.longitude && typeof navigator !== "undefined") {
navigator.permissions?.query({ name: "geolocation" }).then((result) => {
if (result.state === "granted") {
requestLocation();
}
});
}
}, [options.latitude, options.longitude, requestLocation]);
if (!location) { if (!location) {
return ( return (

View File

@ -1,5 +1,5 @@
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import { useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { WiCloudDown } from "react-icons/wi"; import { WiCloudDown } from "react-icons/wi";
import useSWR from "swr"; import useSWR from "swr";
@ -59,7 +59,7 @@ export default function OpenWeatherMap({ options }) {
setLocation({ latitude: options.latitude, longitude: options.longitude }); setLocation({ latitude: options.latitude, longitude: options.longitude });
} }
const requestLocation = () => { const requestLocation = useCallback(() => {
setRequesting(true); setRequesting(true);
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
navigator.geolocation.getCurrentPosition( navigator.geolocation.getCurrentPosition(
@ -77,7 +77,17 @@ export default function OpenWeatherMap({ options }) {
}, },
); );
} }
}; }, []);
useEffect(() => {
if (!options.latitude && !options.longitude && typeof navigator !== "undefined") {
navigator.permissions?.query({ name: "geolocation" }).then((result) => {
if (result.state === "granted") {
requestLocation();
}
});
}
}, [options.latitude, options.longitude, requestLocation]);
if (!location) { if (!location) {
return ( return (

View File

@ -1,5 +1,5 @@
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import { useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { WiCloudDown } from "react-icons/wi"; import { WiCloudDown } from "react-icons/wi";
import useSWR from "swr"; import useSWR from "swr";
@ -63,7 +63,7 @@ export default function WeatherApi({ options }) {
setLocation({ latitude: options.latitude, longitude: options.longitude }); setLocation({ latitude: options.latitude, longitude: options.longitude });
} }
const requestLocation = () => { const requestLocation = useCallback(() => {
setRequesting(true); setRequesting(true);
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
navigator.geolocation.getCurrentPosition( navigator.geolocation.getCurrentPosition(
@ -81,7 +81,17 @@ export default function WeatherApi({ options }) {
}, },
); );
} }
}; }, []);
useEffect(() => {
if (!options.latitude && !options.longitude && typeof navigator !== "undefined") {
navigator.permissions?.query({ name: "geolocation" }).then((result) => {
if (result.state === "granted") {
requestLocation();
}
});
}
}, [options.latitude, options.longitude, requestLocation]);
if (!location) { if (!location) {
return ( return (

View File

@ -24,7 +24,7 @@ export default function Component({ service }) {
<Container service={service}> <Container service={service}>
<div <div
className={classNames( className={classNames(
"bg-theme-200/50 dark:bg-theme-900/20 rounded-sm m-1 flex-1 flex flex-col items-center justify-center text-center", "bg-theme-200/50 dark:bg-theme-900/20 rounded-sm m-1 flex-1 flex flex-col items-center justify-center text-center scheme-light",
"service-block", "service-block",
)} )}
> >

View File

@ -23,10 +23,13 @@ export default function Component({ service }) {
</Container> </Container>
); );
} }
const space = spaceData.results ? spaceData.results[0] : spaceData[0];
return ( return (
<Container service={service}> <Container service={service}>
<Block label="tandoor.users" value={spaceData[0]?.user_count} /> <Block label="tandoor.users" value={space?.user_count} />
<Block label="tandoor.recipes" value={spaceData[0]?.recipe_count} /> <Block label="tandoor.recipes" value={space?.recipe_count} />
<Block label="tandoor.keywords" value={keywordData.count} /> <Block label="tandoor.keywords" value={keywordData.count} />
</Container> </Container>
); );