diff --git a/web/public/locales/es/audio.json b/web/public/locales/es/audio.json
index 0967ef424..cbbe889d1 100644
--- a/web/public/locales/es/audio.json
+++ b/web/public/locales/es/audio.json
@@ -1 +1,429 @@
-{}
+{
+ "bark": "Ladrido",
+ "sheep": "Oveja",
+ "goat": "Cabra",
+ "car": "Coche",
+ "boat": "Barco",
+ "bus": "Autobus",
+ "motorcycle": "Motocicleta",
+ "train": "Tren",
+ "skateboard": "Monopatín",
+ "sink": "Fregadero",
+ "blender": "Batidora",
+ "hair_dryer": "Secador de pelo",
+ "scissors": "Tijeras",
+ "clock": "Reloj",
+ "camera": "Cámara",
+ "door": "Puerta",
+ "dog": "Perro",
+ "horse": "Caballo",
+ "toothbrush": "Cepillo de dientes",
+ "bird": "Pájaro",
+ "vehicle": "Vehículo",
+ "mouse": "Ratón",
+ "bicycle": "Bicicleta",
+ "cat": "Gato",
+ "keyboard": "Teclado",
+ "animal": "Animal",
+ "yell": "Grito",
+ "bellow": "Voz de trueno",
+ "whoop": "Aullido",
+ "crying": "Llanto",
+ "synthetic_singing": "Canto sintético",
+ "rapping": "Rap",
+ "humming": "Tarareo",
+ "groan": "Gemido",
+ "grunt": "Gruñido",
+ "whistling": "Silbido",
+ "breathing": "Respiración",
+ "wheeze": "Sibilancia",
+ "snoring": "Ronquido",
+ "gasp": "Jadeo",
+ "snort": "Resoplido",
+ "cough": "Tos",
+ "sneeze": "Estornudo",
+ "sniff": "Oler",
+ "run": "Correr",
+ "shuffle": "Arrastrar los pies",
+ "footsteps": "Pasos",
+ "chewing": "Masticar",
+ "biting": "Morder",
+ "gargling": "Hacer gárgaras",
+ "stomach_rumble": "Rugido de estómago",
+ "burping": "Eructo",
+ "finger_snapping": "Chasquido de dedos",
+ "clapping": "Aplausos",
+ "heartbeat": "Latido del corazón",
+ "heart_murmur": "Soplo cardíaco",
+ "cheering": "Aclamación",
+ "applause": "Aplausos",
+ "whispering": "Susurro",
+ "speech": "Habla",
+ "mantra": "Mantra",
+ "fart": "Pedos",
+ "snicker": "Risa maliciosa",
+ "yodeling": "Yodeling",
+ "laughter": "Risa",
+ "child_singing": "Canto infantil",
+ "pant": "Jadeo",
+ "throat_clearing": "Despejar la garganta",
+ "sigh": "Suspiro",
+ "choir": "Coro",
+ "babbling": "Balbuceo",
+ "singing": "Canto",
+ "hands": "Manos",
+ "hiccup": "Hipido",
+ "chant": "Cántico",
+ "chatter": "Charla",
+ "crowd": "Multitud",
+ "children_playing": "Niños jugando",
+ "pets": "Mascotas",
+ "yip": "Ladrido corto",
+ "howl": "Aullido",
+ "bow_wow": "Guau",
+ "growling": "Gruñido",
+ "whimper_dog": "Gemido de perro",
+ "purr": "Ronroneo",
+ "hiss": "Siseo",
+ "caterwaul": "Aullido de gato",
+ "livestock": "Ganado",
+ "clip_clop": "Trote de caballo",
+ "neigh": "Relincho",
+ "cattle": "Ganado",
+ "moo": "Muu",
+ "cowbell": "Campanilla de vaca",
+ "pig": "Cerdo",
+ "oink": "Oink",
+ "bleat": "Balido",
+ "fowl": "Aves",
+ "cluck": "Cacareo",
+ "cock_a_doodle_doo": "Quiquiriquí",
+ "turkey": "Pavo",
+ "gobble": "Gluglú",
+ "duck": "Pato",
+ "goose": "Ganso",
+ "honk": "Bocina",
+ "wild_animals": "Animales salvajes",
+ "roar": "Rugido",
+ "chirp": "Canto (de insecto o pájaro)",
+ "pigeon": "Paloma",
+ "coo": "Arrullo",
+ "caw": "Grito de cuervo",
+ "owl": "Búho",
+ "dogs": "Perros",
+ "insect": "Insecto",
+ "cricket": "Grillo",
+ "mosquito": "Mosquito",
+ "buzz": "Zumbido",
+ "frog": "Rana",
+ "croak": "Croar",
+ "snake": "Serpiente",
+ "rattle": "Sonajero",
+ "whale_vocalization": "Vocalización de ballena",
+ "plucked_string_instrument": "Instrumento de cuerda punteada",
+ "guitar": "Guitarra",
+ "steel_guitar": "Guitarra de acero",
+ "tapping": "Tapping (técnica de guitarra)",
+ "strum": "Rasgueo",
+ "banjo": "Banjo",
+ "sitar": "Sitar",
+ "mandolin": "Mandolina",
+ "zither": "Cítara",
+ "ukulele": "Ukulele",
+ "piano": "Piano",
+ "organ": "Órgano",
+ "electronic_organ": "Órgano electrónico",
+ "hammond_organ": "Órgano Hammond",
+ "sampler": "Sampler",
+ "harpsichord": "Clavicémbalo",
+ "percussion": "Percusión",
+ "drum_kit": "Batería",
+ "drum_machine": "Caja de ritmos",
+ "drum": "Tambor",
+ "snare_drum": "Caja (o redoblante)",
+ "rimshot": "Golpe en el borde del tambor",
+ "tabla": "Tabla",
+ "cymbal": "Platillo",
+ "hi_hat": "Hi-Hat",
+ "wood_block": "Bloque de madera",
+ "tambourine": "Pandereta",
+ "maraca": "Maraca",
+ "gong": "Gong",
+ "tubular_bells": "Campanas tubulares",
+ "mallet_percussion": "Percusión con mazas",
+ "marimba": "Marimba",
+ "glockenspiel": "Glockenspiel",
+ "steelpan": "Steelpan",
+ "orchestra": "Orquesta",
+ "trumpet": "Trompeta",
+ "string_section": "Sección de cuerdas",
+ "violin": "Violín",
+ "double_bass": "Contrabajo",
+ "wind_instrument": "Instrumento de viento",
+ "flute": "Flauta",
+ "saxophone": "Saxofón",
+ "harp": "Arpa",
+ "jingle_bell": "Campanilla",
+ "bicycle_bell": "Campana de bicicleta",
+ "tuning_fork": "Diapasón",
+ "chime": "Campanilla",
+ "wind_chime": "Campanario de viento",
+ "harmonica": "Armónica",
+ "accordion": "Acordeón",
+ "didgeridoo": "Didgeridoo",
+ "theremin": "Theremín",
+ "singing_bowl": "Cuenco tibetano",
+ "scratching": "Rasguñado",
+ "hip_hop_music": "Música hip-hop",
+ "rock_music": "Música rock",
+ "heavy_metal": "Heavy metal",
+ "punk_rock": "Punk rock",
+ "progressive_rock": "Progressive rock",
+ "rock_and_roll": "Rock and roll",
+ "psychedelic_rock": "Rock psicodélico",
+ "rhythm_and_blues": "Rhythm and blues",
+ "soul_music": "Música soul",
+ "country": "Country",
+ "swing_music": "Música swing",
+ "disco": "Disco",
+ "house_music": "Música House",
+ "dubstep": "Dubstep",
+ "drum_and_bass": "Drum and Bass",
+ "electronica": "Electronica",
+ "electronic_dance_music": "Música Dance Electronica",
+ "music_of_latin_america": "Música de América Latina",
+ "salsa_music": "Música Salsa",
+ "flamenco": "Flamenco",
+ "blues": "Blues",
+ "music_for_children": "Música para niños",
+ "new-age_music": "Música New Age",
+ "vocal_music": "Música Vocal",
+ "a_capella": "A capella",
+ "afrobeat": "Afrobeat",
+ "music_of_asia": "Música de Asia",
+ "carnatic_music": "Música Carnatic",
+ "music_of_bollywood": "Música de Bollywood",
+ "ska": "Ska",
+ "song": "Canción",
+ "background_music": "Música Background",
+ "soundtrack_music": "Música de Pelicula",
+ "lullaby": "Lullaby",
+ "video_game_music": "Música de Videojuego",
+ "christmas_music": "Música Navideña",
+ "sad_music": "Música triste",
+ "tender_music": "Música suave",
+ "exciting_music": "Música emocionante",
+ "angry_music": "Música enojada",
+ "scary_music": "Música aterradora",
+ "wind": "Viento",
+ "rustling_leaves": "Hojas susurrantes",
+ "wind_noise": "Ruido del viento",
+ "thunderstorm": "Tormenta eléctrica",
+ "thunder": "Trueno",
+ "raindrop": "Gota de lluvia",
+ "stream": "Arroyo",
+ "waterfall": "Cascada",
+ "ocean": "Oceano",
+ "steam": "Vapor",
+ "gurgling": "Gorgoteo",
+ "sailboat": "Vela",
+ "rowboat": "Bote de remos",
+ "motorboat": "Lancha motora",
+ "motor_vehicle": "Vehículo a motor",
+ "toot": "Pitido",
+ "tire_squeal": "Chillido de neumáticos",
+ "car_passing_by": "Coche pasando",
+ "ambulance": "Ambulancia",
+ "fire_engine": "Camión de bomberos",
+ "traffic_noise": "Ruido de tráfico",
+ "rail_transport": "Transporte ferroviario",
+ "aircraft_engine": "Aeronave motor",
+ "engine": "Motor",
+ "chainsaw": "Motosierra",
+ "medium_engine": "Motor de tamaño medio",
+ "heavy_engine": "Motor pesado",
+ "engine_knocking": "Golpeteo del motor",
+ "engine_starting": "Arranque del motor",
+ "idling": "Ralentí",
+ "accelerating": "Acelerando",
+ "doorbell": "Timbre",
+ "ding-dong": "Ding Dong",
+ "sliding_door": "Puerta corredera",
+ "slam": "Portazo",
+ "knock": "Golpe",
+ "tap": "Golpe suave",
+ "cupboard_open_or_close": "Apertura o cierre del armario",
+ "drawer_open_or_close": "Apertura o cierre del cajón",
+ "dishes": "Platos",
+ "cutlery": "Cubertería",
+ "chopping": "Cortando",
+ "frying": "Freír",
+ "microwave_oven": "Horno Microondas",
+ "water_tap": "Grifo de Agua",
+ "toilet_flush": "Descarga del Inodoro",
+ "electric_toothbrush": "Cepillo de Dientes Eléctrico",
+ "vacuum_cleaner": "Aspiradora",
+ "zipper": "Cremallera",
+ "keys_jangling": "Llaves Tintineando",
+ "coin": "Moneda",
+ "electric_shaver": "Afeitadora Eléctrica",
+ "shuffling_cards": "Barajar Cartas",
+ "typing": "Teclear",
+ "typewriter": "Máquina de Escribir",
+ "computer_keyboard": "Teclado de Computadora",
+ "writing": "Escribir",
+ "alarm": "Alarma",
+ "telephone": "Teléfono",
+ "telephone_bell_ringing": "Timbre de Teléfono Sonando",
+ "ringtone": "Tono de Llamada",
+ "telephone_dialing": "Marcación de Teléfono",
+ "dial_tone": "Tono de Marcación",
+ "busy_signal": "Señal de Ocupado",
+ "alarm_clock": "Reloj Despertador",
+ "siren": "Sirena",
+ "civil_defense_siren": "Sirena de Defensa Civil",
+ "buzzer": "Zumbador",
+ "fire_alarm": "Alarma de Incendio",
+ "foghorn": "Bocina de Niebla",
+ "whistle": "Silbato",
+ "steam_whistle": "Silbato de Vapor",
+ "mechanisms": "Mecanismos",
+ "ratchet": "Trinquete",
+ "tick": "Tictac",
+ "tick-tock": "Tictoc",
+ "gears": "Engranajes",
+ "pulleys": "Poleas",
+ "sewing_machine": "Máquina de Coser",
+ "mechanical_fan": "Ventilador Mecánico",
+ "air_conditioning": "Aire Acondicionado",
+ "cash_register": "Caja Registradora",
+ "printer": "Impresora",
+ "fly": "Mosca",
+ "patter": "Golpeteo",
+ "bell": "Campana",
+ "meow": "Miau",
+ "squawk": "Chillido",
+ "classical_music": "Música Clásica",
+ "cello": "Violoncello",
+ "quack": "Cuac",
+ "hoot": "Ulular",
+ "synthesizer": "Sintetizador",
+ "happy_music": "Música Alegre",
+ "timpani": "Tímpano",
+ "bowed_string_instrument": "Instrumento de cuerda frotada",
+ "jazz": "Jazz",
+ "train_whistle": "Silbido de tren",
+ "car_alarm": "Alarma de coche",
+ "truck": "Camion",
+ "ice_cream_truck": "Camión de helados",
+ "railroad_car": "Vagón de tren",
+ "aircraft": "Aeronave",
+ "helicopter": "Helicóptero",
+ "light_engine": "Motor ligero",
+ "dental_drill's_drill": "Talonador dental",
+ "crow": "Cuervo",
+ "flapping_wings": "Aleteo de alas",
+ "opera": "Opera",
+ "funk": "Funk",
+ "roaring_cats": "Gatos rugiendo",
+ "chicken": "Pollo",
+ "bagpipes": "Gaita",
+ "rats": "Ratas",
+ "music": "Música",
+ "musical_instrument": "Música instrumental",
+ "electric_guitar": "Guitarra eléctrica",
+ "bass_drum": "Bombo",
+ "acoustic_guitar": "Guitarra acústica",
+ "pizzicato": "Pizzicato",
+ "beatboxing": "Beatboxing",
+ "bass_guitar": "Bajo eléctrico",
+ "bluegrass": "Bluegrass",
+ "folk_music": "Música Folk",
+ "electronic_music": "Música electrónica",
+ "techno": "Techno",
+ "french_horn": "Trompa francesa",
+ "ship": "Barco",
+ "lawn_mower": "Cortacésped",
+ "electric_piano": "Piano eléctrico",
+ "train_wheels_squealing": "Chillido de ruedas de tren",
+ "drum_roll": "Redoble de tambor",
+ "vibraphone": "Vibrafón",
+ "trombone": "Trombón",
+ "brass_instrument": "Instrumento de metal",
+ "church_bell": "Campana de iglesia",
+ "clarinet": "Clarinete",
+ "grunge": "Grunge",
+ "pop_music": "Música pop",
+ "jingle": "Single",
+ "rain_on_surface": "Lluvia sobre superficie",
+ "emergency_vehicle": "Vehículo de emergencias",
+ "ambient_music": "Música Ambiente",
+ "trance_music": "Música Trance",
+ "music_of_africa": "Música de Africa",
+ "christian_music": "Música Cristiana",
+ "gospel_music": "Música Gospel",
+ "traditional_music": "Música Tradicional",
+ "wedding_music": "Música de Boda",
+ "rain": "Lluvia",
+ "waves": "Ondas",
+ "fire": "Fuego",
+ "police_car": "Coche de policia",
+ "squeak": "Chirrido",
+ "crackle": "Crepitar",
+ "reggae": "Reggae",
+ "middle_eastern_music": "Música del Medio Oriente",
+ "smoke_detector": "Detector de Humo",
+ "race_car": "Coche de carreras",
+ "air_horn": "Bocina de aire",
+ "independent_music": "Música Independiente",
+ "theme_music": "Música de Película",
+ "dance_music": "Música Dance",
+ "fixed-wing_aircraft": "Aeronave de ala fija",
+ "water": "Agua",
+ "propeller": "Hélice",
+ "air_brake": "Freno de aire",
+ "jet_engine": "Motor a reacción",
+ "power_windows": "Ventanas eléctricas",
+ "skidding": "Deslizamiento",
+ "reversing_beeps": "Bips de marcha atras",
+ "bathtub": "Bañera",
+ "train_horn": "Bocina de tren",
+ "subway": "Metro",
+ "single-lens_reflex_camera": "Cámara Réflex de un Solo Objetivo",
+ "tools": "Herramientas",
+ "hammer": "Martillo",
+ "filing": "Limar",
+ "jackhammer": "Martillo Neumático",
+ "sawing": "Serrar",
+ "sanding": "Lijar",
+ "power_tool": "Herramienta Eléctrica",
+ "burst": "Estallido",
+ "eruption": "Erupción",
+ "boom": "Estallido (Boom)",
+ "firecracker": "Petardo",
+ "artillery_fire": "Fuego de Artillería",
+ "cap_gun": "Pistola de Fulminantes",
+ "fireworks": "Fuegos Artificiales",
+ "wood": "Madera",
+ "chop": "Cortar (Madera)",
+ "splinter": "Astilla",
+ "crack": "Crujido",
+ "chink": "Tintineo (de Vidrio)",
+ "glass": "Vidrio",
+ "environmental_noise": "Ruido Ambiental",
+ "sound_effect": "Efecto de sonido",
+ "shatter": "Romperse",
+ "static": "Estatico",
+ "silence": "Silencio",
+ "scream": "Grito",
+ "white_noise": "Ruido Blanco",
+ "drill": "Taladro",
+ "field_recording": "Grabación de Campo",
+ "explosion": "Explosión",
+ "machine_gun": "Ametralladora",
+ "television": "Televisión",
+ "radio": "Radio",
+ "gunshot": "Disparo",
+ "fusillade": "Descarga de Fusilería",
+ "pink_noise": "Ruido Rosa"
+}
diff --git a/web/public/locales/es/common.json b/web/public/locales/es/common.json
index 2cc55e9ec..86ab0938f 100644
--- a/web/public/locales/es/common.json
+++ b/web/public/locales/es/common.json
@@ -200,5 +200,5 @@
"title": "404",
"desc": "Página no encontrada"
},
- "selectItem": "Selecciona {{item}}"
+ "selectItem": "Seleccionar {{item}}"
}
diff --git a/web/public/locales/es/components/auth.json b/web/public/locales/es/components/auth.json
index 0967ef424..345ca1730 100644
--- a/web/public/locales/es/components/auth.json
+++ b/web/public/locales/es/components/auth.json
@@ -1 +1,15 @@
-{}
+{
+ "form": {
+ "user": "Nombre de usuario",
+ "errors": {
+ "passwordRequired": "Se requiere contraseña",
+ "rateLimit": "Se ha superado el límite de solicitudes. Intenta de nuevo más tarde.",
+ "webUnknownError": "Error desconocido. Revisa los registros de la consola.",
+ "usernameRequired": "Se requiere nombre de usuario",
+ "unknownError": "Error desconocido. Revisa los registros.",
+ "loginFailed": "Error de inicio de sesión"
+ },
+ "password": "Contraseña",
+ "login": "Iniciar sesión"
+ }
+}
diff --git a/web/public/locales/es/components/camera.json b/web/public/locales/es/components/camera.json
index 0967ef424..1eaf67f5a 100644
--- a/web/public/locales/es/components/camera.json
+++ b/web/public/locales/es/components/camera.json
@@ -1 +1,83 @@
-{}
+{
+ "group": {
+ "label": "Grupos de cámaras",
+ "add": "Agregar grupo de cámaras",
+ "edit": "Editar grupo de cámaras",
+ "delete": {
+ "label": "Eliminar grupo de cámaras",
+ "confirm": {
+ "title": "Confirmar eliminación",
+ "desc": "¿Estás seguro de que quieres eliminar el grupo de cámaras {{name}}?"
+ }
+ },
+ "name": {
+ "label": "Nombre",
+ "placeholder": "Introduce un nombre...",
+ "errorMessage": {
+ "mustLeastCharacters": "El nombre del grupo de cámaras debe tener al menos 2 caracteres.",
+ "nameMustNotPeriod": "El nombre del grupo de cámaras no debe contener un punto.",
+ "invalid": "Nombre de grupo de cámaras no válido.",
+ "exists": "El nombre del grupo de cámaras ya existe."
+ }
+ },
+ "cameras": {
+ "desc": "Selecciona cámaras para este grupo.",
+ "label": "Cámaras"
+ },
+ "icon": "Icono",
+ "success": "El grupo de cámaras ({{name}}) ha sido guardado.",
+ "camera": {
+ "setting": {
+ "title": "Ajustes de transmisión de {{cameraName}}",
+ "audioIsAvailable": "El audio está disponible para esta transmisión",
+ "audioIsUnavailable": "El audio no está disponible para esta transmisión",
+ "audio": {
+ "tips": {
+ "title": "El audio debe provenir de tu cámara y estar configurado en go2rtc para esta transmisión.",
+ "document": "Leer la documentación "
+ }
+ },
+ "streamMethod": {
+ "method": {
+ "noStreaming": {
+ "desc": "Las imágenes de la cámara solo se actualizarán una vez por minuto y no habrá transmisión en vivo.",
+ "label": "Sin transmisión"
+ },
+ "smartStreaming": {
+ "label": "Transmisión inteligente (recomendada)",
+ "desc": "La transmisión inteligente actualizará la imagen de tu cámara una vez por minuto cuando no se detecte actividad para conservar ancho de banda y recursos. Cuando se detecte actividad, la imagen cambiará sin problemas a una transmisión en vivo."
+ },
+ "continuousStreaming": {
+ "label": "Transmisión continua",
+ "desc": {
+ "title": "La imagen de la cámara siempre será una transmisión en vivo cuando esté visible en el panel de control, incluso si no se detecta ninguna actividad.",
+ "warning": "La transmisión continua puede causar un alto uso de ancho de banda y problemas de rendimiento. Usa con precaución."
+ }
+ }
+ },
+ "label": "Método de transmisión"
+ },
+ "compatibilityMode": {
+ "label": "Modo de compatibilidad",
+ "desc": "Habilita esta opción solo si la transmisión en vivo de tu cámara muestra artefactos de color y tiene una línea diagonal en el lado derecho de la imagen."
+ },
+ "label": "Ajustes de transmisión de la cámara",
+ "desc": "Cambia las opciones de transmisión en vivo para el panel de control de este grupo de cámaras. Estos ajustes son específicos del dispositivo/navegador."
+ }
+ }
+ },
+ "debug": {
+ "options": {
+ "label": "Ajustes",
+ "title": "Opciones",
+ "showOptions": "Mostrar opciones",
+ "hideOptions": "Ocultar opciones"
+ },
+ "timestamp": "Marca de tiempo",
+ "zones": "Zonas",
+ "motion": "Movimiento",
+ "regions": "Regiones",
+ "boundingBox": "Caja delimitadora",
+ "mask": "Máscara"
+ }
+}
diff --git a/web/public/locales/es/components/dialog.json b/web/public/locales/es/components/dialog.json
index 0967ef424..f3b6af788 100644
--- a/web/public/locales/es/components/dialog.json
+++ b/web/public/locales/es/components/dialog.json
@@ -1 +1,116 @@
-{}
+{
+ "restart": {
+ "restarting": {
+ "title": "Frigate se está reiniciando",
+ "button": "Forzar recarga ahora",
+ "content": "Esta página se recargará en {{countdown}} segundos."
+ },
+ "title": "¿Estás seguro de que quieres reiniciar Frigate?",
+ "button": "Reiniciar"
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "Enviar a Frigate+",
+ "desc": "Los objetos en ubicaciones que deseas evitar no son falsos positivos. Enviarlos como falsos positivos confundirá al modelo."
+ },
+ "review": {
+ "false": {
+ "label": "No confirmar esta etiqueta para Frigate Plus",
+ "false_one": "Esto no es un {{label}}",
+ "false_many": "Esto no es un {{label}}",
+ "false_other": "Esto no es un {{label}}"
+ },
+ "true": {
+ "true_one": "Esto es un {{label}}",
+ "true_many": "Esto es un {{label}}",
+ "true_other": "Esto es un {{label}}",
+ "label": "Confirmar esta etiqueta para Frigate+"
+ },
+ "state": {
+ "submitted": "Enviado"
+ }
+ }
+ },
+ "video": {
+ "viewInHistory": "Ver en el historial"
+ }
+ },
+ "export": {
+ "time": {
+ "fromTimeline": "Seleccionar desde la línea de tiempo",
+ "lastHour_one": "Última hora",
+ "lastHour_many": "Últimas {{count}} horas",
+ "lastHour_other": "Últimas {{count}} horas",
+ "custom": "Personalizado",
+ "start": {
+ "title": "Hora de inicio",
+ "label": "Seleccionar hora de inicio"
+ },
+ "end": {
+ "title": "Hora de finalización",
+ "label": "Seleccionar hora de finalización"
+ }
+ },
+ "name": {
+ "placeholder": "Nombrar la exportación"
+ },
+ "select": "Seleccionar",
+ "export": "Exportar",
+ "toast": {
+ "error": {
+ "failed": "No se pudo iniciar la exportación: {{error}}",
+ "noVaildTimeSelected": "No se seleccionó un rango de tiempo válido.",
+ "endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio."
+ },
+ "success": "Exportación iniciada con éxito. Ver el archivo en la carpeta /exports."
+ },
+ "fromTimeline": {
+ "saveExport": "Guardar exportación",
+ "previewExport": "Vista previa de la exportación"
+ },
+ "selectOrExport": "Seleccionar o exportar"
+ },
+ "streaming": {
+ "restreaming": {
+ "disabled": "La retransmisión no está habilitada para esta cámara.",
+ "desc": {
+ "title": "Configura go2rtc para opciones adicionales de vista en vivo y audio para esta cámara.",
+ "readTheDocumentation": "Leer la documentación "
+ }
+ },
+ "debugView": "Vista de depuración",
+ "label": "Transmisión",
+ "showStats": {
+ "label": "Mostrar estadísticas de transmisión",
+ "desc": "Habilita esta opción para mostrar estadísticas de transmisión como una superposición en la alimentación de la cámara."
+ }
+ },
+ "search": {
+ "saveSearch": {
+ "label": "Guardar búsqueda",
+ "desc": "Proporciona un nombre para esta búsqueda guardada.",
+ "overwrite": "{{searchName}} ya existe. Guardar sobrescribirá el valor existente.",
+ "success": "La búsqueda ({{searchName}}) ha sido guardada.",
+ "button": {
+ "save": {
+ "label": "Guardar esta búsqueda"
+ }
+ },
+ "placeholder": "Introduce un nombre para tu búsqueda"
+ }
+ },
+ "recording": {
+ "confirmDelete": {
+ "title": "Confirmar eliminación",
+ "desc": {
+ "selected": "¿Estás seguro de que quieres eliminar todo el video grabado asociado con este elemento de revisión?
Mantén presionada la tecla Shift para omitir este diálogo en el futuro."
+ }
+ },
+ "button": {
+ "export": "Exportar",
+ "markAsReviewed": "Marcar como revisado",
+ "deleteNow": "Eliminar ahora"
+ }
+ }
+}
diff --git a/web/public/locales/es/components/filter.json b/web/public/locales/es/components/filter.json
index 0967ef424..af886f655 100644
--- a/web/public/locales/es/components/filter.json
+++ b/web/public/locales/es/components/filter.json
@@ -1 +1,124 @@
-{}
+{
+ "filter": "Filtro",
+ "labels": {
+ "all": {
+ "short": "Etiquetas",
+ "title": "Todas las etiquetas"
+ },
+ "count": "{{count}} Etiquetas",
+ "label": "Etiquetas"
+ },
+ "zones": {
+ "all": {
+ "title": "Todas las zonas",
+ "short": "Zonas"
+ },
+ "label": "Zonas"
+ },
+ "dates": {
+ "all": {
+ "title": "Todas las fechas",
+ "short": "Fechas"
+ }
+ },
+ "timeRange": "Rango de tiempo",
+ "subLabels": {
+ "all": "Todas las subetiquetas",
+ "label": "Subetiquetas"
+ },
+ "score": "Puntuación",
+ "estimatedSpeed": "Velocidad estimada ({{unit}})",
+ "features": {
+ "label": "Características",
+ "submittedToFrigatePlus": {
+ "label": "Enviado a Frigate+",
+ "tips": "Primero debes filtrar por objetos rastreados que tengan una captura de pantalla.
Los objetos rastreados sin una captura de pantalla no pueden enviarse a Frigate+."
+ },
+ "hasSnapshot": "Tiene una captura instantánea",
+ "hasVideoClip": "Tiene un clip de vídeo"
+ },
+ "sort": {
+ "label": "Ordenar",
+ "dateAsc": "Fecha (Ascendente)",
+ "dateDesc": "Fecha (Descendente)",
+ "scoreAsc": "Puntuación del objeto (Ascendente)",
+ "scoreDesc": "Puntuación del objeto (Descendente)",
+ "speedAsc": "Velocidad estimada (Ascendente)",
+ "speedDesc": "Velocidad estimada (Descendente)",
+ "relevance": "Relevancia"
+ },
+ "cameras": {
+ "label": "Filtro de cámaras",
+ "all": {
+ "title": "Todas las cámaras",
+ "short": "Cámaras"
+ }
+ },
+ "review": {
+ "showReviewed": "Mostrar revisados"
+ },
+ "motion": {
+ "showMotionOnly": "Mostrar solo movimiento"
+ },
+ "explore": {
+ "settings": {
+ "title": "Configuración",
+ "defaultView": {
+ "title": "Vista predeterminada",
+ "summary": "Resumen",
+ "desc": "Cuando no se seleccionen filtros, muestra un resumen de los objetos rastreados más recientes por etiqueta, o muestra una cuadrícula sin filtrar.",
+ "unfilteredGrid": "Cuadrícula sin filtrar"
+ },
+ "searchSource": {
+ "label": "Fuente de búsqueda",
+ "options": {
+ "thumbnailImage": "Miniatura Imagen",
+ "description": "Descripción"
+ },
+ "desc": "Elige si deseas buscar en las miniaturas o en las descripciones de tus objetos rastreados."
+ },
+ "gridColumns": {
+ "title": "Columnas de la cuadrícula",
+ "desc": "Selecciona el número de columnas en la vista de cuadrícula."
+ }
+ },
+ "date": {
+ "selectDateBy": {
+ "label": "Selecciona una fecha para filtrar"
+ }
+ }
+ },
+ "reset": {
+ "label": "Restablecer filtros a los valores predeterminados"
+ },
+ "more": "Más filtros",
+ "logSettings": {
+ "label": "Filtrar nivel de registro",
+ "loading": {
+ "title": "Cargando",
+ "desc": "Cuando el panel de registros está desplazado hasta el final, los nuevos registros se transmiten automáticamente a medida que se añaden."
+ },
+ "disableLogStreaming": "Deshabilitar transmisión de registros",
+ "filterBySeverity": "Filtrar registros por gravedad",
+ "allLogs": "Todos los registros"
+ },
+ "trackedObjectDelete": {
+ "title": "Confirmar eliminación",
+ "desc": "Eliminar estos {{objectLength}} objetos rastreados elimina la captura de pantalla, cualquier incrustación guardada y cualquier entrada asociada al ciclo de vida del objeto. Las grabaciones de estos objetos rastreados en la vista de Historial NO se eliminarán.
¿Estás seguro de que quieres proceder?
Mantén presionada la tecla Shift para omitir este diálogo en el futuro.",
+ "toast": {
+ "success": "Objetos rastreados eliminados con éxito.",
+ "error": "No se pudo eliminar los objetos rastreados: {{errorMessage}}"
+ }
+ },
+ "recognizedLicensePlates": {
+ "title": "Matrículas reconocidas",
+ "loadFailed": "No se pudieron cargar las matrículas reconocidas.",
+ "loading": "Cargando matrículas reconocidas...",
+ "placeholder": "Escribe para buscar matrículas...",
+ "noLicensePlatesFound": "No se encontraron matrículas.",
+ "selectPlatesFromList": "Selecciona una o más matrículas de la lista."
+ },
+ "zoneMask": {
+ "filterBy": "Filtrar por máscara de zona"
+ }
+}
diff --git a/web/public/locales/es/components/icons.json b/web/public/locales/es/components/icons.json
index 0967ef424..aa9f40ca5 100644
--- a/web/public/locales/es/components/icons.json
+++ b/web/public/locales/es/components/icons.json
@@ -1 +1,8 @@
-{}
+{
+ "iconPicker": {
+ "selectIcon": "Selecciona un icono",
+ "search": {
+ "placeholder": "Buscar un icono…"
+ }
+ }
+}
diff --git a/web/public/locales/es/components/input.json b/web/public/locales/es/components/input.json
index 0967ef424..113df8df9 100644
--- a/web/public/locales/es/components/input.json
+++ b/web/public/locales/es/components/input.json
@@ -1 +1,10 @@
-{}
+{
+ "button": {
+ "downloadVideo": {
+ "label": "Descargar vídeo",
+ "toast": {
+ "success": "El vídeo de tu elemento de revisión ha comenzado a descargarse."
+ }
+ }
+ }
+}
diff --git a/web/public/locales/es/components/player.json b/web/public/locales/es/components/player.json
index 0967ef424..77cf56bfc 100644
--- a/web/public/locales/es/components/player.json
+++ b/web/public/locales/es/components/player.json
@@ -1 +1,51 @@
-{}
+{
+ "noPreviewFound": "No se encontró vista previa",
+ "noPreviewFoundFor": "No se encontró vista previa para {{cameraName}}",
+ "submitFrigatePlus": {
+ "submit": "Enviar",
+ "title": "¿Enviar este fotograma a Frigate+?"
+ },
+ "streamOffline": {
+ "desc": "No se han recibido fotogramas en la transmisión detect
de {{cameraName}}, revisa los registros de errores",
+ "title": "Transmisión desconectada"
+ },
+ "cameraDisabled": "La cámara está deshabilitada",
+ "stats": {
+ "streamType": {
+ "title": "Tipo de transmisión:",
+ "short": "Tipo"
+ },
+ "bandwidth": {
+ "title": "Ancho de banda:",
+ "short": "Ancho de banda"
+ },
+ "latency": {
+ "title": "Latencia:",
+ "short": {
+ "title": "Latencia",
+ "value": "{{seconds}} seg"
+ },
+ "value": "{{seconds}} segundos"
+ },
+ "totalFrames": "Fotogramas totales:",
+ "droppedFrames": {
+ "title": "Fotogramas perdidos:",
+ "short": {
+ "title": "Perdidos",
+ "value": "{{droppedFrames}} fotogramas"
+ }
+ },
+ "decodedFrames": "Fotogramas decodificados:",
+ "droppedFrameRate": "Tasa de fotogramas perdidos:"
+ },
+ "toast": {
+ "success": {
+ "submittedFrigatePlus": "Fotograma enviado correctamente a Frigate+"
+ },
+ "error": {
+ "submitFrigatePlusFailed": "Error al enviar el fotograma a Frigate+"
+ }
+ },
+ "livePlayerRequiredIOSVersion": "Se requiere iOS 17.1 o superior para este tipo de transmisión en vivo.",
+ "noRecordingsFoundForThisTime": "No se encontraron grabaciones para este momento"
+}
diff --git a/web/public/locales/es/objects.json b/web/public/locales/es/objects.json
index 0967ef424..8d3549f29 100644
--- a/web/public/locales/es/objects.json
+++ b/web/public/locales/es/objects.json
@@ -1 +1,120 @@
-{}
+{
+ "person": "Persona",
+ "bicycle": "Bicicleta",
+ "car": "Coche",
+ "motorcycle": "Motocicleta",
+ "airplane": "Avión",
+ "bus": "Autobus",
+ "train": "Tren",
+ "boat": "Barco",
+ "traffic_light": "Semáforo",
+ "fire_hydrant": "Boca de incendios",
+ "street_sign": "Señal de tráfico",
+ "stop_sign": "Señal de stop",
+ "parking_meter": "Parquímetro",
+ "bench": "Banco",
+ "dog": "Perro",
+ "cow": "Vaca",
+ "elephant": "Elefante",
+ "bear": "Oso",
+ "zebra": "Cebra",
+ "giraffe": "Jirafa",
+ "hat": "Sombrero",
+ "backpack": "Mochila",
+ "shoe": "Zapato",
+ "eye_glasses": "Gafas",
+ "handbag": "Bolso de mano",
+ "tie": "Corbata",
+ "suitcase": "Maleta",
+ "frisbee": "Disco Volador",
+ "skis": "Esquís",
+ "sports_ball": "Pelota deportiva",
+ "kite": "Cometa",
+ "baseball_glove": "Guante de béisbol",
+ "skateboard": "Monopatín",
+ "surfboard": "Tabla de surf",
+ "tennis_racket": "Raqueta de tenis",
+ "bottle": "Botella",
+ "plate": "Plato",
+ "wine_glass": "Copa de vino",
+ "cup": "Taza",
+ "fork": "Tenedor",
+ "spoon": "Cuchara",
+ "bowl": "Cuenco",
+ "apple": "Manzana",
+ "orange": "Naranja",
+ "broccoli": "Brócoli",
+ "carrot": "Zanahoria",
+ "hot_dog": "Perrito caliente",
+ "pizza": "Pizza",
+ "donut": "Donut",
+ "chair": "Silla",
+ "couch": "Sofá",
+ "potted_plant": "Planta en maceta",
+ "bed": "Cama",
+ "mirror": "Espejo",
+ "dining_table": "Mesa de comedor",
+ "window": "Ventana",
+ "desk": "Escritorio",
+ "toilet": "Inodoro",
+ "door": "Puerta",
+ "laptop": "Portátil",
+ "mouse": "Ratón",
+ "remote": "Mando a distancia",
+ "keyboard": "Teclado",
+ "cell_phone": "Teléfono móvil",
+ "microwave": "Microondas",
+ "toaster": "Tostadora",
+ "sink": "Fregadero",
+ "refrigerator": "Frigorífico",
+ "blender": "Batidora",
+ "clock": "Reloj",
+ "vase": "Jarrón",
+ "scissors": "Tijeras",
+ "teddy_bear": "Osito de peluche",
+ "hair_dryer": "Secador de pelo",
+ "vehicle": "Vehículo",
+ "squirrel": "Ardilla",
+ "deer": "Ciervo",
+ "bark": "Ladrido",
+ "rabbit": "Conejo",
+ "face": "Rostro",
+ "license_plate": "Matrícula",
+ "package": "Paquete",
+ "bbq_grill": "Parrilla de barbacoa",
+ "ups": "UPS",
+ "fedex": "FedEx",
+ "dhl": "DHL",
+ "an_post": "An Post",
+ "purolator": "Purolator",
+ "postnl": "PostNL",
+ "umbrella": "Paraguas",
+ "horse": "Caballo",
+ "tv": "Televisión",
+ "on_demand": "Bajo demanda",
+ "toothbrush": "Cepillo de dientes",
+ "hair_brush": "Cepillo de pelo",
+ "amazon": "Amazon",
+ "sheep": "Oveja",
+ "bird": "Pájaro",
+ "knife": "Cuchillo",
+ "cake": "Tarta",
+ "baseball_bat": "Bate de béisbol",
+ "oven": "Horno",
+ "waste_bin": "Papelera",
+ "snowboard": "Snowboard",
+ "sandwich": "Sandwich",
+ "fox": "Zorro",
+ "nzpost": "NZPost",
+ "cat": "Gato",
+ "banana": "Plátano",
+ "book": "Libro",
+ "raccoon": "Mapache",
+ "dpd": "DPD",
+ "goat": "Cabra",
+ "robot_lawnmower": "Cortacésped robotizado",
+ "animal": "Animal",
+ "postnord": "PostNord",
+ "usps": "USPS",
+ "gls": "GLS"
+}
diff --git a/web/public/locales/es/views/configEditor.json b/web/public/locales/es/views/configEditor.json
index 0967ef424..1ec1256e7 100644
--- a/web/public/locales/es/views/configEditor.json
+++ b/web/public/locales/es/views/configEditor.json
@@ -1 +1,15 @@
-{}
+{
+ "configEditor": "Editor de Configuración",
+ "copyConfig": "Copiar configuración",
+ "saveAndRestart": "Guardar y reiniciar",
+ "saveOnly": "Guardar solo",
+ "toast": {
+ "success": {
+ "copyToClipboard": "Configuración copiada al portapapeles."
+ },
+ "error": {
+ "savingError": "Error al guardar la configuración"
+ }
+ },
+ "documentTitle": "Editor de Configuración - Frigate"
+}
diff --git a/web/public/locales/es/views/events.json b/web/public/locales/es/views/events.json
index 0967ef424..e40201d4b 100644
--- a/web/public/locales/es/views/events.json
+++ b/web/public/locales/es/views/events.json
@@ -1 +1,35 @@
-{}
+{
+ "alerts": "Alertas",
+ "detections": "Detecciones",
+ "motion": {
+ "label": "Movimiento",
+ "only": "Solo movimiento"
+ },
+ "allCameras": "Todas las cámaras",
+ "empty": {
+ "alert": "No hay alertas para revisar",
+ "detection": "No hay detecciones para revisar",
+ "motion": "No se encontraron datos de movimiento"
+ },
+ "timeline": "Línea de tiempo",
+ "timeline.aria": "Seleccionar línea de tiempo",
+ "events": {
+ "label": "Eventos",
+ "aria": "Seleccionar eventos",
+ "noFoundForTimePeriod": "No se encontraron eventos para este período de tiempo."
+ },
+ "documentTitle": "Revisión - Frigate",
+ "markAsReviewed": "Marcar como revisado",
+ "newReviewItems": {
+ "label": "Ver nuevos elementos de revisión",
+ "button": "Nuevos elementos para revisar"
+ },
+ "camera": "Cámara",
+ "recordings": {
+ "documentTitle": "Grabaciones - Frigate"
+ },
+ "calendarFilter": {
+ "last24Hours": "Últimas 24 horas"
+ },
+ "markTheseItemsAsReviewed": "Marcar estos elementos como revisados"
+}
diff --git a/web/public/locales/es/views/explore.json b/web/public/locales/es/views/explore.json
index 0967ef424..18c81e80d 100644
--- a/web/public/locales/es/views/explore.json
+++ b/web/public/locales/es/views/explore.json
@@ -1 +1,184 @@
-{}
+{
+ "generativeAI": "Inteligencia Artificial Generativa",
+ "exploreIsUnavailable": {
+ "title": "Explorar no está disponible",
+ "embeddingsReindexing": {
+ "startingUp": "Iniciando...",
+ "estimatedTime": "Tiempo estimado restante:",
+ "finishingShortly": "Finalizando en breve",
+ "step": {
+ "thumbnailsEmbedded": "Miniaturas incrustadas: ",
+ "descriptionsEmbedded": "Descripciones incrustadas: ",
+ "trackedObjectsProcessed": "Objetos rastreados procesados: "
+ },
+ "context": "Explorar puede usarse después de que las incrustaciones de objetos rastreados hayan terminado de reindexarse."
+ },
+ "downloadingModels": {
+ "context": "Frigate está descargando los modelos de incrustaciones necesarios para soportar la función de Búsqueda Semántica. Esto puede tomar varios minutos dependiendo de la velocidad de tu conexión de red.",
+ "error": "Ha ocurrido un error. Revisa los registros de Frigate.",
+ "setup": {
+ "visionModelFeatureExtractor": "Extractor de características del modelo de visión",
+ "visionModel": "Modelo de visión",
+ "textModel": "Modelo de texto",
+ "textTokenizer": "Tokenizador de texto"
+ },
+ "tips": {
+ "context": "Es posible que desees reindexar las incrustaciones de tus objetos rastreados una vez que se hayan descargado los modelos.",
+ "documentation": "Leer la documentación"
+ }
+ }
+ },
+ "details": {
+ "timestamp": "Marca de tiempo",
+ "item": {
+ "title": "Detalles del elemento de revisión",
+ "desc": "Detalles del elemento de revisión",
+ "button": {
+ "share": "Compartir este elemento de revisión",
+ "viewInExplore": "Ver en Explorar"
+ },
+ "toast": {
+ "success": {
+ "updatedSublabel": "Subetiqueta actualizada con éxito.",
+ "regenerate": "Se ha solicitado una nueva descripción a {{provider}}. Dependiendo de la velocidad de tu proveedor, la nueva descripción puede tardar algún tiempo en regenerarse."
+ },
+ "error": {
+ "regenerate": "No se pudo llamar a {{provider}} para una nueva descripción: {{errorMessage}}",
+ "updatedSublabelFailed": "No se pudo actualizar la subetiqueta: {{errorMessage}}"
+ }
+ },
+ "tips": {
+ "mismatch_one": "Se detectó y se incluyó en este elemento de revisión un objeto {{count}} no disponible. Esos objetos no calificaron como alerta o detección o ya han sido limpiados/eliminados.",
+ "mismatch_many": "Se detectaron y se incluyeron en este elemento de revisión {{count}} objetos no disponibles. Esos objetos no calificaron como alerta o detección o ya han sido limpiados/eliminados.",
+ "mismatch_other": "Se detectaron y se incluyeron en este elemento de revisión {{count}} objetos no disponibles. Esos objetos no calificaron como alerta o detección o ya han sido limpiados/eliminados.",
+ "hasMissingObjects": "Ajusta tu configuración si quieres que Frigate guarde los objetos rastreados para las siguientes etiquetas: {{objects}}"
+ }
+ },
+ "topScore": {
+ "label": "Puntuación máxima",
+ "info": "La puntuación máxima es la mediana más alta para el objeto rastreado, por lo que puede diferir de la puntuación mostrada en la miniatura del resultado de búsqueda."
+ },
+ "description": {
+ "aiTips": "Frigate no solicitará una descripción a tu proveedor de Inteligencia Artificial Generativa hasta que el ciclo de vida del objeto rastreado haya terminado.",
+ "placeholder": "Descripción del objeto rastreado",
+ "label": "Descripción"
+ },
+ "expandRegenerationMenu": "Expandir menú de regeneración",
+ "regenerateFromSnapshot": "Regenerar desde captura de pantalla",
+ "regenerateFromThumbnails": "Regenerar desde miniaturas",
+ "tips": {
+ "descriptionSaved": "Descripción guardada con éxito",
+ "saveDescriptionFailed": "No se pudo actualizar la descripción: {{errorMessage}}"
+ },
+ "zones": "Zonas",
+ "label": "Etiqueta",
+ "editSubLabel": {
+ "title": "Editar subetiqueta",
+ "descNoLabel": "Introduce una nueva subetiqueta para este objeto rastreado",
+ "desc": "Introduce una nueva subetiqueta para este {{label}}"
+ },
+ "button": {
+ "regenerate": {
+ "label": "Regenerar descripción del objeto rastreado",
+ "title": "Regenerar"
+ },
+ "findSimilar": "Buscar similares"
+ },
+ "objects": "Objetos",
+ "estimatedSpeed": "Velocidad estimada",
+ "camera": "Cámara"
+ },
+ "documentTitle": "Explorar - Frigate",
+ "trackedObjectDetails": "Detalles del objeto rastreado",
+ "type": {
+ "snapshot": "captura instantánea",
+ "video": "vídeo",
+ "object_lifecycle": "ciclo de vida del objeto",
+ "details": "detalles"
+ },
+ "objectLifecycle": {
+ "title": "Ciclo de vida del objeto",
+ "noImageFound": "No se encontró ninguna imagen para esta marca de tiempo.",
+ "createObjectMask": "Crear máscara de objeto",
+ "adjustAnnotationSettings": "Ajustar configuración de anotaciones",
+ "scrollViewTips": "Desplázate para ver los momentos significativos del ciclo de vida de este objeto.",
+ "lifecycleItemDesc": {
+ "visible": "{{label}} detectado",
+ "entered_zone": "{{label}} entró en {{zones}}",
+ "attribute": {
+ "other": "{{label}} reconocido como {{attribute}}",
+ "faceOrLicense_plate": "{{attribute}} detectado para {{label}}"
+ },
+ "gone": "{{label}} salió",
+ "heard": "{{label}} escuchado",
+ "external": "{{label}} detectado",
+ "active": "{{label}} se activó",
+ "stationary": "{{label}} se volvió estacionario"
+ },
+ "annotationSettings": {
+ "offset": {
+ "label": "Desplazamiento de anotación",
+ "millisecondsToOffset": "Milisegundos para desplazar las anotaciones de detección. Valor por defecto: 0",
+ "desc": "Estos datos provienen de la transmisión de detección de tu cámara, pero se superponen en imágenes de la transmisión de grabación. Es poco probable que ambas transmisiones estén perfectamente sincronizadas. Como resultado, la caja delimitadora y la grabación no estarán perfectamente alineadas. Sin embargo, el campo annotation_offset
se puede usar para ajustar esto.",
+ "documentation": "Leer la documentación ",
+ "tips": "CONSEJO: Imagina que hay un clip de evento con una persona caminando de izquierda a derecha. Si la caja delimitadora de la línea de tiempo del evento está constantemente a la izquierda de la persona, entonces se debe disminuir el valor. Del mismo modo, si una persona camina de izquierda a derecha y la caja delimitadora está constantemente por delante de la persona, entonces se debe aumentar el valor."
+ },
+ "showAllZones": {
+ "title": "Mostrar todas las zonas",
+ "desc": "Mostrar siempre las zonas en los fotogramas donde los objetos hayan entrado en una zona."
+ },
+ "title": "Configuración de anotaciones"
+ },
+ "carousel": {
+ "previous": "Diapositiva anterior",
+ "next": "Siguiente diapositiva"
+ },
+ "autoTrackingTips": "Las posiciones de las cajas delimitadoras serán inexactas para cámaras con seguimiento automático."
+ },
+ "itemMenu": {
+ "downloadVideo": {
+ "label": "Descargar video",
+ "aria": "Descargar video"
+ },
+ "downloadSnapshot": {
+ "label": "Descargar captura de pantalla",
+ "aria": "Descargar captura de pantalla"
+ },
+ "viewObjectLifecycle": {
+ "label": "Ver ciclo de vida del objeto",
+ "aria": "Mostrar el ciclo de vida del objeto"
+ },
+ "findSimilar": {
+ "label": "Buscar similares",
+ "aria": "Buscar objetos rastreados similares"
+ },
+ "submitToPlus": {
+ "label": "Enviar a Frigate+",
+ "aria": "Enviar a Frigate Plus"
+ },
+ "viewInHistory": {
+ "aria": "Ver en Historial",
+ "label": "Ver en Historial"
+ },
+ "deleteTrackedObject": {
+ "label": "Eliminar este objeto rastreado"
+ }
+ },
+ "dialog": {
+ "confirmDelete": {
+ "title": "Confirmar eliminación",
+ "desc": "Eliminar este objeto rastreado elimina la captura de pantalla, cualquier incrustación guardada y cualquier entrada asociada al ciclo de vida del objeto. Las grabaciones de este objeto rastreado en la vista de Historial NO se eliminarán.
¿Estás seguro de que quieres proceder?"
+ }
+ },
+ "noTrackedObjects": "No se encontraron objetos rastreados",
+ "fetchingTrackedObjectsFailed": "Error al obtener objetos rastreados: {{errorMessage}}",
+ "searchResult": {
+ "deleteTrackedObject": {
+ "toast": {
+ "success": "Objeto rastreado eliminado con éxito.",
+ "error": "No se pudo eliminar el objeto rastreado: {{errorMessage}}"
+ }
+ }
+ },
+ "trackedObjectsCount": "{{count}} objetos rastreados "
+}
diff --git a/web/public/locales/es/views/exports.json b/web/public/locales/es/views/exports.json
index 0967ef424..f348fe5a4 100644
--- a/web/public/locales/es/views/exports.json
+++ b/web/public/locales/es/views/exports.json
@@ -1 +1,17 @@
-{}
+{
+ "search": "Búsqueda",
+ "documentTitle": "Exportar - Frigate",
+ "noExports": "No se encontraron exportaciones",
+ "deleteExport": "Eliminar exportación",
+ "editExport": {
+ "desc": "Introduce un nuevo nombre para esta exportación.",
+ "saveExport": "Guardar exportación",
+ "title": "Renombrar exportación"
+ },
+ "toast": {
+ "error": {
+ "renameExportFailed": "No se pudo renombrar la exportación: {{errorMessage}}"
+ }
+ },
+ "deleteExport.desc": "¿Estás seguro de que quieres eliminar {{exportName}}?"
+}
diff --git a/web/public/locales/es/views/faceLibrary.json b/web/public/locales/es/views/faceLibrary.json
index 0967ef424..a7149ece8 100644
--- a/web/public/locales/es/views/faceLibrary.json
+++ b/web/public/locales/es/views/faceLibrary.json
@@ -1 +1,73 @@
-{}
+{
+ "description": {
+ "addFace": "Guía para agregar una nueva colección a la Biblioteca de Rostros.",
+ "placeholder": "Introduce un nombre para esta colección"
+ },
+ "details": {
+ "person": "Persona",
+ "confidence": "Confianza",
+ "face": "Detalles del rostro",
+ "faceDesc": "Detalles del rostro y del objeto asociado",
+ "timestamp": "Marca de tiempo"
+ },
+ "documentTitle": "Biblioteca de Rostros - Frigate",
+ "uploadFaceImage": {
+ "title": "Subir imagen del rostro",
+ "desc": "Sube una imagen para escanear rostros e incluirla en {{pageToggle}}"
+ },
+ "createFaceLibrary": {
+ "title": "Crear colección",
+ "desc": "Crear una nueva colección",
+ "new": "Crear nuevo rostro",
+ "nextSteps": "Para construir una base sólida:
modo: {{effectiveRetainMode}}
, por lo que esta grabación bajo demanda solo mantendrá segmentos con {{effectiveRetainModeName}}."
+ },
+ "editLayout": {
+ "label": "Editar diseño",
+ "group": {
+ "label": "Editar grupo de cámaras"
+ },
+ "exitEdit": "Salir de la edición"
+ }
+}
diff --git a/web/public/locales/es/views/recording.json b/web/public/locales/es/views/recording.json
index 0967ef424..1aea36ab5 100644
--- a/web/public/locales/es/views/recording.json
+++ b/web/public/locales/es/views/recording.json
@@ -1 +1,12 @@
-{}
+{
+ "export": "Exportar",
+ "calendar": "Calendario",
+ "filter": "Filtro",
+ "filters": "Filtros",
+ "toast": {
+ "error": {
+ "noValidTimeSelected": "No se ha seleccionado un rango de tiempo válido",
+ "endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio"
+ }
+ }
+}
diff --git a/web/public/locales/es/views/search.json b/web/public/locales/es/views/search.json
index 0967ef424..5b2e48c42 100644
--- a/web/public/locales/es/views/search.json
+++ b/web/public/locales/es/views/search.json
@@ -1 +1,67 @@
-{}
+{
+ "search": "Búsqueda",
+ "savedSearches": "Búsquedas Guardadas",
+ "searchFor": "Búsqueda de {{inputValue}}",
+ "button": {
+ "save": "Guardar búsqueda",
+ "delete": "Eliminar búsqueda guardada",
+ "clear": "Borrar búsqueda",
+ "filterInformation": "Información de filtro",
+ "filterActive": "Filtros activos"
+ },
+ "trackedObjectId": "ID de Objeto Rastreado",
+ "filter": {
+ "label": {
+ "cameras": "Cámaras",
+ "labels": "Etiquetas",
+ "zones": "Zonas",
+ "sub_labels": "Subetiquetas",
+ "search_type": "Tipo de Búsqueda",
+ "time_range": "Rango de Tiempo",
+ "before": "Antes",
+ "after": "Después",
+ "min_score": "Puntuación Mínima",
+ "max_score": "Puntuación Máxima",
+ "min_speed": "Velocidad Mínima",
+ "max_speed": "Velocidad Máxima",
+ "recognized_license_plate": "Matrícula Reconocida",
+ "has_clip": "Tiene Clip",
+ "has_snapshot": "Tiene Instantánea"
+ },
+ "searchType": {
+ "thumbnail": "Miniatura",
+ "description": "Descripción"
+ },
+ "toast": {
+ "error": {
+ "maxSpeedMustBeGreaterOrEqualMinSpeed": "La 'velocidad máxima' debe ser mayor o igual que la 'velocidad mínima'.",
+ "maxScoreMustBeGreaterOrEqualMinScore": "La 'puntuación máxima' debe ser mayor o igual que la 'puntuación mínima'.",
+ "beforeDateBeLaterAfter": "La fecha 'antes' debe ser posterior a la fecha 'después'.",
+ "minScoreMustBeLessOrEqualMaxScore": "La 'puntuación mínima' debe ser menor o igual que la 'puntuación máxima'.",
+ "minSpeedMustBeLessOrEqualMaxSpeed": "La 'velocidad mínima' debe ser menor o igual que la 'velocidad máxima'.",
+ "afterDatebeEarlierBefore": "La fecha 'después' debe ser anterior a la fecha 'antes'."
+ }
+ },
+ "tips": {
+ "title": "Cómo usar filtros de texto",
+ "desc": {
+ "text": "Los filtros te ayudan a reducir los resultados de tu búsqueda. Aquí te explicamos cómo usarlos en el campo de entrada:",
+ "example": "Ejemplo: cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM
",
+ "step": "Cajas de Movimiento
Se superpondrán cajas rojas en las áreas del marco donde se está detectando movimiento actualmente
" + }, + "regions": { + "title": "Regiones", + "desc": "Mostrar una caja de la región de interés enviada al detector de objetos", + "tips": "Cajas de Región
Se superpondrán cajas verdes brillantes en las áreas de interés del marco que se están enviando al detector de objetos.
" + }, + "objectShapeFilterDrawing": { + "title": "Dibujo de Filtro de Forma de Objetos", + "desc": "Dibuja un rectángulo en la imagen para ver los detalles de área y proporción", + "tips": "Habilita esta opción para dibujar un rectángulo en la imagen de la cámara y mostrar su área y proporción. Estos valores pueden usarse luego para establecer parámetros de filtro de forma de objetos en tu configuración.", + "document": "Lee la documentación ", + "score": "Puntuación", + "ratio": "Proporción", + "area": "Área" + } + }, + "users": { + "title": "Usuarios", + "management": { + "title": "Gestión de Usuarios", + "desc": "Gestiona las cuentas de usuario de esta instancia de Frigate." + }, + "addUser": "Añadir usuario", + "toast": { + "success": { + "createUser": "Usuario {{user}} creado correctamente", + "deleteUser": "Usuario {{user}} eliminado correctamente", + "updatePassword": "Contraseña actualizada correctamente.", + "roleUpdated": "Rol actualizado para {{user}}" + }, + "error": { + "createUserFailed": "Error al crear el usuario: {{errorMessage}}", + "deleteUserFailed": "Error al eliminar el usuario: {{errorMessage}}", + "roleUpdateFailed": "Error al actualizar el rol: {{errorMessage}}", + "setPasswordFailed": "Error al guardar la contraseña: {{errorMessage}}" + } + }, + "table": { + "username": "Nombre de usuario", + "actions": "Acciones", + "role": "Rol", + "noUsers": "No se encontraron usuarios.", + "changeRole": "Cambiar el rol del usuario", + "password": "Contraseña", + "deleteUser": "Eliminar usuario" + }, + "dialog": { + "form": { + "user": { + "title": "Nombre de usuario", + "placeholder": "Introduce el nombre de usuario", + "desc": "Solo se permiten letras, números, puntos y guiones bajos." + }, + "password": { + "title": "Contraseña", + "placeholder": "Introduce la contraseña", + "confirm": { + "title": "Confirma la contraseña", + "placeholder": "Confirma la contraseña" + }, + "strength": { + "title": "Fortaleza de la contraseña: ", + "weak": "Débil", + "medium": "Media", + "strong": "Fuerte", + "veryStrong": "Muy fuerte" + }, + "match": "Las contraseñas coinciden", + "notMatch": "Las contraseñas no coinciden" + }, + "newPassword": { + "title": "Nueva contraseña", + "placeholder": "Introduce la nueva contraseña", + "confirm": { + "placeholder": "Vuelve a introducir la nueva contraseña" + } + }, + "usernameIsRequired": "Se requiere el nombre de usuario" + }, + "passwordSetting": { + "updatePassword": "Actualizar contraseña para {{username}}", + "setPassword": "Establecer contraseña", + "desc": "Crear una contraseña fuerte para asegurar esta cuenta." + }, + "createUser": { + "desc": "Añadir una nueva cuenta de usuario y especificar un rol para el acceso a áreas de la interfaz de usuario de Frigate.", + "title": "Crear nuevo usuario", + "usernameOnlyInclude": "El nombre de usuario solo puede incluir letras, números, . o _" + }, + "changeRole": { + "title": "Cambiar rol de usuario", + "desc": "Actualizar permisos para {{username}}", + "roleInfo": "Selecciona el rol adecuado para este usuario:
https://...
). Esto es una limitación del navegador. Accede a Frigate de forma segura para usar las notificaciones."
+ },
+ "globalSettings": {
+ "title": "Configuración global",
+ "desc": "Suspender temporalmente las notificaciones de cámaras específicas en todos los dispositivos registrados."
+ },
+ "email": {
+ "title": "Correo electrónico",
+ "placeholder": "p.ej. ejemplo@correo.com",
+ "desc": "Se requiere un correo electrónico válido y se utilizará para notificarte si hay algún problema con el servicio de notificaciones push."
+ },
+ "cameras": {
+ "title": "Cámaras",
+ "noCameras": "No hay cámaras disponibles",
+ "desc": "Selecciona qué cámaras habilitar para las notificaciones."
+ },
+ "deviceSpecific": "Configuración específica del dispositivo",
+ "registerDevice": "Registrar este dispositivo",
+ "sendTestNotification": "Enviar una notificación de prueba",
+ "active": "Notificaciones activas",
+ "suspended": "Notificaciones suspendidas {{time}}",
+ "suspendTime": {
+ "5minutes": "Suspender por 5 minutos",
+ "1hour": "Suspender por 1 hora",
+ "12hours": "Suspender por 12 horas",
+ "untilRestart": "Suspender hasta reiniciar",
+ "30minutes": "Suspender por 30 minutos",
+ "24hours": "Suspender por 24 horas",
+ "10minutes": "Suspender por 10 minutos"
+ },
+ "cancelSuspension": "Cancelar suspensión",
+ "toast": {
+ "success": {
+ "settingSaved": "La configuración de notificaciones se ha guardado.",
+ "registered": "Registrado correctamente para las notificaciones. Es necesario reiniciar Frigate antes de que se puedan enviar notificaciones (incluida una notificación de prueba)."
+ },
+ "error": {
+ "registerFailed": "Error al guardar el registro de notificaciones."
+ }
+ },
+ "unregisterDevice": "Cancelar el registro de este dispositivo"
+ },
+ "frigatePlus": {
+ "title": "Configuración de Frigate+",
+ "apiKey": {
+ "title": "Clave API de Frigate+",
+ "notValidated": "La clave API de Frigate+ no ha sido detectada o no ha sido validada",
+ "plusLink": "Lee más sobre Frigate+",
+ "desc": "La clave API de Frigate+ permite la integración con el servicio Frigate+.",
+ "validated": "La clave API de Frigate+ ha sido detectada y validada"
+ },
+ "snapshotConfig": {
+ "title": "Configuración de instantáneas",
+ "documentation": "Leer la documentación",
+ "table": {
+ "camera": "Cámara",
+ "snapshots": "Instantáneas",
+ "cleanCopySnapshots": "clean_copy
Instantáneas"
+ },
+ "desc": "Enviar a Frigate+ requiere que tanto las capturas instantáneas como las capturas clean_copy
estén habilitadas en tu configuración.",
+ "cleanCopyWarning": "Algunas cámaras tienen las instantáneas habilitadas pero tienen la copia limpia desactivada. Necesitas habilitar clean_copy
en tu configuración de instantáneas para poder enviar imágenes de estas cámaras a Frigate+."
+ },
+ "modelInfo": {
+ "title": "Información del modelo",
+ "modelType": "Tipo de modelo",
+ "baseModel": "Modelo base",
+ "supportedDetectors": "Detectores compatibles",
+ "dimensions": "Dimensiones",
+ "cameras": "Cámaras",
+ "loading": "Cargando información del modelo...",
+ "error": "No se pudo cargar la información del modelo",
+ "availableModels": "Modelos disponibles",
+ "loadingAvailableModels": "Cargando modelos disponibles...",
+ "modelSelect": "Tus modelos disponibles en Frigate+ se pueden seleccionar aquí. Ten en cuenta que solo se pueden seleccionar modelos compatibles con tu configuración actual de detectores.",
+ "trainDate": "Fecha de entrenamiento"
+ },
+ "toast": {
+ "success": "La configuración de Frigate+ se ha guardado. Reinicia Frigate para aplicar los cambios.",
+ "error": "No se pudieron guardar los cambios en la configuración: {{errorMessage}}"
+ }
}
}
diff --git a/web/public/locales/es/views/system.json b/web/public/locales/es/views/system.json
index 0967ef424..72ac25439 100644
--- a/web/public/locales/es/views/system.json
+++ b/web/public/locales/es/views/system.json
@@ -1 +1,157 @@
-{}
+{
+ "documentTitle": {
+ "storage": "Estadísticas de almacenamiento - Frigate",
+ "general": "Estadísticas generales - Frigate",
+ "logs": {
+ "frigate": "Registros de Frigate - Frigate",
+ "go2rtc": "Registros de Go2RTC - Frigate",
+ "nginx": "Registros de Nginx - Frigate"
+ },
+ "cameras": "Estadísticas de cámaras - Frigate",
+ "enrichments": "Estadísticas de Enriquecimientos - Frigate"
+ },
+ "logs": {
+ "copy": {
+ "label": "Copiar al portapapeles",
+ "success": "Registros copiados al portapapeles",
+ "error": "No se pudieron copiar los registros al portapapeles"
+ },
+ "type": {
+ "label": "Tipo",
+ "timestamp": "Marca de tiempo",
+ "tag": "Etiqueta",
+ "message": "Mensaje"
+ },
+ "tips": "Los registros se están transmitiendo desde el servidor",
+ "toast": {
+ "error": {
+ "fetchingLogsFailed": "Error al obtener los registros: {{errorMessage}}",
+ "whileStreamingLogs": "Error mientras se transmitían los registros: {{errorMessage}}"
+ }
+ },
+ "download": {
+ "label": "Descargar registros"
+ }
+ },
+ "title": "Sistema",
+ "metrics": "Métricas del sistema",
+ "general": {
+ "title": "General",
+ "detector": {
+ "title": "Detectores",
+ "inferenceSpeed": "Velocidad de inferencia del detector",
+ "cpuUsage": "Uso de CPU del Detector",
+ "memoryUsage": "Uso de Memoria del Detector"
+ },
+ "hardwareInfo": {
+ "title": "Información de Hardware",
+ "gpuUsage": "Uso de GPU",
+ "gpuEncoder": "Codificador de GPU",
+ "gpuDecoder": "Decodificador de GPU",
+ "gpuInfo": {
+ "vainfoOutput": {
+ "title": "Salida de Vainfo",
+ "returnCode": "Código de Retorno: {{code}}",
+ "processOutput": "Salida del Proceso:",
+ "processError": "Error del Proceso:"
+ },
+ "nvidiaSMIOutput": {
+ "cudaComputerCapability": "Capacidad de Cómputo CUDA: {{cuda_compute}}",
+ "title": "Salida de Nvidia SMI",
+ "driver": "Controlador: {{driver}}",
+ "name": "Nombre: {{name}}",
+ "vbios": "Información de VBios: {{vbios}}"
+ },
+ "toast": {
+ "success": "Información de GPU copiada al portapapeles"
+ },
+ "copyInfo": {
+ "label": "Copiar información de GPU"
+ },
+ "closeInfo": {
+ "label": "Cerrar información de GPU"
+ }
+ },
+ "gpuMemory": "Memoria de GPU"
+ },
+ "otherProcesses": {
+ "title": "Otros Procesos",
+ "processCpuUsage": "Uso de CPU del Proceso",
+ "processMemoryUsage": "Uso de Memoria del Proceso"
+ }
+ },
+ "storage": {
+ "recordings": {
+ "title": "Grabaciones",
+ "tips": "Este valor representa el almacenamiento total utilizado por las grabaciones en la base de datos de Frigate. Frigate no realiza un seguimiento del uso de almacenamiento de todos los archivos en tu disco.",
+ "earliestRecording": "Grabación más antigua disponible:"
+ },
+ "overview": "Resumen",
+ "title": "Almacenamiento",
+ "cameraStorage": {
+ "percentageOfTotalUsed": "Porcentaje del Total",
+ "bandwidth": "Ancho de Banda",
+ "camera": "Cámara",
+ "unused": {
+ "title": "No Utilizado",
+ "tips": "Este valor puede no representar con precisión el espacio libre disponible para Frigate si tienes otros archivos almacenados en tu disco además de las grabaciones de Frigate. Frigate no realiza un seguimiento del uso de almacenamiento fuera de sus grabaciones."
+ },
+ "title": "Almacenamiento de la Cámara",
+ "storageUsed": "Almacenamiento",
+ "unusedStorageInformation": "Información de Almacenamiento No Utilizado"
+ }
+ },
+ "cameras": {
+ "title": "Cámaras",
+ "overview": "Resumen",
+ "info": {
+ "cameraProbeInfo": "Información de Sondeo de la Cámara {{camera}}",
+ "streamDataFromFFPROBE": "Los datos del flujo se obtienen con ffprobe
.",
+ "codec": "Codec:",
+ "fetching": "Obteniendo Datos de la Cámara",
+ "stream": "Flujo {{idx}}",
+ "video": "Video:",
+ "fps": "FPS:",
+ "resolution": "Resolución:",
+ "error": "Error: {{error}}",
+ "unknown": "Desconocido",
+ "audio": "Audio:",
+ "tips": {
+ "title": "Información de Sondeo de la Cámara"
+ }
+ },
+ "framesAndDetections": "Fotogramas / Detecciones",
+ "label": {
+ "camera": "cámara",
+ "skipped": "omitido",
+ "detect": "detectar",
+ "ffmpeg": "ffmpeg",
+ "capture": "captura"
+ },
+ "toast": {
+ "success": {
+ "copyToClipboard": "Datos de sondeo copiados al portapapeles."
+ },
+ "error": {
+ "unableToProbeCamera": "No se pudo sondear la cámara: {{errorMessage}}"
+ }
+ }
+ },
+ "lastRefreshed": "Última actualización: ",
+ "enrichments": {
+ "infPerSecond": "Inferencias Por Segundo",
+ "embeddings": {
+ "plate_recognition_speed": "Velocidad de Reconocimiento de Matrículas",
+ "face_embedding_speed": "Velocidad de Incrustación de Rostros",
+ "image_embedding_speed": "Velocidad de Incrustación de Imágenes",
+ "text_embedding_speed": "Velocidad de Incrustación de Texto"
+ },
+ "title": "Enriquecimientos"
+ },
+ "stats": {
+ "ffmpegHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por FFMPEG ({{ffmpegAvg}}%)",
+ "detectHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por detección ({{detectAvg}}%)",
+ "healthy": "El sistema está saludable",
+ "reindexingEmbeddings": "Reindexando incrustaciones ({{processed}}% completado)"
+ }
+}