ErrInvalidParams: 'Solicitud inválida: {{ .detail }}' ErrTokenParse: 'Token inválido: {{ .detail }}' ErrInitialPassword: 'Contraseña original incorrecta' ErrInternalServer: 'Error interno: {{ .detail }}' ErrFileAINotEnabled: 'La búsqueda con IA de archivos está desactivada o sin cuenta. En Gestión de archivos, use Cuenta de IA, active y elija una cuenta.' ErrFileAISearchBadPattern: 'Patrón de búsqueda no válido (regex u otra opción): {{ .detail }}' ErrWgetRemoteFailed: 'La descarga remota falló o la URL no es accesible: {{ .detail }}' ErrWgetInvalidContentType: 'La URL remota no devolvió un archivo (posiblemente una página de error), {{ .detail }}' ErrWgetProxyNotConfigured: 'Configure primero un servidor proxy en los ajustes del panel' ErrWgetProxyInvalid: 'Dirección del servidor proxy no válida: {{ .detail }}' ErrRecordExist: 'Registro ya existe' ErrRecordNotFound: 'Registro no encontrado' ErrStructTransform: 'Error de conversión: {{ .err }}' ErrNotLogin: 'No has iniciado sesión: {{ .detail }}' ErrPasswordExpired: 'Contraseña expirada: {{ .detail }}' ErrNotSupportType: 'Tipo no soportado: {{ .name }}' ErrAlertMethodNotSupported: 'Esta versión no admite este método de alerta' ErrProxy: 'Solicitud fallida: {{ .detail }}' ErrApiConfigStatusInvalid: 'API desactivada: {{ .detail }}' ErrApiConfigKeyInvalid: 'Clave API inválida: {{ .detail }}' ErrApiConfigIPInvalid: 'IP no permitida: {{ .detail }}' ErrApiConfigDisable: 'API no permitida: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' ErrShutDown: 'Comando detenido manualmente' ErrMinQuickJump: 'Agrega al menos una entrada rápida' ErrMaxQuickJump: 'Máximo 4 entradas rápidas' ErrUsernameIsExist: 'Usuario ya existe' ErrNameIsExist: 'Nombre ya existe' ErrDemoEnvironment: 'No disponible en demo' ErrCmdTimeout: 'Comando agotó tiempo' ErrCmdIllegal: 'Comando contiene caracteres inválidos' ErrPortExist: 'El puerto {{ .port }} ya está ocupado por {{ .type }} [{{ .name }}]' TYPE_APP: 'Aplicación' TYPE_RUNTIME: 'Entorno de ejecución' TYPE_DOMAIN: 'Nombre de dominio' ErrTypePort: 'El formato del puerto {{ .name }} es incorrecto' ErrTypePortRange: 'El rango de puertos debe estar entre 1-65535' Success: 'Éxito' Failed: 'Error' SystemRestart: 'La tarea fue interrumpida debido a un reinicio del sistema' ErrGroupIsDefault: 'Grupo predeterminado, no se puede eliminar' ErrGroupIsInWebsiteUse: 'El grupo está siendo usado por otro sitio web y no se puede eliminar.' Decrypt: 'Descifrar' ErrAgentAccountBound: 'Cuenta vinculada a agente' ErrTerminalAIAccountInUse: 'Esta cuenta de modelo esta siendo usada por Terminal AI. Cambia la cuenta en la configuracion de Terminal AI o desactiva Terminal AI y vuelve a intentarlo.' ErrAgentAccountUnavailable: 'Conexión de cuenta no disponible: {{ .err }}' ErrAgentProviderNotSupported: 'Proveedor de agente no soportado' ErrAgentAccountRequired: 'Elige una cuenta de agente primero' ErrAgentAccountNotVerified: 'Cuenta de agente no verificada' ErrAgentAccountModelsRequired: 'Configure al menos un modelo' ErrAgentAccountSingleInitialModel: 'Solo se puede configurar un modelo inicial al crear la cuenta' ErrAgentModelNotInAccount: 'El modelo no está configurado en la cuenta seleccionada' ErrAgentFallbackModelDuplicate: 'Los modelos de respaldo no pueden duplicarse' ErrAgentFallbackModelPrimary: 'El modelo de respaldo no puede ser igual al modelo principal' ErrAgentModelInUse: 'Un agente vinculado todavía usa este modelo: {{ .name }}' ErrAgentBaseURLRequired: 'URL base requerida' ErrAgentApiKeyRequired: 'Clave API requerida' ErrAgentComposeRequired: 'Contenido compose requerido' ErrAgentIDRequired: 'ID de agente requerido' ErrAgentAccountIDRequired: 'ID de cuenta requerido' ErrAgentLimitReached: 'La edición Community admite hasta {{ .max }} agentes de IA. Actualiza a la edición Business para usar agentes ilimitados' ErrAgentWebsiteBound: 'Este agente ya está vinculado a un sitio web' ErrAgentWebsiteTypeUnsupported: 'Solo se pueden vincular sitios proxy o estáticos' ErrAgentWebsiteInUse: 'Este sitio web ya está vinculado a otro agente' ErrAgentWebsiteUnbindUnsupported: 'Los sitios web de despliegue no se pueden desvincular manualmente' ErrHermesPairingCodeUnavailable: 'El código de emparejamiento no está disponible temporalmente en Hermes, posiblemente por un problema de red. Inténtalo de nuevo más tarde.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Cuando la política de grupo de Feishu es Lista permitida, la política de MD no puede ser Código de emparejamiento.' ErrAIProxyServiceNotInstalled: 'El servicio {{ .name }} no está instalado' ErrAIProxyModelAccountNotFound: 'Cuenta de modelo {{ .id }} no encontrada' ErrAIProxyModelMapRequired: 'Este campo es obligatorio.' ErrAIProxyModelMapInvalid: 'El mapeo de modelos debe ser un objeto JSON válido: {{ .err }}' ErrAIProxyModelMapEmpty: 'El mapeo de modelos no puede estar vacío' ErrAIProxyModelMapEmptyExternalModel: 'El mapeo de modelos contiene un modelo solicitado vacío' ErrAIProxyModelMapEmptyUpstreamModel: 'El modelo upstream de {{ .model }} no puede estar vacío' AIProxyUserFallback: 'Usuario {{ .id }}' Localhost: 'Máquina local' ErrBackupInUsed: 'Cuenta de respaldo en uso por tarea programada' ErrBackupCheck: 'Conexión de respaldo falló: {{ .err }}' ErrBackupLocalDelete: 'No se puede eliminar cuentas de respaldo locales' ErrBackupLocalCreate: 'No se pueden crear cuentas de respaldo locales' ErrAlertConfigInUse: 'La configuración de alertas está en uso y no se puede eliminar' ErrAlertConfigPhoneExist: 'El numero de telefono ya existe' ErrPortInUsed: 'El puerto {{ .detail }} ya está ocupado' ErrAppLimit: 'El número de aplicaciones instaladas ha superado el límite' ErrNotInstall: 'Aplicación no instalada' ErrPortInOtherApp: 'El puerto {{ .port }} ya está ocupado por la aplicación {{ .apps }}' ErrDbUserNotValid: 'Base de datos existente, usuario y contraseña no coinciden' ErrUpdateBuWebsite: 'La aplicación se actualizó correctamente, pero falló la modificación del archivo de configuración del sitio web. revise la configuración' Err1PanelNetworkFailed: 'Fallo la creación de la red por defecto del contenedor {{ .detail }}' ErrFileParse: 'Fallo al analizar el archivo docker-compose de la aplicación' ErrInstallDirNotFound: 'El directorio de instalación no existe. Si desea desinstalar, seleccione Desinstalación forzada' AppStoreIsUpToDate: 'La tienda de aplicaciones ya está en la última versión' LocalAppVersionNull: 'La aplicación {{ .name }} no está sincronizada a la versión No se puede agregar a la lista de aplicaciones' LocalAppVersionErr: 'La sincronización de la versión {{ .version }} de {{ .name }} falló {{ .err }}' ErrFileNotFound: 'El archivo {{ .name }} no existe' ErrFileParseApp: 'El archivo {{ .name }} falló al analizarse {{ .err }}' ErrAppDirNull: 'La carpeta de la versión no existe' LocalAppErr: 'La sincronización de la aplicación {{ .name }} falló {{ .err }}' ErrContainerName: 'El nombre del contenedor ya existe' ErrCreateHttpClient: 'Fallo al crear la solicitud {{ .err }}' ErrHttpReqTimeOut: 'La solicitud superó el tiempo de espera {{ .err }}' ErrHttpReqFailed: 'La solicitud falló {{ .err }}' ErrNoSuchHost: 'No se pudo encontrar el servidor solicitado {{ .err }}' ErrHttpReqNotFound: 'No se pudo encontrar el recurso solicitado {{ .err }}' ErrContainerNotFound: 'El contenedor {{ .name }} no existe' ErrContainerMsg: 'El contenedor {{ .name }} presenta anomalías. Revise el log en la página de contenedores para más detalles' ErrAppBackup: 'Falló el respaldo de la aplicación {{ .name }} {{ .err }}' ErrVersionTooLow: 'La versión actual de 1Panel es demasiado baja para actualizar la tienda de aplicaciones. Actualice primero.' ErrAppNameExist: 'El nombre de la aplicación ya existe' AppStoreIsSyncing: 'La tienda de aplicaciones está sincronizando, inténtelo más tarde' ErrGetCompose: 'Fallo al obtener el archivo docker-compose.yml {{ .detail }}' ErrAppWarn: 'Estado anómalo, revise el log' ErrAppParamKey: 'El campo de parámetro {{ .name }} es anómalo' ErrAppUpgrade: 'La actualización de la aplicación {{ .name }} falló {{ .err }}' AppRecover: 'Revertir la aplicación {{ .name }}' PullImageStart: 'Iniciar descarga de la imagen [{{ .name }}]' PullImageSuccess: 'Descarga de imagen exitosa' AppStoreSyncSuccess: 'Sincronización de la tienda de aplicaciones exitosa' SyncAppDetail: 'Sincronizar configuración de la aplicación' AppVersionNotMatch: 'La aplicación {{ .name }} requiere una versión superior de 1Panel, se omite la sincronización' MoveSiteDir: 'La actualización actual requiere migrar el directorio del sitio web OpenResty' MoveSiteDirSuccess: 'Migración del directorio del sitio exitosa' DeleteRuntimePHP: 'Eliminar entorno de ejecución PHP' CustomAppStoreFileValid: 'Los paquetes de la tienda de aplicaciones deben estar en formato.tar.gz' PullImageTimeout: 'Tiempo de espera al descargar la imagen, intente aumentar la aceleración o use otra' ErrAppIsDown: 'El estado de la aplicación {{ .name }} es anómalo, revise' ErrCustomApps: 'Hay una aplicación instalada, desinstálela primero' ErrCustomRuntimes: 'Hay un entorno de ejecución instalado, elimínelo primero' ErrAppVersionDeprecated: 'La aplicación {{ .name }} no es compatible con la versión actual de 1Panel, omitida' ErrDockerFailed: 'El estado de Docker es anómalo, revise el servicio' ErrDockerComposeCmdNotFound: 'El comando Docker Compose no existe instálelo primero en el host' UseExistImage: 'La imagen ya existe, usando imagen existente' ErrDatabaseNotFound: 'La base de datos {{ .name }} no existe' ExportIP: 'IP de inicio de sesión' ExportArea: 'Ubicación' ExportPort: 'Puerto' ExportAuthMode: 'Método de inicio de sesión' ExportUser: 'Usuario' ExportStatus: 'Estado de inicio de sesión' ExportDate: 'Fecha y hora' ErrFileCanNotRead: 'Este archivo no soporta vista previa' ErrSensitiveFileRead: 'No se permite leer archivos sensibles' ErrFileToLarge: 'El archivo es mayor a 10M y no puede abrirse' ErrPathNotFound: 'El directorio no existe' ErrMovePathFailed: 'La ruta de destino no puede contener la ruta original' ErrLinkPathNotFound: 'La ruta de destino no existe' ErrFileIsExist: 'El archivo o carpeta ya existe' ErrFileUpload: '{{ .name }} falló al subir archivo {{ .detail }}' ErrFileDownloadDir: 'No se admite la descarga de carpetas' ErrFileSharePath: 'Ruta no válida o el destino no es un archivo' ErrFileShareInvalid: 'Enlace de uso compartido no válido o caducado' ErrFileShareExpired: 'El enlace de uso compartido ha caducado' ErrFileSharePassword: 'Contraseña de uso compartido incorrecta' ErrFileShareExhausted: 'Se alcanzó el límite de descargas de este recurso compartido' ErrFileSharePasswordPolicy: 'La contraseña debe tener al menos 4 caracteres' ErrFileShareRateLimit: 'Demasiadas solicitudes, inténtelo de nuevo más tarde' ErrCmdNotFound: 'El comando {{ .name }} no existe, instálelo primero en el host' ErrSourcePathNotFound: 'El directorio fuente no existe' ErrFavoriteExist: 'Esta ruta ya ha sido marcada como favorita' ErrInvalidChar: 'No se permiten caracteres ilegales' ErrPathNotDelete: 'No se puede eliminar el directorio seleccionado' ErrLogFileToLarge: 'Log file exceeds 500 MB' FileDropFailed: 'Error al limpiar el archivo {{ .name }}: {{ .err }}' FileDropSuccess: 'Archivo {{ .name }} limpiado correctamente, {{ .count }} archivos eliminados, {{ .size }} de espacio liberado' FileDropSum: 'Limpieza de archivos completada, total {{ .count }} archivos eliminados, {{ .size }} de espacio liberado' ErrBadDecrypt: 'Error de contraseña de descifrado del paquete comprimido, descompresión fallida, compruebe e inténtelo de nuevo' ErrAliasIsExist: 'El alias ya existe' ErrBackupMatch: 'El archivo de respaldo no coincide con parte de los datos actuales del sitio web {{ .detail }}' ErrBackupExist: 'Parte de los datos fuente del respaldo no existe {{ .detail }}' ErrPHPResource: 'El entorno local no soporta cambio' ErrPathPermission: 'Se detectó una carpeta con permisos distintos a 1000:1000 en el directorio index, lo cual puede causar errores de acceso denegado. Haga clic en Guardar arriba' ErrDomainIsUsed: 'El dominio ya está en uso por el sitio web [{{ .name }}]' ErrDomainFormat: 'El formato del dominio {{ .name }} es incorrecto' ErrDefaultAlias: 'default es un código reservado, use otro' ErrParentWebsite: 'Primero debe eliminar el sub-sitio {{ .name }}' ErrBuildDirNotFound: 'El directorio de compilación no existe' ErrImageNotExist: 'La imagen del entorno {{ .name }} no existe, edítela de nuevo' ErrProxyIsUsed: 'El balanceo de carga ya está usado por un proxy reverso, no se puede eliminar' ErrSSLValid: 'Archivo de certificado anómalo, revise el estado del certificado' ErrWebsiteDir: 'seleccione un directorio dentro del directorio del sitio web' ErrComposerFileNotFound: 'El archivo composer.json no existe' ErrRuntimeNoPort: 'El entorno de ejecución no tiene configurado un puerto, edítelo primero' ErrRuntimeProjectDirContainsCodeDir: 'El directorio de ejecución incluye el directorio de proyecto seleccionado. Elija otro directorio de proyecto y créelo de nuevo.' Status: 'Estado' start: 'Iniciar' stop: 'Detener' restart: 'Reiniciar' kill: 'Detener Forzosamente' pause: 'Pausar' unpause: 'Reanudar' remove: 'Eliminar' delete: 'Eliminar' ErrDefaultWebsite: 'El sitio web predeterminado ya está configurado, cancélelo antes de configurar' SSL: 'Certificado' Set: 'Configuración' ErrSSLCannotDelete: 'El certificado {{ .name }} está siendo utilizado por un sitio web y no puede eliminarse' ErrAccountCannotDelete: 'La cuenta está asociada a un certificado y no puede eliminarse' ErrSSLApply: 'Renovación del certificado exitosa, recarga de openresty fallida, revise la configuración' ErrEmailIsExist: 'El correo ya existe' ErrSSLKeyNotFound: 'El archivo de clave privada no existe' ErrSSLCertificateNotFound: 'El archivo de certificado no existe' ErrSSLKeyFormat: 'Error en la verificación del archivo de clave privada' ErrSSLCertificateFormat: 'Formato de certificado incorrecto, use formato pem' ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid o EabHmacKey no pueden estar en blanco' ErrOpenrestyNotFound: 'El modo HTTP requiere OpenResty' ApplySSLStart: 'Iniciando solicitud de certificado, dominio [{{ .domain }}] método de solicitud [{{ .type }}]' dnsAccount: 'DNS Automático' dnsManual: 'DNS Manual' http: 'HTTP' ApplySSLFailed: 'Solicitud de certificado para [{{ .domain }}] fallida, {{ .detail }}' ApplySSLSuccess: 'Solicitud de certificado para [{{ .domain }}] exitosa' DNSAccountName: 'Cuenta DNS [{{ .name }}] proveedor [{{ .type }}]' PushDirLog: 'Certificado empujado al directorio [{{ .path }}] {{ .status }}' ErrDeleteCAWithSSL: 'La organización actual tiene un certificado emitido y no puede eliminarse.' ErrDeleteWithPanelSSL: 'La configuración SSL del panel utiliza este certificado y no puede eliminarse' ErrDefaultCA: 'La autoridad por defecto no puede eliminarse' ApplyWebSiteSSLLog: 'Iniciando renovación del certificado del sitio web {{ .name }}' ErrUpdateWebsiteSSL: 'Actualización de certificado del sitio web {{ .name }} falló: {{ .err }}' ApplyWebSiteSSLSuccess: 'Certificado del sitio web actualizado exitosamente' ErrExecShell: 'Ejecución del script fallida {{ .err }}' ExecShellStart: 'Iniciando ejecución de script' ExecShellSuccess: 'Ejecución de script exitosa' StartUpdateSystemSSL: 'Iniciando actualización del certificado del sistema' UpdateSystemSSLSuccess: 'Certificado del sistema actualizado correctamente' ErrWildcardDomain: 'No se puede solicitar certificado de dominio wildcard en modo HTTP' ErrApplySSLCanNotDelete: 'El certificado {{ .name }} en proceso de solicitud no puede eliminarse, inténtelo más tarde' StartPushSSLToNode: 'Iniciando envío de certificado al nodo' PushSSLToNodeFailed: 'Error al enviar el certificado al nodo: {{ .err }}' PushSSLToNodeSuccess: 'Certificado enviado correctamente al nodo' ErrUserIsExist: 'El usuario actual ya existe, intente con otro' ErrDatabaseIsExist: 'La base de datos actual ya existe, intente con otro nombre' ErrExecTimeOut: 'Tiempo de espera en la ejecución SQL, revise la base de datos' ErrRemoteExist: 'La base de datos remota ya existe con ese nombre, modifíquelo e intente de nuevo' ErrLocalExist: 'El nombre ya existe en la base de datos local, modifíquelo e intente de nuevo' RemoteBackup: 'Para hacer una copia de seguridad de la base de datos remota, primero debe iniciarse el servicio de base de datos del contenedor local utilizando la imagen {{ .name }}, espere...' RemoteRecover: 'Para restaurar la base de datos remota, primero debe iniciarse el servicio de base de datos del contenedor local utilizando la imagen {{ .name }}, espere...' Arg: 'Argumento' ErrTypeOfRedis: 'El tipo de archivo de recuperación no coincide con el método de persistencia actual, modifíquelo e intente' ErrInUsed: '{{ .detail }} está en uso y no se puede eliminar' ErrObjectInUsed: 'Este objeto está en uso y no se puede eliminar' ErrObjectBeDependent: 'Esta imagen es dependida por otras imágenes y no se puede eliminar' ErrPortRules: 'El número de puerto no coincide, ingrese de nuevo' ErrPgImagePull: 'Tiempo de espera al descargar la imagen, configure la aceleración o descárguela manualmente ({{ .name }}) e intente de nuevo' PruneHelper: 'Esta limpieza {{ .name }} liberó espacio en disco {{ .size }}' ImageRemoveHelper: 'Imagen {{ .name }} eliminada, liberando {{ .size }} de espacio en disco' BuildCache: 'Caché de compilación' Volume: 'Volumen de almacenamiento' Network: 'Red' PruneStart: 'Limpiando en progreso espere...' ContainerBackupPrepare: 'Preparar espacio de respaldo del contenedor' ContainerBackupStop: 'Detener contenedor antes del respaldo' ContainerBackupInspect: 'Respaldar inspect y red del contenedor' ContainerBackupMounts: 'Respaldar montajes del contenedor' ContainerBackupMeta: 'Escribir metadatos del respaldo del contenedor' ContainerBackupStart: 'Iniciar contenedor después del respaldo' ContainerRecoverPrepare: 'Preparar espacio de restauración del contenedor' ContainerRecoverExtract: 'Extraer archivo de respaldo del contenedor' ContainerRecoverParse: 'Cargar metadatos del respaldo del contenedor' ContainerRecoverCreate: 'Recrear contenedor' ContainerRecoverMounts: 'Restaurar montajes del contenedor' ContainerRecoverStart: 'Iniciar contenedor restaurado' ContainerRecoverCleanup: 'Limpiar espacio de restauracion del contenedor' ComposeBackupPrepare: 'Preparar espacio de respaldo del compose' ComposeBackupStop: 'Detener compose antes del respaldo' ComposeBackupFiles: 'Respaldar archivos de compose' ComposeBackupContainers: 'Respaldar contenedores del compose' ComposeBackupMeta: 'Escribir metadatos del respaldo de compose' ComposeBackupStart: 'Iniciar compose después del respaldo' ComposeBackupCleanup: 'Limpiar espacio de respaldo del compose' ComposeRecoverPrepare: 'Preparar espacio de restauración del compose' ComposeRecoverExtract: 'Extraer archivo de respaldo de compose' ComposeRecoverMeta: 'Cargar metadatos del respaldo de compose' ComposeRecoverMetaLogName: 'Metadatos de restauracion de compose: nombre={{ .name }}' ComposeRecoverMetaLogPath: 'Metadatos de restauracion de compose: rutaRespaldo={{ .backupPath }} rutaDestino={{ .targetDir }}' ComposeRecoverMetaLogCount: 'Metadatos de restauracion de compose: archivos={{ .files }} contenedores={{ .containers }}' ComposeRecoverFiles: 'Restaurar archivos de compose' ComposeRecoverContainers: 'Restaurar contenedores del compose' ComposeRecoverRecord: 'Guardar registro de compose' ComposeRecoverCleanup: 'Limpiar espacio de restauracion de compose' ErrFileNotExist: 'El archivo {{ .detail }} no existe, verifique la integridad' ErrImageBuildErr: 'Fallo al construir la imagen' ErrImageExist: 'La imagen ya existe Modifique el nombre de la imagen.' ErrDelWithWebsite: 'El entorno de ejecución ya está asociado a un sitio web y no puede eliminarse' ErrRuntimeStart: 'Fallo al iniciar' ErrPackageJsonNotFound: 'El archivo package.json no existe' ErrScriptsNotFound: 'No se encontró la configuración de scripts en package.json' ErrContainerNameNotFound: 'No se puede obtener el nombre del contenedor, revise el archivo.env' ErrNodeModulesNotFound: 'La carpeta node_modules no existe, edite o espere a que inicie' ErrContainerNameIsNull: 'El nombre del contenedor no existe' ErrPHPPortIsDefault: 'El puerto 9000 es el predeterminado, modifique e intente de nuevo' ErrPHPRuntimePortFailed: 'El puerto {{ .name }} ya está en uso por el entorno actual, modifique e intente' ErrConfigNotFound: 'El archivo de configuración no existe' ErrConfigParse: 'El formato del archivo de configuración es incorrecto' ErrConfigIsNull: 'El archivo de configuración no puede estar vacío' ErrConfigDirNotFound: 'El directorio de ejecución no existe' ErrConfigAlreadyExist: 'Ya existe un archivo de configuración con ese nombre' ErrUserFindErr: 'Búsqueda del usuario {{ .name }} fallida {{ .err }}' CutWebsiteLogSuccess: 'Log del sitio web {{ .name }} cortado con éxito, ruta de respaldo {{ .path }}' HandleShell: 'Ejecutar script {{ .name }}' HandleCurl: 'URL {{ .name }} にアクセス' HandleNtpSync: 'Sincronizar hora del sistema' HandleSystemClean: 'Limpiar caché del sistema' SystemLog: 'Log del sistema' CutWebsiteLog: 'Rotar log del sitio web' FileOrDir: 'Directorio / Archivo' UploadFile: 'Subiendo archivo de respaldo {{ .file }} a {{ .backup }}' Upload: 'Subir' IgnoreBackupErr: 'Fallo en el respaldo, error: {{ .detail }}, se ignora este error...' IgnoreUploadErr: 'Fallo en la subida, error: {{ .detail }}, se ignora este error...' LoadBackupFailed: 'Error al obtener la conexión de la cuenta de respaldo, error: {{ .detail }}' InExecuting: 'La tarea actual se está ejecutando no la repita' NoSuchResource: 'No se encontraron contenidos de respaldo en la base de datos, omitiendo...' CleanLog: 'Limpiar registro' CleanLogByName: 'Limpiar registro de {{ .name }}' WafIpGroupNotFound: 'Grupo de IP de WAF no encontrado., vaya a [Funciones Avanzadas - WAF - Lista Blanca/Negra - Grupo de IP] para agregar un grupo de IP mediante el método de descarga remota.' ErrNotExistUser: 'El usuario actual no existe, modifíquelo e intente de nuevo' ErrBanAction: 'Fallo al configurar. El servicio {{ .name }} no está disponible, revise e intente de nuevo' ErrClamdscanNotFound: 'El comando clamdscan no fue detectado, siga la documentación para instalarlo' TaskSwapSet: 'Configurar Swap' SetSwap: 'Configurar Swap {{ .path }} - {{ .size }}' CreateSwap: 'Crear Archivo Swap' FormatSwap: 'Formatear Archivo Swap' EnableSwap: 'Habilitar Swap' CleanTamperSetting: 'Limpiar configuraciones de protección históricas' SetTamperWithRules: 'Iniciar protección de directorio según reglas' ProtectDir: 'Proteger directorio {{ .name }}' IgnoreFile: 'Proteger archivo {{ .name }}' TamperSetSuccessful: 'Configuración de protección completada, comenzando monitoreo de los siguientes directorios:' ErrScope: 'No se admite la modificación de esta configuración' ErrStateChange: 'Fallo al cambiar de estado' ErrRuleExist: 'La regla ya existe' ErrRuleNotExist: 'La regla no existe' ErrParseIP: 'Formato de IP incorrecto' ErrDefaultIP: 'default es un nombre reservado, cámbielo' ErrGroupInUse: 'El grupo IP está en uso por listas negras/blancas y no se puede eliminar' ErrIPGroupAclUse: 'El grupo IP está en uso por reglas personalizadas del sitio web {{ .name }}, no puede eliminarse' ErrGroupExist: 'El nombre del grupo IP ya existe' ErrIPRange: 'Rango de IP incorrecto' ErrIPExist: 'La IP ya existe' urlDefense: 'Reglas de URL' urlHelper: 'URL prohibida' dirFilter: 'Filtro de directorio' xss: 'XSS' phpExec: 'Ejecución de scripts PHP' oneWordTrojan: 'Troyano de una sola palabra' appFilter: 'Filtrar directorios peligrosos' webShell: 'Webshell' args: 'Reglas de parámetros' protocolFilter: 'Filtrado de protocolos' javaFilter: 'Filtrado de archivos Java peligrosos' scannerFilter: 'Filtrado de escáneres' escapeFilter: 'Filtro de escape' customRule: 'Regla personalizada' httpMethod: 'Filtrado de métodos HTTP' fileExt: 'Restricciones de carga de archivos' defaultIpBlack: 'Grupo de IPs maliciosas' cookie: 'Reglas de Cookie' urlBlack: 'Lista negra de URLs' uaBlack: 'Lista negra de User-Agent' attackCount: 'Límite de frecuencia de ataques' fileExtCheck: 'Restricción de carga de archivos' geoRestrict: 'Restricciones de acceso regional' unknownWebsite: 'Acceso no autorizado al dominio' notFoundCount: 'Límite de tasa 404' headerDefense: 'Reglas de encabezado' defaultUaBlack: 'Reglas de User-Agent' methodWhite: 'Reglas HTTP' captcha: 'Verificación humano-máquina' fiveSeconds: 'Verificación de 5 segundos' vulnCheck: 'Reglas suplementarias' acl: 'Reglas personalizadas' sql: 'Inyección SQL' cc: 'Límite de frecuencia de acceso' defaultUrlBlack: 'Reglas de URL' sqlInject: 'Inyección SQL' ErrDBNotExist: 'La base de datos no existe' allow: 'permitir' deny: 'denegar' OpenrestyNotFound: 'OpenResty no está instalado' remoteIpIsNull: 'La lista de IP está vacía' OpenrestyVersionErr: 'La versión de OpenResty es demasiado antigua. Actualízalo a 1.27.1.2-2-2-focal' ErrFileTooLarge: 'El archivo supera 1 MB y no se puede cargar' TaskStart: 'La tarea {{ .name }} inicia [INICIO]' TaskEnd: 'La tarea {{ .name }} completada [COMPLETADA]' TaskFailed: 'La tarea {{ .name }} falló' TaskTimeout: 'La tarea {{ .name }} excedió el tiempo' TaskSuccess: 'La tarea {{ .name }} se realizó con éxito' TaskRetry: 'Iniciar el {{ .name }} reintento' SubTaskSuccess: '{{ .name }} exitoso' SubTaskFailed: '{{ .name }} falló: {{ .err }}' TaskInstall: 'Instalar' TaskUninstall: 'Desinstalar' TaskCreate: 'Crear' TaskDelete: 'Eliminar' TaskUpgrade: 'Actualizar' TaskUpdate: 'Actualizar' TaskRestart: 'Reiniciar' TaskProtect: 'Proteger' TaskBackup: 'Respaldar' TaskRecover: 'Recuperar' TaskRollback: 'Revertir' TaskPull: 'Descargar' TaskCommit: 'Commit' TaskBuild: 'Construir' TaskPush: 'Enviar' TaskClean: 'Limpieza' TaskHandle: 'Ejecutar' TaskImport: 'Importar' TaskExport: 'Exportar' Website: 'Sitio web' App: 'Aplicación' Runtime: 'Entorno de ejecución' Database: 'Base de datos' ConfigFTP: 'Crear usuario FTP {{ .name }}' ConfigOpenresty: 'Crear archivo de configuración de OpenResty' InstallAppSuccess: 'Aplicación {{ .name }} instalada correctamente' ConfigRuntime: 'Configurar entorno de ejecución' ConfigApp: 'Configurar aplicación' SuccessStatus: '{{ .name }} exitoso' FailedStatus: '{{ .name }} falló {{ .err }}' HandleLink: 'Gestionar asociación de aplicación' HandleDatabaseApp: 'Gestionar parámetros de aplicación' ExecShell: 'Ejecutar script {{ .name }}' PullImage: 'Descargar imagen' Start: 'Iniciar' Run: 'Ejecutar' Stop: 'Detener' Image: 'Imagen' Compose: 'Orquestación' Container: 'Contenedor' AppLink: 'Aplicación enlazada' EnableSSL: 'Habilitar HTTPS' AppStore: 'Tienda de aplicaciones' TaskSync: 'Sincronizar' LocalApp: 'Aplicación local' SubTask: 'Subtarea' RuntimeExtension: 'Extensión del entorno de ejecución' TaskIsExecuting: 'Tarea en ejecución' CustomAppstore: 'Almacén de aplicaciones personalizado' TaskExec: 'Ejecutar' TaskBatch: 'Operación por Lotes' FileConvert: 'Conversión de Formato de Archivo' Clamscan: 'Escanear {{ .name }}' TaskScan: 'Escaneo' OllamaModelPull: 'Descargar modelo Ollama {{ .name }}' OllamaModelSize: 'Obtener tamaño del modelo Ollama {{ .name }}' Snapshot: 'Instantánea' SnapDBInfo: 'Escribir información de base de datos de 1Panel' SnapCopy: 'Copiar archivos y directorios {{ .name }}' SnapNewDB: 'Inicializar conexión a base de datos {{ .name }}' SnapDeleteOperationLog: 'Eliminar log de operaciones' SnapDeleteLoginLog: 'Eliminar log de accesos' SnapDeleteMonitor: 'Eliminar datos de monitoreo' SnapRemoveSystemIP: 'Eliminar IP del sistema' SnapBaseInfo: 'Escribir información básica de 1Panel' SnapInstallAppImageEmpty: 'No se seleccionaron imágenes de aplicaciones, omitiendo...' SnapInstallApp: 'Respaldar aplicaciones instaladas de 1Panel' SnapDockerSave: 'Comprimir aplicaciones instaladas' SnapLocalBackup: 'Respaldar directorio local de 1Panel' SnapCompressBackup: 'Comprimir directorio local de respaldo' SnapPanelData: 'Respaldar directorio de datos de 1Panel' SnapCompressPanel: 'Directorio de datos comprimido' SnapWebsite: 'Respaldar directorio de sitios web de 1Panel' SnapCloseDBConn: 'Cerrar conexión de base de datos' SnapCompress: 'Crear archivos de instantánea' SnapCompressFile: 'Comprimir archivo de instantánea' SnapCheckCompress: 'Verificar archivo de compresión de instantánea' SnapCompressSize: 'Tamaño del archivo de instantánea {{ .name }}' SnapUpload: 'Subir archivo de instantánea' SnapUploadTo: 'Subir archivo de instantánea a {{ .name }}' SnapUploadRes: 'Subir archivo de instantánea a {{ .name }}' SnapshotRecover: 'Restaurar instantánea' RecoverDownload: 'Descargar archivo de instantánea' Download: 'Descargar' RecoverDownloadAccount: 'Obtener cuenta de respaldo para descargar instantánea {{ .name }}' RecoverDecompress: 'Descomprimir archivos de instantánea' Decompress: 'Descompresión' BackupBeforeRecover: 'Respaldar datos del sistema antes de restaurar instantánea' ReadJson: 'Leer archivo Json de la instantánea' ReadJsonPath: 'Obtener ruta del archivo Json en la instantánea' ReadJsonContent: 'Leer archivo Json' ReadJsonMarshal: 'Procesar escape de Json' RecoverApp: 'Restaurar aplicaciones instaladas' RecoverWebsite: 'Recuperar directorio del sitio web' RecoverAppImage: 'Restaurar imagen de la instantánea' RecoverCompose: 'Restaurar otros contenidos de compose' RecoverComposeList: 'Obtener todos los compose a restaurar' RecoverComposeItem: 'Restaurar compose {{ .name }}' RecoverAppEmpty: 'No se encontraron imágenes de respaldo de aplicaciones en la instantánea' RecoverBaseData: 'Recuperar datos y archivos básicos' RecoverDaemonJsonEmpty: 'El archivo daemon.json no existe ni en la instantánea ni en el equipo actual' RecoverDaemonJson: 'Restaurar archivo daemon.json de configuración de contenedor' RecoverDBData: 'Restaurar datos de base de datos' RecoverBackups: 'Restaurar directorio local de respaldo' RecoverPanelData: 'Recuperar directorio de datos' ContainerImagePull: 'Descargar imagen de contenedor {{ .name }}' ContainerRemoveOld: 'Eliminar el contenedor original {{ .name }}' ContainerImageCheck: 'Comprobar si la imagen se descargó correctamente' ContainerLoadInfo: 'Obtener información básica del contenedor' ContainerRecreate: 'Actualización del contenedor fallida, restaurando el contenedor original' ContainerCreate: 'Crear nuevo contenedor {{ .name }}' ContainerCreateFailed: 'Falló la creación del contenedor, eliminando el contenedor fallido' ContainerStartCheck: 'Verificar si el contenedor ha iniciado' ImageBuild: 'Construcción de imagen' ImagePull: 'Descargar imagen' ImageRepoAuthFromDB: 'Obtener información de autenticación del repositorio desde la base de datos' ImagePush: 'Subir imagen' ImageRenameTag: 'Modificar etiqueta de imagen' ImageNewTag: 'Nueva etiqueta de imagen {{ .name }}' ComposeCreate: 'Crear orquestación' BackupNginxConfig: 'Respaldar archivo de configuración OpenResty' CompressFileSuccess: 'Directorio comprimido con éxito, guardado en {{ .name }}' CompressDir: 'Directorio comprimido' DeCompressFile: 'Descomprimir archivo {{ .name }}' ErrCheckValid: 'Verificación de archivo de respaldo fallida, {{ .name }}' Rollback: 'Revertir' websiteDir: 'Directorio del sitio web' RecoverFailedStartRollBack: 'Restauración fallida, iniciando reversión' AppBackupFileIncomplete: 'El archivo de respaldo está incompleto, falta app.json o app.tar.gz' AppAttributesNotMatch: 'El tipo o nombre de la aplicación no coincide' ErrAlertSync: 'Error en la sincronización de la alerta, revise e intente de nuevo' ErrInstallExtension: 'Ya hay una tarea de instalación en curso, espere a que termine' PanelAlertTitle: 'Notificación de alerta del panel' TestAlertTitle: 'Correo de prueba - Verificar conectividad de correo' TestAlert: 'Este es un correo de prueba para verificar que la configuración de envío de correos es correcta.' LicenseExpirationAlert: 'Su Panel {{ .node }}{{ .ip }}, la licencia expirará en {{ .day }} días. Inicie sesión en el panel para ver los detalles.' CronJobFailedAlert: 'Su Panel {{ .node }}{{ .ip }}, la ejecución de la tarea programada {{ .name }} falló. Inicie sesión en el panel para ver los detalles.' ClamAlert: 'Su Panel {{ .node }}{{ .ip }}, la tarea de escaneo antivirus detectó {{ .num }} archivos infectados. Inicie sesión en el panel para ver los detalles.' WebSiteAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} sitios web expirarán en {{ .day }} días. Inicie sesión en el panel para ver los detalles.' SSLAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} certificados SSL expirarán en {{ .day }} días. Inicie sesión en el panel para ver los detalles.' DiskUsedAlert: 'Su Panel {{ .node }}{{ .ip }}, el uso del disco {{ .name }} ha alcanzado {{ .used }}. Inicie sesión en el panel para ver los detalles.' ResourceAlert: 'Su Panel {{ .node }}{{ .ip }}, la tasa de uso promedio de {{ .name }} en {{ .time }} minutos es {{ .used }}. Inicie sesión en el panel para ver los detalles.' PanelVersionAlert: 'Su Panel {{ .node }}{{ .ip }}, está disponible la última versión del panel para actualizar. Inicie sesión en el panel para ver los detalles.' PanelPwdExpirationAlert: 'Su Panel {{ .node }}{{ .ip }}, la contraseña del panel expirará en {{ .day }} días. Inicie sesión en el panel para ver los detalles.' CommonAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .msg }}. Inicie sesión en el panel para ver los detalles.' NodeExceptionAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} nodos son anómalos. Inicie sesión en el panel para ver los detalles.' LicenseExceptionAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} licencias son anómalas. Inicie sesión en el panel para ver los detalles.' SSHAndPanelLoginAlert: 'Su Panel {{ .node }}{{ .ip }}, el inicio de sesión {{ .name }} desde {{ .loginIp }} es anómalo. Inicie sesión en el panel para ver los detalles.' DeviceNotFound: 'Dispositivo {{ .name }} no encontrado' DeviceIsMounted: 'El dispositivo {{ .name }} está montado, desmóntelo primero' PartitionDiskErr: 'Error al particionar, {{ .err }}' FormatDiskErr: 'Error al formatear disco, {{ .err }}' MountDiskErr: 'Error al montar disco, {{ .err }}' XfsNotFound: 'No se detectó el sistema de archivos xfs instale xfsprogs primero' # terminal TerminalAIBlockedRiskyCommand: 'Comando de riesgo bloqueado: {{ .command }}' TerminalAIThinking: 'La IA está pensando...' TerminalAIReadyToExecute: 'Pensamiento completado, pulsa Enter para ejecutar (duración: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'La solicitud de AI ha fallado: {{ .err }}' FileAISearchEmptyDir: 'No hay archivos ni carpetas bajo esta ruta (o todos fueron filtrados).'