{
"username": "Nombre de Usuario",
"password": "Contraseña",
"login": "Acceder",
"confirm": "Confirmar",
"cancel": "Cancelar",
"close": "Cerrar",
"save": "Guardar",
"logout": "Cerrar Sesión",
"create": "Crear",
"add": "Añadir",
"remove": "Quitar",
"update": "Actualizar",
"copy": "Copiar",
"copied": "Copiado",
"more": "más",
"download": "Descargar",
"regenerate": "Regenerar",
"jsonEditor": "Editor JSON",
"downloadImage": "Descargar imagen",
"sort": "Ordenar",
"remark": "Notas",
"enable": "Habilitar",
"protocol": "Protocolo",
"search": "Buscar",
"filter": "Filtrar",
"all": "Todos",
"from": "Desde",
"to": "Hasta",
"done": "Hecho",
"loading": "Cargando...",
"refresh": "Actualizar",
"clear": "Borrar",
"second": "Segundo",
"minute": "Minuto",
"hour": "Hora",
"day": "Día",
"check": "Verificar",
"indefinite": "Indefinido",
"unlimited": "Ilimitado",
"none": "Ninguno",
"qrCode": "Código QR",
"info": "Más Información",
"edit": "Editar",
"delete": "Eliminar",
"reset": "Restablecer",
"noData": "Sin datos",
"copySuccess": "Copiado exitosamente",
"sure": "Seguro",
"encryption": "Encriptación",
"transmission": "Transmisión",
"host": "Host",
"path": "Ruta",
"camouflage": "Ofuscación",
"status": "Estado",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"depleted": "Agotado",
"depletingSoon": "Agotándose",
"offline": "Sin conexión",
"online": "En línea",
"domainName": "Nombre de dominio",
"monitor": "Listening IP",
"certificate": "Certificado Digital",
"fail": "Falló",
"comment": "Comentario",
"success": "Éxito",
"lastOnline": "Última conexión",
"lastSubFetch": "Última descarga de suscripción",
"install": "Instalar",
"clients": "Clientes",
"usage": "Uso",
"remained": "Restante",
"security": "Seguridad",
"somethingWentWrong": "Algo salió mal",
"subscription": {
"title": "Información de suscripción",
"subId": "ID de suscripción",
"status": "Estado",
"downloaded": "Descargado",
"uploaded": "Subido",
"expiry": "Caducidad",
"totalQuota": "Cuota total",
"active": "Activo",
"inactive": "Inactivo",
"unlimited": "Ilimitado",
"noExpiry": "Sin caducidad",
"copyAllConfigs": "Copiar Todas las Configuraciones",
"copyAllConfigsCopied": "Todas las configuraciones copiadas",
"email": "Email",
"individualLinks": "Enlaces individuales"
},
"menu": {
"theme": "Tema",
"dashboard": "Estado del Sistema",
"inbounds": "Entradas",
"clients": "Clientes",
"nodes": "Nodos",
"settings": "Ajustes del panel",
"donate": "Donar",
"hosts": "Hosts",
"docs": "Documentación",
"openMenu": "Abrir menú",
"pinSidebar": "Fijar barra lateral",
"unpinSidebar": "Desfijar barra lateral"
},
"pages": {
"login": {
"hello": "Hola",
"title": "Bienvenido",
"loginAgain": "El límite de tiempo de inicio de sesión ha expirado. Por favor, inicia sesión nuevamente.",
"toasts": {
"invalidFormData": "El formato de los datos de entrada es inválido.",
"emptyUsername": "Por favor ingresa el nombre de usuario.",
"emptyPassword": "Por favor ingresa la contraseña.",
"wrongUsernameOrPassword": "Nombre de usuario, contraseña o código de dos factores incorrecto.",
"successLogin": "Has iniciado sesión en tu cuenta correctamente."
}
},
"index": {
"cpu": "CPU",
"swap": "Swap",
"storage": "Almacenamiento",
"memory": "Memoria",
"updatePanel": "Actualizar panel",
"panelUpdateDesc": "Esto actualizará L-UI a la última versión y reiniciará el servicio del panel.",
"currentPanelVersion": "Versión actual del panel",
"latestPanelVersion": "Última versión del panel",
"panelUpToDate": "El panel está actualizado",
"devChannel": "Canal de desarrollo",
"devChannelWarning": "Las compilaciones de desarrollo siguen cada commit en main y no son versiones estables; no hay reversión automática.",
"currentCommit": "Commit actual",
"latestCommit": "Último commit",
"updateChannelChanged": "Canal de actualización cambiado",
"connectionCount": "Número de Conexiones",
"ipAddresses": "Direcciones IP",
"toggleIpVisibility": "Alternar visibilidad de la IP",
"overallSpeed": "Velocidad general",
"upload": "Subida",
"download": "Descargar",
"sent": "Enviado",
"received": "Recibido",
"panelUpdateDialog": "¿Deseas actualizar el panel?",
"panelUpdateDialogDesc": "Esto actualizará L-UI a la versión #version# y reiniciará el servicio del panel.",
"panelUpdateStartedPopover": "Actualización del panel iniciada",
"panelUpdateFailedTitle": "Error al actualizar el panel",
"panelUpdateFailedDesc": "La actualización no se completó correctamente. Revisa los registros del servidor o ejecuta 'x-ui update' desde la línea de comandos.",
"panelUpdateUnknownTitle": "No se pudo confirmar si la actualización terminó",
"panelUpdateUnknownDesc": "El panel no informó un resultado a tiempo. Recarga la página para comprobar la versión actual, o revisa los registros del servidor.",
"dontRefresh": "La instalación está en progreso, por favor no actualices esta página.",
"config": "Configuración",
"backupTitle": "Copia & Restauración",
"exportDatabase": "Copia de seguridad",
"exportDatabaseDesc": "Haz clic para descargar un archivo .db que contiene una copia de seguridad de tu base de datos actual en tu dispositivo. El mismo archivo también puede restaurarse en un panel que funcione con PostgreSQL.",
"importDatabase": "Restaurar",
"importDatabaseDesc": "Haz clic para seleccionar y cargar una copia de seguridad .db o un volcado de migración (.dump) desde tu dispositivo para restaurar tu base de datos.",
"importDatabaseSuccess": "La base de datos se ha importado correctamente",
"importDatabaseError": "Ocurrió un error al importar la base de datos",
"readDatabaseError": "Ocurrió un error al leer la base de datos",
"getDatabaseError": "Ocurrió un error al obtener la base de datos",
"getConfigError": "Ocurrió un error al obtener el archivo de configuración",
"backupPostgresNote": "Este panel funciona con PostgreSQL. «Copia de seguridad» descarga un archivo pg_dump (.dump) y «Restaurar» lo vuelve a cargar con pg_restore. «Restaurar» también acepta una base de datos SQLite (.db) o un volcado de migración de SQLite e importa sus datos a PostgreSQL. El servidor necesita tener instaladas las herramientas cliente de PostgreSQL (pg_dump y pg_restore).",
"exportDatabasePgDesc": "Haz clic para descargar un volcado de PostgreSQL (.dump) de tu base de datos actual en tu dispositivo.",
"importDatabasePgDesc": "Haz clic para seleccionar y subir una copia de seguridad de PostgreSQL (.dump), una base de datos SQLite (.db) o un volcado de migración de SQLite para restaurar tu base de datos. Esto reemplaza todos los datos actuales.",
"migrationDownload": "Descargar migración",
"migrationDownloadPgDesc": "Haz clic para descargar una base de datos SQLite .db creada a partir de tus datos de PostgreSQL, lista para ejecutar este panel en SQLite.",
"free": "libre",
"openSockets": "sockets abiertos",
"throughputSub": "Total de la interfaz",
"healthWarm": "{list} — algo elevado",
"healthCritical": "{list} — crítico",
"panel": "Panel",
"threads": "Hilos",
"uptime": "Tiempo activo",
"importKeepHostSettings": "Mantener la configuración de esta máquina",
"importKeepHostSettingsDesc": "Conserva las direcciones de escucha, los puertos, la ruta base, los certificados y la identidad de nodo de este panel en lugar de tomarlos del archivo subido."
},
"inbounds": {
"totalDownUp": "Subidas/Descargas Totales",
"totalUsage": "Uso Total",
"inboundCount": "Número de Entradas",
"operate": "Menú",
"enable": "Habilitar",
"remark": "Notas",
"node": "Nodo",
"deployTo": "Desplegar en",
"localPanel": "Panel local",
"fallbacks": {
"title": "Fallbacks",
"empty": "Aún no hay fallbacks",
"add": "Añadir fallback",
"pickInbound": "Selecciona un inbound",
"matchAny": "cualquiera",
"destPlaceholder": "automático (listen:puerto del hijo)",
"needsTls": "Los fallbacks estarán disponibles al seleccionar TLS o Reality en la pestaña de Seguridad (solo VLESS/Trojan sobre RAW)."
},
"protocol": "Protocolo",
"port": "Puerto",
"portMap": "Asignación de puertos",
"traffic": "Tráfico",
"speed": "Velocidad",
"expireDate": "Fecha de Expiración",
"createdAt": "Creado",
"updatedAt": "Actualizado",
"resetTraffic": "Restablecer tráfico",
"addInbound": "Agregar Entrada",
"generalActions": "Acciones Generales",
"modifyInbound": "Modificar Entrada",
"deleteConfirmTitle": "¿Eliminar el inbound \"{remark}\"?",
"deleteConfirmContent": "Esto elimina el inbound y todos sus clientes. No se puede deshacer.",
"resetConfirmTitle": "¿Restablecer el tráfico de \"{remark}\"?",
"resetConfirmContent": "Restablece los contadores de subida/bajada a 0 para este inbound.",
"selectedCount": "{count} seleccionado(s)",
"selectAll": "Seleccionar todo",
"bulkDeleteConfirmTitle": "¿Eliminar {count} inbounds?",
"bulkDeleteConfirmContent": "Esto elimina los inbounds seleccionados y todos sus clientes. No se puede deshacer.",
"cloneConfirmTitle": "¿Clonar el inbound \"{remark}\"?",
"cloneConfirmContent": "Crea una copia con un puerto nuevo y una lista de clientes vacía.",
"delAllClients": "Eliminar todos los clientes",
"delAllClientsConfirmTitle": "¿Eliminar los {count} clientes de \"{remark}\"?",
"delAllClientsConfirmContent": "Elimina todos los clientes de este inbound y sus registros de tráfico. El inbound se mantiene. Esto no se puede deshacer.",
"attachClients": "Asociar clientes a…",
"attachClientsTitle": "Asociar clientes desde «{remark}»",
"attachClientsDesc": "Asocia los mismos {count} cliente(s) (mismo UUID/contraseña y tráfico compartido) a las entradas seleccionadas. Permanecen también en esta entrada.",
"attachClientsTargets": "Entradas objetivo",
"attachClientsNoTargets": "No hay otras entradas compatibles disponibles para asociar.",
"attachClientsResult": "Asociados {attached}, omitidos {skipped}.",
"attachClientsResultMixed": "Asociados {attached}, omitidos {skipped}, errores {errors}.",
"attachClientsSelectLabel": "Clientes para asociar",
"attachClientsSearchPlaceholder": "Buscar email o comentario",
"attachClientsStatusDisabled": "Deshabilitado",
"attachClientsSelectedCount": "{selected} de {total} seleccionado(s)",
"attachExistingClients": "Asociar clientes existentes…",
"attachExistingTitle": "Asociar clientes existentes a «{remark}»",
"attachExistingDesc": "Asocia los clientes existentes ({count} disponibles) a esta entrada: mismo UUID/contraseña y tráfico compartido. Los clientes que ya están en ella se omiten.",
"attachExistingNoClients": "Aún no hay clientes. Cree clientes primero y luego asócielos aquí.",
"attachExistingStatusAttached": "Ya asociado",
"detachClients": "Desasociar clientes",
"detachClientsTitle": "Desasociar clientes de «{remark}»",
"detachClientsDesc": "Quita el cliente o clientes seleccionados solo de esta entrada. Los registros se conservan (usa Delete para eliminar por completo). El origen tiene {count} cliente(s) en total.",
"detachClientsResult": "Desasociados {detached}, omitidos {skipped}.",
"detachClientsResultMixed": "Desasociados {detached}, omitidos {skipped}, errores {errors}.",
"detachClientsSelectLabel": "Clientes para desasociar",
"exportLinksTitle": "Exportar enlaces del inbound",
"exportSubsTitle": "Exportar enlaces de suscripción",
"exportAllLinksTitle": "Exportar todos los enlaces de inbound",
"exportAllSubsTitle": "Exportar todos los enlaces de suscripción",
"exportAllLinksFileName": "Todas-las-entradas",
"exportAllSubsFileName": "Todas-las-entradas-Subs",
"inboundJsonTitle": "JSON de entrada",
"resetTrafficContent": "¿Confirmar restablecimiento de tráfico?",
"copyLink": "Copiar Enlace",
"address": "Dirección",
"network": "Red",
"destinationPort": "Puerto de Destino",
"targetAddress": "Dirección de Destino",
"monitorDesc": "Dejar en blanco por defecto",
"meansNoLimit": "= Ilimitado. (unidad: GB)",
"totalFlow": "Flujo Total",
"leaveBlankToNeverExpire": "Dejar en Blanco para Nunca Expirar",
"certificatePath": "Ruta Cert",
"certificateContent": "Datos Cert",
"publicKey": "Clave Pública",
"privatekey": "Clave Privada",
"client": "Cliente",
"export": "Exportar Enlaces",
"clone": "Clonar",
"resetAllTraffic": "Restablecer Tráfico de Todas las Entradas",
"resetAllTrafficTitle": "Restablecer tráfico de todas las entradas",
"email": "Email",
"IPLimit": "Límite de IP",
"IPLimitlog": "Registro de IP",
"IPLimitlogclear": "Limpiar el Registro",
"setDefaultCert": "Establecer certificado desde el panel",
"setDefaultCertEmpty": "No hay certificado configurado para el panel. Configura uno en Ajustes primero.",
"streamTab": "Transmisión",
"securityTab": "Seguridad",
"sniffingTab": "Inspección",
"forwardingTab": "Forwarding",
"forwarding": {
"mode": "Forwarding",
"direct": "Direct",
"forward": "Forward (entry → exit)",
"landing": "Landing",
"managed": "Managed landing",
"manual": "Manual endpoint",
"target": "Landing inbound",
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
"targetDisabled": "disabled",
"address": "Landing address",
"port": "Exit port",
"protocol": "Entry → exit protocol",
"username": "SOCKS5 username",
"password": "Landing password",
"importLink": "Import from link",
"importPlaceholder": "socks5://user:pass@host:port",
"importApply": "Import",
"importFailed": "Could not parse that link",
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
},
"sniffingMetadataOnly": "Solo metadatos",
"sniffingRouteOnly": "Solo enrutamiento",
"sniffingIpsExcluded": "IPs excluidas",
"sniffingDomainsExcluded": "Dominios excluidos",
"decryption": "Descifrado",
"encryption": "Cifrado",
"vlessAuthX25519": "X25519 (native)",
"vlessAuthMlkem768": "ML-KEM-768 (native)",
"vlessAuthX25519Xorpub": "X25519 (xorpub)",
"vlessAuthX25519Random": "X25519 (random)",
"vlessAuthMlkem768Xorpub": "ML-KEM-768 (xorpub)",
"vlessAuthMlkem768Random": "ML-KEM-768 (random)",
"vlessAuthCustom": "Personalizado",
"vlessAuthSelected": "Seleccionado: {auth}",
"vlessAuthGenerate": "Generar claves",
"vlessAuthGenerateButton": "Generar",
"advanced": {
"title": "Secciones JSON del inbound",
"subtitle": "JSON completo del inbound y editores específicos para settings, sniffing y streamSettings.",
"all": "Todo",
"allHelp": "Objeto inbound completo con todos los campos en un solo editor.",
"settings": "Ajustes",
"settingsHelp": "Envoltorio del bloque settings de Xray:",
"sniffing": "Sniffing",
"sniffingHelp": "Envoltorio del bloque sniffing de Xray:",
"stream": "Stream",
"streamHelp": "Envoltorio del bloque stream de Xray:"
},
"subSortIndex": "Orden sub",
"inboundInfo": "Información de entrada",
"exportInbound": "Exportación entrante",
"import": "Importar",
"importInbound": "Importar un entrante",
"periodicTrafficResetTitle": "Reset de Tráfico",
"periodicTrafficResetDay": "Día de reinicio mensual",
"periodicTrafficReset": {
"never": "Nunca",
"daily": "Diariamente",
"weekly": "Semanalmente",
"monthly": "Mensualmente",
"hourly": "Cada hora"
},
"toasts": {
"obtain": "Recibir",
"updateSuccess": "La actualización fue exitosa",
"logCleanSuccess": "El registro ha sido limpiado",
"inboundUpdateSuccess": "Entrada actualizada correctamente",
"inboundCreateSuccess": "Entrada creada correctamente",
"bulkDeleted": "{count} inbounds eliminados",
"bulkDeletedMixed": "{ok} eliminados, {failed} fallidos",
"clonedMany": "{count} inbounds clonados",
"clonedMixed": "{ok} clonados, {failed} fallidos",
"inboundDeleteSuccess": "Entrada eliminada correctamente",
"inboundClientAddSuccess": "Cliente(s) de entrada añadido(s)",
"inboundClientDeleteSuccess": "Cliente de entrada eliminado",
"inboundClientUpdateSuccess": "Cliente de entrada actualizado",
"savedNodeOfflineWillSync": "Guardado localmente. Un nodo de respaldo está desconectado o deshabilitado: el cambio se sincronizará cuando vuelva a conectarse.",
"resetAllClientTrafficSuccess": "Todo el tráfico del cliente ha sido reiniciado",
"resetAllTrafficSuccess": "Todo el tráfico ha sido reiniciado",
"resetInboundClientTrafficSuccess": "El tráfico ha sido reiniciado",
"resetInboundTrafficSuccess": "El tráfico de entrada ha sido reiniciado",
"trafficGetError": "Error al obtener los tráficos",
"getNewX25519CertError": "Error al obtener el certificado X25519.",
"getNewmldsa65Error": "Error al obtener el certificado mldsa65.",
"getNewVlessEncError": "Error al obtener el certificado VlessEnc.",
"scanRealityTargetError": "No se pudo escanear el objetivo REALITY.",
"scanRealityTargetFeasible": "El objetivo es apto: se rellenaron el objetivo y el SNI.",
"scanRealityTargetNotFeasible": "El objetivo es accesible pero no apto para REALITY.",
"scanRealityTargetPrivate": "El destino funciona, pero está en una red privada/local.",
"invalidClientField": "Cliente {client}: campo {field} — {reason}",
"invalidField": "{field} — {reason}",
"moreIssues": "{message} (+{count} más)"
},
"form": {
"moveUp": "Subir",
"moveDown": "Bajar",
"addAll": "Añadir todo",
"addAllFallbackTooltip": "Añade una fila de fallback para cada entrada elegible aún no conectada",
"peers": "Peers",
"addPeer": "Añadir peer",
"keepAlive": "Keep-alive",
"autoSystemRoutesTooltip": "Solo Windows. Los CIDR se añaden automáticamente a la tabla de enrutamiento del sistema para que el tráfico coincidente pase por TUN.",
"autoOutboundsInterface": "Interfaz de salidas automática",
"autoOutboundsInterfaceTooltip": "Interfaz física para tráfico de salida. Usa 'auto' para detectar; se habilita automáticamente cuando se establece Auto system routes.",
"rewriteAddress": "Reescribir dirección",
"rewritePort": "Reescribir puerto",
"allowedNetwork": "Red permitida",
"followRedirect": "Seguir redirección",
"accounts": "Cuentas",
"allowTransparent": "Permitir transparente",
"encryptionMethod": "Método de cifrado",
"fakeTlsDomain": "Dominio FakeTLS (SNI)",
"mtprotoSecret": "Secreto",
"mtgDomainFrontingIp": "IP de domain fronting",
"mtgDomainFrontingPort": "Puerto de domain fronting",
"mtgDomainFrontingProxyProtocol": "Protocolo PROXY de domain fronting",
"mtgDomainFrontingHint": "Adónde envía mtg el tráfico que no es de Telegram, p. ej. tu sitio web falso de NGINX. Deja la IP vacía para usar el dominio FakeTLS mediante DNS; el puerto predeterminado es 443.",
"mtgProxyProtocolListener": "Aceptar protocolo PROXY (escucha)",
"mtgPreferIp": "Preferencia de IP",
"mtgDebug": "Registro de depuración",
"mtgRouteThroughXray": "Enrutar a través de Xray",
"mtgRouteThroughXrayHint": "Envía el tráfico de Telegram de este proxy a través de Xray para que siga tus reglas de enrutamiento. El sidecar mtg sale por un puente SOCKS local con la etiqueta de esta entrada; usa esa etiqueta en la pestaña Enrutamiento para reglas avanzadas.",
"mtgRouteOutbound": "Salida",
"mtgRouteOutboundHint": "Opcional. Fuerza el tráfico de Telegram a salir por esta salida (o balanceador). Déjalo vacío para que decidan tus reglas de enrutamiento.",
"mtgRouteOutboundPlaceholder": "Usar reglas de enrutamiento",
"mtprotoFakeTlsDomainHint": "Dominio FakeTLS predeterminado para generar el secreto de un nuevo cliente. Cada cliente puede usar su propio dominio.",
"mtgThrottleMaxConnections": "Conexiones máximas",
"mtgThrottleMaxConnectionsHint": "Limita las conexiones simultáneas de todos los usuarios con reparto equitativo. 0 desactiva el límite.",
"mtgAdTagInvalid": "El ad-tag debe tener exactamente 32 caracteres hexadecimales.",
"mtgPublicIpv4": "IPv4 pública",
"mtgPublicIpv6": "IPv6 pública",
"mtgPublicIpHint": "La dirección pública accesible de este servidor, usada por el proxy intermedio del ad-tag. Déjalo en blanco para que mtg la detecte automáticamente.",
"visionTestseed": "Vision testseed",
"version": "Versión",
"udpIdleTimeout": "UDP idle timeout (s)",
"masquerade": "Masquerade",
"type": "Tipo",
"upstreamUrl": "URL Upstream",
"rewriteHost": "Reescribir Host",
"skipTlsVerify": "Saltar verificación TLS",
"directory": "Directorio",
"statusCode": "Código de estado",
"body": "Body",
"headers": "Cabeceras",
"proxyProtocol": "Proxy Protocol",
"requestVersion": "Versión de petición",
"requestMethod": "Método de petición",
"requestPath": "Ruta de petición",
"requestHeaders": "Cabeceras de petición",
"responseVersion": "Versión de respuesta",
"responseStatus": "Estado de respuesta",
"responseReason": "Razón de respuesta",
"responseHeaders": "Cabeceras de respuesta",
"heartbeatPeriod": "Periodo de heartbeat",
"serviceName": "Nombre de servicio",
"authority": "Authority",
"multiMode": "Multi Mode",
"maxBufferedUpload": "Máx. subida en búfer",
"maxUploadSize": "Tamaño máx. de subida (Byte)",
"streamUpServer": "Stream-Up Server",
"serverMaxHeaderBytes": "Máx. bytes cabecera servidor",
"paddingBytes": "Bytes de Padding",
"uplinkHttpMethod": "Método HTTP Uplink",
"paddingObfsMode": "Modo obfs de Padding",
"paddingKey": "Padding Key",
"paddingHeader": "Padding Header",
"paddingPlacement": "Ubicación de Padding",
"paddingMethod": "Método de Padding",
"sessionPlacement": "Session Placement",
"sessionKey": "Session Key",
"sessionIDTable": "Tabla de Session ID",
"sessionIDTableHint": "Conjunto de caracteres para generar los session ID: un nombre predefinido (ALPHABET, Base62, hex, number, …) o una cadena ASCII literal. Déjalo vacío para el valor por defecto de xray-core.",
"sessionIDLength": "Longitud de Session ID",
"sessionIDLengthHint": "Longitud o rango (p. ej. 8-16) del session ID generado. Solo se usa cuando hay una Tabla de Session ID definida; el mínimo debe ser mayor que 0.",
"sequencePlacement": "Sequence Placement",
"sequenceKey": "Sequence Key",
"uplinkDataPlacement": "Uplink Data Placement",
"uplinkDataKey": "Uplink Data Key",
"noSseHeader": "Sin cabecera SSE",
"ttiMs": "TTI (ms)",
"uplinkMbps": "Subida (MB/s)",
"downlinkMbps": "Bajada (MB/s)",
"cwndMultiplier": "Multiplicador CWND",
"maxSendingWindow": "Máx. ventana de envío",
"externalProxy": "Proxy externo",
"forceTls": "Forzar TLS",
"fingerprint": "Fingerprint",
"defaultOption": "Por defecto",
"routeMark": "Route Mark",
"tcpKeepAliveInterval": "TCP Keep Alive Interval",
"tcpKeepAliveIdle": "TCP Keep Alive Idle",
"tcpMaxSeg": "TCP Max Seg",
"tcpUserTimeout": "TCP User Timeout",
"tcpWindowClamp": "TCP Window Clamp",
"tcpWindowClampHint": "Deja 0 para usar el valor predeterminado del sistema. Los valores distintos de cero limitan la ventana de recepción TCP anunciada; valores como 600 (del ejemplo de la documentación de Xray) pueden hundir el rendimiento en enlaces de alta latencia.",
"tcpFastOpen": "TCP Fast Open",
"multipathTcp": "Multipath TCP",
"penetrate": "Penetrate",
"v6Only": "Solo V6",
"tcpCongestion": "TCP Congestion",
"dialerProxy": "Dialer Proxy",
"trustedXForwardedFor": "X-Forwarded-For de confianza",
"trustedXForwardedForHint": "Confía en esta cabecera de solicitud para obtener la IP real del cliente (p. ej. CF-Connecting-IP detrás del CDN de Cloudflare). Solo válido en los transportes WebSocket, HTTPUpgrade, XHTTP y gRPC. Déjalo vacío para ignorar las cabeceras reenviadas.",
"proxyProtocolHint": "Acepta la cabecera PROXY protocol para obtener la IP real del cliente desde un túnel/relé L4 superior (HAProxy, gost, nginx-stream, Xray dokodemo-door) o Cloudflare Spectrum. El nodo superior DEBE enviar PROXY protocol. Funciona en TCP, WebSocket, HTTPUpgrade y gRPC; no en mKCP.",
"realClientIp": "IP real del cliente",
"realClientIpHint": "Captura la IP real del visitante cuando el tráfico llega a este inbound a través de un CDN o relé, en lugar de registrar la dirección del intermediario. Elige un preajuste para rellenar los campos sockopt correspondientes más abajo. Estos campos nunca se envían a los clientes en las suscripciones.",
"realClientIpPresetOff": "Desactivado / directo",
"realClientIpPresetCloudflare": "Cloudflare CDN",
"realClientIpPresetProxyProtocol": "Relé L4 / Spectrum (PROXY)",
"realClientIpTrustedHeaderTransportWarn": "Trusted X-Forwarded-For solo es válido en WebSocket, HTTPUpgrade y XHTTP. En el transporte actual esta cabecera se ignora.",
"realClientIpProxyProtocolTransportWarn": "PROXY protocol no es compatible con este transporte (mKCP). Usa TCP/RAW, WebSocket, HTTPUpgrade, gRPC o XHTTP.",
"addressPortStrategy": "Estrategia dirección+puerto",
"tryDelayMs": "Retraso de intento (ms)",
"prioritizeIPv6": "Priorizar IPv6",
"interleave": "Interleave",
"maxConcurrentTry": "Máx. intentos simultáneos",
"customSockopt": "Sockopt personalizado",
"addCustomOption": "Añadir opción personalizada",
"serverNameIndication": "SNI",
"cipherSuites": "Cipher Suites",
"autoOption": "Auto",
"minMaxVersion": "Versión mín/máx",
"rejectUnknownSni": "Rechazar SNI desconocido",
"disableSystemRoot": "Deshabilitar System Root",
"sessionResumption": "Reanudación de sesión",
"oneTimeLoading": "Carga única",
"usageOption": "Opción de uso",
"buildChain": "Construir cadena",
"echKey": "ECH key",
"echConfig": "Config ECH",
"pinnedPeerCertSha256": "SHA-256 del cert. del par fijado",
"pinnedPeerCertSha256Tip": "Hashes SHA-256 del certificado del par como cadena hexadecimal (p. ej. e8e2d3…), separados por comas. Solo en el panel — no se escribe en la config xray del servidor, pero se incluye en los enlaces para que los clientes puedan fijar el certificado.",
"pinnedPeerCertSha256Placeholder": "hash(es) hexadecimal, separados por comas",
"getNewEchCert": "Obtener nuevo cert ECH",
"echSockopt": "ECH Sockopt",
"echSockoptTip": "Opciones de socket para la conexión que Xray usa al obtener la lista de configuración ECH (por ejemplo, enrutar la consulta a través de una salida dialerProxy). Déjalo deshabilitado para usar los valores por defecto.",
"curvePreferences": "Preferencias de curvas",
"curvePreferencesTip": "Restringe las curvas de intercambio de claves TLS que ofrece el servidor, por orden de preferencia (por ejemplo, X25519MLKEM768, X25519). Déjalo vacío para usar los valores por defecto de Xray-core.",
"masterKeyLog": "Registro de clave maestra",
"masterKeyLogTip": "Ruta donde escribir las claves maestras TLS (formato SSLKEYLOGFILE) para depurar con Wireshark. Déjalo vacío en producción — permite que cualquiera con el archivo descifre el tráfico.",
"verifyPeerCertByName": "Verificar cert. del par por nombre",
"verifyPeerCertByNameTip": "Indica a los clientes que verifiquen el certificado del servidor con este nombre en lugar del SNI. Nombres separados por comas. Solo en el panel — se incluye en los enlaces (vcn). El reemplazo moderno de allowInsecure, que Xray eliminó después del 2026-06-01.",
"pinFromCert": "Rellenar desde el certificado de este inbound",
"pinFromRemote": "Obtener el hash haciendo ping al SNI (xray tls ping)",
"pinFromRemoteNoSni": "Establece primero el SNI (serverName) para hacer ping al certificado remoto.",
"pinFromRemoteFailed": "No se pudo obtener el hash del certificado remoto.",
"limitFallback": "Limitar fallback",
"limitFallbackUpload": "Limitar subida del fallback",
"limitFallbackDownload": "Limitar bajada del fallback",
"afterBytes": "Tras bytes",
"afterBytesTip": "Deja que el fallback funcione a máxima velocidad durante esta cantidad de bytes y luego empieza a limitar. 0 = limitar desde el primer byte.",
"bytesPerSec": "Bytes por seg.",
"bytesPerSecTip": "Límite de velocidad (bytes/seg.) aplicado al tráfico del fallback tras el umbral, para que las sondas no puedan usar tu servidor como ancho de banda gratuito hacia el destino. 0 = sin límite (deshabilita esta dirección).",
"burstBytesPerSec": "Ráfaga de bytes por seg.",
"burstBytesPerSecTip": "Margen para ráfagas breves por encima de la tasa constante (tamaño del token-bucket). Si es menor que Bytes por seg., se eleva para igualarlo.",
"show": "Mostrar",
"xver": "Xver",
"target": "Objetivo",
"maxTimeDiff": "Máx. diferencia de tiempo (ms)",
"minClientVer": "Mín. versión cliente",
"maxClientVer": "Máx. versión cliente",
"minClientVerHint": "Vacío no significa sin restricción: Xray-core aplica entonces el mínimo integrado de la build del núcleo en uso (26.3.27 en las versiones actuales) y rechaza a los clientes que reportan una versión anterior, incluidos núcleos de terceros como Mihomo y sing-box. Con 1.0.0 se aceptan, a costa de admitir huellas TLS obsoletas.",
"maxClientVerHint": "Vacío significa sin límite superior. Si se establece, no debe ser inferior al mínimo efectivo — la versión mínima del cliente o, si ese campo está vacío, el mínimo integrado de Xray-core — o todos los clientes serán rechazados.",
"clientVerInvalid": "La versión del cliente debe tener hasta tres números separados por puntos, cada uno 0-255 (p. ej. 26.3.27)",
"maxClientVerBelowMin": "La versión máxima del cliente no debe ser inferior a la versión mínima",
"shortIds": "Short IDs",
"realityTargetHint": "Obligatorio. Debe incluir un puerto (p. ej. example.com:443). Sin puerto, Xray-core no arranca.",
"realityTargetRequired": "El destino REALITY es obligatorio",
"realityTargetNeedsPort": "El destino REALITY debe incluir un puerto (p. ej. example.com:443)",
"realityTargetInvalidPort": "El destino REALITY tiene un puerto no válido",
"scan": "Escanear",
"findTargets": "Buscar objetivos",
"scanModalTitle": "Escáner de objetivos REALITY",
"scanModalDesc": "Valida un dominio o escanea un rango IP / CIDR para descubrir nuevos objetivos REALITY a partir de sus certificados. Deja el campo vacío para probar los candidatos comunes.",
"scanDiscoverPlaceholder": "IP, CIDR o dominio — déjalo vacío para candidatos comunes",
"scanStatus": "Estado",
"scanFeasible": "Apto",
"scanNotFeasible": "No apto",
"scanCurve": "Intercambio de claves",
"scanCert": "Certificado",
"scanCertInvalid": "No confiable",
"scanCertExpiry": "El certificado caduca",
"scanSniUsed": "SNI utilizado",
"scanPrivateNote": "Comprobado en una red privada/local: esta dirección no es accesible desde internet.",
"scanPrivateConfirmTitle": "Destino en una red local",
"scanPrivateConfirmContent": "\"{target}\" apunta a una dirección privada o de loopback. La comprobación omitirá la protección SSRF del panel solo para esta prueba. ¿Continuar?",
"scanLatency": "Latencia",
"scanUse": "Usar",
"scanRescan": "Reescanear",
"spiderX": "SpiderX",
"spiderXHint": "Semilla por cliente: el panel deriva de ella una ruta spx única para cada cliente; regenera para rotar las rutas de todos",
"getNewCert": "Obtener nuevo cert",
"mldsa65Seed": "mldsa65 Seed",
"mldsa65Verify": "mldsa65 Verify",
"getNewSeed": "Obtener nuevo Seed",
"listenHelp": "También puedes introducir una ruta de socket Unix (p. ej. /run/xray/in.sock), o un nombre de socket abstracto con el prefijo @ (p. ej. @xray/in.sock), para escuchar en un socket en lugar de un puerto TCP; en ese caso, establece el Puerto en 0.",
"shareAddrStrategy": "Estrategia de dirección para compartir",
"shareAddrStrategyHelp": "Controla qué dirección se escribe en los enlaces compartidos exportados, códigos QR y la salida de suscripción.",
"shareAddr": "Dirección compartida personalizada",
"shareAddrHelp": "Solo se usa cuando la estrategia de dirección para compartir es Personalizada. Introduce un host o IP sin esquema ni puerto.",
"subSortIndex": "Orden en la suscripción",
"subSortIndexHelp": "Posición de los enlaces de esta entrada en la salida de la suscripción (página de suscripción y apps cliente). Los valores más bajos van primero; con valores iguales se mantiene el orden de creación. No afecta a la lista de entradas del panel.",
"disableFlow": "Desactivar el flujo XTLS",
"disableFlowHelp": "Excluye este inbound de la inyección automática de xtls-rprx-vision, incluso cuando su transporte admite flow (p. ej. un inbound XHTTP tunelizado con cifrado VLESS). Los clientes mantienen Vision en tus demás inbounds compatibles de la misma suscripción. Solo VLESS.",
"shareAddrStrategyOptions": {
"node": "Dirección del nodo",
"listen": "Dirección de escucha del inbound",
"custom": "Personalizada"
}
},
"info": {
"mode": "Modo",
"grpcServiceName": "grpc serviceName",
"grpcMultiMode": "grpc multiMode",
"interfaceName": "Nombre de interfaz",
"mtu": "MTU",
"gateway": "Gateway",
"dns": "DNS",
"outboundsInterface": "Interfaz de salidas",
"autoSystemRoutes": "Rutas del sistema automáticas",
"followRedirect": "FollowRedirect",
"auth": "Auth",
"noKernelTun": "TUN sin kernel",
"keepAlive": "Keep alive",
"peerNumber": "Peer {n}",
"peerNumberConfig": "Config Peer {n}"
},
"sniffingDestOverride": "Anulación de destino"
},
"clients": {
"tabBasics": "Básico",
"tabCredentials": "Credenciales",
"tabLinks": "Enlaces",
"wireguardConfig": "Configuración de WireGuard",
"config": "Configuración",
"linksHint": "Añade enlaces de terceros y URLs de suscripción remotas para incluirlos en la suscripción de este cliente.",
"addExternalLink": "Añadir enlace externo",
"addExternalSubscription": "Añadir suscripción externa",
"noExternalLinks": "Aún no hay enlaces externos.",
"noExternalSubscriptions": "Aún no hay suscripciones externas.",
"namePrefix": "Prefijo de nombre",
"lastFetchAt": "Última obtención",
"lastFetchError": "Error de obtención",
"neverFetched": "Aún no obtenido",
"submitEdit": "Guardar cambios",
"clientCount": "Número de clientes",
"bulk": "Añadir en lote",
"selectAll": "Seleccionar todo",
"clearAll": "Limpiar todo",
"method": "Método",
"first": "Primero",
"last": "Último",
"ipLog": "Registro de IP",
"prefix": "Prefijo",
"postfix": "Sufijo",
"delayedStart": "Iniciar tras el primer uso",
"expireDays": "Duración (días)",
"renew": "Renovación automática",
"renewDesc": "Renovación automática tras la expiración. (0 = desactivado) (unidad: día)",
"renewDays": "Renovación automática (días)",
"searchPlaceholder": "Buscar email, comentario, sub ID, UUID, contraseña, auth, Telegram ID…",
"filterTitle": "Filtrar clientes",
"clearAllFilters": "Limpiar todo",
"filters": {
"nodes": "Nodos",
"localPanel": "Local (este panel)"
},
"showingCount": "Mostrando {shown} de {total}",
"sortOldest": "Más antiguos",
"sortNewest": "Más recientes",
"sortRecentlyUpdated": "Recientemente actualizados",
"sortRecentlyOnline": "Recientemente en línea",
"sortEmailAZ": "Email A→Z",
"sortEmailZA": "Email Z→A",
"sortMostTraffic": "Mayor tráfico",
"sortHighestRemaining": "Mayor restante",
"sortExpiringSoonest": "Caducidad más próxima",
"has": "Tiene",
"hasNot": "No tiene",
"actions": "Acciones",
"totalGB": "Límite de tráfico (GB)",
"totalGBDesc": "Cuota de datos para este cliente. 0 = ilimitado.",
"expiryTime": "Expiración",
"addClients": "Añadir clientes",
"limitIp": "Límite de IP",
"limitIpDesc": "Máximo de IP simultáneas. 0 = ilimitado.",
"limitHwid": "Límite de HWID",
"limitHwidDesc": "Máximo de dispositivos registrados para solicitudes de suscripción. 0 = ilimitado.",
"hwidLog": "Dispositivos HWID",
"hwidDevice": "Dispositivo registrado",
"noHwids": "Aún no hay dispositivos HWID",
"firstSeen": "Visto por primera vez",
"lastSeen": "Visto por última vez",
"deleteHwid": "Eliminar dispositivo",
"deleteHwidConfirm": "¿Eliminar este dispositivo? Deberá volver a registrarse en la próxima obtención de la suscripción.",
"hwidDeleted": "Dispositivo eliminado.",
"clearHwidsConfirm": "¿Eliminar todos los dispositivos registrados? Cada dispositivo deberá volver a registrarse en la próxima obtención de la suscripción.",
"limitIpFail2banMissing": "Fail2ban no está instalado, por lo que no se puede aplicar el límite de IP. Instala Fail2ban desde el menú bash de x-ui para habilitar esta opción.",
"limitIpFail2banWindows": "Fail2ban no está disponible en Windows, por lo que no se puede aplicar el límite de IP.",
"limitIpDisabled": "La función de límite de IP está deshabilitada en este servidor.",
"password": "Contraseña",
"passwordDesc": "Solo la usan los clientes Trojan y Shadowsocks; se ignora para VLESS, VMess, Hysteria y WireGuard.",
"subId": "ID de suscripción",
"online": "En línea",
"email": "Email",
"emailInvalidChars": "El correo no puede contener espacios, '/', '\\' ni caracteres de control",
"subIdInvalidChars": "El ID de suscripción no puede contener espacios, '/', '\\' ni caracteres de control",
"group": "Grupo",
"groupDesc": "Etiqueta lógica para agrupar clientes relacionados (p. ej. equipo, cliente, región). Filtrable desde la barra de herramientas.",
"groupPlaceholder": "p. ej. customer-a",
"comment": "Comentario",
"traffic": "Tráfico",
"speed": "Velocidad",
"offline": "Sin conexión",
"addClient": "Añadir cliente",
"qrCode": "Código QR",
"clientInfo": "Información del cliente",
"editClient": "Editar cliente",
"client": "Cliente",
"enabled": "Habilitado",
"remaining": "Restante",
"duration": "Duración",
"attachedInbounds": "Inbounds asociados",
"selectInbound": "Selecciona uno o más inbounds",
"selectAllInbounds": "Seleccionar todo",
"clearAllInbounds": "Limpiar todo",
"noSubId": "Este cliente no tiene subId, no hay enlace compartible.",
"noLinks": "No hay enlaces compartibles — asocia primero este cliente a un inbound con protocolo válido.",
"link": "Enlace",
"resetNotPossible": "Asocia primero este cliente a un inbound.",
"resetAllTraffics": "Restablecer tráfico de todos los clientes",
"resetAllTrafficsTitle": "¿Restablecer tráfico de todos los clientes?",
"resetAllTrafficsContent": "El contador de subida/bajada de cada cliente vuelve a cero. Las cuotas y la expiración no se modifican. Esta acción no se puede deshacer.",
"deleteConfirmTitle": "¿Eliminar al cliente {email}?",
"deleteConfirmContent": "Esto elimina al cliente de cada inbound asociado y descarta su registro de tráfico. No se puede deshacer.",
"attach": "Asociar",
"adjust": "Ajustar",
"subLinks": "Enlaces sub",
"enable": "Habilitar",
"disable": "Deshabilitar",
"bulkEnableConfirmTitle": "¿Habilitar {count} clientes?",
"bulkEnableConfirmContent": "Habilita cada cliente seleccionado en todos los inbounds asociados. Los clientes cuya cuota se haya agotado o cuya caducidad haya pasado se deshabilitarán de nuevo automáticamente.",
"bulkDisableConfirmTitle": "¿Deshabilitar {count} clientes?",
"bulkDisableConfirmContent": "Deshabilita cada cliente seleccionado en todos los inbounds asociados. Pierden el acceso de inmediato, pero se conservan sus registros y su tráfico.",
"selectedCount": "{count} seleccionado(s)",
"attachToInboundsTitle": "Asociar {count} cliente(s) a entrada(s)",
"attachToInboundsDesc": "Asocia los {count} cliente(s) seleccionados (mismo UUID/contraseña y tráfico compartido) a las entradas elegidas. Mantienen sus asociaciones existentes.",
"attachToInboundsTargets": "Entradas objetivo",
"attachToInboundsNoTargets": "No hay entradas multiusuario disponibles para asociar.",
"detach": "Desasociar",
"detachFromInboundsTitle": "Desasociar {count} cliente(s) de entrada(s)",
"detachFromInboundsDesc": "Quita los {count} cliente(s) seleccionados de las entradas elegidas. Las parejas donde el cliente no estaba asociado se omiten silenciosamente. Los registros de los clientes se conservan (usa Delete para eliminar por completo).",
"detachFromInboundsTargets": "Entradas para desasociar",
"detachFromInboundsNoTargets": "No hay entradas multiusuario disponibles.",
"detachFromInboundsResult": "Desasociados {detached}, omitidos {skipped}.",
"detachFromInboundsResultMixed": "Desasociados {detached}, omitidos {skipped}, errores {errors}.",
"subLinksTitle": "Enlaces sub ({count})",
"subLinkColumn": "URL de suscripción",
"subLinksCopyAll": "Copiar todo",
"subLinksCopiedAll": "Copiados {count} enlace(s)",
"subLinksEmpty": "Ninguno de los clientes seleccionados tiene ID de suscripción.",
"subLinksDisabled": "El servicio de suscripción está deshabilitado.",
"subLinksDisabledHint": "Habilita la suscripción en Ajustes del panel → Suscripción para generar enlaces.",
"bulkDeleteConfirmTitle": "¿Eliminar {count} clientes?",
"bulkDeleteConfirmContent": "Cada cliente seleccionado se elimina de los inbounds asociados y se descarta su registro de tráfico. No se puede deshacer.",
"bulkAdjustTitle": "Ajustar {count} clientes",
"bulkAdjustHint": "Los valores positivos extienden, los negativos reducen. Los clientes con expiración o tráfico ilimitado se omiten para ese campo.",
"bulkAdjustNothing": "Establece días o tráfico antes de aplicar.",
"addDays": "Añadir días",
"addTrafficGB": "Añadir tráfico (GB)",
"bulkFlow": "Establecer flow",
"bulkFlowNoChange": "Sin cambios",
"bulkFlowDisable": "Desactivar (borrar flow)",
"delDepleted": "Eliminar agotados",
"delDepletedConfirmTitle": "¿Eliminar clientes agotados?",
"delDepletedConfirmContent": "Elimina todos los clientes con cuota agotada o expirados. No se puede deshacer.",
"exportClients": "Exportar clientes",
"importClients": "Importar clientes",
"import": "Importar",
"delOrphans": "Eliminar clientes sin entrante",
"delOrphansConfirmTitle": "¿Eliminar clientes sin entrante?",
"delOrphansConfirmContent": "Elimina todos los clientes que no están vinculados a ningún entrante, junto con su registro de tráfico. No se puede deshacer.",
"auth": "Auth",
"hysteriaAuth": "Hysteria Auth",
"hysteriaAuthDesc": "Credencial usada únicamente por los clientes Hysteria. Trojan y Shadowsocks usan el campo «Contraseña» en su lugar.",
"uuid": "UUID",
"flow": "Flow",
"vmessSecurity": "Seguridad VMess",
"wireguardPrivateKey": "Clave privada de WireGuard",
"wireguardPublicKey": "Clave pública de WireGuard",
"wireguardPreSharedKey": "Clave precompartida de WireGuard",
"wireguardAllowedIPs": "IP permitidas de WireGuard",
"wireguardAllowedIPsHint": "Déjalo vacío para asignar automáticamente; separa las entradas con comas",
"amneziaWgPrivateKey": "Clave privada de AmneziaWG",
"amneziaWgPublicKey": "Clave pública de AmneziaWG",
"amneziaWgPreSharedKey": "Clave precompartida de AmneziaWG",
"amneziaWgAllowedIPs": "IP permitidas de AmneziaWG",
"amneziaWgAllowedIPsHint": "Déjalo vacío para asignar automáticamente; separa las entradas con comas",
"amneziaWgForwardedPorts": "Puertos reenviados",
"amneziaWgForwardedPortsHint": "Puertos/rangos redirigidos (DNAT) a este cliente, p. ej. 80, 443, 8000-8100. Déjalo vacío si no aplica.",
"amneziaWgConfig": "Configuración de AmneziaWG",
"mtprotoSecret": "Secreto MTProto",
"mtprotoSecretHint": "El secreto FakeTLS del cliente. Vuelve a generarlo para cambiarlo.",
"mtprotoAdTag": "Ad-tag (canal patrocinado)",
"mtprotoAdTagHint": "Etiqueta hexadecimal opcional de 32 caracteres del registro de proxy de Telegram. Si se establece, este cliente se enruta a través de los proxies intermedios de Telegram y aparece un canal patrocinado en la parte superior de su lista de chats.",
"reverseTag": "Etiqueta inversa",
"reverseTagPlaceholder": "Reverse tag opcional",
"telegramId": "ID de usuario de Telegram",
"telegramIdPlaceholder": "ID numérico de usuario de Telegram (0 = ninguno)",
"ipLimit": "Límite de IP",
"toasts": {
"deleted": "Cliente eliminado",
"trafficReset": "Tráfico restablecido",
"allTrafficsReset": "Tráfico de todos los clientes restablecido",
"bulkDeleted": "{count} clientes eliminados",
"bulkDeletedMixed": "{ok} eliminados, {failed} fallidos",
"bulkEnabled": "{count} clientes habilitados",
"bulkEnabledMixed": "{ok} habilitados, {failed} fallidos",
"bulkDisabled": "{count} clientes deshabilitados",
"bulkDisabledMixed": "{ok} deshabilitados, {failed} fallidos",
"bulkCreated": "{count} clientes creados",
"bulkCreatedMixed": "{ok} creados, {failed} fallidos",
"bulkAdjusted": "{count} clientes ajustados",
"bulkAdjustedMixed": "{ok} ajustados, {skipped} omitidos",
"delDepleted": "{count} clientes agotados eliminados",
"delOrphans": "{count} clientes sin entrante eliminados",
"imported": "{count} clientes importados",
"importedMixed": "{ok} importados, {failed} omitidos"
},
"renewMax": "Renovaciones máximas",
"renewMaxDesc": "Cuántas veces puede activarse la renovación automática antes de dejar que el cliente caduque. 0 significa sin límite. Recuperar varios periodos perdidos consume una renovación por periodo.",
"renewOnDay": "Renovar el día",
"renewOnDayDesc": "Renueva este día de cada mes natural, a medianoche en la zona horaria del panel, en lugar de cada N días. Si el mes es demasiado corto para el día elegido, renueva su último día. 0 mantiene el modo de intervalo en días.",
"renewsUsed": "Renovaciones usadas"
},
"nodes": {
"addNode": "Agregar nodo",
"editNode": "Editar nodo",
"totalNodes": "Total de nodos",
"onlineNodes": "En línea",
"offlineNodes": "Sin conexión",
"avgLatency": "Latencia media",
"name": "Nombre",
"namePlaceholder": "p. ej. de-frankfurt-1",
"addressPlaceholder": "panel.example.com o 1.2.3.4",
"remark": "Notas",
"scheme": "Esquema",
"address": "Dirección",
"port": "Puerto",
"basePath": "Ruta base",
"apiToken": "Token API",
"apiTokenPlaceholder": "Token desde la página de Configuración del panel remoto",
"apiTokenHint": "El panel remoto expone su token de API en Configuraciones de Seguridad → Token de API.",
"apiTokenKeepHint": "Déjalo en blanco para mantener el token actual",
"allowPrivateAddress": "Permitir dirección privada",
"allowPrivateAddressHint": "Habilitar solo para nodos en una red privada o VPN.",
"outboundTag": "Outbound de conexión",
"outboundTagHint": "Enruta el tráfico de la API del panel de este nodo a través del outbound Xray seleccionado. Un inbound de puente loopback se agrega automáticamente a la configuración en ejecución y se aplica en vivo. Déjelo vacío para una conexión directa.",
"outboundTagPlaceholder": "Conexión directa",
"inboundSyncMode": "Importación de inbounds",
"inboundSyncModeHint": "Elige qué inbounds importar desde este nodo. Los nodos existentes importan todos de forma predeterminada.",
"allInbounds": "Todos los inbounds",
"selectedInbounds": "Inbounds seleccionados",
"inboundTags": "Inbounds",
"inboundTagsHint": "La selección se compara por la etiqueta del inbound. Una selección vacía no importa ninguno.",
"inboundTagsPlaceholder": "Carga y selecciona inbounds",
"loadInbounds": "Cargar inbounds desde el nodo",
"inboundsLoaded": "Se cargaron {{count}} inbounds",
"inboundsLoadFailed": "No se pudieron cargar los inbounds",
"enable": "Habilitado",
"status": "Estado",
"cpu": "CPU",
"mem": "Memoria",
"netUp": "Subida de red (KB/s)",
"netDown": "Bajada de red (KB/s)",
"uptime": "Tiempo activo",
"latency": "Latencia",
"lastHeartbeat": "Último latido",
"coreVersion": "Core version",
"panelVersion": "Versión del panel",
"actions": "Acciones",
"probe": "Sondear ahora",
"updatePanel": "Actualizar panel",
"updateSelected": "Actualizar seleccionados ({count})",
"updateAvailable": "Actualización disponible",
"updateConfirmTitle": "¿Actualizar {count} nodo(s) a la última versión?",
"updateConfirmContent": "Cada nodo seleccionado descarga la última versión y se reinicia con ella. Solo se actualizan los nodos habilitados y en línea.",
"updateAgent": "Update Agent",
"updateAgentConfirmContent": "The agent on this node will download the latest release, verify it, and restart onto it. If the update fails, the node keeps running the current version.",
"agentInstallCommand": "Install Command",
"agentTokenNotStored": "This node's token is not stored on the master yet, so the command below has no token. The token is saved on the node itself in /etc/x-ui/agent.json; it will be filled in here automatically after the agent's next authenticated request.",
"updateDevChannel": "Actualizar al canal de desarrollo (último commit)",
"testConnection": "Probar conexión",
"connectionOk": "Conexión correcta ({ms} ms)",
"connectionFailed": "Conexión fallida",
"never": "nunca",
"justNow": "ahora mismo",
"subNode": "Subnodo",
"subNodeTip": "Solo lectura: un nodo descendente al que se llega a través de {parent}. Gestiónalo desde el propio panel de {parent}.",
"deleteConfirmTitle": "¿Eliminar el nodo \"{name}\"?",
"deleteConfirmContent": "Esto detiene la monitorización del nodo. El panel remoto en sí no se ve afectado.",
"statusValues": {
"online": "En línea",
"offline": "Sin conexión",
"unknown": "Desconocido",
"xrayError": "Error de Xray",
"xrayStopped": "Detenido"
},
"toasts": {
"list": "Error al cargar los nodos",
"obtain": "Error al cargar el nodo",
"add": "Agregar nodo",
"update": "Actualizar nodo",
"delete": "Eliminar nodo",
"deleted": "Nodo eliminado",
"test": "Probar conexión",
"fillRequired": "El nombre, la dirección, el puerto y el token de API son obligatorios",
"probeFailed": "Sondeo fallido",
"updateStarted": "Actualización del panel iniciada",
"updateResult": "Actualización iniciada en {ok} nodo(s), {failed} fallaron",
"updateNoneEligible": "Selecciona al menos un nodo en línea y habilitado",
"saveMtls": "Guardar mTLS del nodo",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Verificación TLS",
"tlsVerifyModeHint": "Cómo valida el panel el certificado HTTPS del nodo. Fijar u Omitir son para certificados autofirmados (solo nodos https).",
"tlsVerify": "Verificar (CA predeterminada)",
"tlsPin": "Fijar certificado (SHA-256)",
"tlsSkip": "Omitir verificación",
"tlsMtls": "TLS mutuo (certificado de cliente)",
"mtlsFormHint": "Este nodo autentica al panel con un certificado de cliente. Copia el CA de este panel desde la sección mTLS del nodo al nodo, configura su CA de confianza y luego reinícialo.",
"mtls": {
"title": "mTLS del nodo",
"intro": "TLS mutuo añade un factor de certificado de cliente además del token de API para las llamadas entre nodos. Es opcional: déjalo vacío para mantener solo la autenticación por token.",
"copyCa": "Copiar el CA de este panel",
"copyCaHint": "Entrega este CA a los nodos que gestiona este panel y luego configura su verificación TLS como TLS mutuo.",
"caCopied": "Certificado CA copiado al portapapeles",
"caFailed": "No se pudo obtener el certificado CA",
"trustLabel": "CA de confianza (panel superior)",
"trustHint": "Cuando este panel es a su vez un nodo, pega aquí el CA del panel que lo gestiona para exigir su certificado de cliente. Reinicia el panel para aplicar.",
"trustPlaceholder": "-----BEGIN CERTIFICATE-----",
"save": "Guardar CA de confianza",
"saved": "CA de confianza guardado — reinicia el panel para aplicar"
},
"tlsSkipWarning": "Omitir la verificación elimina la protección contra ataques de intermediario; el token de API podría ser interceptado. Es preferible fijar el certificado.",
"pinnedCert": "SHA-256 del certificado fijado",
"pinnedCertHint": "SHA-256 del certificado del nodo en base64 o hex. Usa Obtener para leerlo del nodo ahora.",
"pinnedCertPlaceholder": "SHA-256 en base64 o hex",
"fetchPin": "Obtener",
"pinFetched": "Se obtuvo el certificado actual del nodo",
"pinFetchFailed": "No se pudo obtener el certificado",
"nodeType": "Node Type",
"nodeTypeTraditional": "Traditional Panel Node",
"nodeTypeAgent": "Agent Lightweight Node",
"agentHint": "Agent nodes connect out to the master; no address, port or API token needed. An install command is generated on creation.",
"probeOnly": "Probe only",
"probeOnlyHint": "Probe-only mode: no proxy core runs on this node; only monitoring (heartbeat, metrics and latency probes) is active.",
"agentTokenTitle": "Agent Node Setup",
"agentTokenCreated": "Node {{name}} created successfully",
"agentTokenHint": "Copy the command below and run it on the node machine. This token is shown only once!",
"agentTokenInstructions": "The command downloads the installer, configures the master URL and token. The node comes online in ~30s.",
"agentTokenCopied": "Install command copied",
"agentTokenCopyFailed": "Copy failed, please copy manually",
"copyToken": "Copy Install Command",
"agentMasterUrlHint": "Master URL (used by agent to reach the master; change to public address if behind proxy):",
"agentMasterUrlRequired": "Master URL is empty — enter the master address first; the install command is generated only then.",
"probe": {
"title": "Public status page",
"hint": "Display and plan data for the public status page. Saving takes effect immediately.",
"public": "Show on public page",
"publicRemark": "Public remark",
"group": "Group",
"sort": "Sort order",
"price": "Price",
"currency": "Currency",
"billingCycle": "Billing cycle",
"cycleOnce": "One-time",
"cycleMonthly": "Monthly",
"cycleQuarterly": "Quarterly",
"cycleSemiannual": "Semiannual",
"cycleYearly": "Yearly",
"cycleBiennial": "Biennial",
"cycleTriennial": "Triennial",
"expiresAt": "Expires on (YYYY-MM-DD)",
"trafficLimit": "Traffic limit (GB, 0 = unlimited)",
"trafficMode": "Traffic counting",
"modeSum": "Up + down",
"modeUp": "Up only",
"modeDown": "Down only",
"modeMax": "Larger of up/down",
"trafficResetDay": "Traffic reset day",
"notify": "Expiry / traffic alerts",
"countryPin": "Country pin (e.g. JP)",
"ipv4Pin": "IPv4 pin",
"ipv6Pin": "IPv6 pin",
"calUp": "Uplink correction (GB)",
"calDown": "Downlink correction (GB)",
"calHint": "Corrections are added to the counted traffic (negative values subtract) and apply to panel statistics, the public page and traffic alerts.",
"statIface": "Counted interface",
"movedHint": "Probe metadata (pricing, traffic limits, calibration…) is edited on the probe settings page.",
"goSettings": "Open probe settings",
"save": "Save status page info",
"saved": "Status page info saved",
"saveFailed": "Saving status page info failed"
},
"probeTasks": {
"title": "Probe tasks",
"intro": "TCP latency probes run by agent nodes. Changes apply on each agent's next config poll (about 30 s); nothing restarts.",
"loading": "Loading…",
"empty": "No probe tasks yet. Add one to start measuring latency.",
"add": "Add probe",
"name": "Name",
"target": "Target",
"targetPlaceholder": "host:port, e.g. 1.1.1.1:443",
"interval": "Interval (s)",
"region": "Region",
"ungrouped": "Ungrouped",
"autoJoin": "Auto-join",
"autoJoinOn": "Auto",
"nodes": "Nodes",
"nodesPlaceholder": "Assign nodes",
"actions": "Actions",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Delete this probe and its history?",
"save": "Save",
"cancel": "Cancel",
"saved": "Probe task saved",
"deleted": "Probe task deleted",
"loadFailed": "Failed to load probe tasks",
"saveFailed": "Operation failed",
"batchTitle": "Batch add",
"batchPlaceholder": "One target per line, or comma-separated — host:port, e.g. 1.1.1.1:443",
"batchSubmit": "Add all",
"batchHint": "The shared fields apply to every target; leave the name empty to name each task after its target.",
"batchEmpty": "Enter at least one target",
"batchDone": "Added {{count}} probe tasks"
}
},
"settings": {
"probeThemes": {
"title": "Theme store",
"settingsTitle": "Public status page",
"publicPage": "Public page",
"publicPageHint": "When off, the status page and its API answer only to the logged-in panel.",
"siteName": "Site name",
"site": "Site URL",
"githubProxy": "GitHub proxy",
"githubProxyHint": "Prefix used when downloading theme packages from GitHub; leave empty to connect directly.",
"favicon": "Site icon (favicon)",
"touchIcon": "Touch icon (apple-touch-icon)",
"chooseImage": "Choose image",
"iconHint": "PNG, ICO, SVG, WebP, JPEG or GIF, at most 20 KiB; larger photos are scaled down. The icon follows the site across theme switches.",
"iconTooLarge": "The image cannot be fitted into 20 KiB",
"saved": "Saved",
"saveFailed": "Operation failed",
"uploadInstall": "Upload theme.tar.gz",
"installed": "Theme \"{{name}}\" installed",
"uploadFailed": "Upload failed",
"installByUrl": "Install by address",
"installByUrlPlaceholder": "Theme GitHub repository, e.g. https://github.com/author/repo",
"installFailed": "Install failed",
"inUse": "In use",
"use": "Use",
"builtin": "Built-in",
"deleteConfirm": "Delete this theme?",
"updatedTo": "Updated to {{version}}",
"alreadyLatest": "Already the latest version",
"config": "Theme settings"
},
"probe": {
"title": "Probe settings",
"retentionDays": "History retention (days)",
"retentionHint": "How long probe history (metrics and latency) is kept.",
"fastInterval": "Fast report interval",
"fastIntervalHint": "How often agents report runtime metrics; everything else still rides the 60 s heartbeat.",
"metaTitle": "Per-node probe metadata",
"metaNodePlaceholder": "Select a node"
},
"probeNotify": {
"notifyTitle": "Notifications",
"notifyHint": "Offline, traffic and expiry alerts, delivered to the channels below (Telegram reuses the panel bot settings).",
"grace": "Offline grace (minutes)",
"graceHint": "An alert fires only after reporting has stopped for this long; a recovery inside the grace stays silent.",
"trafficPct": "Traffic alert threshold (%)",
"trafficHint": "Alerts once at this percentage and once more at 100%, once per billing period each; 0 disables traffic alerts.",
"expiryDays": "Expiry alert (days)",
"expiryHint": "A daily digest of nodes expiring within this many days; online nodes roll over automatically by billing cycle; 0 disables.",
"loginAlert": "Panel sign-in alerts",
"telegramChannel": "Telegram channel",
"telegramHint": "The token and chat IDs are configured in the Telegram bot settings.",
"webhookChannel": "Webhook channel",
"configured": "Configured",
"notConfigured": "Not configured",
"telegramText": "Telegram text template",
"webhookUrl": "Webhook URL",
"webhookHeaders": "Headers (one Name: value per line)",
"webhookBody": "Body template (JSON)",
"secretSet": "Set (leave empty to keep)",
"clearSecret": "Clear",
"templateHint": "Placeholders: {{title}} {{message}} {{node}} {{event}} {{time}} {{count}} {{site}}",
"testSend": "Send a test alert",
"testSent": "Test alert sent: {{channels}}"
},
"defaultTag": "Predeterminado",
"title": "Configuraciones",
"save": "Guardar",
"restartPanel": "Reiniciar panel",
"restartPanelDesc": "¿Está seguro de que desea reiniciar el panel? Haga clic en Aceptar para reiniciar después de 3 segundos. Si no puede acceder al panel después de reiniciar, por favor, consulte la información de registro del panel en el servidor.",
"restartPanelSuccess": "El panel se reinició correctamente",
"actions": "Acciones",
"resetDefaultConfig": "Restablecer a Configuración Predeterminada",
"panelSettings": "Configuraciones del Panel",
"securitySettings": "Configuraciones de Seguridad",
"securityWarnings": "Advertencias de seguridad",
"panelExposed": "Es posible que su panel esté expuesto:",
"warnHttp": "El panel se sirve por HTTP sin cifrar — configure TLS para producción.",
"warnDefaultPort": "El puerto por defecto 2053 es conocido — cámbielo a uno aleatorio.",
"warnDefaultBasePath": "La ruta base por defecto \"/\" es conocida — cámbiela a una ruta aleatoria.",
"warnDefaultSubPath": "La ruta de suscripción por defecto \"/sub/\" es conocida — cámbiela.",
"panelListeningIP": "IP de Escucha del Panel",
"panelListeningIPDesc": "Dejar en blanco por defecto para monitorear todas las IPs.",
"panelListeningDomain": "Dominio de Escucha del Panel",
"panelListeningDomainDesc": "Dejar en blanco por defecto para monitorear todos los dominios e IPs.",
"panelPort": "Puerto del Panel",
"panelPortDesc": "El puerto utilizado para mostrar este panel.",
"publicKeyPath": "Ruta del Archivo de Clave Pública del Certificado del Panel",
"publicKeyPathDesc": "Complete con una ruta absoluta que comience con.",
"privateKeyPath": "Ruta del Archivo de Clave Privada del Certificado del Panel",
"privateKeyPathDesc": "Complete con una ruta absoluta que comience con.",
"panelUrlPath": "Ruta URI",
"panelUrlPathDesc": "Debe empezar con '/' y terminar con.",
"pageSize": "Tamaño de paginación",
"pageSizeDesc": "Defina el tamaño de página para la tabla de entradas. Establezca 0 para desactivar",
"datepickerPlaceholder": "Seleccionar fecha",
"oldUsername": "Nombre de Usuario Actual",
"currentPassword": "Contraseña Actual",
"newUsername": "Nuevo Nombre de Usuario",
"newPassword": "Nueva Contraseña",
"sessionMaxAge": "Edad Máxima de Sesión",
"sessionMaxAgeDesc": "La duración de una sesión de inicio de sesión (unidad: minutos).",
"expireTimeDiff": "Umbral de Expiración para Notificación",
"expireTimeDiffDesc": "Reciba notificaciones sobre la expiración de la cuenta antes del umbral (unidad: días).",
"trafficDiff": "Umbral de Tráfico para Notificación",
"trafficDiffDesc": "Reciba notificaciones sobre el agotamiento del tráfico antes de alcanzar el umbral (unidad: GB).",
"timeZone": "Zona Horaria",
"timeZoneDesc": "Las tareas programadas se ejecutan de acuerdo con la hora en esta zona horaria.",
"subSettings": "Suscripción",
"subEnable": "Habilitar Servicio",
"subEnableDesc": "Función de suscripción con configuración separada.",
"subTitle": "Título de la Suscripción",
"subTitleDesc": "Título mostrado en el cliente VPN. Admite tokens de identidad del cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
"subSupportUrl": "URL de soporte",
"subSupportUrlDesc": "Enlace de soporte técnico mostrado en el cliente VPN. Admite tokens de identidad del cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
"subProfileUrl": "URL del perfil",
"subProfileUrlDesc": "Un enlace a tu sitio web mostrado en el cliente VPN. Admite tokens de identidad del cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
"subAnnounce": "Anuncio",
"subAnnounceDesc": "El texto del anuncio mostrado en el cliente VPN. Admite tokens de identidad del cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
"subHideSettings": "Ocultar configuración del servidor",
"subHideSettingsDesc": "Ocultar la posibilidad de ver y editar las configuraciones del servidor en el cliente VPN. (Solo para Happ)",
"subListen": "Listening IP",
"subListenDesc": "Dejar en blanco por defecto para monitorear todas las IPs.",
"subPort": "Puerto de Suscripción",
"subPortDesc": "El número de puerto para el servicio de suscripción debe estar sin usar en el servidor. También se usa para construir el enlace/QR de suscripción mostrado en el panel cuando «URI de proxy inverso» está vacío — si la suscripción se accede a través de un proxy inverso en otro puerto, configure «URI de proxy inverso» en su lugar.",
"subCertPath": "Ruta del Archivo de Clave Pública del Certificado de Suscripción",
"subCertPathDesc": "Complete con una ruta absoluta que comience con '/'",
"subKeyPath": "Ruta del Archivo de Clave Privada del Certificado de Suscripción",
"subKeyPathDesc": "Complete con una ruta absoluta que comience con '/'",
"subPath": "Ruta URI",
"subPathDesc": "Debe empezar con '/' y terminar con '/'",
"subDomain": "Dominio de Escucha",
"subDomainDesc": "Dejar en blanco por defecto para monitorear todos los dominios e IPs. También se usa como dominio de reserva para el enlace de suscripción mostrado cuando «URI de proxy inverso» está vacío — configure «URI de proxy inverso» si el panel y la suscripción se acceden por dominios diferentes (por ejemplo, detrás de un proxy inverso).",
"subUpdates": "Intervalos de Actualización de Suscripción",
"subUpdatesDesc": "Horas de intervalo entre actualizaciones en la aplicación del cliente.",
"subEncrypt": "Codificar",
"subEncryptDesc": "Encriptar las configuraciones devueltas en la suscripción.",
"subURI": "URI de proxy inverso",
"subURIDesc": "La URL base completa (scheme://dominio[:puerto]/ruta/) para el enlace de suscripción y el código QR, usada en lugar de Dominio de Escucha/Puerto de Suscripción. Configúrela cuando la suscripción se acceda a través de un proxy inverso o un dominio/puerto distinto a los anteriores.",
"restartXrayOnClientDisable": "Reiniciar Xray tras desactivación automática",
"restartXrayOnClientDisableDesc": "Cuando un cliente se desactive automáticamente por vencimiento o límite de tráfico, reiniciar Xray.",
"fragment": "Fragmentación",
"fragmentDesc": "Habilitar la fragmentación para el paquete de saludo de TLS",
"fragmentSett": "Configuración de Fragmentación",
"noisesDesc": "Activar Sonidos",
"noisesSett": "Configuración de Sonidos",
"trustedProxyCidrs": "CIDR de proxy de confianza",
"trustedProxyCidrsDesc": "IP/CIDR separados por coma que pueden establecer las cabeceras de host, proto e IP del cliente reenviadas.",
"subFormats": {
"packets": "Paquetes",
"length": "Longitud",
"interval": "Intervalo",
"maxSplit": "Máx. división",
"noises": "Ruidos",
"noiseItem": "Ruido №{n}",
"type": "Tipo",
"packet": "Paquete",
"delayMs": "Retraso (ms)",
"applyTo": "Aplicar a",
"concurrency": "Concurrencia",
"xudpConcurrency": "Concurrencia xudp",
"xudpUdp443": "xudp UDP 443"
},
"mux": "Mux",
"muxSett": "Configuración Mux",
"certs": "Certificados",
"dateAndTime": "Fecha y Hora",
"proxyAndServer": "Proxy y Servidor",
"intervals": "Intervalos",
"information": "Información",
"profile": "Perfil",
"language": "Idioma",
"security": {
"admin": "Credenciales de administrador",
"show": "Mostrar",
"hide": "Ocultar",
"apiTokenNew": "Nuevo token",
"apiTokenName": "Nombre",
"apiTokenNamePlaceholder": "por ejemplo central-panel-a",
"apiTokenNameRequired": "El nombre es obligatorio",
"apiTokenEmpty": "Aún no hay tokens — crea uno para autenticar bots o paneles remotos.",
"apiTokenDeleteWarning": "Cualquier cliente que use este token dejará de autenticarse inmediatamente.",
"apiTokenCreatedTitle": "Token creado",
"apiTokenCreatedNotice": "Copia este token ahora. Por seguridad, no se almacena de forma legible y no se volverá a mostrar."
},
"toasts": {
"modifySettings": "Los parámetros han sido modificados.",
"getSettings": "Ocurrió un error al obtener los parámetros.",
"modifyUserError": "Ocurrió un error al cambiar las credenciales del administrador.",
"modifyUser": "Has cambiado exitosamente las credenciales del administrador.",
"originalUserPassIncorrect": "Nombre de usuario o contraseña original incorrectos",
"userPassMustBeNotEmpty": "El nuevo nombre de usuario y la nueva contraseña no pueden estar vacíos",
"getOutboundTrafficError": "Error al obtener el tráfico saliente",
"resetOutboundTrafficError": "Error al reiniciar el tráfico saliente"
},
"eventNodeDown": "Caído",
"eventNodeUp": "Activo",
"eventCPUHigh": "CPU alta (%)",
"requestFailed": "La solicitud falló",
"eventLoginAttempt": "Intento de inicio de sesión",
"eventMemoryHigh": "Uso de memoria alto (%)",
"remarkTemplate": "Plantilla de notas",
"remarkTemplateDesc": "Cuando se define, esto reemplaza el modelo de notas para cada enlace de suscripción — escribe tu propio formato con los tokens de variable (usa el botón para insertarlos). Déjalo vacío para usar el modelo anterior.",
"subShowIdentityOnAllLinks": "Mostrar identidad en cada enlace",
"subShowIdentityOnAllLinksDesc": "Si está activado, {{EMAIL}} y {{USERNAME}} permanecen en la nota de cada enlace del cuerpo de la suscripción. Los tokens de uso siguen solo en el primer enlace.",
"validation": {
"pathLeadingSlash": "La ruta debe comenzar con /"
},
"secretClear": "Borrar",
"secretClearUndo": "Deshacer borrado",
"TGBotSettings": "Bot de Telegram",
"notifications": "Notificaciones",
"notifyTime": {
"custom": "Personalizado (crontab)",
"daily": "@daily — cada día a las 00:00",
"every": "@every — repetir en un intervalo",
"hourly": "@hourly — cada hora",
"hours": "Horas",
"interval": "Intervalo",
"minutes": "Minutos",
"monthly": "@monthly — cada mes",
"seconds": "Segundos",
"unit": "Unidad",
"weekly": "@weekly — cada semana"
},
"telegramAPIServer": "Servidor API de Telegram",
"telegramAPIServerDesc": "El servidor API de Telegram a utilizar. Déjelo en blanco para utilizar el servidor predeterminado.",
"telegramBotEnable": "Habilitar bot de Telegram",
"telegramBotEnableDesc": "Conéctese a las funciones de este panel a través del bot de Telegram.",
"telegramBotLanguage": "Idioma del Bot de Telegram",
"telegramChatId": "IDs de Chat de Telegram para Administradores",
"telegramChatIdDesc": "IDs de Chat múltiples separados por comas. Use {'@'}userinfobot o use el comando '/id' en el bot para obtener sus IDs de Chat.",
"telegramNotifyTime": "Hora de Notificación del Bot de Telegram",
"telegramNotifyTimeDesc": "Con qué frecuencia el bot de Telegram envía informes periódicos. Elige un intervalo predefinido o selecciona Personalizado para introducir una expresión crontab.",
"telegramToken": "Token de Telegram",
"telegramTokenConfigured": "Configurado; deje en blanco para mantener el token actual.",
"telegramTokenDesc": "Debe obtener el token del administrador de bots de Telegram {'@'}botfather.",
"telegramTokenPlaceholder": "Configurado: introduzca un nuevo token para reemplazarlo",
"testTgBot": "Enviar mensaje de prueba",
"tgBotNotEnabled": "El bot de Telegram no está activado",
"tgBotNotRunning": "El bot de Telegram no está en ejecución",
"tgEventBusNotify": "Notificaciones de Telegram de eventos",
"tgEventBusNotifyDesc": "Seleccione qué eventos generan notificaciones de Telegram",
"tgNotifyBackup": "Respaldo de Base de Datos",
"tgNotifyBackupDesc": "Incluir archivo de respaldo de base de datos con notificación de informe.",
"tgTestFailed": "La prueba de Telegram falló",
"tgTestSuccess": "Mensaje de prueba enviado a Telegram",
"trafficStatsInboundUplink": "Inbound Upload Accounting",
"trafficStatsInboundDownlink": "Inbound Download Accounting",
"trafficStatsOutboundUplink": "Outbound Upload Accounting",
"trafficStatsOutboundDownlink": "Outbound Download Accounting",
"trafficStatsDesc": "Applies to the whole network. A direction pair (inbound or outbound) is counted only while both of its switches are on. While counting is off, that traffic is never recorded and the gap is permanent — it is not backfilled later — and expiry / over-quota auto-disable loses the data it relies on."
},
"xray": {
"basicTemplate": "Perfil Básico",
"advancedTemplate": "Perfil Avanzado",
"Outbounds": "Salidas",
"Balancers": "Equilibradores",
"rules": {
"inbound": "Entrante"
},
"outboundForm": {
"minUploadInterval": "Intervalo mín. de subida (ms)",
"maxConcurrency": "Máx. concurrencia",
"maxConnections": "Máx. conexiones",
"maxReuseTimes": "Máx. reutilizaciones",
"maxRequestTimes": "Máx. peticiones",
"maxReusableSecs": "Máx. segundos reutilizables",
"keepAlivePeriod": "Periodo keep alive"
},
"wireguard": {
"secretKey": "Llave secreta",
"publicKey": "Llave pública",
"subnetIp": "Subred",
"subnetCidr": "CIDR de la subred",
"allowedIPs": "IP permitidas",
"domainStrategy": "Estrategia de dominio"
},
"amneziawg": {
"privateKey": "Clave privada",
"publicKey": "Clave pública",
"subnetIp": "Subred",
"subnetCidr": "CIDR de la subred",
"mtu": "MTU",
"primaryDns": "DNS primario",
"secondaryDns": "DNS secundario",
"externalInterface": "Interfaz externa",
"externalInterfaceHint": "Interfaz de red del host para NAT (PostUp/PostDown). Déjalo vacío para autodetectar.",
"ipv6Enabled": "Habilitar IPv6",
"ipv6Subnet": "Subred IPv6",
"ipv6SubnetHint": "p. ej. fd86:ea04:1115::/64. Obligatorio cuando IPv6 está habilitado.",
"ipv6ExternalInterface": "Interfaz externa IPv6",
"ipv6ExternalInterfaceHint": "Interfaz de red del host para las entradas de proxy NDP. Déjalo vacío para reutilizar la interfaz externa.",
"obfuscation": "Parámetros de ofuscación",
"regenerateObfuscation": "Regenerar",
"jc": "Jc (cantidad de paquetes basura)",
"jmin": "Jmin (tamaño mínimo de paquete basura)",
"jmax": "Jmax (tamaño máximo de paquete basura)",
"s1": "S1 (relleno del paquete init)",
"s2": "S2 (relleno del paquete response)",
"s3": "S3 (relleno de cookie reply)",
"s4": "S4 (relleno del paquete de transporte)",
"h1": "H1 (cabecera mágica)",
"h2": "H2 (cabecera mágica)",
"h3": "H3 (cabecera mágica)",
"h4": "H4 (cabecera mágica)",
"hHint": "Un número entero o un rango. Déjalo vacío para los valores clásicos 1/2/3/4.",
"i1": "I1 (paquete de firma)",
"i1Hint": "Paquete de firma opcional. Déjalo vacío para omitirlo.",
"i2": "I2 (paquete de firma)",
"i3": "I3 (paquete de firma)",
"i4": "I4 (paquete de firma)",
"i5": "I5 (paquete de firma)",
"headerProtectionKey": "HeaderProtectionKey (protección de cabeceras)",
"headerProtectionKeyHint": "Clave Base64 de 32 bytes; debe coincidir en la configuración de cada cliente. Déjalo vacío para desactivar la protección de cabeceras.",
"contentPaddingAddition": "ContentPaddingAddition (relleno de contenido)",
"contentPaddingAdditionHint": "Un entero o un rango de bytes añadido a los paquetes de contenido. Déjalo vacío para desactivarlo.",
"rekeyAfterTime": "RekeyAfterTime (segundos)",
"rekeyTimeout": "RekeyTimeout (segundos)",
"rejectAfterTime": "RejectAfterTime (segundos)",
"keepaliveTimeout": "KeepaliveTimeout (segundos)",
"maxHandshakeAttempts": "MaxHandshakeAttempts",
"timingRangeHint": "Un entero o un rango. Déjalo vacío para mantener el valor por defecto de WireGuard.",
"maxHandshakeAttemptsHint": "Reintentos de handshake antes de abandonar. Déjalo vacío para el valor por defecto.",
"randomTrailers": "RandomTrailers",
"randomTrailersHint": "Añade bytes aleatorios a cada paquete. Ambos extremos necesitan AmneziaWG 3.1+.",
"disableCookies": "DisableCookies",
"disableCookiesHint": "No enviar cookie replies — elimina una huella para DPI, pero debilita la mitigación de inundaciones."
},
"tun": {
"userLevel": "Nivel de Usuario"
}
},
"hosts": {
"addHost": "Agregar host",
"editHost": "Editar host",
"selectInbound": "Selecciona un inbound",
"selectedCount": "{count} seleccionado(s)",
"summary": {
"total": "Total",
"enabled": "Habilitados",
"disabled": "Deshabilitados"
},
"moveUp": "Subir",
"moveDown": "Bajar",
"bulkEnable": "Habilitar",
"bulkDisable": "Deshabilitar",
"bulkDelete": "Eliminar",
"bulkDeleteConfirm": "¿Eliminar {count} host(s) seleccionado(s)?",
"deleteConfirmTitle": "¿Eliminar el host \"{name}\"?",
"sections": {
"basic": "Básico",
"security": "Seguridad",
"advanced": "Avanzado",
"general": "General",
"clash": "Clash (mihomo)"
},
"fields": {
"remark": "Notas",
"serverDescription": "Descripción",
"inbound": "Inbounds",
"address": "Dirección",
"port": "Puerto",
"endpoint": "Punto final",
"enable": "Habilitar",
"actions": "Acciones",
"security": "Seguridad",
"sni": "SNI",
"overrideSniFromAddress": "Usar la dirección como SNI",
"keepSniBlank": "Dejar el SNI en blanco",
"hostHeader": "Cabecera Host",
"path": "Ruta",
"alpn": "ALPN",
"fingerprint": "Fingerprint",
"pins": "SHA-256 del cert. fijado",
"verifyPeerCertByName": "Verificar cert. del par por nombre",
"allowInsecure": "Permitir inseguro",
"echConfigList": "Lista de config. ECH",
"muxParams": "Mux",
"sockoptParams": "Sockopt",
"finalMask": "Máscara final",
"vlessRoute": "Ruta VLESS",
"mihomoIpVersion": "Versión de IP",
"mihomoX25519": "Mihomo X25519",
"shuffleHost": "Barajar host",
"tags": "Etiquetas",
"nodeGuids": "Nodos",
"excludeFromSubTypes": "Excluir de formatos",
"inheritAddress": "Hereda dirección"
},
"hints": {
"address": "Déjalo en blanco para heredar la dirección propia del inbound.",
"port": "0 hereda el puerto del inbound.",
"tags": "No visible para los usuarios finales; se envía solo con la suscripción RAW. Solo letras mayúsculas, dígitos, _ y :.",
"nodeGuids": "Elige los nodos que se resolvieron desde este host. Solo asignación visual.",
"serverDescription": "Nota opcional que se muestra bajo las notas.",
"allowInsecure": "Omitir la verificación del certificado TLS (allowInsecure / skip-cert-verify).",
"vlessRoute": "Un único valor de ruta VLESS (0-65535) incrustado en el UUID, p. ej. 443. Déjalo en blanco para ninguno.",
"remark": "Una etiqueta simple para este host. Se muestra como nombre de la configuración solo cuando el inbound no tiene notas propias."
},
"remarkVars": {
"title": "Variables de plantilla",
"intro": "Haz clic en una variable para añadirla. Se sustituye por cliente al generar la suscripción.",
"preview": "Vista previa",
"groups": {
"client": "Cliente",
"traffic": "Tráfico",
"time": "Tiempo y estado",
"connection": "Conexión"
},
"descEMAIL": "Email del cliente",
"descINBOUND": "Notas del propio inbound (nombre de la configuración)",
"descHOST": "Notas del host",
"descID": "UUID del cliente",
"descSHORT_ID": "Primeros 8 caracteres del UUID",
"descTELEGRAM_ID": "ID de Telegram del cliente (vacío si no está definido)",
"descSUB_ID": "ID de suscripción",
"descCOMMENT": "Comentario del cliente",
"descTRAFFIC_USED": "Tráfico usado (legible)",
"descTRAFFIC_LEFT": "Tráfico restante (oculto si es ilimitado)",
"descTRAFFIC_TOTAL": "Tráfico total (oculto si es ilimitado)",
"descTRAFFIC_USED_BYTES": "Tráfico usado en bytes",
"descTRAFFIC_LEFT_BYTES": "Tráfico restante en bytes",
"descTRAFFIC_TOTAL_BYTES": "Tráfico total en bytes",
"descUP": "Tráfico de subida",
"descDOWN": "Tráfico de bajada",
"descSTATUS": "activo / expirado / deshabilitado / agotado",
"descSTATUS_EMOJI": "Estado como emoji (✅ ⏳ 🚫)",
"descDAYS_LEFT": "Días hasta la expiración (oculto si es ilimitado)",
"descTIME_LEFT": "Tiempo restante (p. ej. 12d 4h 30m)",
"descUSAGE_PERCENTAGE": "Tráfico usado en porcentaje (oculto si es ilimitado)",
"descEXPIRE_DATE": "Fecha de expiración (AAAA-MM-DD)",
"descJALALI_EXPIRE_DATE": "Fecha de expiración en el calendario Jalali (AAAA/MM/DD)",
"descEXPIRE_UNIX": "Expiración como marca de tiempo Unix (segundos)",
"descCREATED_UNIX": "Hora de creación como marca de tiempo Unix (segundos)",
"descRESET_DAYS": "Periodo de reinicio de tráfico en días",
"descRESET_DAY": "Día del mes en que se renueva",
"descPROTOCOL": "Protocolo del inbound (VLESS, VMess, Trojan, …)",
"descTRANSPORT": "Red de transporte (tcp, ws, grpc, …)",
"descSECURITY": "Seguridad del transporte (TLS, REALITY, NONE)"
},
"toasts": {
"list": "Error al cargar los hosts",
"obtain": "Error al cargar el host",
"add": "Agregar host",
"update": "Actualizar host",
"delete": "Eliminar host",
"badTag": "Etiqueta no válida",
"badVlessRoute": "Introduce un único número entre 0 y 65535"
}
}
},
"tgbot": {
"noIpRecord": "❗ ¡No hay registro de IP!",
"keyboardClosed": "❌ Teclado cerrado!",
"noResult": "❗ ¡Sin resultados!",
"noQuery": "❌ ¡Consulta no encontrada! ¡Por favor, use el comando nuevamente!",
"wentWrong": "❌ ¡Algo salió mal!",
"noInbounds": "❗ ¡No se encontraron entradas!",
"unlimited": "♾ Ilimitado (Restablecer)",
"add": "Añadir",
"month": "Mes",
"months": "Meses",
"days": "Días",
"hours": "Horas",
"minutes": "Minutos",
"unknown": "Desconocido",
"inbounds": "Entradas",
"clients": "Clientes",
"offline": "🔴 Sin conexión",
"commands": {
"unknown": "❗ Comando desconocido",
"pleaseChoose": "👇 Por favor elige:\r\n",
"help": "🤖 ¡Bienvenido a este bot! Está diseñado para ofrecerte datos específicos del servidor y te permite hacer modificaciones según sea necesario.\r\n\r\n",
"start": "👋 Hola {{ .Firstname }}.\r\n",
"welcome": "🤖 Bienvenido al bot de gestión de {{ .Hostname }}.\r\n",
"status": "✅ ¡El bot está bien!",
"usage": "❗ ¡Por favor proporciona un texto para buscar!",
"getID": "🆔 Tu ID: {{ .ID }}",
"helpAdminCommands": "Para reiniciar Xray Core:\r\n/restart\r\n\r\nPara buscar un correo electrónico de cliente:\r\n/usage [Correo electrónico]\r\n\r\nPara buscar entradas (con estadísticas de cliente):\r\n/inbound [Observación]\r\n\r\nID de Chat de Telegram:\r\n/id",
"helpClientCommands": "Para buscar estadísticas, utiliza el siguiente comando:\r\n/usage [Correo electrónico]\r\n\r\nID de Chat de Telegram:\r\n/id",
"restartUsage": "\r\n\r\n/restart",
"xrayNotRunning": "❗ Xray Core no está en ejecución.",
"startDesc": "Mostrar el menú principal",
"helpDesc": "Ayuda del bot",
"statusDesc": "Comprobar el estado del bot",
"idDesc": "Mostrar tu ID de Telegram",
"usageDesc": "Ver el uso del cliente: /usage correo",
"inboundDesc": "Buscar entradas: /inbound nombre (admin)",
"restartDesc": "Reiniciar el núcleo de Xray (admin)",
"clearallDesc": "Restablecer el tráfico de todos los clientes (admin)"
},
"messages": {
"cpuThreshold": "El uso de CPU {{ .Percent }}% es mayor que el umbral {{ .Threshold }}%",
"selectUserFailed": "❌ ¡Error al seleccionar usuario!",
"userSaved": "✅ Usuario de Telegram guardado.",
"loginSuccess": "✅ Has iniciado sesión en el panel con éxito.\r\n",
"loginFailed": "❗️ Falló el inicio de sesión en el panel.\r\n",
"report": "🕰 Informes programados: {{ .RunTime }}\r\n",
"datetime": "⏰ Fecha y Hora: {{ .DateTime }}\r\n",
"hostname": "💻 Host: {{ .Hostname }}\r\n",
"version": "🚀 Versión de X-UI: {{ .Version }}\r\n",
"xrayVersion": "📡 Versión de Xray: {{ .XrayVersion }}\r\n",
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
"ip": "🌐 IP: {{ .IP }}\r\n",
"ips": "🔢 IPs:\r\n{{ .IPs }}\r\n",
"serverUpTime": "⏳ Tiempo de actividad del servidor: {{ .UpTime }} {{ .Unit }}\r\n",
"serverLoad": "📈 Carga del servidor: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
"traffic": "🚦 Tráfico: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
"xrayStatus": "ℹ️ Estado: {{ .State }}\r\n",
"username": "👤 Nombre de usuario: {{ .Username }}\r\n",
"reason": "❗️ Motivo: {{ .Reason }}\r\n",
"time": "⏰ Hora: {{ .Time }}\r\n",
"inbound": "📍 Entrada: {{ .Remark }}\r\n",
"port": "🔌 Puerto: {{ .Port }}\r\n",
"expire": "📅 Fecha de Vencimiento: {{ .Time }}\r\n",
"expireIn": "📅 Vence en: {{ .Time }}\r\n",
"active": "💡 Activo: {{ .Enable }}\r\n",
"enabled": "🚨 Habilitado: {{ .Enable }}\r\n",
"online": "🌐 Estado de conexión: {{ .Status }}\r\n",
"lastOnline": "🔙 Última conexión: {{ .Time }}\r\n",
"email": "📧 Email: {{ .Email }}\r\n",
"upload": "🔼 Subida: ↑{{ .Upload }}\r\n",
"download": "🔽 Descarga: ↓{{ .Download }}\r\n",
"total": "📊 Total: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
"TGUser": "👤 Usuario de Telegram: {{ .TelegramID }}\r\n",
"exhaustedCount": "🚨 Cantidad de Agotados {{ .Type }}:\r\n",
"onlinesCount": "🌐 Clientes en línea: {{ .Count }}\r\n",
"disabled": "🛑 Desactivado: {{ .Disabled }}\r\n",
"depleteSoon": "🔜 Se agotará pronto: {{ .Deplete }}\r\n\r\n",
"backupTime": "🗄 Hora de la Copia de Seguridad: {{ .Time }}\r\n",
"refreshedOn": "\r\n📋🔄 Actualizado en: {{ .Time }}\r\n\r\n",
"yes": "✅ Sí",
"no": "❌ No",
"received_email": "📧📥 Correo electrónico actualizado.",
"received_comment": "💬📥 Comentario actualizado.",
"email_prompt": "📧 Correo electrónico predeterminado: {{ .ClientEmail }}\n\nIntroduce tu correo electrónico.",
"comment_prompt": "💬 Comentario predeterminado: {{ .ClientComment }}\n\nIntroduce tu comentario.",
"cancel": "❌ ¡Proceso cancelado! \n\nPuedes /start de nuevo en cualquier momento. 🔄",
"error_add_client": "⚠️ Error:\n\n {{ .error }}",
"using_default_value": "Está bien, me quedaré con el valor predeterminado. 😊",
"incorrect_input": "Tu entrada no es válida.\nLas frases deben ser continuas sin espacios.\nEjemplo correcto: aaaaaa\nEjemplo incorrecto: aaa aaa 🚫",
"AreYouSure": "¿Estás seguro? 🤔",
"SuccessResetTraffic": "📧 Correo: {{ .ClientEmail }}\n🏁 Resultado: ✅ Éxito",
"FailedResetTraffic": "📧 Correo: {{ .ClientEmail }}\n🏁 Resultado: ❌ Fallido \n\n🛠️ Error: [ {{ .ErrorMessage }} ]",
"FinishProcess": "🔚 Proceso de reinicio de tráfico finalizado para todos los clientes.",
"eventErrorDetail": "Error: {{ .Error }}",
"eventDelayDetail": "Retardo: {{ .Delay }} ms",
"eventNodeDown": "El nodo {{ .Name }} está CAÍDO",
"eventNodeUp": "El nodo {{ .Name }} está ACTIVO",
"eventLoginFallback": "Inicio de sesión fallido desde {{ .Source }}",
"memoryThreshold": "Uso de memoria {{ .Percent }}% supera el umbral de {{ .Threshold }}%"
},
"buttons": {
"closeKeyboard": "❌ Cerrar Teclado",
"cancel": "❌ Cancelar",
"cancelReset": "❌ Cancelar Reinicio",
"cancelIpLimit": "❌ Cancelar Límite de IP",
"confirmResetTraffic": "✅ ¿Confirmar Reinicio de Tráfico?",
"confirmClearIps": "✅ ¿Confirmar Limpiar IPs?",
"confirmRemoveTGUser": "✅ ¿Confirmar Eliminar Usuario de Telegram?",
"confirmToggle": "✅ ¿Confirmar habilitar/deshabilitar usuario?",
"dbBackup": "Obtener Copia de Seguridad de BD",
"serverUsage": "Uso del Servidor",
"getInbounds": "Obtener Entradas",
"depleteSoon": "Pronto se Agotará",
"clientUsage": "Obtener Uso",
"onlines": "Clientes en línea",
"commands": "Comandos",
"refresh": "🔄 Actualizar",
"clearIPs": "❌ Limpiar IPs",
"removeTGUser": "❌ Eliminar Usuario de Telegram",
"selectTGUser": "👤 Seleccionar Usuario de Telegram",
"selectOneTGUser": "👤 Selecciona un usuario de telegram:",
"resetTraffic": "📈 Reiniciar Tráfico",
"resetExpire": "📅 Cambiar fecha de Vencimiento",
"ipLog": "🔢 Registro de IP",
"ipLimit": "🔢 Límite de IP",
"setTGUser": "👤 Establecer Usuario de Telegram",
"toggle": "🔘 Habilitar / Deshabilitar",
"custom": "🔢 Personalizado",
"confirmNumber": "✅ Confirmar: {{ .Num }}",
"confirmNumberAdd": "✅ Confirmar agregando: {{ .Num }}",
"limitTraffic": "🚧 Límite de tráfico",
"getBanLogs": "Registros de prohibición",
"allClients": "Todos los Clientes",
"addClient": "Añadir cliente",
"submitDisable": "Enviar como deshabilitado ☑️",
"submitEnable": "Enviar como habilitado ✅",
"use_default": "🏷️ Usar por defecto",
"change_email": "⚙️📧 Email",
"change_comment": "⚙️💬 Comentario",
"ResetAllTraffics": "Reiniciar todo el tráfico",
"SortedTrafficUsageReport": "Informe de uso de tráfico ordenado"
},
"answers": {
"successfulOperation": "✅ ¡Exitosa!",
"errorOperation": "❗ Error en la Operación.",
"getInboundsFailed": "❌ Error al obtener las entradas",
"getClientsFailed": "❌ No se pudo obtener los clientes.",
"canceled": "❌ {{ .Email }} : Operación cancelada.",
"clientRefreshSuccess": "✅ {{ .Email }} : Cliente actualizado exitosamente.",
"IpRefreshSuccess": "✅ {{ .Email }} : IPs actualizadas exitosamente.",
"TGIdRefreshSuccess": "✅ {{ .Email }} : Usuario de Telegram del cliente actualizado exitosamente.",
"resetTrafficSuccess": "✅ {{ .Email }} : Tráfico reiniciado exitosamente.",
"setTrafficLimitSuccess": "✅ {{ .Email }} : Límite de Tráfico guardado exitosamente.",
"expireResetSuccess": "✅ {{ .Email }} : Días de vencimiento reiniciados exitosamente.",
"resetIpSuccess": "✅ {{ .Email }} : Límite de IP {{ .Count }} guardado exitosamente.",
"clearIpSuccess": "✅ {{ .Email }} : IPs limpiadas exitosamente.",
"getIpLog": "✅ {{ .Email }} : Obtener Registro de IP.",
"getUserInfo": "✅ {{ .Email }} : Obtener Información de Usuario de Telegram.",
"removedTGUserSuccess": "✅ {{ .Email }} : Usuario de Telegram eliminado exitosamente.",
"enableSuccess": "✅ {{ .Email }} : Habilitado exitosamente.",
"disableSuccess": "✅ {{ .Email }} : Deshabilitado exitosamente.",
"askToAddUserId": "¡No se encuentra su configuración!\r\nPor favor, pídale a su administrador que use su ChatID de usuario de Telegram en su(s) configuración(es).\r\n\r\nSu ChatID de usuario: {{ .TgUserID }}",
"chooseClient": "Elige un Cliente para Inbound {{ .Inbound }}",
"chooseInbound": "Elige un Inbound"
}
}
}