libre-webui 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -15
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +9 -0
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
- package/backend/dist/persistence/postgresMigrationRegistry.js +2 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
- package/backend/dist/persistence/postgresPersonalAutomationsMigration.d.ts +8 -0
- package/backend/dist/persistence/postgresPersonalAutomationsMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresPersonalAutomationsMigration.js +98 -0
- package/backend/dist/persistence/postgresPersonalAutomationsMigration.js.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresResourceRepositories.js +274 -0
- package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
- package/backend/dist/persistence/resourceTypes.d.ts +83 -2
- package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
- package/backend/dist/persistence/resourceTypes.js.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.d.ts +1 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.js +181 -0
- package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.js +233 -0
- package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.js +41 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
- package/backend/dist/platform/jobs/domainJobContracts.d.ts +3 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
- package/backend/dist/platform/jobs/domainJobContracts.js +3 -0
- package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
- package/backend/dist/platform/jobs/domainJobHandlers.js +101 -1
- package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
- package/backend/dist/routes/automations.d.ts +3 -0
- package/backend/dist/routes/automations.d.ts.map +1 -0
- package/backend/dist/routes/automations.js +232 -0
- package/backend/dist/routes/automations.js.map +1 -0
- package/backend/dist/routes/calendar.d.ts +3 -0
- package/backend/dist/routes/calendar.d.ts.map +1 -0
- package/backend/dist/routes/calendar.js +206 -0
- package/backend/dist/routes/calendar.js.map +1 -0
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +99 -7
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/ollama.d.ts.map +1 -1
- package/backend/dist/routes/ollama.js +4 -1
- package/backend/dist/routes/ollama.js.map +1 -1
- package/backend/dist/routes/search.d.ts.map +1 -1
- package/backend/dist/routes/search.js +5 -3
- package/backend/dist/routes/search.js.map +1 -1
- package/backend/dist/services/automationSchedulerService.d.ts +28 -0
- package/backend/dist/services/automationSchedulerService.d.ts.map +1 -0
- package/backend/dist/services/automationSchedulerService.js +191 -0
- package/backend/dist/services/automationSchedulerService.js.map +1 -0
- package/backend/dist/services/automationService.d.ts +53 -0
- package/backend/dist/services/automationService.d.ts.map +1 -0
- package/backend/dist/services/automationService.js +224 -0
- package/backend/dist/services/automationService.js.map +1 -0
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +7 -1
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +9 -1
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +91 -13
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/contextCompactionService.d.ts +11 -6
- package/backend/dist/services/contextCompactionService.d.ts.map +1 -1
- package/backend/dist/services/contextCompactionService.js +127 -27
- package/backend/dist/services/contextCompactionService.js.map +1 -1
- package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/durableChatGenerationService.js +15 -3
- package/backend/dist/services/durableChatGenerationService.js.map +1 -1
- package/backend/dist/services/ollamaService.d.ts.map +1 -1
- package/backend/dist/services/ollamaService.js +9 -2
- package/backend/dist/services/ollamaService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts +10 -0
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +42 -7
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +3 -0
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +5 -1
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/webSearchPlanService.d.ts +18 -0
- package/backend/dist/services/webSearchPlanService.d.ts.map +1 -0
- package/backend/dist/services/webSearchPlanService.js +160 -0
- package/backend/dist/services/webSearchPlanService.js.map +1 -0
- package/backend/dist/services/webSearchService.d.ts +9 -3
- package/backend/dist/services/webSearchService.d.ts.map +1 -1
- package/backend/dist/services/webSearchService.js +8 -2
- package/backend/dist/services/webSearchService.js.map +1 -1
- package/backend/dist/storage.d.ts +7 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +65 -1
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/types/index.d.ts +79 -0
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/utils/automationSchedule.d.ts +26 -0
- package/backend/dist/utils/automationSchedule.d.ts.map +1 -0
- package/backend/dist/utils/automationSchedule.js +231 -0
- package/backend/dist/utils/automationSchedule.js.map +1 -0
- package/backend/dist/utils/chatContext.d.ts +7 -0
- package/backend/dist/utils/chatContext.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.js +13 -2
- package/backend/dist/utils/chatContext.js.map +1 -1
- package/backend/dist/utils/openAIResponsesAdapter.d.ts.map +1 -1
- package/backend/dist/utils/openAIResponsesAdapter.js +3 -1
- package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.d.ts +1 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +82 -19
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginModelCatalog.d.ts +20 -0
- package/backend/dist/utils/pluginModelCatalog.d.ts.map +1 -1
- package/backend/dist/utils/pluginModelCatalog.js +101 -9
- package/backend/dist/utils/pluginModelCatalog.js.map +1 -1
- package/backend/dist/utils/resourceLimits.d.ts +7 -0
- package/backend/dist/utils/resourceLimits.d.ts.map +1 -1
- package/backend/dist/utils/resourceLimits.js +7 -0
- package/backend/dist/utils/resourceLimits.js.map +1 -1
- package/backend/dist/utils/thinkingOptions.d.ts +23 -3
- package/backend/dist/utils/thinkingOptions.d.ts.map +1 -1
- package/backend/dist/utils/thinkingOptions.js +35 -9
- package/backend/dist/utils/thinkingOptions.js.map +1 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +9 -3
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/assets/index-6o-Hc2wS.js +41 -0
- package/frontend/dist/assets/index-D-pM957b.css +1 -0
- package/frontend/dist/index.html +12 -12
- package/frontend/dist/js/ArtifactContainer-CpUi6ekF.js +1 -0
- package/frontend/dist/js/{ArtifactDemoPage-TONeQvof.js → ArtifactDemoPage-BeNs3gHp.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-CV2XXu_t.js → ArtifactSandboxFrame-qsj_Y3LV.js} +2 -2
- package/frontend/dist/js/ArtifactSlideOutPanel-CSFRluWA.js +1 -0
- package/frontend/dist/js/AutomationsPage-KUeWoZNv.js +1 -0
- package/frontend/dist/js/CalendarPage-D9I972w8.js +1 -0
- package/frontend/dist/js/ChatPage-CmBx4oAL.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-smhj0X6o.js → FirstTimeSetup-Df0YJni3.js} +1 -1
- package/frontend/dist/js/GalleryPage-bLCrdJN_.js +1 -0
- package/frontend/dist/js/HomePage-Uc6PEg-U.js +1 -0
- package/frontend/dist/js/{LibreClawPage-CRKei1MM.js → LibreClawPage-CG63DHg1.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-D0amaOnl.js → ModelManagerModals-DcLGYN3l.js} +1 -1
- package/frontend/dist/js/ModelSelector-yxJC64rM.js +1 -0
- package/frontend/dist/js/ModelsPage-1R_TxgmJ.js +2 -0
- package/frontend/dist/js/NotesPage-L65j5HoW.js +1 -0
- package/frontend/dist/js/PersonasPage-CKeBpHIH.js +13 -0
- package/frontend/dist/js/PluginUsagePage-BX1SKMbW.js +1 -0
- package/frontend/dist/js/{RichMessageContent-Bxi_u0gC.js → RichMessageContent-DiySVYGB.js} +1 -1
- package/frontend/dist/js/SettingsModal-68SG1uZ2.js +1 -0
- package/frontend/dist/js/SystemPage-CytpZiQV.js +1 -0
- package/frontend/dist/js/UserManagementPage-BzJBvZiS.js +1 -0
- package/frontend/dist/js/WorkPage-C8gr0QJe.js +6 -0
- package/frontend/dist/js/api-BDtqBtqw.js +14 -0
- package/frontend/dist/js/{appStore-CJtomipz.js → appStore-0JnCUlEq.js} +2 -2
- package/frontend/dist/js/ar-CSpi37Gr.js +2 -0
- package/frontend/dist/js/{authStore-BckFDL70.js → authStore-DbMdvNgJ.js} +3 -3
- package/frontend/dist/js/{babel-D24oDI9y.js → babel-BsYoxD-7.js} +1 -1
- package/frontend/dist/js/bn-CyH1BeDD.js +2 -0
- package/frontend/dist/js/calendarDates-Co3o_05Y.js +1 -0
- package/frontend/dist/js/chatStore-CHQ2uINS.js +3 -0
- package/frontend/dist/js/{config-CNVNpf_q.js → config-DSOYQ9a3.js} +1 -1
- package/frontend/dist/js/cs-Cv2NfRK5.js +2 -0
- package/frontend/dist/js/da-D6D6IvPK.js +2 -0
- package/frontend/dist/js/de-BNoJJTrT.js +2 -0
- package/frontend/dist/js/es-kzo9C7q_.js +2 -0
- package/frontend/dist/js/{estree-D1TYSBcf.js → estree-BcnBcOAx.js} +7 -7
- package/frontend/dist/js/fr-CjHYvJRp.js +2 -0
- package/frontend/dist/js/hi-BU98AdCQ.js +2 -0
- package/frontend/dist/js/{html-Dmddj0zf.js → html-DkY55Jys.js} +10 -10
- package/frontend/dist/js/id-CpdedejX.js +2 -0
- package/frontend/dist/js/is-Cp5dDWBH.js +2 -0
- package/frontend/dist/js/it-CuH_cK4U.js +2 -0
- package/frontend/dist/js/ja-BWXXXiHn.js +2 -0
- package/frontend/dist/js/ko-DQgv2M1t.js +2 -0
- package/frontend/dist/js/{markdown-Bl_LsHEk.js → markdown-IZSI9DXw.js} +6 -6
- package/frontend/dist/js/{messageCodeStyles-CgKxn4tN.js → messageCodeStyles-BFNR9Wv6.js} +2 -2
- package/frontend/dist/js/ms-DCcRoIcX.js +2 -0
- package/frontend/dist/js/nl-CbKR1_EU.js +2 -0
- package/frontend/dist/js/pl-CRyJZccn.js +2 -0
- package/frontend/dist/js/{postcss-Bx9CTcIc.js → postcss-BJ0okz7n.js} +1 -1
- package/frontend/dist/js/pt-BXYmHFGH.js +2 -0
- package/frontend/dist/js/{router-vendor-CbPDks39.js → router-vendor-DGFGM3EP.js} +1 -1
- package/frontend/dist/js/ru-M9SyZG4b.js +2 -0
- package/frontend/dist/js/{standalone-BWau8hEE.js → standalone-Csw3jfJ_.js} +5 -5
- package/frontend/dist/js/sv-DJ486LTU.js +2 -0
- package/frontend/dist/js/th-Ch7gKtZv.js +2 -0
- package/frontend/dist/js/tr-ClehWhSC.js +2 -0
- package/frontend/dist/js/{typescript-DxGn3Yn-.js → typescript-CnF4UVx7.js} +2 -2
- package/frontend/dist/js/{ui-jlx9WA5A.js → ui-CC-K19wO.js} +2 -2
- package/frontend/dist/js/ui-vendor-B1UgO3vd.js +177 -0
- package/frontend/dist/js/uk-BqAd5zHF.js +2 -0
- package/frontend/dist/js/{vi-BgRaIrQC.js → vi-D9gjlDVB.js} +2 -2
- package/frontend/dist/js/{workApi-DWRpZ_cq.js → workApi-C3uy9EDT.js} +3 -3
- package/frontend/dist/js/{yaml-DioTxVLA.js → yaml-DzT5hBSH.js} +5 -5
- package/frontend/dist/js/zh-DKTyHkiR.js +2 -0
- package/package.json +2 -2
- package/frontend/dist/assets/index-BlTbxYPP.js +0 -33
- package/frontend/dist/assets/index-CbiWSGOj.css +0 -1
- package/frontend/dist/js/ArtifactContainer-C-n1vPsA.js +0 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-2exw7YqL.js +0 -1
- package/frontend/dist/js/ChatPage-wnyG_TyC.js +0 -23
- package/frontend/dist/js/GalleryPage-BZfeWlBg.js +0 -1
- package/frontend/dist/js/HomePage-gf4GgI6z.js +0 -1
- package/frontend/dist/js/ModelSelector-C5Tn6y0p.js +0 -1
- package/frontend/dist/js/ModelsPage-Rbags4Xq.js +0 -2
- package/frontend/dist/js/NotesPage-9NR9HZZ8.js +0 -1
- package/frontend/dist/js/PersonasPage-DYP67Qiy.js +0 -13
- package/frontend/dist/js/PluginUsagePage-QtCgymRu.js +0 -1
- package/frontend/dist/js/SettingsModal-B4RelkLP.js +0 -1
- package/frontend/dist/js/SystemPage-xFSTYdBS.js +0 -1
- package/frontend/dist/js/UserManagementPage-Cp430WCP.js +0 -1
- package/frontend/dist/js/WorkPage-DFES41Qm.js +0 -6
- package/frontend/dist/js/api-DUUxxx_B.js +0 -14
- package/frontend/dist/js/ar-DMH3qbt6.js +0 -2
- package/frontend/dist/js/bn-CGDX8khx.js +0 -2
- package/frontend/dist/js/chatStore-DK-_wd-j.js +0 -3
- package/frontend/dist/js/cs-CJLgUk3m.js +0 -2
- package/frontend/dist/js/da-DnZMnCVM.js +0 -2
- package/frontend/dist/js/de-CWpguVQ5.js +0 -2
- package/frontend/dist/js/es-DVU1vjm0.js +0 -2
- package/frontend/dist/js/fr-pWnSnypD.js +0 -2
- package/frontend/dist/js/hi-B6xDfxA5.js +0 -2
- package/frontend/dist/js/id-BThSTUAG.js +0 -2
- package/frontend/dist/js/is-BOohDFie.js +0 -2
- package/frontend/dist/js/it-BdRArcCC.js +0 -2
- package/frontend/dist/js/ja-5Cq35sMr.js +0 -2
- package/frontend/dist/js/ko-BlzNRtpQ.js +0 -2
- package/frontend/dist/js/ms-CtGeurkZ.js +0 -2
- package/frontend/dist/js/nl-MKPHGjVF.js +0 -2
- package/frontend/dist/js/pl-BwBrqCey.js +0 -2
- package/frontend/dist/js/pt-CKzoHWBB.js +0 -2
- package/frontend/dist/js/ru-BQC4jh0Y.js +0 -2
- package/frontend/dist/js/sv-Cm0qXxzM.js +0 -2
- package/frontend/dist/js/th-DUPbiRI2.js +0 -2
- package/frontend/dist/js/tr-AsFu_Br5.js +0 -2
- package/frontend/dist/js/ui-vendor-54SgntkX.js +0 -177
- package/frontend/dist/js/uk-DrMMOZ17.js +0 -2
- package/frontend/dist/js/zh-B4rcgcAy.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={common:{loading:`Cargando...`,save:`Guardar`,saving:`Guardando...`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,close:`Cerrar`,back:`Atrás`,next:`Siguiente`,confirm:`Confirmar`,error:`Error`,success:`Éxito`,warning:`Advertencia`,or:`o`,optional:`opcional`,enabled:`Habilitado`,disabled:`Deshabilitado`,on:`Activado`,off:`Desactivado`,yes:`Sí`,no:`No`,search:`Buscar`,noResults:`No se encontraron resultados`,retry:`Reintentar`,refresh:`Actualizar`,download:`Descargar`,upload:`Subir`,export:`Exportar`,import:`Importar`,reset:`Restablecer`,apply:`Aplicar`,clear:`Limpiar`,all:`Todos`,none:`Ninguno`,default:`Predeterminado`,custom:`Personalizado`,remove:`Quitar`,home:`Inicio`,more:`Más`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`Bienvenido de nuevo`,subtitle:`Inicia sesión en tu cuenta para continuar`,username:`Nombre de usuario`,usernamePlaceholder:`Ingresa tu nombre de usuario`,password:`Contraseña`,passwordPlaceholder:`Ingresa tu contraseña`,signIn:`Iniciar sesión`,signingIn:`Iniciando sesión...`,noAccount:`¿No tienes una cuenta?`,signUpHere:`Regístrate aquí`,loginSuccess:`¡Inicio de sesión exitoso!`,loginFailed:`Error de inicio de sesión`,checkCredentials:`Error de inicio de sesión. Por favor verifica tus credenciales.`,approvalPending:`Tu cuenta está esperando la aprobación del administrador.`,enterBoth:`Por favor ingresa usuario y contraseña`,githubSuccess:`¡Inicio de sesión con GitHub exitoso!`,githubFailed:`Autenticación de GitHub fallida`,githubVerifyFailed:`Error al verificar autenticación de GitHub`,verificationFailed:`La verificación de seguridad falló. Actualiza la página e inténtalo de nuevo.`},signup:{title:`Crear cuenta`,subtitle:`Regístrate para una nueva cuenta`,username:`Nombre de usuario`,usernamePlaceholder:`Elige un nombre de usuario`,email:`Correo electrónico`,emailPlaceholder:`tu@correo.com`,password:`Contraseña`,passwordPlaceholder:`Elige una contraseña`,confirmPassword:`Confirmar contraseña`,confirmPasswordPlaceholder:`Confirma tu contraseña`,createAccount:`Crear cuenta`,creatingAccount:`Creando cuenta...`,hasAccount:`¿Ya tienes una cuenta?`,signInHere:`Inicia sesión aquí`,signupSuccess:`¡Cuenta creada exitosamente!`,approvalPending:`Registro recibido. Un administrador debe aprobar tu cuenta.`,awaitingApproval:`Esperando aprobación`,awaitingApprovalDescription:`Tu cuenta ha sido creada, pero un administrador debe activarla antes de que puedas iniciar sesión.`,backToSignIn:`Volver a iniciar sesión`,signupFailed:`Error en el registro`,tryAgain:`Error en el registro. Por favor intenta de nuevo.`,usernameRequired:`Nombre de usuario y contraseña son obligatorios`,passwordMismatch:`Las contraseñas no coinciden`,passwordTooShort:`La contraseña debe tener al menos 6 caracteres`},logout:{button:`Cerrar sesión`,success:`Sesión cerrada exitosamente`},oauth:{continueWith:`Continuar con {{provider}}`,connectingTo:`Conectando a {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`Verificando autenticación...`,welcome:`Bienvenido`,noEmail:`Sin correo electrónico`,role:`Rol`,id:`ID`,userId:`ID de usuario`,signInDescription:`Inicia sesión con tu cuenta de GitHub para continuar`,signInWithGitHub:`Iniciar sesión con GitHub`,jwtActive:`Autenticación JWT activa`,jwtDescription:`Autenticación basada en JWT con GitHub OAuth`,github:`GitHub`,provider:`Proveedor`,tagline:`Tu pila de IA debería responder a ti.`,selfHosted:`Autohospedado · Apache 2.0`,highlights:{local:{title:`Primero local`,body:`Tus conversaciones y archivos permanecen en la máquina donde ejecutas esto.`},providers:{title:`Cualquier proveedor`,body:`Modelos locales a través de Ollama, además de los proveedores remotos que elijas añadir.`},work:{title:`Trabajo aislado`,body:`Dale a un modelo un espacio de trabajo aislado con archivos, una terminal y una vista previa.`}},oidc:{defaultProviderName:`Inicio de sesión único`}},setup:{welcome:{title:`Bienvenido a Libre WebUI`,subtitle:`Comencemos`,description:`Configura tu instancia de Libre WebUI en solo unos pasos`,createAdmin:`Crear cuenta de administrador`,features:{secure:{title:`Seguro y privado`,description:`Tus conversaciones permanecen en tu dispositivo`},fast:{title:`Rápido y responsivo`,description:`Optimizado para velocidad y rendimiento`},openSource:{title:`Código abierto`,description:`Software libre y de código abierto`}}},admin:{title:`Crear cuenta de administrador`,subtitle:`Configuración del administrador`,description:`Crea la primera cuenta de administrador para tu instancia de Libre WebUI`,usernamePlaceholder:`Ingresa nombre de usuario admin`,passwordPlaceholder:`Ingresa contraseña (mín. 6 caracteres)`,confirmPlaceholder:`Confirma tu contraseña`,creating:`Creando...`,createAdmin:`Crear admin`,success:`¡Cuenta de administrador creada exitosamente!`,failed:`Error al crear cuenta de administrador`,approvalUnexpected:`El administrador inicial no pudo ser activado. Por favor, inténtalo de nuevo.`,fillAllFields:`Por favor completa todos los campos`,note:`Esta será la cuenta de administrador principal para tu instancia de Libre WebUI`},encryptionKey:{title:`Guarda tu clave de cifrado`,subtitle:`Importante: Guarda esta clave`,description:`Esta clave de cifrado protege tus datos sensibles. Guárdala de forma segura - la necesitarás si alguna vez necesitas restaurar tu base de datos.`,warning:`Advertencia`,warningText:`Si pierdes esta clave y necesitas restaurar tu base de datos, tus datos cifrados (claves API, preferencias) serán irrecuperables.`,label:`Tu clave de cifrado`,loading:`Cargando...`,copyToClipboard:`Copiar al portapapeles`,copied:`¡Clave de cifrado copiada al portapapeles!`,copyFailed:`Error al copiar la clave al portapapeles`,envNote:`Esta clave también está guardada en tu archivo backend/.env como ENCRYPTION_KEY`,acknowledgment:`He guardado mi clave de cifrado en un lugar seguro y entiendo que perderla puede resultar en pérdida de datos.`,confirmRequired:`Por favor confirma que has guardado la clave de cifrado`,continue:`Continuar a Libre WebUI`}},chat:{greeting:{morning:`Buenos días`,afternoon:`Buenas tardes`,evening:`Buenas tardes`,night:`Buenas noches`},followUp:`Continuar`,welcome:{helpToday:`¿En qué puedo ayudarte hoy?`,helpTonight:`¿En qué puedo ayudarte esta noche?`,variety:{create:{title:`¿Qué vamos a crear?`,subtitle:`Empieza con una idea, un boceto o un problema que se resiste.`},explore:{title:`¿Por dónde empezamos?`,subtitle:`Trae esa pregunta a la que siempre vuelves.`},imagine:{title:`¿Qué estás imaginando?`,subtitle:`Podemos darle forma juntos.`},focus:{title:`¿Qué merece tu atención?`,subtitle:`Aclaremos cuál es el siguiente paso.`},untangle:{title:`¿Qué se ha complicado?`,subtitle:`Cuéntame primero la versión desordenada.`},momentum:{title:`Cuando quieras.`,subtitle:`Retoma una idea, un plan o algo que dejaste a medias.`},open:{title:`¿Qué tienes en mente?`,subtitle:`Una idea pequeña o un proyecto ambicioso. Todo sirve.`},challenge:{title:`¿Qué vamos a resolver?`,subtitle:`Cuéntame qué no está funcionando todavía.`},draft:{title:`Empecemos por algún sitio.`,subtitle:`No tiene que estar perfecto.`},possibility:{title:`¿En qué podría convertirse?`,subtitle:`Enséñame el material en bruto.`},unexpected:{title:`Hagamos algo inesperado.`,subtitle:`Dame una condición, un estado de ánimo o una idea a medio formar.`}}},input:{placeholder:`Enviar un mensaje`,messagePlaceholder:`Mensaje...`,attachImages:`Adjuntar imágenes`,attachments:`Adjuntos y funciones avanzadas`,sendMessage:`Enviar mensaje`,stopGeneration:`Detener generación`,menu:{uploadImages:`Subir imágenes`,attachDocument:`Adjuntar documento`,attachWebpage:`Adjuntar página web`,structuredOutput:`Salida estructurada`,attach:`Adjuntar`,documentAttached:`Documento adjuntado`,webpageAttached:`Página web adjuntada`,attachFailed:`No se pudo adjuntar`,attachKnowledge:`Adjuntar conocimiento`,noCollections:`Aún no hay colecciones: crea una en Ajustes → Documentos`},voiceInput:`Entrada de voz`,voiceStop:`Dejar de escuchar`,transcriptionSource:`Fuente de reconocimiento de voz`,browserSpeech:`Servicio de voz del navegador`,providerTranscriptionDisclosure:`Grabar y enviar audio a {{provider}} para transcribirlo`,webSearchOn:`Búsqueda web activada — las respuestas usan resultados en vivo`,webSearchOff:`Buscar en la web para este mensaje`,thinkingOn:`Razonamiento activado ({{level}})`,thinkingOff:`Razonar antes de responder`},session:{new:`Nuevo chat`,work:`Trabajo`,chat:`Chat`,private:`Privado`,incognito:`Chat de incógnito`,privateMode:`Modo privado`,privateDescription:`Esta conversación no se guardará`,privateTooltip:`Iniciar una conversación privada que no se guardará`,deleteConfirm:`¿Estás seguro de que deseas eliminar este chat?`,generatingTitle:`Generando título`,noChats:`Aún no hay chats`,createFirst:`Crea tu primer chat arriba`,chats:`Chats`,renameChat:`Renombrar chat`,openNewTab:`Abrir en pestaña nueva`,pinChat:`Fijar`,unpinChat:`Desfijar`,deleteChat:`Eliminar chat`,archiveChat:`Archivar chat`,groups:{pinned:`Fijados`,today:`Hoy`,yesterday:`Ayer`,previous7Days:`Últimos 7 días`,previous30Days:`Últimos 30 días`,older:`Más antiguos`},folder:{new:`Nueva carpeta`,namePlaceholder:`Nombre de la carpeta`,move:`Mover a carpeta`,remove:`Quitar de la carpeta`,delete:`Eliminar carpeta`,deleteConfirm:`¿Eliminar esta carpeta? Los chats se conservan.`}},persona:{applied:`Persona aplicada`,label:`Persona`,loadFailed:`No se pudieron cargar los detalles de la persona`,removeFailed:`No se pudo eliminar la persona`},model:{updated:`Modelo actualizado`,noModels:`No hay modelos disponibles`,noModelsDescription:`No hay modelos disponibles. Asegúrate de que Ollama esté ejecutándose y tenga modelos instalados.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`No hay modelos disponibles. Asegúrate de que Ollama esté ejecutándose y los modelos estén instalados.`,selectBeforePrivateChat:`Selecciona un modelo disponible antes de iniciar el chat privado`,selectBeforeSending:`Selecciona un modelo disponible antes de enviar`},footer:{disclaimer:`Los LLM pueden cometer errores - verifica la información importante`,images:`{{count}} imagen`,images_plural:`{{count}} imágenes`,structuredOutput:`Salida estructurada`},mediaUpload:{dropImagesHere:`Arrastra imágenes aquí o`,supportedFormats:`Soporta: JPG, PNG, GIF, WebP (máx. 10 MB cada una)`,browse:`explorar`},structuredOutput:{title:`Formato de respuesta`,none:`Ninguno (lenguaje natural)`,noneDescription:`Respuesta predeterminada en lenguaje natural`,json:`JSON`,jsonDescription:`Formato JSON estructurado`,list:`Lista`,listDescription:`Array de elementos`,summary:`Resumen`,summaryDescription:`Resumen de documento con puntos clave`,analysis:`Análisis`,analysisDescription:`Análisis estructurado con pros/contras`,custom:`Esquema personalizado`,customDescription:`Define tu propio esquema JSON`,customSchema:`Esquema JSON personalizado`,schemaPreview:`Vista previa del esquema`,applySchema:`Aplicar esquema`,cancel:`Cancelar`,enabled:`Salida estructurada habilitada`},controls:{title:`Controles del chat`,systemPrompt:`Prompt del sistema`,systemPromptPlaceholder:`Instrucciones que solo se aplican a este chat…`,advancedParams:`Parámetros avanzados`,advancedParamsDescription:`Anulaciones para este chat. Los campos vacíos usan tus valores globales.`,fromModel:`del modelo`,fromModelHint:`Este valor proviene de la configuración recomendada por el propio modelo.`,contextCapped:`Contexto limitado a {{context}} de los {{trained}} para los que se entrenó el modelo, para que siga cargando.`,saved:`Controles guardados`,saveFailed:`No se pudieron guardar los controles`,params:{temperature:`Temperatura`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`Tokens máx.`,repeatPenalty:`Penalización de repetición`,seed:`Semilla`,contextLength:`Longitud de contexto`},thinking:`Razonamiento`,thinkingDescription:`Cuánto razona el modelo antes de responder. Los modelos sin razonamiento lo ignoran.`,compaction:`Compactación del contexto`,compactionDescription:`Cuando el servidor compacta conversaciones largas, este chat puede quedar fuera y conservar todo su historial.`,compactionDefault:`Predeterminado del servidor`,compactionOff:`Desactivada en este chat`},message:{sources:`Fuentes`},toasts:{chatCreated:`Nuevo chat creado`,createFailed:`No se pudo crear la sesión`,loadFailed:`No se pudieron cargar las sesiones`,chatDeleted:`Chat eliminado`,deleteFailed:`No se pudo eliminar el chat`,deleteSessionFailed:`No se pudo eliminar la sesión`,historyCleared:`Todo el historial de chat se ha borrado`,historyClearFailed:`No se pudo borrar el historial de chat`,titleUpdated:`Título del chat actualizado`,updateFailed:`No se pudo actualizar la sesión`,noValidSession:`No hay una sesión de chat válida. Crea o selecciona un chat.`,sessionNotFound:`Sesión no encontrada o no válida. Selecciona o crea una sesión de chat válida.`,noModelProvider:`No hay ningún proveedor de modelos disponible`,modelUnavailable:`El modelo seleccionado "{{model}}" no está disponible desde {{provider}}. Reactiva ese proveedor o selecciona otro modelo.`,modelSwitched:`Cambiado a {{model}} (el modelo anterior ya no está disponible)`,modelsLoadFailed:`No se pudieron cargar los modelos`,modelUpdated:`Modelo actualizado para el chat actual`,modelUpdateFailed:`No se pudo actualizar el modelo de la sesión`},documents:{title:`Documentos en contexto`},context:{title:`Ventana de contexto:`,full:`{{percent}}% llena`,tokensUsed:`{{used}} / {{budget}} tokens usados`,tokensUsedNoBudget:`{{used}} tokens usados`,capped:`limitada desde {{trained}}`}},sidebar:{navigation:{chat:`Chat`,models:`Modelos`,personas:`Personas`,imagine:`Generar`,agents:`Agentes`,work:`Trabajo`,settings:`Configuración`,usageAnalytics:`Uso del proveedor`,system:`Sistema`,userManagement:`Gestión de usuarios`,signOut:`Cerrar sesión`,exploreLabel:`Explorar`,notes:`Notas`,calendar:`Calendario`,automations:`Automatizaciones`},toggleSize:`Cambiar tamaño de barra lateral`,expandSidebar:`Expandir barra lateral`},user:{menu:{changePicture:`Cambiar imagen`,settings:`Configuración`,usageAnalytics:`Uso del proveedor`,system:`Sistema`,userManagement:`Gestión de usuarios`,logout:`Cerrar sesión`,pinShortcut:`Fijar en la barra lateral`,unpinShortcut:`Quitar de la barra lateral`},avatar:{title:`Cambiar imagen de perfil`,updated:`Imagen de perfil actualizada`,updateFailed:`Error al actualizar imagen de perfil`,saving:`Guardando...`,label:`Avatar`,uploadAvatarImage:`Subir imagen de avatar`,dragAndDrop:`Arrastra y suelta una imagen o haz clic para explorar`,chooseImage:`Elegir imagen`,uploading:`Subiendo...`,enterImageUrl:`O introduce la URL de la imagen`,supportedFormats:`Soporta: JPG, PNG, GIF, WebP (máx. 2 MB). Las imágenes cuadradas funcionan mejor.`,customAvatar:`Imagen de avatar personalizada`,clickToChange:`Haz clic para cambiar o eliminar`,removed:`Avatar eliminado`,uploaded:`Avatar subido con éxito`,invalidFile:`Por favor selecciona un archivo de imagen válido`,fileTooLarge:`El tamaño de la imagen del avatar debe ser menor a 2 MB`,readFailed:`Error al leer el archivo de imagen`,uploadFailed:`Error al subir la imagen del avatar`},profile:{noEmail:`Sin correo electrónico`}},settings:JSON.parse(`{"title":"Configuración","tabs":{"appearance":"Apariencia","model":"Modelo","systemMessage":"Mensaje del sistema","plugins":"Plugins","search":"Búsqueda","generation":"Generación","documents":"Documentos","tts":"Voz","imageGen":"Imágenes","data":"Datos","shortcuts":"Atajos","about":"Acerca de","sessions":"Sesiones","apiKeys":"Claves API"},"appearance":{"title":"Apariencia","language":{"title":"Idioma","description":"Selecciona tu idioma preferido"},"theme":{"title":"Tema","light":"Claro","dark":"Oscuro","amoled":"Negro Puro","system":"Sistema"},"accent":{"title":"Color de acento","custom":"Color personalizado","useColor":"Usar {{color}} como acento","behaviorTitle":"Paleta de la interfaz","behaviorDescription":"Elige si el acento se limita a los controles o adapta toda la interfaz clara u oscura.","defaultStyle":"Predeterminada","defaultStyleDescription":"Mantener las superficies neutras de los temas claro y oscuro.","adaptedStyle":"Adaptar al acento","adaptedStyleDescription":"Teñir superficies, bordes y texto con el color de acento."},"chatInterface":{"title":"Interfaz de chat","showUsername":"Mostrar nombre de usuario","showUsernameDescription":"Mostrar nombre de usuario en mensajes de chat","followUpSuggestions":"Sugerencias de seguimiento","followUpSuggestionsDescription":"Sugerir respuestas rápidas tras cada respuesta","hapticFeedback":"Respuesta háptica (Android)","hapticFeedbackDescription":"Usar vibraciones sutiles para acciones móviles importantes"},"background":{"title":"Imagen de fondo","enable":"Habilitar imagen de fondo","enableDescription":"Mostrar fondo personalizado con efecto de desenfoque","blur":"Desenfoque","opacity":"Opacidad","upload":"Subir imagen de fondo","dragDrop":"Arrastra una imagen o haz clic para explorar","chooseImage":"Elegir imagen"}},"saveSettings":"Guardar configuración","model":{"title":"Configuración del modelo","defaultModel":"Modelo predeterminado","defaultModelDescription":"Este modelo se usará por defecto para nuevas conversaciones","selectModel":"Seleccionar un modelo","specializedModels":"Modelos especializados","visionModel":"Modelo de visión","selectVisionModel":"Usar el modelo de chat actual","visionModelDescription":"Se utiliza automáticamente siempre que el contexto del chat saliente contenga imágenes. Elige un modelo que admita la entrada de imágenes.","visionModelUpdateFailed":"Error al actualizar el modelo de visión: {{error}}","visionModelNoProvider":"Este modelo de visión no tiene identidad de proveedor. Selecciona un modelo disponible.","persona":"Persona","updateAll":"Actualizar todos los modelos","updateAllDescription":"Buscar actualizaciones y descargar las últimas versiones de todos los modelos instalados","updateAllButton":"Actualizar todos","updating":"Actualizando modelos...","currentModelInfo":"Info del modelo actual","name":"Nombre","size":"Tamaño","family":"Familia","format":"Formato","status":"Estado","statusStarting":"Iniciando...","statusComplete":"Completado","statusError":"Error","bulkOperations":"Operaciones masivas","autoTitle":{"title":"Generación automática de títulos","enable":"Habilitar título automático","enableDescription":"Generar automáticamente títulos para nuevas conversaciones","taskModel":"Modelo de tarea","selectTaskModel":"Seleccionar modelo de tarea","taskModelDescription":"Modelo usado para generar títulos de conversación"},"updatingModel":"Actualizando {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} de {{total}} modelos"},"systemMessage":{"title":"Mensaje del sistema","description":"Establece un mensaje de sistema personalizado que se usará para todas las nuevas conversaciones.","placeholder":"Ingresa un mensaje del sistema...","saved":"Mensaje del sistema guardado","saveFailed":"Error al guardar mensaje del sistema"},"plugins":{"title":"Plugins","description":"Gestiona tus plugins instalados","providerConnections":"Conexiones de proveedores","providerConnectionsDescription":"Conecta, configura e inspecciona proveedores de modelos a través de plugins.","providers":"Proveedores","searchProviders":"Buscar proveedores","noProvidersFound":"Ningún proveedor coincide con tu búsqueda.","selectProvider":"Selecciona un proveedor","selectProviderDescription":"Elige un proveedor para inspeccionar su conexión y catálogo de modelos.","addNew":"Agregar nuevo plugin","upload":"Subir plugin","addJson":"Agregar JSON","uploading":"Subiendo...","jsonPlaceholder":"Pega la configuración JSON del plugin...","install":"Instalar plugin","noPlugins":"No hay plugins instalados","noPluginsDescription":"Agrega un plugin para extender funcionalidades","loading":"Cargando plugins...","installed":"Plugins instalados","active":"Plugins activos","activeLabel":"Activo","inactive":"Inactivo","activate":"Activar","deactivate":"Desactivar","models":"modelos","apiKeySet":"Clave API establecida","apiKeyConfiguration":"Configuración de clave API","apiKeyDescription":"Almacena una clave API personal para {{name}}.","apiKeyEnvAlternative":"Alternativamente, establece la","environmentVariable":"variable de entorno","apiKeyConfigured":"Clave API configurada","apiKeyPlaceholder":"Ingresa tu clave API...","saveApiKey":"Guardar clave API","showApiKey":"Mostrar clave API","hideApiKey":"Ocultar clave API","configure":"Configurar","providerSettings":"Ajustes del proveedor","status":"Estado","defaultEndpoint":"Endpoint predeterminado","modelCatalog":"Catálogo de modelos","modelCatalogDescription":"Modelos descubiertos y configurados para este proveedor y sus capacidades.","refreshModels":"Actualizar modelos","noModelsConfigured":"No hay modelos configurados para este proveedor.","modelId":"ID del modelo","capabilities":"Capacidades","modelCatalogUpdated":"Catálogo de modelos actualizado: {{count}} modelos.","modelCatalogUnchanged":"El catálogo de modelos ya está actualizado.","modelCatalogNeedsApiKey":"Añade una clave de API válida para este proveedor para cargar su lista de modelos en vivo.","modelCatalogUnavailable":"No se pudo cargar la lista de modelos del proveedor.","modelCatalogRefreshFailed":"Error al actualizar el catálogo de modelos","capability":{"chat":"Chat","embedding":"Embedding","image":"Imagen","speech":"Voz","transcription":"Transcripción"},"exportPlugin":"Exportar plugin","deletePlugin":"Eliminar plugin","apiKey":{"title":"Clave API","placeholder":"Ingresa clave API","save":"Guardar clave","remove":"Eliminar clave","configured":"Clave API configurada","notConfigured":"Clave API requerida","saved":"Clave API guardada exitosamente","removed":"Clave API eliminada","saveFailed":"Error al guardar clave API","removeFailed":"Error al eliminar clave API","enterKey":"Por favor ingresa una clave API"},"variables":"Variables"},"generation":{"title":"Opciones de generación","description":"Configura cómo la IA genera respuestas","scopeLabel":"Se aplica a","scopeAll":"Todos los modelos","scopeModel":"Solo {{model}}","scopeAllHint":"Los valores que usa cada modelo salvo que tenga los suyos.","scopeModelHint":"Se guarda solo para este modelo y prevalece sobre los valores generales.","advancedSettings":"Ajustes avanzados de generación","advancedSettingsDescription":"Muestreo, límites de tokens, contexto, penalizaciones y secuencias de parada","coreParameters":"Parámetros principales","temperature":"Temperatura","temperatureDescription":"Controla la aleatoriedad. Valores más bajos son más enfocados, más altos más creativos.","topP":"Top P","topPDescription":"Controla la diversidad mediante muestreo de núcleo. Valores más bajos se enfocan en tokens probables.","topK":"Top K","topKDescription":"Limita la selección de tokens a los K más probables. Establece en 0 para deshabilitar.","minP":"Min P","minPDescription":"Umbral mínimo de probabilidad para selección de tokens.","generationControl":"Control de generación","maxTokens":"Tokens máximos","maxTokensDescription":"Número máximo de tokens a generar en la respuesta.","repeatPenalty":"Penalización de repetición","repeatPenaltyDescription":"Penaliza tokens repetidos. Valores más altos reducen la repetición.","contextLength":"Longitud de contexto","contextLengthDescription":"Tamaño máximo de ventana de contexto para conversaciones.","seed":"Semilla","optional":"opcional","random":"Aleatorio","seedDescription":"Establece una semilla específica para salidas reproducibles.","advancedOptions":"Opciones avanzadas","presencePenalty":"Penalización de presencia","presencePenaltyDescription":"Penaliza tokens que aparecen en el contexto.","frequencyPenalty":"Penalización de frecuencia","frequencyPenaltyDescription":"Penaliza tokens usados frecuentemente.","stopSequences":"Secuencias de parada","commaSeparated":"separadas por comas","stopSequencesDescription":"Tokens personalizados que detendrán la generación cuando se encuentren.","resetDefaults":"Restablecer predeterminados","saveOptions":"Guardar opciones","embeddingSettings":"Configuración de embeddings","enableEmbeddings":"Habilitar embeddings de documentos","thinking":"Razonamiento","thinkingDescription":"Esfuerzo de razonamiento predeterminado para las respuestas. Cada chat puede cambiarlo.","thinkingLevels":{"default":"Predeterminado del modelo","defaultWith":"Predeterminado del modelo ({{level}})","off":"Desactivado","on":"Activado","low":"Bajo","medium":"Medio","high":"Alto"}},"documents":{"title":"Configuración de documentos","embeddings":{"title":"Embeddings","enable":"Habilitar embeddings de documentos","model":"Modelo de embedding","modelDescription":"Selecciona el modelo usado para embedding de documentos","chunkSize":"Tamaño de chunk","chunkSizeInTokens":"(en tokens)","chunkSizeDescription":"Tamaño de los chunks de texto para embedding","chunkOverlap":"Superposición de chunks","chunkOverlapInTokens":"(en tokens)","chunkOverlapDescription":"Superposición entre chunks consecutivos","similarityThreshold":"Umbral de similitud","similarityDescription":"Puntuación mínima de similitud para incluir resultados","status":"Estado de embedding","statusLabel":"Estado","available":"Disponible","unavailable":"No disponible","chunksWithEmbeddings":"Chunks con embeddings","coverage":"Cobertura","regenerate":"Regenerar embeddings","regenerating":"Regenerando..."},"collections":{"title":"Colecciones de conocimiento","description":"Agrupa documentos en colecciones y adjúntalas a cualquier chat.","namePlaceholder":"Nombre de la colección","create":"Crear","none":"Sin colección","deleteConfirm":"¿Eliminar esta colección? Los documentos se conservan.","createFailed":"No se pudo crear la colección","deleteFailed":"No se pudo eliminar la colección","assignFailed":"No se pudo mover el documento"},"library":{"title":"Documentos subidos","description":"Documentos disponibles como contexto del chat. Un documento subido en un chat permanece en su conversación; un documento sin chat ni colección se suma a todas las conversaciones.","empty":"Aún no hay documentos subidos.","chatScope":"Un chat","everyChatScope":"Todos los chats","deleteConfirm":"¿Eliminar \\"{{name}}\\"? Desaparecerá de todos los chats.","deleteFailed":"No se pudo eliminar el documento"}},"tts":{"title":"Texto a voz","description":"Configura ajustes de texto a voz para leer mensajes en voz alta","loadingProviders":"Cargando proveedores TTS...","noProviders":"Sin proveedores TTS","noProvidersDescription":"Configura un plugin con soporte TTS para habilitar texto a voz","enable":"Habilitar TTS","enableDescription":"Permitir texto a voz para mensajes del asistente","autoPlay":"Reproducción automática","autoPlayDescription":"Leer automáticamente nuevos mensajes del asistente en voz alta","streamSentences":"Reproducción natural por lotes","streamSentencesDescription":"Genera por adelantado varios lotes adaptados a las frases y reprodúcelos como una única respuesta continua.","voiceConfiguration":"Configuración de voz","model":"Modelo TTS","modelDescription":"Selecciona el modelo para generación de texto a voz","voice":"Voz","selectVoice":"Selecciona una voz","voiceDescription":"Elige la voz para texto a voz","providerDefaultVoice":"Este modelo usa su voz predeterminada a menos que proporciones una grabación de referencia al generar el habla.","voiceCloningAvailable":"Clonación de voz disponible","voiceCloningAvailableDescription":"Usa Imagina → Audio para crear voz a partir de una grabación de referencia autorizada y su transcripción exacta. Si quieres, puedes guardar la referencia como una voz reutilizable.","savedVoiceOption":"{{name}} (voz guardada)","savedVoices":"Voces guardadas","loadingSavedVoices":"Cargando voces guardadas…","deleteSavedVoice":"Eliminar la voz guardada {{name}}","deleteSavedVoiceConfirm":"¿Eliminar la voz guardada «{{name}}»? Se borrarán su grabación de referencia y su transcripción.","savedVoiceDeleted":"Voz guardada eliminada","savedVoicePreferenceCleanupFailed":"Se eliminó la voz guardada, pero no se pudieron restablecer los ajustes de Voz","savedVoiceDeleteFailed":"No se pudo eliminar la voz guardada","speed":"Velocidad","speedSlow":"0,5x","speedNormal":"1,0x","speedFast":"2,0x","availableProviders":"Proveedores disponibles","models":"modelos","test":"Probar","testing":"Probando...","stop":"Detener"},"imageGen":{"title":"Generación de imágenes","description":"Configura ajustes y proveedores de generación de imágenes","loadingProviders":"Cargando proveedores de generación de imágenes...","noProviders":"Sin proveedores de generación de imágenes","noProvidersDescription":"Configura un plugin con soporte de generación de imágenes","enable":"Habilitar generación de imágenes","enableDescription":"Permitir generación de imágenes con IA en conversaciones","configuration":"Configuración","model":"Modelo","modelDescription":"Selecciona el modelo para generación de imágenes","size":"Tamaño","sizeDescription":"Resolución de imágenes generadas","quality":"Calidad","qualityDescription":"Nivel de calidad de imágenes generadas","style":"Estilo","styleDescription":"Preajuste de estilo para imágenes generadas","availableProviders":"Proveedores disponibles","models":"modelos"},"data":{"title":"Gestión de datos","export":"Exportar datos","exportDescription":"Descarga un archivo portátil de preferencias, carpetas de chat, sesiones y mensajes, notas, colecciones de conocimiento y texto extraído de documentos.","archiveScopeV3":"Incluye preferencias, chats, carpetas, notas, colecciones de conocimiento y texto extraído de documentos. Excluye cuentas y secretos, voces clonadas biométricas, contenido multimedia generado, personas y memoria, y datos o volúmenes de Work.","exportAll":"Exportar todos los datos","import":"Importar datos","importDescription":"Importa datos de una exportación anterior.","importData":"Importar datos","importing":"Importando...","clearSessions":"Limpiar sesiones","clearSessionsDescription":"Eliminar todas las sesiones de chat. Esta acción no se puede deshacer.","clearAll":"Limpiar todo","clearing":"Limpiando...","importOptions":"Opciones de importación","importOptionsDescription":"Elige cómo manejar datos existentes","validatingArchive":"Validando el archivo y calculando los cambios…","archiveValidationFailed":"Falló la validación del archivo","preflightReport":"Vista previa de la importación","preflightIncoming":"{{folders}} carpetas · {{sessions}} chats · {{messages}} mensajes · {{notes}} notas · {{collections}} colecciones · {{documents}} documentos · {{chunks}} fragmentos","preflightRemappedIds":"Se reasignarán {{count}} ID para proteger los datos de otra cuenta.","skipDuplicates":"Omitir duplicados","overwrite":"Sobrescribir existentes","importResults":"Resultados de importación","preferences":"Preferencias","imported":"Importado","failed":"Fallido","sessions":"Sesiones","sessionFolders":"Carpetas de sesiones","notes":"Notas","knowledgeCollections":"Colecciones de conocimiento","importedLabel":"importado","overwrittenLabel":"sobrescrito","skipped":"omitido","toCreate":"por crear","toOverwrite":"por sobrescribir","toSkip":"por omitir","documents":"Documentos","warnings":"Advertencias","refreshAfterImportFailed":"Los datos se importaron, pero algunas vistas no se pudieron actualizar. Recarga Libre WebUI para ver todos los cambios.","errors":"Errores","archivedChats":{"title":"Chats archivados","empty":"No hay chats archivados","unarchive":"Desarchivar"}},"about":{"title":"Acerca de","versionLabel":"Versión","ollama":{"title":"Estado de Ollama","version":"Versión","healthy":"Saludable","unhealthy":"No saludable"},"stats":{"models":"Modelos","sessions":"Sesiones"},"features":{"privacy":{"title":"Privacidad primero","description":"Tus datos permanecen en tu dispositivo"},"openSource":{"title":"Código abierto","description":"Software libre y de código abierto"},"localInference":{"title":"Inferencia local","description":"Ejecuta modelos de IA localmente con Ollama"}},"openSourceBy":"Código abierto por {{company}}","links":{"title":"Enlaces","github":"GitHub","githubDescription":"Ver código fuente y contribuir","website":"Sitio web","websiteDescription":"Visita nuestro sitio web","documentation":"Documentación","reportIssue":"Reportar problemas","reportIssueDescription":"Reportes de bugs y solicitudes de funciones","documentationDescription":"Guías, tutoriales y referencia de API","forgejo":"Espejo Forgejo","forgejoDescription":"Repositorio Forgejo auto-alojado","sponsor":"Patrocinar","sponsorDescription":"Ayuda a financiar el proyecto","star":"Estrella en GitHub","starDescription":"Una estrella ayuda a otros a descubrir el proyecto"},"version":"Versión {{version}}","updates":{"checking":"Buscando actualizaciones…","upToDate":"Estás en la última versión","updateAvailable":"La versión {{version}} está disponible","ahead":"Por delante de la última versión publicada ({{version}})","checkFailed":"No se pudieron comprobar las actualizaciones","viewChangelog":"Ver registro de cambios"}},"groups":{"general":"General","chat":"Chat","media":"Voz e imágenes","connections":"Conexiones"},"search":{"title":"Búsqueda web","description":"Busca en la web mediante una instancia autoalojada de SearXNG. Al activarla, el chat ofrece un interruptor de búsqueda y las tareas de Work con acceso a red pueden buscar.","enableLabel":"Activar búsqueda web","enableDescription":"Ofrecer búsqueda web en chats y tareas de Work. Las búsquedas se ejecutan en el servidor contra la instancia configurada.","urlLabel":"URL de SearXNG","urlDescription":"URL base de la instancia de SearXNG accesible desde el servidor. La pila de despliegue privado incluida ofrece http://searxng:8080.","maxResultsLabel":"Resultados por búsqueda","maxResultsDescription":"Cuántos resultados alimentan una respuesta o llamada de herramienta, 1-100.","maxResultsInvalid":"Los resultados por búsqueda deben estar entre 1 y 100.","safeSearchLabel":"Búsqueda segura","safeSearchDescription":"Pedir al motor que filtre resultados explícitos.","test":"Probar conexión","testing":"Probando…","testOk":"La búsqueda funciona — se devolvieron {{results}} resultados","testFailed":"La prueba de búsqueda falló","save":"Guardar","saved":"Configuración de búsqueda guardada","saveFailed":"No se pudo guardar la configuración de búsqueda"},"compaction":{"title":"Compactación del contexto","description":"Cuando una conversación supera el umbral de tokens, el servidor resume sus mensajes más antiguos y solo conserva textualmente los más recientes. Se aplica a todos los usuarios de este servidor.","thresholdLabel":"Umbral de tokens","thresholdDescription":"Tokens de contexto estimados a partir de los cuales se resume el historial antiguo, 500-1.000.000.","thresholdInvalid":"El umbral de tokens debe estar entre 500 y 1.000.000.","keepRecentLabel":"Mensajes recientes conservados","keepRecentDescription":"Cuántos de los últimos mensajes se mantienen siempre textualmente, 2-200.","keepRecentInvalid":"Los mensajes recientes conservados deben estar entre 2 y 200.","modelLabel":"Modelo de compactación","modelDescription":"El modelo que escribe los resúmenes. Si no se elige ninguno, se usa el modelo de la propia sesión.","sessionModelOption":"Usar el modelo de la sesión","promptLabel":"Prompt de resumen personalizado","promptPlaceholder":"Déjalo vacío para usar el prompt integrado","promptDescription":"Las variables de plantilla {{previousSummaryVariable}} y {{messagesVariable}} se sustituyen por el resumen anterior y los mensajes que se van a resumir.","saved":"Ajustes de compactación guardados","saveFailed":"No se pudieron guardar los ajustes de compactación","loadFailed":"No se pudieron cargar los ajustes de compactación"},"sessions":{"title":"Sesiones","description":"Todos los lugares donde esta cuenta tiene la sesión iniciada. Cerrar una sesión surte efecto de inmediato; iniciar sesión de nuevo restaura el acceso.","signOutOthers":"Cerrar las demás sesiones","signingOutOthers":"Cerrando sesión…","signOut":"Cerrar sesión","signingOut":"Cerrando sesión…","revoked":"Sesión cerrada.","revokeFailed":"No se pudo cerrar la sesión.","othersRevoked":"Otras sesiones cerradas: {{count}}","loadFailed":"No se pudieron cargar las sesiones.","empty":"No se encontraron sesiones.","current":"Esta sesión","revokedBadge":"Cerrada","unknownDevice":"Dispositivo desconocido","createdAt":"Inicio de sesión","lastSeenAt":"Última actividad","expiresAt":"Expira"},"apiKeys":{"title":"Claves API","description":"Tokens con permisos limitados para scripts e integraciones. Cada clave solo tiene acceso a los ámbitos que elijas.","newKeyTitle":"Tu nueva clave API","copy":"Copiar","copied":"Copiado al portapapeles.","copyFailed":"No se pudo copiar.","showOnceWarning":"Cópiala ahora: no se volverá a mostrar.","dismiss":"Listo","createTitle":"Crear una clave","nameLabel":"Nombre","namePlaceholder":"p. ej., pipeline de CI","nameRequired":"Dale un nombre a la clave.","expiryLabel":"Expira en días (opcional)","expiryPlaceholder":"Nunca","expiryInvalid":"La expiración debe ser un número entero de días.","scopesLabel":"Ámbitos","scopesRequired":"Selecciona al menos un ámbito.","create":"Crear clave","creating":"Creando…","created":"Clave API creada.","createFailed":"No se pudo crear la clave API.","revoke":"Revocar","revoking":"Revocando…","revoked":"Clave API revocada.","revokeFailed":"No se pudo revocar la clave API.","revokedBadge":"Revocada","loadFailed":"No se pudieron cargar las claves API.","empty":"Aún no hay claves API.","createdAt":"Creada","lastUsedAt":"Último uso","expiresAt":"Expira","neverExpires":"Nunca"}}`),models:{title:`Modelos`,subtitle:`Descarga, gestiona y monitorea tus modelos de Ollama`,installed:`Modelos instalados`,available:`Modelos disponibles`,pull:`Descargar modelo`,pulling:`Descargando...`,delete:`Eliminar modelo`,deleting:`Eliminando...`,size:`Tamaño`,modified:`Modificado`,family:`Familia`,parameters:`Parámetros`,quantization:`Cuantización`,noModels:`No hay modelos instalados`,pullFirst:`Descarga un modelo para comenzar`,noModelsFound:`No se encontraron modelos`},personas:{title:`Personas`,create:`Crear persona`,edit:`Editar persona`,delete:`Eliminar persona`,name:`Nombre`,description:`Descripción`,systemPrompt:`Prompt del sistema`,model:`Modelo`,avatar:`Avatar`,background:`Fondo`,noPersonas:`No hay personas creadas`,createFirst:`Crea tu primera persona para personalizar tu experiencia de chat`},gallery:{title:`Galería`,subtitle:`Tu galería de imágenes generadas por IA`,imageCount:`{{count}} imágenes`,generate:`Generar imagen`,generateDescription:`Crea imágenes con IA`,generating:`Generando...`,prompt:`Prompt`,promptPlaceholder:`Describe la imagen que quieres generar...`,noImages:`Aún no hay imágenes generadas`,download:`Descargar`,delete:`Eliminar`,regenerate:`Regenerar`,model:`Modelo`,size:`Tamaño`,quality:`Calidad`,created:`Creado`},errors:{generic:`Ocurrió un error`,network:`Error de red. Por favor verifica tu conexión.`,unauthorized:`No estás autorizado para realizar esta acción.`,notFound:`El recurso solicitado no fue encontrado.`,serverError:`Error del servidor. Por favor intenta más tarde.`,validation:`Por favor verifica tu entrada e intenta de nuevo.`},keyboard:{title:`Atajos de teclado`,toggleSidebar:`Alternar barra lateral`,openSettings:`Abrir configuración`,toggleDarkMode:`Alternar modo oscuro`,showShortcuts:`Mostrar atajos de teclado`,closeModals:`Cerrar modales`,groups:{navigation:`Navegación`,general:`General`,chat:`Chat`,workspace:`Espacio de trabajo`},actions:{sendMessage:`Enviar mensaje`,newLine:`Nueva línea en mensaje`,saveEdit:`Guardar el mensaje editado`,cancelEdit:`Cancelar la edición`,saveFile:`Guardar archivo`,formatCode:`Formatear código`},description:`Todos los atajos de teclado disponibles en Libre WebUI.`,newChat:`Nuevo chat`,newWork:`Nueva sesión de Work`,openPalette:`Abrir la paleta de comandos`},modelManager:{title:`Modelos`,loading:`Cargando modelos...`,systemStatus:{online:`Ollama en línea`,offline:`Ollama sin conexión`,models:`modelo`,models_plural:`modelos`,running:`ejecutándose`,vram:`VRAM`},sections:{pull:`Descargar nuevo modelo`,library:`Explorar biblioteca`,huggingface:`HuggingFace Hub`,running:`Modelos en ejecución`,local:`Modelos locales`,advanced:`Acciones avanzadas`,catalog:`Catálogo de modelos`},catalog:{searchPlaceholder:`Buscar modelos por nombre o proveedor...`,noModels:`Todavía no hay modelos disponibles.`,empty:`Ningún modelo coincide con tu búsqueda.`,providerOllama:`Ollama`,hidden:`Oculto`,visibilityFailed:`No se pudo actualizar la visibilidad del modelo.`,filterAll:`Todos los modelos`,filterLocal:`Local`,filterProviders:`Proveedores`,filterHidden:`Ocultos`,enableAll:`Activar los mostrados`,disableAll:`Desactivar los mostrados`,rename:`Editar nombre e imagen`,setPicture:`Establecer imagen`,clearPicture:`Quitar imagen`,pictureInvalid:`Elige un archivo de imagen.`,pictureTooLarge:`Las imágenes deben pesar menos de 192 KB.`,saving:`Guardando…`,hide:`Ocultar a los usuarios`,show:`Mostrar a los usuarios`},pull:{placeholder:`Ingresa nombre del modelo (ej. llama3.2:3b, deepseek-r1:14b)`,button:`Descargar`,cancel:`Cancelar`,popular:`Modelos populares:`,browseAll:`Explorar todos los modelos en ollama.com`,success:`Modelo {{name}} descargado exitosamente`,cancelled:`Descarga de modelo cancelada`,failed:`Error al descargar modelo`,enterName:`Por favor ingresa un nombre de modelo`,restricted:`La instalación de modelos está restringida a administradores en esta instancia.`},progress:{starting:`Inicializando...`,pulling:`Descargando modelo...`,pullingLayer:`descargando`,verifying:`Verificando integridad...`,verifyingDigest:`verificando digest sha256`,writing:`Escribiendo manifiesto...`,cleaning:`Limpiando...`},library:{available:`disponible`,search:`Buscar modelos...`,noResults:`No se encontraron modelos que coincidan con tu criterio`,installed:`Instalado`,more:`+{{count}} más`,refresh:`Actualizar biblioteca`},huggingface:{browseAll:`Ver todo en HuggingFace`,checkingGguf:`Buscando archivos GGUF...`,noGgufAvailable:`No hay archivos GGUF disponibles para Ollama`,ggufFilesCount:`Archivos GGUF ({{count}}) - Descargar a Ollama`,noModelsFound:`No se encontraron modelos`,noResults:`No se encontraron modelos. Intenta ajustar tu búsqueda o filtros.`,browseAllLink:`Ver todo`,search:`Buscar modelos en HuggingFace...`,by:`por`,gated:`Acceso restringido`,viewOnHF:`Ver en HuggingFace`,sortDownloads:`Descargas`,sortLikes:`Me gusta`,sortRecent:`Reciente`,taskTextGeneration:`Generación de texto`,taskTextToSpeech:`Texto a voz`,taskTextToImage:`Texto a imagen`,taskSpeechRecognition:`Reconocimiento de voz`,tasks:{textGen:`Generación de texto`,tts:`Texto a voz`,image:`Texto a imagen`,stt:`Reconocimiento de voz`},sort:{downloads:`Más descargados`,likes:`Más gustados`,recent:`Actualizados recientemente`}},local:{noModels:`Aún no hay modelos instalados`,pullToStart:`Descarga un modelo arriba para comenzar`,installed:`instalado`,running:`Ejecutándose`,info:`Info`,copy:`Copiar`,delete:`Eliminar`,deleteConfirm:`¿Estás seguro de que deseas eliminar el modelo "{{name}}"?`,deleteSuccess:`Modelo {{name}} eliminado exitosamente`,deleteFailed:`Error al eliminar modelo`},advanced:{createModel:`Crear modelo`,fromModelfile:`Desde Modelfile`,copyModel:`Copiar modelo`,duplicateExisting:`Duplicar existente`,testEmbeddings:`Probar embeddings`,generateVectors:`Generar vectores`,healthCheck:`Verificación de salud`,testConnection:`Probar conexión`,healthy:`¡Ollama está saludable!`},modals:{details:{title:`Detalles del modelo`,info:`Información del modelo`,family:`Familia`,parameters:`Parámetros`,quantization:`Cuantización`,format:`Formato`,systemPrompt:`Prompt del sistema`,template:`Plantilla`,license:`Licencia`,modelfile:`Modelfile`,noDetails:`Sin detalles disponibles`},copy:{title:`Copiar modelo`,source:`Modelo origen`,selectModel:`Selecciona un modelo...`,newName:`Nuevo nombre de modelo`,placeholder:`ej. mi-modelo-personalizado`,copying:`Copiando...`,button:`Copiar modelo`,success:`Modelo copiado a {{name}}`,failed:`Error al copiar modelo`,enterBoth:`Por favor ingresa nombres de origen y destino`},create:{title:`Crear modelo personalizado`,name:`Nombre del modelo`,namePlaceholder:`ej. mi-asistente`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
|
|
2
|
+
SYSTEM Eres un asistente útil.`,see:`Ver`,docs:`Documentación de Modelfile`,docsLink:`para referencia de sintaxis`,creating:`Creando...`,button:`Crear modelo`,success:`Modelo {{name}} creado exitosamente`,failed:`Error al crear modelo`,enterBoth:`Por favor ingresa nombre del modelo y contenido del Modelfile`},embeddings:{title:`Probar embeddings`,model:`Modelo de embedding`,selectModel:`Selecciona un modelo...`,recommended:`Recomendados: nomic-embed-text, mxbai-embed-large`,input:`Texto de entrada`,placeholder:`Ingresa texto para generar embeddings...`,generating:`Generando...`,button:`Generar embeddings`,result:`Resultado ({{count}} dimensiones)`,success:`Vector de embedding de {{count}} dimensiones generado`,failed:`Error al generar embeddings`,enterBoth:`Por favor selecciona un modelo e ingresa texto`}}},personaManager:{title:`Personas`,subtitle:`Crea y gestiona personas de IA con personalidades, memorias y comportamientos personalizados`,loading:`Cargando personas...`,createButton:`Crear persona`,importExport:`Importar/Exportar`,stats:{title:`Tus personas`,count:`{{count}} persona creada`,count_plural:`{{count}} personas creadas`},empty:{title:`Aún no hay personas`,description:`Crea tu primera persona para comenzar con interacciones de IA personalizadas`,button:`Crear tu primera persona`},deleteConfirm:`¿Estás seguro de que deseas eliminar "{{name}}"?`,deleteSuccess:`Persona "{{name}}" eliminada exitosamente`,downloadSuccess:`Persona "{{name}}" descargada exitosamente`,failed:`Error al {{action}} persona`},personaForm:{title:{create:`Crear nueva persona`,edit:`Editar persona`},subtitle:{create:`Crea una nueva persona de IA con personalidad personalizada, sistemas de memoria y capacidades de aprendizaje adaptativo`,edit:`Personaliza tu persona de IA con memoria avanzada, aprendizaje adaptativo y parámetros inteligentes`},loading:`Cargando formulario...`,saved:`Guardado`,tabs:{basic:`Básico`,parameters:`Parámetros`,memory:`Memoria y aprendizaje`,advanced:`Avanzado`},basic:{name:`Nombre`,namePlaceholder:`Ingresa nombre de persona`,model:`Modelo`,selectModel:`Selecciona un modelo`,description:`Descripción`,descriptionPlaceholder:`Describe tu persona...`,systemPrompt:`Prompt del sistema`,systemPromptPlaceholder:`Ingresa el prompt del sistema que define el comportamiento de tu persona...`,systemPromptHint:`El prompt del sistema define cómo se comportará y responderá tu persona.`},parameters:{temperature:`Temperatura`,temperatureHint:`Controla creatividad vs consistencia`,topP:`Top-P`,topPHint:`Controla diversidad de respuesta`,topK:`Top-K`,topKHint:`Limita vocabulario a los top-k tokens`,contextWindow:`Ventana de contexto`,contextWindowHint:`Longitud máxima del historial de conversación`,maxTokens:`Tokens máximos`,maxTokensHint:`Longitud máxima de respuesta`,repeatPenalty:`Penalización de repetición`,repeatPenaltyHint:`Reduce respuestas repetitivas`},memory:{title:`Sistema de memoria`,subtitle:`La persona recuerda conversaciones a lo largo del tiempo`,enableHint:`Habilita el sistema de memoria para que tu persona recuerde conversaciones y construya contexto a lo largo del tiempo.`,loading:`Cargando estado de memoria...`,noData:`Aún no hay datos de memoria`,memories:`Memorias`,mbUsed:`MB usados`,lastBackup:`Última copia de seguridad`,never:`Nunca`,maxMemories:`Memorias máximas`,maxMemoriesHint:`Cuántas memorias puede almacenar esta persona`,retention:`Retención de memoria`,retentionHint:`Días para mantener memorias antes de limpiar`,autoCleanup:`Limpieza automática de memorias antiguas`,wipeAll:`Borrar todas las memorias`,wipeCannot:`Esto no se puede deshacer`,wipeButton:`Borrar`,wiping:`Borrando...`,wipeConfirm:`¿Estás seguro de que deseas borrar todas las memorias? Esto no se puede deshacer.`,wipeSuccess:`Se borraron {{count}} memorias`},learning:{title:`Aprendizaje adaptativo`,subtitle:`La persona evoluciona basándose en interacciones`,enableHint:`Habilita el aprendizaje adaptativo para que tu persona evolucione y personalice respuestas basándose en tus interacciones.`,speed:`Velocidad de aprendizaje`,slow:`Lento`,slowDesc:`Cambios graduales`,balanced:`Equilibrado`,balancedDesc:`Ritmo moderado`,fast:`Rápido`,fastDesc:`Adaptación rápida`,autoAdapt:`Auto-adaptar a preferencias del usuario`,whatLearns:`Lo que aprende la persona:`,conversationTone:`Tono de conversación`,responseStyle:`Estilo de respuesta`,userPreferences:`Preferencias del usuario`,topicInterests:`Intereses en temas`},advanced:{embeddingModel:`Modelo de embedding`,embeddingHint:`Selecciona el modelo usado para codificación de memoria y búsqueda semántica. Los modelos de embedding se muestran primero, seguidos de otros modelos disponibles.`,noModels:`No se encontraron modelos`,embeddingModels:`Modelos de embedding`,otherModels:`Otros modelos`,installHint:`Instala un modelo de embedding:`,recommended:`Recomendados: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`Acerca de configuración avanzada`,aboutDescription:`El modelo de embedding es usado por el sistema de memoria para entender significado semántico y encontrar memorias relevantes durante conversaciones. Elige un modelo que coincida con tu caso de uso y recursos disponibles.`},actions:{cancel:`Cancelar`,save:`Guardar`,saving:`Guardando...`,saveClose:`Guardar y cerrar`,create:`Crear`},success:{created:`Persona creada`,updated:`Persona actualizada`},error:{saveFailed:`Error al guardar`}},personaCard:{enhanced:`Mejorado`,systemPrompt:`Prompt del sistema`,memories:`memorias`,use:`Usar`,editTooltip:`Editar persona`,downloadTooltip:`Descargar persona`,backup:`Copia de seguridad`,exportDNA:`Exportar ADN`,wipeMemories:`Borrar memorias`,wipeConfirm:`¿Estás seguro de que deseas borrar todas las memorias de esta persona? Esta acción no se puede deshacer.`,wipeSuccess:`Se borraron {{count}} memorias`,backupSuccess:`Copia de seguridad de persona descargada exitosamente`,dnaSuccess:`ADN de persona exportado exitosamente`,failed:`Error al {{action}}`},userManager:{title:`Gestión de usuarios`,subtitle:`Gestiona cuentas de usuario y permisos`,pageDescription:`Gestiona cuentas de usuario, permisos y controles de acceso para tu instancia de Libre WebUI.`,loading:`Cargando usuarios...`,createUser:`Crear usuario`,search:`Buscar usuarios...`,noUsers:`No se encontraron usuarios`,noUsersMatching:`No hay usuarios que coincidan con tu búsqueda`,columns:{user:`Usuario`,email:`Correo electrónico`,role:`Rol`,created:`Creado`,actions:`Acciones`},roles:{admin:`Admin`,user:`Usuario`},noEmail:`Sin correo`,deleteConfirm:`¿Estás seguro de que deseas eliminar el usuario "{{name}}"?`,deleteSuccess:`Usuario eliminado exitosamente`,deleteFailed:`Error al eliminar usuario`,cannotDeleteSelf:`No puedes eliminar tu propia cuenta`,approval:{title:`Aprobaciones pendientes`,description:`Revisa los nuevos registros antes de permitirles acceso a esta instancia.`,registered:`Registrado`,activate:`Activar cuenta`,reject:`Rechazar registro`,approved:`{{name}} ya puede iniciar sesión.`,failed:`No se pudo aprobar la cuenta.`,notification:`{{count}} registro(s) esperando tu aprobación.`,notificationBadge:`{{count}} aprobaciones de usuario pendientes`},form:{title:{create:`Crear usuario`,edit:`Editar usuario`},username:`Nombre de usuario`,usernamePlaceholder:`Ingresa nombre de usuario`,email:`Correo electrónico`,emailPlaceholder:`Ingresa correo (opcional)`,password:`Contraseña`,passwordPlaceholder:`Ingresa contraseña`,passwordHint:`Deja en blanco para mantener contraseña actual`,role:`Rol`,creating:`Creando...`,updating:`Actualizando...`,createButton:`Crear usuario`,updateButton:`Actualizar usuario`,createSuccess:`Usuario creado exitosamente`,updateSuccess:`Usuario actualizado exitosamente`,createFailed:`Error al crear usuario`,updateFailed:`Error al actualizar usuario`},workAccess:{title:`Acceso a Work`,description:`Permitir que todos los usuarios activos creen y ejecuten tareas de Work en sandboxes aislados. Los administradores siempre tienen acceso; los espacios de trabajo en carpetas del host siguen siendo solo para administradores.`,saved:`Acceso a Work actualizado`,saveFailed:`No se pudo actualizar el acceso a Work`},workPolicies:{title:`Políticas de Work`,description:`Preajustes de ejecución con nombre (imagen, límites, parada por inactividad) bajo los que crear tareas. Los campos vacíos heredan los valores globales.`,add:`Añadir política`,name:`Nombre`,image:`Imagen`,memory:`Memoria`,cpu:`CPU`,pids:`Límite de PID`,workspaceSize:`Tamaño del espacio de trabajo`,idleMinutes:`Parada por inactividad (minutos)`,networkDefault:`Red predeterminada`,networkInherit:`Heredar predeterminado`,networkOn:`Activada`,networkOff:`Desactivada`,save:`Guardar`,cancel:`Cancelar`,edit:`Editar política`,delete:`Eliminar política`,deleteConfirm:`¿Eliminar esta política? Las tareas que la usan vuelven a los valores globales.`,empty:`Aún no hay políticas. Las tareas usan los valores de ejecución globales.`,saved:`Política de Work guardada`,deleted:`Política de Work eliminada`,failed:`No se pudo guardar la política de Work`,invalidNumber:`El límite de PID y la parada por inactividad deben ser números.`},modelAccess:{title:`Descarga de modelos`,description:`Permitir que todos los usuarios activos descarguen modelos desde Ollama y el navegador de Hugging Face. Los administradores siempre pueden descargar modelos.`,saved:`Acceso a descarga de modelos actualizado`,saveFailed:`No se pudo actualizar el acceso a descarga de modelos`},webSearchAccess:{title:`Búsqueda web`,description:`Permitir que todos los usuarios activos usen la búsqueda web en chats y tareas de Work. Los administradores siempre pueden usarla. El motor se configura en Configuración > Búsqueda.`,saved:`Acceso a búsqueda web actualizado`,saveFailed:`No se pudo actualizar el acceso a búsqueda web`},agentAccess:{title:`Agentes`,description:`Ofrecer la sección Agentes (Libre Claw) a los administradores. Las CLI de agentes se ejecutan en el host como el usuario del servidor, fuera del sandbox de Work.`,saved:`Acceso a agentes actualizado`,saveFailed:`No se pudo actualizar el acceso a agentes`,lockedByEnv:`Fijado por la variable de entorno AGENT_CLI_MODELS_ENABLED.`},groups:{title:`Grupos`,description:`Agrupa cuentas para gestionar el acceso compartido e inspecciona lo que cada cuenta puede hacer en la práctica.`,newGroup:`Nuevo grupo`,nameLabel:`Nombre`,nameRequired:`Dale un nombre al grupo.`,descriptionLabel:`Descripción (opcional)`,create:`Crear grupo`,creating:`Creando…`,created:`Grupo creado.`,createFailed:`No se pudo crear el grupo.`,deleted:`Grupo eliminado.`,deleteFailed:`No se pudo eliminar el grupo.`,deleteGroup:`Eliminar grupo`,loadFailed:`No se pudieron cargar los grupos.`,empty:`Aún no hay grupos.`,memberCount:`Miembros: {{count}}`,noMembers:`Aún no hay miembros.`,addedAt:`Añadido`,addMember:`Añadir miembro`,add:`Añadir`,selectUser:`Selecciona un usuario…`,memberAdded:`Miembro añadido.`,memberAddFailed:`No se pudo añadir el miembro.`,removeMember:`Quitar miembro`,memberRemoved:`Miembro quitado.`,memberRemoveFailed:`No se pudo quitar el miembro.`,effectiveTitle:`Acceso efectivo`,effectiveDescription:`Elige una cuenta para ver el acceso que resulta de su rol, grupos y permisos.`,accessLookupFailed:`No se pudo cargar el acceso efectivo.`,roleLabel:`Rol`,statusLabel:`Estado`,memberOf:`Grupos`,featuresLabel:`Acceso a funciones`,grantsLabel:`Permisos`,grantVia:`vía`},audit:{title:`Registro de auditoría de seguridad`,description:`Inicios de sesión recientes, comprobaciones de permisos y cambios administrativos en esta instancia.`,actionFilter:`Acción`,actionPlaceholder:`p. ej., auth.login`,resultFilter:`Resultado`,resultSuccess:`Éxito`,resultDenied:`Denegado`,resultFailure:`Error`,limitFilter:`Límite`,loadFailed:`No se pudo cargar el registro de auditoría.`,empty:`Aún no hay eventos de auditoría registrados.`,actor:`Actor`,target:`Objetivo`}},usageAnalytics:{eyebrow:`Administración`,title:`Uso del proveedor`,description:`Sigue las llamadas de API salientes y el consumo de modelos en los plugins habilitados en esta instancia.`,days:`{{count}} días`,refresh:`Actualizar uso`,loadFailed:`No se pudo cargar el uso del proveedor.`,metrics:{calls:`Llamadas`,tokens:`Tokens`},cards:{calls:`Llamadas de API`,callsDetail:`Entre {{count}} usuario(s) activo(s)`,tokens:`Tokens reportados`,tokensDetail:`Uso reportado en {{count}} llamada(s)`,success:`Tasa de éxito`,successDetail:`{{count}} llamada(s) fallida(s)`,latency:`Latencia media`,latencyDetail:`Tiempo de extremo a extremo del proveedor`},activity:{title:`Consumo a lo largo del tiempo`,callsDescription:`Solicitudes salientes diarias a los complementos habilitados`,tokensDescription:`Totales diarios de tokens reportados por los proveedores`,chartLabel:`Gráfico diario de {{metric}} del proveedor`},models:{title:`Consumo por modelo`,description:`Los modelos con mayor tráfico en este período.`,model:`Modelo`,success:`Éxito`,latency:`Latencia`},providers:{title:`Tráfico de complementos habilitados`},capabilities:{title:`Mezcla de capacidades`,characters:`{{count}} caracteres`,bytes:`{{count}} bytes`,images:`{{count}} imágenes`,jobs:`{{count}} trabajos de video`,inputs:`{{count}} entradas`,reportedTokens:`{{count}} tokens reportados`},empty:{title:`Aún no hay llamadas al proveedor`,description:`Las llamadas aparecerán aquí después de que un complemento habilitado gestione solicitudes de chat, Work, incrustación, imagen, voz, sonido o video.`},privacyNote:`El uso se mide en el servidor en el límite del complemento saliente. Libre WebUI almacena proveedor, modelo, tiempo, estado y contadores reportados, nunca prompts, respuestas, endpoints, credenciales ni cuerpos de error del proveedor. Los totales de tokens incluyen solo las llamadas en las que el proveedor devolvió metadatos de uso.`,heatmap:{title:`Un año de actividad`,description:`Llamadas diarias a proveedores durante el último año, coloreadas según el modelo más usado cada día.`,calls:`llamadas`,noCalls:`Sin llamadas`,other:`Otros modelos`,less:`Menos`,more:`Más`,yearTotal:`{{formatted}} llamadas en el último año`}},systemPage:{eyebrow:`Administración`,title:`Sistema`,description:`Monitoree la máquina y el entorno de ejecución que alojan esta instancia de Libre WebUI.`,updated:`Actualizado el {{date}}`,refresh:`Actualizar información del sistema`,loadFailed:`No se pudo cargar la información del sistema.`,cards:{uptime:`Tiempo de actividad del host`,uptimeDetail:`En ejecución desde {{date}}`,memory:`Memoria usada`,memoryDetail:`{{used}} de {{total}}`,freeSpace:`Espacio libre`,freeSpaceDetail:`{{label}} · {{total}} total`,containers:`Contenedores en ejecución`,containersDetail:`{{total}} contenedor(es) conocidos por Docker`,dockerUnavailable:`Docker no disponible`,unavailable:`No disponible`},host:{title:`Host y entorno de ejecución`,description:`Detalles del sistema operativo, procesador y proceso de Libre WebUI.`,container:`Entorno de ejecución de contenedores`,native:`Tiempo de ejecución nativo`,hostname:`Nombre de host`,operatingSystem:`Sistema operativo`,processor:`Procesador`,logicalCpus:`CPU lógicas`,loadAverage:`Carga media · 1 / 5 / 15 min`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`Proceso`,workingDirectory:`Directorio de trabajo`},memory:{title:`Memoria`,description:`Memoria del sistema visible en tiempo de ejecución y uso del proceso de la aplicación.`,usedOf:`{{used}} usados de {{total}}`,free:`{{value}} libres`,processRss:`RSS del proceso`,heapUsed:`Heap V8 usado`,heapTotal:`Heap V8 total`,external:`Memoria externa`},storage:{title:`Almacenamiento`,description:`Espacio disponible para el sistema de archivos del tiempo de ejecución y los datos persistentes de la aplicación.`,used:`{{value}} usados`,free:`{{value}} libres`,empty:`La información del sistema de archivos no está disponible en este tiempo de ejecución.`},docker:{title:`Docker`,description:`Estado de solo lectura de Docker Engine y una lista reducida de contenedores.`,connected:`Conectado`,unavailable:`No disponible`,unavailableDetail:`Los diagnósticos de Docker Engine no están disponibles.`,socketStatus:`Socket local: {{status}}`,mounted:`montado`,notMounted:`no montado`,running:`En ejecución`,stopped:`Detenido`,paused:`En pausa`,total:`Total`,version:`Versión`,host:`Host`,architecture:`Arquitectura`,cpus:`CPU`,memory:`Memoria`,container:`Contenedor`,image:`Imagen`,state:`Estado`,created:`Creado`,empty:`Docker está conectado y actualmente no hay contenedores listados.`},network:{title:`Red`,description:`Interfaces visibles en tiempo de ejecución, direcciones y contadores de tráfico de Linux.`,internal:`interna`,empty:`No hay interfaces de red visibles para el entorno de ejecución de la aplicación.`},securityNote:`Esta página está restringida a administradores. El servidor solo devuelve resúmenes operativos: no expone variables de entorno, credenciales, etiquetas de Docker, montajes, comandos de contenedor ni cargas útiles de inspección. Cuando Libre WebUI se ejecuta en un contenedor, los detalles de CPU y memoria a nivel de host provienen de Docker Engine cuando su socket local está disponible; otros valores describen el entorno de ejecución de la aplicación.`,work:{title:`Work`,description:`Sandboxes de todos los usuarios`,access:`Acceso`,accessAdmins:`Solo administradores`,accessAllUsers:`Todos los usuarios`,runtimeAvailable:`Disponible`,runtimeUnavailable:`No disponible`,activeRuntimes:`Entornos activos`,pendingCleanups:`Limpiezas pendientes`,orphans:`Contenedores huérfanos`,owner:`Propietario`,task:`Tarea`,state:`Estado`,preview:`Vista previa`,terminals:`Terminales`,updated:`Actualizado`,stateRunning:`En ejecución`,stateStopped:`Detenido`,stateStarting:`Iniciando`,stateUnknown:`Desconocido`,noTasks:`Aún no hay tareas de Work.`}},chatHistory:{label:`Historial de la conversación`,jumpToTurn:`Ir al turno {{index}} de {{total}}`},chatMessage:{you:`Tú`,assistant:`Asistente`,system:`Sistema`,conversationSummary:`Resumen de la conversación`,restoreCompacted:`Restaurar los mensajes resumidos`,restoreFailed:`No se pudieron restaurar los mensajes resumidos`,copy:`Copiar`,copyMessage:`Copiar mensaje`,copied:`¡Copiado!`,regenerate:`Regenerar`,regenerateResponse:`Regenerar respuesta`,edit:`Editar`,editSystemMessage:`Editar mensaje del sistema`,saveChanges:`Guardar cambios`,cancelEditing:`Cancelar edición`,saveAndSubmit:`Guardar y enviar`,goodResponse:`Buena respuesta`,badResponse:`Mala respuesta`,delete:`Eliminar`,deleteConfirm:`¿Eliminar este mensaje?`,branch:`Ramificar`,speaking:`Hablando...`,speakMessage:`Leer mensaje`,stopSpeaking:`Detener lectura`,showMore:`Mostrar más`,showLess:`Mostrar menos`,thinking:`Pensando`,thoughtFor:`Pensó durante {{duration}}`,hiddenLines:`{{count}} líneas ocultas`,systemMessagePlaceholder:`Ingresa tu mensaje del sistema...`,fullSizeImage:`Imagen a tamaño completo`,startConversation:`Iniciar una conversación`,startConversationDescription:`Envía un mensaje para comenzar a chatear con tu asistente de IA. Haz preguntas, obtén ayuda con código o mantén una conversación natural.`,scrollToBottom:`Desplazar al final`,newMessages:`Nuevos mensajes`},imageGallery:{title:`Galería de imágenes`,noImages:`Aún no hay imágenes`,noImagesHint:`Genera tu primera imagen usando el panel de la derecha`,delete:`Eliminar`,download:`Descargar`,deleteConfirm:`¿Estás seguro de que deseas eliminar esta imagen?`,deleteSuccess:`Imagen eliminada`,deleteFailed:`Error al eliminar imagen`,downloadFailed:`Error al descargar imagen`,loadMore:`Cargar más ({{current}} de {{total}})`,loadFailed:`Error al cargar galería`},imageGeneration:{title:`Generar imagen`,prompt:`Prompt`,promptPlaceholder:`Describe la imagen que quieres crear...`,model:`Modelo`,selectModel:`Seleccionar modelo`,noModels:`No hay modelos de generación de imágenes disponibles`,configurePlugin:`Configura un plugin con soporte de generación de imágenes`,size:`Tamaño`,quality:`Calidad`,style:`Estilo`,generate:`Generar`,generating:`Generando...`,success:`Imagen generada exitosamente`,failed:`Error al generar imagen`,enterPrompt:`Por favor ingresa un prompt`,promptTooLong:`El prompt excede la longitud máxima de {{max}} caracteres`},mediaGeneration:{title:`Generar multimedia`,description:`Crea video, sonido, música o voz con un proveedor multimedia activado.`,image:`Imagen`,video:`Video`,audio:`Audio`,sound:`Sonido`,speech:`Voz`,model:`Modelo`,voice:`Voz o ID de voz`,cloneVoice:`Clonar una voz de referencia`,cloneVoiceDescription:`Genera esta voz a partir de una grabación de referencia en lugar de una voz predefinida.`,referenceAudio:`Audio de referencia`,referenceTranscript:`Transcripción exacta de la referencia`,referenceTranscriptPlaceholder:`Escribe exactamente lo que se dice en la grabación de referencia…`,referenceAudioTooLarge:`El audio de referencia debe ocupar {{max}} o menos.`,cloneConsent:`Clona una voz solo si tienes el permiso del hablante. La grabación se envía al proveedor seleccionado para esta generación y Libre WebUI no la guarda.`,saveVoiceProfile:`Guardar como voz reutilizable`,saveVoiceProfileDescription:`Guarda de forma segura esta grabación de referencia y su transcripción. Libre WebUI las envía al proveedor seleccionado en cada lote de Voz que usa esta voz.`,voiceProfileName:`Nombre de la voz guardada`,voiceProfileNamePlaceholder:`Por ejemplo, Mi voz`,voiceStorageConsent:`Confirmo que tengo permiso del hablante para clonar y guardar esta voz. La referencia permanecerá guardada hasta que la elimine.`,resolution:`Resolución`,aspectRatio:`Relación de aspecto`,duration:`Duración`,providerDefault:`Predeterminado del proveedor`,generateAudio:`Generar audio con el video cuando se admita`,prompt:`Indicación`,text:`Texto a hablar`,videoPlaceholder:`Describe la escena, el movimiento, la cámara y la iluminación...`,audioPlaceholder:`Introduce el texto que quieres que diga la voz...`,soundPlaceholder:`Describe el sonido, la música, la atmósfera o la respuesta hablada que deseas...`,generate:`Generar`,generating:`Generando… esto puede tardar varios minutos`,success:`Multimedia generada y guardada en Imagine`,successWithSavedVoice:`Se generó el contenido y «{{name}}» ya está disponible en los ajustes de Voz`,failed:`Error al generar multimedia`,loadFailed:`Error al cargar los proveedores multimedia`,noModels:`No hay modelos de {{kind}} disponibles. Activa un proveedor compatible y guarda sus credenciales primero.`},mediaGallery:{itemCount:`{{count}} elementos`,empty:`Aún no hay multimedia generada`,emptyHint:`Genera una imagen, video o clip de voz y aparecerá aquí.`,filters:{all:`Todos`,image:`Imágenes`,video:`Vídeos`,audio:`Audio`}},errorBoundary:{title:`Algo salió mal`,description:`Encontramos un error inesperado. Por favor intenta actualizar la página.`,tryAgain:`Actualizar página`,goHome:`Ir al inicio`,errorDetails:`Detalles del error (desarrollo)`},documents:{title:`Documentos`,upload:`Subir documento`,uploading:`Subiendo...`,noDocuments:`No hay documentos subidos`,uploadHint:`Sube documentos para usar en tus conversaciones`,delete:`Eliminar`,deleteConfirm:`¿Estás seguro de que deseas eliminar este documento?`,deleteSuccess:`Documento eliminado`,deleteFailed:`Error al eliminar documento`,uploadSuccess:`Documento subido exitosamente`,uploadFailed:`Error al subir documento`,types:`Soportados: PDF, TXT, MD, DOCX`,unsupportedFileType:`Solo se soportan archivos PDF y TXT`,fileSizeTooLarge:`El tamaño del archivo debe ser menor a 10 MB`,uploadSuccessWithName:`Documento "{{name}}" subido exitosamente`,removeSuccess:`Documento eliminado exitosamente`,removeFailed:`Error al eliminar documento`,removeError:`Ocurrió un error al eliminar el documento`,clickToUpload:`Haz clic para subir`,orDragAndDrop:`o arrastra y suelta`,fileTypesAndSize:`Archivos PDF o TXT hasta 10 MB`,uploadedDocuments:`Documentos subidos`,removeDocument:`Eliminar documento`},ttsButton:{speak:`Hablar`,stop:`Detener`,speaking:`Hablando...`,generateFailed:`Error al generar voz`,playbackFailed:`Error en reproducción de audio`,stopSpeaking:`Detener lectura`,preparingSpeech:`Preparando voz...`,generatingSpeech:`Generando voz...`,bufferingSpeech:`Almacenando voz en búfer...`,enableAudio:`Activar audio y leer en voz alta`,enableAudioShort:`Activar audio`,readAloud:`Leer en voz alta`},artifacts:{title:`Artefactos`,code:`Código`,preview:`Vista previa`,copy:`Copiar código`,copied:`¡Copiado!`,download:`Descargar`,expand:`Expandir`,collapse:`Contraer`,openInNewTab:`Abrir en nueva pestaña`,invalidSvg:`Contenido SVG inválido`,invalidJson:`Contenido JSON inválido`,previewMode:`Modo vista previa`,codeMode:`Modo código`,copyContent:`Copiar contenido`,openInPanel:`Abrir en panel`,openInNewWindow:`Abrir en nueva ventana`,created:`Creado`,closePanelEsc:`Cerrar panel (Esc)`,copyButton:`Copiar`,open:`Abrir`,dragEdgeToResize:`Arrastra el borde para redimensionar`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`Versión {{current}} de {{total}}`,previousVersion:`Versión anterior`,nextVersion:`Versión siguiente`},personaImportExport:{title:`Importar y exportar personas`,description:`Exporta tus personas para compartirlas o importa personas de otros`,exportPersonas:`Exportar personas`,importPersonas:`Importar personas`,noPersonasToExport:`No hay personas para exportar`,personasAvailable:`{{count}} persona disponible`,personasAvailable_plural:`{{count}} personas disponibles`,exportAll:`Exportar todo`,uploadJsonFile:`Subir archivo JSON`,pasteJsonLabel:`Pegar datos JSON`,pasteJsonPlaceholder:`Pega los datos JSON de la persona aquí...`,importing:`Importando...`,importButton:`Importar persona(s)`,expectedFormat:`Formato JSON esperado:`,exportSuccess:`Persona "{{name}}" exportada exitosamente`,exportFailed:`Error al exportar persona`,exportAllSuccess:`Todas las {{count}} personas exportadas exitosamente`,exportAllFailed:`Error al exportar personas`,pasteJsonData:`Por favor pega los datos JSON de la persona`,importMultipleSuccess:`Se importaron {{count}} personas exitosamente`,importMultipleFailed:`Error al importar {{count}} personas`,importNoneFailed:`Error al importar cualquier persona`,importSuccess:`Persona importada exitosamente`,importFailed:`Error al importar persona`},generationStats:{details:`Detalles`,promptTokens:`Tokens del prompt:`,generatedTokens:`Tokens generados:`,totalTokens:`Tokens totales:`,speed:`Velocidad:`,promptEval:`Evaluación del prompt:`,generation:`Generación:`,modelLoad:`Carga del modelo:`,totalTime:`Tiempo total:`,generatedAt:`Generado a las:`},userMenu:{loggedOut:`Sesión cerrada correctamente`,pictureUpdated:`Foto de perfil actualizada`,failedUpdateAvatar:`Error al actualizar el avatar`,failedUpdatePicture:`Error al actualizar la foto de perfil`,noEmail:`Sin correo electrónico`,changePicture:`Cambiar imagen`,settings:`Configuración`,userManagement:`Gestión de usuarios`,signOut:`Cerrar sesión`,changeProfilePicture:`Cambiar foto de perfil`},pluginManager:{title:`Gestor de plugins`,upload:`Subir`,addJson:`Añadir JSON`,browseHF:`Explorar HF Hub`,confirmDelete:`¿Estás seguro de que quieres eliminar este plugin?`,uploading:`Subiendo plugin...`,pasteJson:`Pega el JSON del plugin aquí...`,installPlugin:`Instalar plugin`,loading:`Cargando plugins...`,noPlugins:`No hay plugins instalados`,noPluginsDescription:`Sube un archivo de plugin o añade uno desde JSON para comenzar.`,active:`Activo`,id:`ID`,endpoint:`Endpoint`,activate:`Activar`,deactivate:`Desactivar`,activePlugin:`Plugin activo`,activePluginDescription:`Todas las solicitudes de chat se enrutarán a través de este plugin`,variables:{title:`Variables`,save:`Guardar`,saving:`Guardando...`,saved:`Variables guardadas`,saveFailed:`Error al guardar variables`,resetDefaults:`Restablecer valores`,reset:`Variables restablecidas`,resetFailed:`Error al restablecer las variables`,sensitiveSet:`Valor establecido (ingrese nuevo valor para cambiar)`,showValue:`Mostrar valor de {{label}}`,hideValue:`Ocultar valor de {{label}}`,connection:`Conexión`,advanced:`Parámetros avanzados`,inherited:`Usar predeterminado del proveedor`,inheritedValue:`Usar predeterminado del proveedor ({{value}})`,enabled:`Habilitado`,disabled:`Deshabilitado`,required:`Se requiere un valor`,fullApiEndpoint:`URL completa del endpoint de API`,endpointHelp:`Introduce la URL de solicitud completa, incluyendo su ruta de operación (por ejemplo, /v1/chat/completions), no solo la URL base del proveedor.`,invalidUrl:`Introduce una URL de endpoint de API completa válida, por ejemplo https://provider.example/v1/chat/completions`,insecureUrl:`Los endpoints de API deben usar HTTP o HTTPS.`,httpWarning:`HTTP no cifra las credenciales ni el tráfico. Úsalo solo en una red de confianza.`,invalidBaseUrl:`Las URLs base no pueden contener una cadena de consulta ni un fragmento.`,invalidApiPath:`Debe empezar con / y no contener URL, consulta, fragmento ni el segmento ..`,tooLong:`El valor es demasiado largo`}},huggingface:{title:`Explorador de modelos HuggingFace`,subtitle:`Explora y selecciona modelos del Hub`,searchPlaceholder:`Buscar modelos...`,filters:`Filtros`,task:`Tarea`,sortBy:`Ordenar por`,noModels:`No se encontraron modelos`,adjustSearch:`Intenta ajustar tu búsqueda o filtros`,gated:`Restringido`,selected:`Seleccionado`,select:`Seleccionar`,refresh:`Actualizar`,modelsFound:`modelos encontrados`},demoMode:{title:`Modo demo`,github:`GitHub`},libreClaw:{title:`Agentes`,subtitle:`Ejecuciones, aprobaciones, programaciones, memoria, herramientas y uso del agente local.`,dashboard:`Panel de control`,connection:{disconnectedTitle:`El demonio de Libre Claw no está conectado`,disconnectedDescription:`Inícielo localmente con <command>libre-claw start</command> o configure <env>LIBRE_CLAW_BASE_URL</env> en el entorno backend.`},status:{connected:`Conectado`,disconnected:`desconectado`,activeRuns:`{{count}} activo`,activeRuns_plural:`{{count}} activo`},states:{queued:`En cola`,running:`En ejecución`,blocked:`Bloqueado`,done:`hecho`,failed:`Fallido`,cancelled:`Cancelado`},startRun:{title:`Iniciar ejecución del agente`,placeholder:`Pídale a Libre Claw que inspeccione un repositorio, corrija un error, ejecute una revisión, programe un informe...`,chatRun:`Ejecutar chat`,goalMode:`Modo objetivo`,providerOverride:`Anulación del proveedor`,modelOverride:`Anulación de modelo`,run:`Ejecutar`},modelRoute:{title:`Ruta Modelo`,providerPlaceholder:`proveedor`,modelPlaceholder:`modelo`,persistGlobal:`Persistir en la configuración global Libre Claw`,saveModel:`Guardar modelo`,theme:`Tema de Libre Claw`,saveTheme:`Guardar tema`},runs:{title:`Ejecuciones`,empty:`Aún no hay ejecuciones de Libre Claw.`},timeline:{title:`Cronología de la ejecución`,empty:`Seleccione una ejecución para inspeccionar sus eventos.`,streaming:`Transmitiendo...`,assistantResponse:`Respuesta del asistente`,resultOk:`bien`,resultError:`error`,labels:{userMessage:`Mensaje de usuario`,toolCall:`llamada de herramienta`,toolResult:`Resultado de la herramienta`,approvalRequest:`Solicitud de aprobación`,approvalResponse:`Respuesta de aprobación`,runStarted:`Ejecución iniciada`,runFinished:`Ejecución finalizada`,usage:`Uso`,error:`error`}},approvals:{needed:`Aprobación necesaria`,allowOnce:`permitir una vez`,alwaysAllowTool:`Permitir siempre la herramienta`,deny:`Rechazar`,toolApprovalRequested:`Se solicita aprobación de herramienta`},automations:{title:`Automatizaciones`,namePlaceholder:`Nombre`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`Aviso de automatización`,create:`crear`,empty:`No hay automatizaciones programadas Libre Claw.`,runNow:`Ejecutar ahora`,pause:`Pausa`,resume:`Reanudar`,routes:{report:`Informe`,telegram:`Telegram`},status:{active:`Activo`,paused:`En pausa`}},usageFallback:{title:`Uso y respaldo`,usage:`Uso`,fallbackRoute:`Ruta alternativa`,noUsage:`Aún no hay registros de uso.`},metrics:{provider:`Proveedor`,model:`modelo`,input:`Entrada`,output:`Salida`,cached:`En caché`,reasoning:`Razonamiento`,cost:`Costo`,tool:`Herramienta`,resolution:`Resolución`,state:`Estado`,stopReason:`Motivo de detención`,tokens:`{{formatted}} ficha`,tokens_plural:`{{formatted}} fichas`},fallbacks:{tool:`herramienta`,unknown:`desconocido`,resolved:`resuelto`,unknownError:`Error desconocido`},toasts:{loadStatusFailed:`No se pudo cargar el estado Libre Claw`,enterTask:`Ingrese una tarea para Libre Claw`,runStarted:`Ejecución de Libre Claw iniciada`,startRunFailed:`No se pudo iniciar la ejecución de Libre Claw`,runCancelled:`Ejecución cancelada`,cancelRunFailed:`No se pudo cancelar la ejecución`,approved:`Aprobado`,denied:`denegado`,resolvePermissionFailed:`No se pudo resolver el permiso`,providerModelRequired:`Se requiere proveedor y modelo.`,modelUpdated:`Modelo de Libre Claw actualizado`,updateModelFailed:`No se pudo actualizar el modelo`,themeUpdated:`Tema de Libre Claw actualizado`,updateThemeFailed:`No se pudo actualizar el tema`,automationRequired:`Se requieren el nombre, el cronograma y el aviso de la automatización`,automationCreated:`Automatización creada`,createAutomationFailed:`No se pudo crear la automatización`,automationUpdated:`Automatización actualizada`,updateAutomationFailed:`No se pudo actualizar la automatización`}},work:{title:`Trabajo`,subtitle:`Espacios de trabajo aislados para modelos`,tasks:{title:`Tareas de trabajo`,subtitle:`Espacios de trabajo locales persistentes`,new:`Nueva tarea`,emptyTitle:`Aún no hay tareas de trabajo`,empty:`Tus tareas de trabajo aparecerán aquí después de enviar el primer mensaje.`,untitled:`Tarea sin título`,actions:`Acciones de la tarea`,delete:`Eliminar tarea`,deleteNamed:`Eliminar {{title}}`,deleteConfirm:`¿Eliminar «{{title}}» y su espacio de trabajo de forma permanente?`,close:`Cerrar tareas de trabajo`,open:`Abrir tareas de trabajo`,rename:`Título de la tarea`,loading:`Cargando tarea…`,notFound:`Esta tarea de trabajo no está disponible`,back:`Iniciar una nueva tarea`,status:`Estado: {{status}}`},landing:{title:`Iniciar una nueva tarea de trabajo`,description:`Asigna a un modelo local o de un proveedor configurado un espacio de trabajo aislado y persistente. Puede inspeccionar archivos, ejecutar herramientas y continuar donde lo dejó cuando vuelvas.`,isolated:`Aislado`,isolatedBody:`Cada tarea tiene su propio contenedor y archivos.`,durable:`Persistente`,durableBody:`Vuelve más tarde a su conversación y espacio de trabajo.`,controlled:`Controlado`,controlledBody:`El entorno de ejecución y los archivos de la tarea permanecen aislados del host.`},composer:{placeholder:`Describe lo que quieres crear o cambiar…`,model:`Modelo de trabajo`,noModels:`No hay modelos compatibles con el modo Trabajo`,cancel:`Detener`,send:`Ejecutar`,hint:`Cada tarea conserva sus propios archivos e historial. Revisa la salida del modelo antes de usarla.`,remoteTitle:`Proveedor remoto`,remoteHint:`La conversación y la salida de las herramientas se envían al servicio configurado. Una ejecución autónoma puede realizar varias llamadas al proveedor y generar cargos. Los archivos del espacio de trabajo permanecen locales, salvo que una herramienta devuelva su contenido.`,remoteDismiss:`Ocultar`,remoteDismissLabel:`Ocultar aviso del proveedor remoto`,remoteDismissFailed:`No se pudo guardar la preferencia del proveedor remoto.`,noModelSelected:`No hay ningún modelo compatible con el modo Trabajo seleccionado.`},conversation:{ready:`Espacio de trabajo listo`,empty:`Continúa la tarea abajo. Esta conversación y sus archivos permanecen asociados a este espacio de trabajo.`,loadOlder:`Cargar mensajes anteriores`},status:{preparing:`Preparando el espacio de trabajo aislado…`,running:`Trabajando en el espacio de trabajo local…`},statusLabels:{idle:`Inactivo`,thinking:`Pensando`,complete:`Completado`,needsInput:`Requiere información`,error:`Error`},live:{connecting:`Conectando con las actualizaciones en vivo…`,reconnecting:`Reconectando con las actualizaciones en vivo…`,unavailable:`Actualizaciones en vivo no disponibles`,newActivity:`Nueva actividad`,skillsLoaded:`Habilidades del espacio de trabajo · {{count}}`},runtime:{unavailable:`Entorno de ejecución no disponible`,ready:`Entorno de ejecución listo`,readyOllama:`Docker listo`,readyPlugin:`Docker + plugin listos`,readyHybrid:`Docker + modelos listos`,reason:`Se requieren Docker y un proveedor de modelos disponible mediante Ollama o un plugin.`},workspace:{label:`Vistas del espacio de trabajo`,files:`Archivos`,activity:`Actividad`,preview:`Vista previa`,resize:`Cambiar el tamaño de la conversación y el espacio de trabajo`,resizeHint:`Arrastra para cambiar el tamaño. Usa las teclas de flecha para un control preciso. Haz doble clic o pulsa Intro para restablecer.`,splitSize:`Conversación {{conversation}} %, espacio de trabajo {{workspace}} %`,terminal:`Terminal`,git:`Git`},files:{discard:`¿Descartar los cambios no guardados del archivo?`,leaveWithDraft:`¿Salir de este archivo? La edición sin guardar se conservará como borrador en el navegador.`,up:`Carpeta principal`,back:`Volver a los archivos`,empty:`Aún no hay archivos en esta carpeta.`,select:`Selecciona un archivo para inspeccionarlo y editarlo.`,editorLabel:`Editor de archivos: {{path}}`,format:`Formatear`,formatted:`Código formateado.`,formatFailed:`No se pudo formatear este archivo.`,formatShortcut:`Formatear (Mayús+Alt+F)`,formatTooLarge:`El formateo está limitado a archivos de menos de 100.000 caracteres y 4.000 líneas.`,formatUnsupported:`El formato no está disponible para este tipo de archivo.`,saveShortcut:`Guardar (⌘/Ctrl+S)`,highlightPaused:`El resaltado en tiempo real está pausado para archivos grandes, a fin de mantener una edición fluida.`,plainTextLarge:`Texto sin formato · archivo grande`,changes:`Cambios`,changesSince:`Qué cambió desde el último turno`,diffLabel:`Cambios desde el último turno: {{path}}`,diffFolded:`{{count}} líneas sin cambios`},activity:{empty:`Los comandos, las operaciones de archivos y los resultados de las herramientas aparecerán aquí.`,toolActivity:`Actividad de herramientas`,details:`Detalles`,kinds:{message:`Mensaje`,toolCall:`Llamada a herramienta`,toolResult:`Resultado de herramienta`,error:`Error`}},preview:{command:`Comando de inicio opcional`,start:`Iniciar vista previa`,stop:`Detener vista previa`,open:`Abrir`,starting:`Iniciando vista previa…`,frameTitle:`Vista previa del espacio de trabajo`,failed:`No se pudo iniciar la vista previa. Revisa Actividad e inténtalo con otro comando.`,empty:`Inicia la aplicación dentro de este espacio de trabajo para inspeccionarla aquí.`},mobile:{surface:`Vista de la tarea`,conversation:`Conversación`,workspace:`Espacio de trabajo`},toasts:{runFailed:`No se pudo iniciar la tarea de trabajo.`,updateFailed:`No se pudo actualizar esta tarea.`,renameFailed:`No se pudo cambiar el nombre de esta tarea.`,cancelled:`Ejecución de trabajo detenida.`,cancelFailed:`No se pudo detener la ejecución de trabajo.`,deleteFailed:`No se pudo eliminar esta tarea de trabajo.`,saveFailed:`No se pudo guardar este archivo.`,saved:`Archivo guardado.`,previewFailed:`No se pudo iniciar la vista previa.`,previewStopFailed:`No se pudo detener la vista previa.`},terminal:{connecting:`Abriendo un shell en el entorno aislado…`,closed:`La sesión de terminal ha terminado.`,failed:`No se pudo iniciar la sesión de terminal.`,reconnect:`Reconectar`,unavailable:`La terminal interactiva no está disponible en esta instalación.`,blockedByRun:`El modelo está usando este contenedor. La terminal se abrirá al terminar el turno.`,taskRunning:`Turno del modelo en curso`},policy:{label:`Política de ejecución`,default:`Predeterminada (límites globales)`},git:{actionFailed:`La acción de Git falló.`,blockedByPreview:`Detén la vista previa antes de cambiar el estado de Git.`,blockedByRun:`Las acciones de escritura de Git se desbloquean al terminar el turno del modelo.`,branchCreated:`{{name}} creada.`,branchSwitched:`Cambiado a {{name}}.`,clean:`El árbol de trabajo está limpio.`,commit:`Confirmar cambios preparados`,commitMessage:`Mensaje del commit`,committed:`Commit creado.`,detached:`HEAD separado`,diff:`Vista previa del diff`,diffFailed:`No se pudo cargar este diff.`,history:`Historial local`,initialize:`Inicializar Git`,initializeDescription:`Crea un repositorio local para estado, diffs, ramas y commits. No se conectan credenciales remotas.`,initialized:`Repositorio Git inicializado.`,loadFailed:`No se pudo cargar el estado de Git.`,localOnly:`Solo Git local. Push, pull y pull requests requieren un intermediario de credenciales de confianza aparte.`,newBranch:`Nueva rama local`,noCommits:`Aún no hay commits.`,noDiff:`Aún no hay diff textual. Los archivos sin seguimiento aparecen tras prepararlos.`,notInitialized:`Git no está inicializado`,selectChange:`Selecciona un archivo modificado para inspeccionar su diff.`,selectPath:`Seleccionar {{path}}`,stageAll:`Preparar todo`,stageSelected:`Preparar {{count}}`,staged:`Cambios preparados.`,switchBranch:`Cambiar de rama local`,changes:`Cambios`,createBranch:`Crear`,filterFiles:`Filtrar archivos modificados`,noFilterMatches:`Ningún archivo modificado coincide con este filtro.`,allChanges:`Todos los cambios`,diffTruncated:`Este diff está truncado.`,binaryFile:`Archivo binario, sin diff de texto.`},hostWorkspace:{hint:`Déjalo en blanco para un espacio aislado, o apunta la tarea a una carpeta de esta máquina.`,label:`Carpeta del espacio de trabajo (opcional)`,warning:`La tarea puede leer y escribir esta carpeta directamente. Déjalo en blanco para usar un espacio aislado.`}},personaBackground:{label:`Imagen de fondo`,uploadBackgroundImage:`Subir imagen de fondo`,dragAndDrop:`Arrastra y suelta una imagen o haz clic para explorar`,chooseImage:`Elegir imagen`,uploading:`Subiendo...`,enterImageUrl:`O ingresa la URL de la imagen`,supportedFormats:`Soporta: JPG, PNG, GIF, WebP (máx 5MB). Las imágenes horizontales anchas funcionan mejor.`,customBackground:`Imagen de fondo personalizada`,clickToChange:`Haz clic para cambiar o eliminar`,removed:`Fondo eliminado`,uploaded:`Fondo subido exitosamente`,invalidFile:`Por favor selecciona un archivo de imagen válido`,fileTooLarge:`El tamaño de la imagen de fondo debe ser menor a 5MB`,readFailed:`Error al leer el archivo de imagen`,uploadFailed:`Error al subir la imagen de fondo`},modelSelector:{searchInstalled:`Buscar modelos instalados...`,searchOllama:`Buscar en la biblioteca de Ollama...`,searchHuggingFace:`Buscar en HuggingFace...`,selectModel:`Seleccionar modelo`,personas:`Personas`,ollamaModels:`Modelos Ollama`,pluginModels:`Modelos de plugins`,actions:`Acciones`,installed:`Instalado`,use:`Usar`,pull:`Descargar`,pullRestricted:`La instalación de modelos está restringida a administradores en esta instancia.`,adminOnlyPull:`Solo administradores`,legacyProvider:`proveedor no registrado`,providerNotRecorded:`Proveedor no registrado`,providerUnavailable:`proveedor no disponible`,reselectProvider:`vuelve a seleccionar un proveedor para fijar este modelo`,unavailable:`no disponible`,unavailableSelections:`Selecciones no disponibles`,agentModels:`Agentes`},whatsNew:{title:`Novedades`,releaseNotes:`Notas de la versión`,cta:`Vale, vamos`,starAsk:`¿Te gusta Libre WebUI? Deja una estrella en GitHub`},notes:{title:`Notas`,new:`Nueva nota`,untitled:`Sin título`,empty:`Aún no hay notas`,selectOrCreate:`Selecciona una nota o crea una nueva`,contentPlaceholder:`Escribe en Markdown…`,saved:`Guardado`,saveFailed:`No se pudo guardar la nota`,createFailed:`No se pudo crear la nota`,deleteConfirm:`¿Eliminar esta nota?`,deleteFailed:`No se pudo eliminar la nota`},calendar:{title:`Calendario`,today:`Hoy`,month:`Mes`,week:`Semana`,previous:`Anterior`,next:`Siguiente`,newEvent:`Nuevo evento`,editEvent:`Editar evento`,eventTitle:`Título`,titlePlaceholder:`Título del evento`,date:`Fecha`,start:`Inicio`,end:`Fin`,allDay:`Todo el día`,repeat:`Repetir`,repeatNone:`No se repite`,repeatDaily:`Diariamente`,repeatWeekly:`Semanalmente`,repeatMonthly:`Mensualmente`,repeatYearly:`Anualmente`,notes:`Notas`,more:`+{{n}} más`,loadFailed:`No se pudo cargar el calendario`,saveFailed:`No se pudo guardar el evento`,deleteFailed:`No se pudo eliminar el evento`},automations:{title:`Automatizaciones`,tab:{automations:`Automatizaciones`,runs:`Ejecuciones`},newAutomation:`Nueva automatización`,editAutomation:`Editar automatización`,empty:`Aún no hay automatizaciones. Crea una para ejecutar una tarea según un horario.`,loadFailed:`No se pudieron cargar las automatizaciones`,saveFailed:`No se pudo guardar la automatización`,actionFailed:`La acción falló`,runQueued:`Ejecución iniciada`,status:{active:`Activa`,paused:`En pausa`},nextRun:`Próxima ejecución {{when}}`,actions:`Acciones`,pause:`Pausar`,resume:`Reanudar`,runNow:`Ejecutar ahora`,openChat:`Abrir chat`,noRuns:`Aún no hay ejecuciones`,deletedAutomation:`Automatización eliminada`,runHistory:`Historial de ejecuciones (últimos 30 días)`,succeeded:`exitosas`,failed:`fallidas`,form:{name:`Nombre`,namePlaceholder:`Mi automatización`,triggers:`Disparadores`,addTrigger:`Añadir disparador`,instructions:`Instrucciones`,instructionsPlaceholder:`¿Qué debe ejecutarse según este horario?`,model:`Modelo`,modelAuto:`Auto`,notification:`Notificación`,notifyApp:`Aplicación`,notifyOff:`Desactivada`,frequency:`Frecuencia`,time:`Hora`,minute:`Minuto`,fromHour:`Desde`,toHour:`Hasta`,weekday:`Día de la semana`,dayOfMonth:`Día`,month:`Mes`},kind:{once:`Una vez`,hourly:`Cada hora`,daily:`Diaria`,weekly:`Semanal`,monthly:`Mensual`,yearly:`Anual`},trigger:{once:`Una vez el {{when}}`,hourly:`Cada hora al minuto :{{minute}}`,daily:`Diariamente a las {{time}}`,weekly:`Semanalmente el {{day}} a las {{time}}`,monthly:`Mensualmente el día {{day}} a las {{time}}`,yearly:`Anualmente el {{date}} a las {{time}}`},finishedNotification:`{{n}} ejecuciones de automatización finalizadas`,templatesTitle:`Plantillas`,templates:{morningBrief:{name:`Resumen matutino`,description:`Empieza el día con titulares y prioridades.`},newsDigest:{name:`Resumen de noticias de IA`,description:`Lanzamientos de modelos, investigación y financiación relevantes.`},weeklyReview:{name:`Revisión semanal`,description:`Cierra la semana: logros, pendientes y próximas prioridades.`},monthlyReport:{name:`Informe mensual`,description:`Un esquema de informe de estado el primer día de cada mes.`}}},home:{active:`activo`,continue:`Continuar`,start:`Empezar`,explore:`Explorar`},palette:{empty:`Sin coincidencias.`,placeholder:`Buscar chats, Work, acciones…`,toggleTheme:`Cambiar tema`,actions:`Acciones`,chats:`Chats`,search:`Buscar`,settings:`Configuración`,work:`Trabajo`},tabs:{actions:`Acciones de pestaña`,close:`Cerrar pestaña`,closeAll:`Cerrar todas las pestañas`,closeOthers:`Cerrar las demás pestañas`,closeRight:`Cerrar pestañas a la derecha`,home:`Inicio`,label:`Pestañas abiertas`,new:`Nueva pestaña`,newWork:`Nuevo Work`,chat:`Chat`,newChat:`Nuevo chat`,work:`Trabajo`}};export{e as default};
|