mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-20 08:03:55 +08:00
630 lines
36 KiB
YAML
630 lines
36 KiB
YAML
# errores básicos
|
|
ErrInvalidParams: 'Solicitud inválida: {{ .detail }}'
|
|
ErrMcpGatewayArgsParse: 'Formato de argumentos personalizados de MCP no válido'
|
|
ErrMcpGatewayArgsConflict: 'El argumento {{ .name }} está gestionado por 1Panel y no puede definirse en los argumentos personalizados'
|
|
ErrTokenParse: 'Token inválido: {{ .detail }}'
|
|
ErrInitialPassword: 'Contraseña original incorrecta'
|
|
ErrInternalServer: 'Error interno: {{ .detail }}'
|
|
ErrRecordExist: 'Registro ya existe'
|
|
ErrRecordNotFound: 'Registro no encontrado'
|
|
WafLogExport: 'Exportación de registros WAF'
|
|
MonitorLogExport: 'Exportación de registros de monitorización web'
|
|
LogExportNoData: 'Ningún registro coincide con los filtros seleccionados'
|
|
LogExportDiskSpace: 'Hay menos de 1 GiB disponible; la exportación se detuvo'
|
|
LogExportRetentionInvalid: 'La retención del historial de exportación debe ser de 1 a 30 días'
|
|
ErrStructTransform: 'Error de conversión: {{ .err }}'
|
|
ErrNotSupportType: 'Tipo no soportado: {{ .name }}'
|
|
|
|
# IA de archivos
|
|
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 }}'
|
|
FileAISearchEmptyDir: 'No hay archivos ni carpetas bajo esta ruta (o todos fueron filtrados).'
|
|
|
|
# descarga remota
|
|
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 }}'
|
|
|
|
# inicio de sesión y seguridad
|
|
ErrNotLogin: 'No has iniciado sesión: {{ .detail }}'
|
|
ErrPasswordExpired: 'Contraseña expirada: {{ .detail }}'
|
|
|
|
# solicitud y API
|
|
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 }}'
|
|
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 }}'
|
|
|
|
# salto rápido
|
|
ErrMinQuickJump: 'Agrega al menos una entrada rápida'
|
|
ErrMaxQuickJump: 'Máximo 4 entradas rápidas'
|
|
|
|
# común
|
|
ErrShutDown: 'Comando detenido manualmente'
|
|
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'
|
|
|
|
# agente
|
|
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.'
|
|
|
|
# copia de seguridad y configuración de alertas
|
|
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'
|
|
|
|
# aplicación
|
|
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'
|
|
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'
|
|
ErrAppInstallNameExist: 'El nombre de instalación de la aplicación {{ .name }} 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'
|
|
|
|
# SSH
|
|
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'
|
|
|
|
# archivo
|
|
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'
|
|
|
|
# sitio web
|
|
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'
|
|
|
|
# certificado SSL
|
|
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'
|
|
|
|
# MySQL
|
|
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'
|
|
|
|
# Redis
|
|
ErrTypeOfRedis: 'El tipo de archivo de recuperación no coincide con el método de persistencia actual, modifíquelo e intente'
|
|
|
|
# contenedor
|
|
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'
|
|
|
|
# entorno de ejecución
|
|
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'
|
|
|
|
# herramienta
|
|
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 }}'
|
|
|
|
# tarea programada
|
|
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.'
|
|
|
|
# caja de herramientas
|
|
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'
|
|
|
|
# protección contra manipulación
|
|
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:'
|
|
|
|
# WAF
|
|
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'
|
|
|
|
# tarea
|
|
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'
|
|
|
|
# tarea - ClamAV
|
|
Clamscan: 'Escanear {{ .name }}'
|
|
TaskScan: 'Escaneo'
|
|
|
|
# tarea - IA
|
|
OllamaModelPull: 'Descargar modelo Ollama {{ .name }}'
|
|
OllamaModelSize: 'Obtener tamaño del modelo Ollama {{ .name }}'
|
|
AIBenchmarkRun: "Ejecutar prueba de referencia de IA"
|
|
|
|
# tarea - instantánea
|
|
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'
|
|
|
|
# tarea - contenedor
|
|
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'
|
|
|
|
# tarea - imagen
|
|
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'
|
|
|
|
# tarea - sitio web
|
|
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'
|
|
|
|
# alerta
|
|
ErrAlertMethodNotSupported: 'Esta versión no admite este método de alerta'
|
|
ErrAlertSync: 'Error en la sincronización de la alerta, revise e intente de nuevo'
|
|
|
|
# tarea - entorno de ejecución
|
|
ErrInstallExtension: 'Ya hay una tarea de instalación en curso, espere a que termine'
|
|
|
|
# plantilla de correo de alerta
|
|
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.'
|
|
|
|
# disco
|
|
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 }}'
|
|
|
|
# puerta de enlace de IA
|
|
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 eliminado (ID: {{ .id }})'
|