diff --git a/web/public/locales/es/common.json b/web/public/locales/es/common.json index b8b44f2c12..a1957c06bb 100644 --- a/web/public/locales/es/common.json +++ b/web/public/locales/es/common.json @@ -155,7 +155,8 @@ "id": "Bahasa Indonesia (Indonesio)", "ur": "اردو (Urdu)", "hr": "Hrvatski (Croata)", - "bs": "Bosanski (Bosnio)" + "bs": "Bosanski (Bosnio)", + "zhHant": "繁體中文 (Chino Tradicional)" }, "appearance": "Apariencia", "darkMode": { @@ -333,5 +334,8 @@ "internalID": "La ID interna que usa Frigate en la configuración y en la base de datos" }, "no_items": "No hay elementos", - "validation_errors": "Errores de validación" + "validation_errors": "Errores de validación", + "credentialField": { + "savedPlaceholder": "Guardado — déjalo en blanco para mantener el actual" + } } diff --git a/web/public/locales/es/components/player.json b/web/public/locales/es/components/player.json index c277d9a5a2..e650046466 100644 --- a/web/public/locales/es/components/player.json +++ b/web/public/locales/es/components/player.json @@ -48,5 +48,6 @@ } }, "livePlayerRequiredIOSVersion": "Se requiere iOS 17.1 o superior para este tipo de transmisión en vivo.", - "noRecordingsFoundForThisTime": "No se encontraron grabaciones para este momento" + "noRecordingsFoundForThisTime": "No se encontraron grabaciones para este momento", + "cameraOff": "La cámara está apagada" } diff --git a/web/public/locales/es/config/cameras.json b/web/public/locales/es/config/cameras.json index ae0b7437fd..5db4689856 100644 --- a/web/public/locales/es/config/cameras.json +++ b/web/public/locales/es/config/cameras.json @@ -896,7 +896,7 @@ }, "timestamp_style": { "label": "Estilo de marca de tiempo", - "description": "Opciones de estilo para marcas de tiempo integradas aplicadas a grabaciones e instantáneas.", + "description": "Opciones de estilo para las marcas de tiempo aplicadas a las instantáneas y a la vista de depuración.", "position": { "label": "Posición de marca de tiempo", "description": "Posición de la marca de tiempo en la imagen (tl/tr/bl/br)." diff --git a/web/public/locales/es/config/global.json b/web/public/locales/es/config/global.json index a6931ba473..49606cff7a 100644 --- a/web/public/locales/es/config/global.json +++ b/web/public/locales/es/config/global.json @@ -610,7 +610,7 @@ "description": "Carácter usado para separar varios valores proporcionados en las cabeceras del proxy." }, "default_role": { - "description": "Rol predeterminado asignado a los usuarios autenticados por proxy cuando no se aplica ningún mapeo de roles (administrador o espectador).", + "description": "Rol predeterminado asignado a los usuarios autenticados mediante proxy cuando no se aplica ninguna asignación de roles.", "label": "Rol predeterminado" }, "description": "Configuración para integrar Frigate detrás de un proxy inverso que transmite encabezados de usuario autenticados.", diff --git a/web/public/locales/es/config/validation.json b/web/public/locales/es/config/validation.json index b78ae972f3..dc35c3e1bb 100644 --- a/web/public/locales/es/config/validation.json +++ b/web/public/locales/es/config/validation.json @@ -28,5 +28,8 @@ "header_map": { "roleHeaderRequired": "Se requiere el encabezado de rol cuando hay mapeos de roles configurados." } + }, + "detect": { + "dimensionMustBeEven": "Debe ser un número par." } } diff --git a/web/public/locales/es/views/chat.json b/web/public/locales/es/views/chat.json index 876ee2707d..7fe10c75be 100644 --- a/web/public/locales/es/views/chat.json +++ b/web/public/locales/es/views/chat.json @@ -65,5 +65,8 @@ "active": "Razonando…", "show": "Mostrar razonamiento", "hide": "Ocultar razonamiento" + }, + "thinking": { + "toggle": "Alternar razonamiento" } } diff --git a/web/public/locales/es/views/live.json b/web/public/locales/es/views/live.json index 2052b3698f..877e3ef63b 100644 --- a/web/public/locales/es/views/live.json +++ b/web/public/locales/es/views/live.json @@ -57,7 +57,9 @@ }, "camera": { "enable": "Habilitar cámara", - "disable": "Deshabilitar cámara" + "disable": "Deshabilitar cámara", + "turnOn": "Encender cámara", + "turnOff": "Apagar cámara" }, "muteCameras": { "enable": "Silenciar todas las cámaras", @@ -151,7 +153,8 @@ "snapshots": "Capturas de pantalla", "autotracking": "Seguimiento automático", "cameraEnabled": "Cámara habilitada", - "transcription": "Transcripción de Audio" + "transcription": "Transcripción de Audio", + "camera": "Cámara" }, "history": { "label": "Mostrar grabaciones históricas" diff --git a/web/public/locales/es/views/motionSearch.json b/web/public/locales/es/views/motionSearch.json index 45b1ddca90..4f62bb82c2 100644 --- a/web/public/locales/es/views/motionSearch.json +++ b/web/public/locales/es/views/motionSearch.json @@ -26,7 +26,9 @@ "points_many": "{{count}} puntos", "points_other": "{{count}} puntos", "undo": "Deshacer el último punto", - "reset": "Restablecer polígono" + "reset": "Restablecer polígono", + "drawMode": "Dibujar", + "moveMode": "Mover" }, "motionHeatmapLabel": "Mapa de calor de movimiento", "dialog": { diff --git a/web/public/locales/es/views/settings.json b/web/public/locales/es/views/settings.json index 7dc10c8a63..2bc82a483b 100644 --- a/web/public/locales/es/views/settings.json +++ b/web/public/locales/es/views/settings.json @@ -32,7 +32,7 @@ "enrichments": "Análisis avanzado", "triggers": "Disparadores", "roles": "Rols", - "cameraManagement": "Administración", + "cameraManagement": "Gestión de cámaras", "cameraReview": "Revisar", "general": "General", "globalConfig": "Configuración Global", @@ -727,7 +727,8 @@ "notificationUnavailable": { "title": "Notificaciones no disponibles", "documentation": "Leer la documentación", - "desc": "Las notificaciones push web requieren un contexto seguro (https://…). Esto es una limitación del navegador. Accede a Frigate de forma segura para usar las notificaciones." + "desc": "Las notificaciones push web requieren un contexto seguro (https://…). Esto es una limitación del navegador. Accede a Frigate de forma segura para usar las notificaciones.", + "descPwa": "En iOS, las notificaciones push web solo están disponibles cuando Frigate está instalado en la pantalla de inicio. Abre el menú Compartir, selecciona Añadir a la pantalla de inicio y, a continuación, abre Frigate desde el nuevo icono para registrar este dispositivo para las notificaciones." }, "globalSettings": { "title": "Configuración global", @@ -1091,7 +1092,7 @@ "nameLength": "El nombre de la cámara debe tener 64 caracteres o menos", "invalidCharacters": "El nombre de la cámara contiene caracteres no válidos", "nameExists": "El nombre de la cámara ya existe", - "customUrlRtspRequired": "Las URL personalizadas deben comenzar con \"rtsp://\". Se requiere configuración manual para transmisiones de cámara sin RTSP.", + "customUrlRtspRequired": "Las URL personalizadas deben comenzar por “rtsp://” o “rtsps://”. Se requiere configuración manual para flujos de cámara que no sean RTSP.", "brandOrCustomUrlRequired": "Seleccione una marca de cámara con host/IP o elija \"Otro\" con una URL personalizada" }, "description": "Ingrese los detalles de su cámara y elija probar la cámara o seleccionar manualmente la marca.", @@ -1281,13 +1282,13 @@ "selectCamera": "Seleccione una cámara", "backToSettings": "Volver a configuración de la cámara", "streams": { - "title": "Habilitar/deshabilitar cámaras", + "title": "Estado y detalles de la cámara", "desc": "Desactiva temporalmente una cámara hasta que Frigate se reinicie. Desactivar una cámara detiene por completo el procesamiento de las transmisiones de Frigate. La detección, la grabación y la depuración no estarán disponibles.
Nota: Esto no desactiva las retransmisiones de go2rtc.", "enableDesc": "Deshabilita temporalmente una cámara habilitada hasta que Frigate se reinicie. Deshabilitar una cámara detiene completamente el procesamiento de los flujos de esa cámara por parte de Frigate. La detección, la grabación y la depuración no estarán disponibles. Nota: Esto no deshabilita las retransmisiones de go2rtc.Arrastra el controlador para reordenar las cámaras tal y como aparecen en la interfaz. El orden de las cámaras habilitadas se reflejará en toda la interfaz, incluido el panel en directo y los menús desplegables de selección de cámaras.", "enableLabel": "Cámaras habilitadas", "disableLabel": "Cámaras deshabilitadas", "disableDesc": "Habilita una cámara que actualmente no está visible en la interfaz y está deshabilitada en la configuración. Es necesario reiniciar Frigate después de habilitarla.", - "enableSuccess": "{{cameraName}} se ha habilitado en la configuración. Reinicia Frigate para aplicar los cambios.", + "enableSuccess": "{{cameraName}} habilitada. Reinicia Frigate para aplicar los cambios.", "friendlyName": { "edit": "Editar nombre visible de la cámara", "title": "Editar nombre visible", @@ -1296,7 +1297,26 @@ }, "reorderHandle": "Arrastrar para reordenar", "saving": "Guardando…", - "saved": "Guardado" + "saved": "Guardado", + "details": { + "edit": "Editar detalles de la cámara", + "title": "Editar detalles de la cámara", + "description": "Actualiza el nombre visible y la URL externa usados para esta cámara en toda la interfaz de Frigate.", + "friendlyNameLabel": "Nombre visible", + "friendlyNameHelp": "Nombre descriptivo que se muestra para esta cámara en toda la interfaz de Frigate. Déjalo en blanco para usar el ID de la cámara.", + "webuiUrlLabel": "URL de la interfaz web de la cámara", + "webuiUrlHelp": "URL para acceder directamente a la interfaz web de la cámara desde la vista de depuración. Déjala en blanco para deshabilitar el enlace.", + "webuiUrlInvalid": "Debe ser una URL válida (p. ej., https://ejemplo.com)." + }, + "label": "Estado de la cámara", + "description": "Set the operating state for each camera.

On: las transmisiones se procesan con normalidad.
Off: pausa temporalmente el procesamiento. No persiste tras reinicios de Frigate.
Disabled: detiene el procesamiento y guarda el cambio en tu configuración. Es necesario reiniciar para volver a activar una cámara desactivada.

Note: Desactivar no afecta a las retransmisiones de go2rtc.

Arrastra el asa para reordenar las cámaras activas tal como aparecen en toda la interfaz, incluido el panel de Live y los menús desplegables de selección de cámara.", + "disabledSubheading": "Deshabilitado en la configuración", + "status": { + "on": "On", + "off": "Off", + "disabled": "Deshabilitado" + }, + "disableSuccess": "{{cameraName}} deshabilitada y guardada en la configuración." }, "cameraConfig": { "add": "Añadir cámara", @@ -1342,10 +1362,12 @@ "profiles": { "title": "Sobrescrituras de cámaras del perfil", "selectLabel": "Seleccionar perfil", - "description": "Configura qué cámaras se habilitan o deshabilitan cuando se activa un perfil. Las cámaras configuradas como \"Heredar\" conservan su estado base habilitado.", + "description": "Configura qué cámaras se activan o desactivan cuando se activa un perfil. Las cámaras configuradas como “Heredar” conservan su estado predeterminado.", "inherit": "Heredar", "enabled": "Habilitado", - "disabled": "Deshabilitado" + "disabled": "Deshabilitado", + "on": "Encendido", + "off": "Apagado" }, "cameraType": { "title": "Tipo de cámara", @@ -1355,7 +1377,95 @@ "dedicatedLpr": "LPR dedicada", "saveSuccess": "Se ha actualizado el tipo de cámara de {{cameraName}}. Reinicia Frigate para aplicar los cambios." }, - "description": "Añade, edita y elimina cámaras, controla qué cámaras están habilitadas y configura sobrescrituras por perfil y tipo de cámara. Para configurar flujos, detección, movimiento y otros ajustes específicos de cámara, selecciona la sección correspondiente dentro de Configuración de cámara." + "description": "Añade, edita y elimina cámaras, controla el estado de cada cámara y configura sobrescrituras por perfil y tipo de cámara. Para configurar flujos, detección, movimiento y otros ajustes específicos de cámara, selecciona la sección correspondiente dentro de Configuración de cámara.", + "clone": { + "sectionTitle": "Clonar configuración", + "sectionDescription": "Copia la configuración de una cámara a otra cámara o a una nueva.", + "button": "Clonar configuración", + "title": "Clonar configuración de la cámara", + "description": "Copia la configuración de una cámara a una o varias cámaras existentes o a una cámara nueva. La identidad de la cámara (nombre, nombre visible, URL de la interfaz web y orden de visualización) nunca se copia.", + "source": { + "label": "Cámara de origen", + "placeholder": "Selecciona una cámara de origen", + "required": "Selecciona una cámara de origen" + }, + "target": { + "legend": "Destino", + "newRadio": "Nueva cámara", + "newNameLabel": "Nombre de la cámara", + "newNamePlaceholder": "p. ej., puerta_trasera o Puerta trasera", + "newNameRequired": "El nombre de la cámara es obligatorio", + "newNameInvalid": "Nombre de cámara no válido", + "newNameCollision": "Ya existe una cámara con este nombre", + "newStreamsForced": "Los flujos siempre se copian al crear una cámara nueva.", + "existingCamerasRadio": "Cámaras existentes", + "allCameras": "Todas las cámaras", + "existingPlaceholder": "Selecciona al menos una cámara", + "existingDisabled": "No hay otras cámaras a las que copiar la configuración" + }, + "categories": { + "legend": "Configuración para clonar", + "description": "Elige qué ajustes copiar desde la cámara de origen.", + "selectAll": "Seleccionar todo", + "selectNone": "No seleccionar ninguno", + "resetDefaults": "Restablecer valores predeterminados", + "general": "General", + "spatial": "Configuración espacial", + "streams": "Flujos", + "spatialWarningTitle": "Resolución no coincidente", + "spatialWarning": "La resolución de detección de la cámara de origen {{srcCamera}} ({{srcWidth}}×{{srcHeight}}) es diferente de la de: {{cameras}}. Es posible que los polígonos no se alineen correctamente en esas cámaras. Estas opciones están desactivadas de forma predeterminada; actívalas para copiarlas tal cual.", + "restartHint": "Reinicio necesario", + "items": { + "record": "Grabación", + "snapshots": "Instantáneas", + "review": "Revisión", + "motion": "Detección de movimiento", + "objects": "Objetos", + "audio": "Detección de audio", + "audio_transcription": "Transcripción de audio", + "notifications": "Notificaciones", + "birdseye": "Birdseye", + "mqtt": "MQTT", + "timestamp_style": "Estilo de marca de tiempo", + "onvif": "ONVIF", + "lpr": "Reconocimiento de matrículas", + "face_recognition": "Reconocimiento facial", + "semantic_search": "Búsqueda semántica", + "genai": "IA generativa", + "type": "Tipo de cámara (normal / LPR dedicada)", + "profiles": "Perfiles", + "detect": "Dimensiones de detección", + "zones": "Zonas", + "motion_mask": "Máscaras de movimiento", + "object_masks": "Máscaras de objetos", + "ffmpeg_live": "URL y roles de los flujos" + } + }, + "footer": { + "changeCount_one": "Se aplicará {{count}} cambio", + "changeCount_many": "Se aplicarán {{count}} cambios", + "changeCount_other": "Se aplicarán {{count}} cambios", + "restartNeeded": "Será necesario reiniciar para aplicar algunos cambios.", + "liveOnly": "Todos los cambios se aplicarán en tiempo real sin necesidad de reiniciar.", + "submit": "Clonar", + "submitting": "Clonando…" + }, + "toast": { + "success": "Configuración copiada a {{cameraName}}", + "successWithRestart": "Configuración copiada a {{cameraName}}. Reinicia Frigate para aplicar todos los cambios.", + "successMulti_one": "Configuración copiada a {{count}} cámara", + "successMulti_many": "Configuración copiada a {{count}} cámaras", + "successMulti_other": "Configuración copiada a {{count}} cámaras", + "successMultiWithRestart_one": "Configuración copiada a {{count}} cámara. Reinicia Frigate para aplicar todos los cambios.", + "successMultiWithRestart_many": "Configuración copiada a {{count}} cámaras. Reinicia Frigate para aplicar todos los cambios.", + "successMultiWithRestart_other": "Configuración copiada a {{count}} cámaras. Reinicia Frigate para aplicar todos los cambios.", + "partialFailure": "Se aplicaron {{successCount}} secciones; ‘{{failedSection}}’ falló: {{errorMessage}}", + "partialFailureMulti": "Copiado a {{successCount}} cámara(s); error en {{failed}}: {{errorMessage}}", + "newCameraPartialFailure": "La cámara {{cameraName}} se creó, pero no se pudieron copiar algunos ajustes: {{errorMessage}}", + "sourceMissing": "La cámara de origen ya no existe", + "submitError": "No se pudo clonar la cámara: {{errorMessage}}" + } + } }, "cameraReview": { "title": "Configuración de revisión de la cámara", @@ -1502,8 +1612,13 @@ }, "genaiModel": { "noModels": "No hay modelos disponibles", - "placeholder": "Seleccionar modelo…", - "search": "Buscar modelos…" + "placeholder": "Selecciona o introduce un modelo…", + "search": "Busca o introduce un modelo…", + "available": "Modelos disponibles", + "useCustom": "Usar “{{value}}”", + "refresh": "Actualizar modelos", + "probeFailed": "No se pudieron detectar los modelos", + "fetchedModels": "La lista de modelos se ha obtenido correctamente" }, "global": { "description": "Estos ajustes se aplican a todas las cámaras, a menos que se anulen en los ajustes específicos de cada cámara.", @@ -1686,7 +1801,32 @@ "title": "Ajustes de marcas de tiempo" }, "searchPlaceholder": "Buscar...", - "addCustomLabel": "Añadir etiqueta personalizada..." + "addCustomLabel": "Añadir etiqueta personalizada...", + "semanticSearchModelSize": { + "notApplicable": "No aplicable a proveedores GenAI" + }, + "liveStreams": { + "streamNameLabel": "Nombre del flujo", + "streamNamePlaceholder": "p. ej., Flujo principal HD", + "go2rtcStreamLabel": "Flujo go2rtc", + "go2rtcStreamPlaceholder": "Selecciona un flujo go2rtc", + "go2rtcStreamSearch": "Busca o introduce un nombre de flujo…", + "noGo2rtcStreams": "No hay flujos go2rtc configurados", + "availableStreams": "Flujos disponibles", + "useCustom": "Usar “{{value}}”", + "addStream": "Añadir flujo" + }, + "ptzPresets": { + "placeholder": "Selecciona o introduce un preajuste…", + "search": "Busca o introduce un preajuste…", + "noPresets": "No hay preajustes disponibles", + "available": "Preajustes de cámara", + "useCustom": "Usar “{{value}}”" + }, + "defaultRole": { + "admin": "Admin", + "viewer": "Visualizador" + } }, "globalConfig": { "title": "Configuración global", @@ -1818,7 +1958,8 @@ "addAudioCodec": "Añadir códec de audio", "removeCodec": "Eliminar códec" }, - "streamNumber": "Flujo {{index}}" + "streamNumber": "Flujo {{index}}", + "sourceNumber": "Origen {{index}}" }, "configMessages": { "birdseye": { @@ -1855,7 +1996,9 @@ }, "detect": { "fpsGreaterThanFive": "No se recomienda establecer los FPS de detección por encima de 5. Valores más altos pueden causar problemas de rendimiento y no aportarán ningún beneficio.", - "disabled": "La detección de objetos está deshabilitada. Las instantáneas, los elementos de revisión y enriquecimientos como el reconocimiento facial, el reconocimiento de matrículas y la IA generativa no funcionarán." + "disabled": "La detección de objetos está deshabilitada. Las instantáneas, los elementos de revisión y enriquecimientos como el reconocimiento facial, el reconocimiento de matrículas y la IA generativa no funcionarán.", + "resolutionShouldBeMultipleOfFour": "Para obtener mejores resultados, la anchura y la altura de detección deberían ser múltiplos de 4. Otros valores pares pueden producir artefactos visuales o una ligera distorsión en el flujo de detección.", + "aspectRatioMismatch": "La anchura y la altura que has introducido no coinciden con la relación de aspecto de la resolución de detección actual. Esto puede producir una imagen estirada o distorsionada." }, "objects": { "genaiNoDescriptionsProvider": "Debes configurar un proveedor GenAI con el rol 'descriptions' para que se generen descripciones." @@ -1864,7 +2007,11 @@ "noRecordRole": "Ningún flujo tiene definido el rol de grabación. La grabación no funcionará." }, "semanticSearch": { - "jinav2SmallModelSize": "El tamaño 'small' con el modelo Jina V2 tiene un alto consumo de RAM y coste de inferencia. Se recomienda el modelo 'large' con una GPU dedicada." + "jinav2SmallModelSize": "El tamaño 'small' con el modelo Jina V2 tiene un alto consumo de RAM y coste de inferencia. Se recomienda el modelo 'large' con una GPU dedicada.", + "modelSizeIgnoredForProvider": "El tamaño del modelo solo se aplica a los modelos Jina integrados. Este valor se ignorará al usar un proveedor de embeddings GenAI." + }, + "onvif": { + "autotrackingNoZones": "El seguimiento automático requiere al menos una zona. Define una zona para esta cámara en Máscaras / Zonas y, a continuación, establécela como zona obligatoria a continuación." } }, "resetToDefaultDescription": "Esto restablecerá todos los ajustes de esta sección a sus valores predeterminados. Esta acción no se puede deshacer.",