diff --git a/README.md b/README.md index c1414f20..1174977a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](#) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -3x-ui panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese,Russian,Vietnamese)** +3x-ui panel supporting multi-protocol, **Multi-lang (English,Farsi,Chinese,Russian,Vietnamese,Spanish)** **If you think this project is helpful to you, you may wish to give a** :star2: **Buy Me a Coffee :** diff --git a/web/assets/js/langs.js b/web/assets/js/langs.js index 9038fc54..f590991e 100644 --- a/web/assets/js/langs.js +++ b/web/assets/js/langs.js @@ -24,6 +24,11 @@ const supportLangs = [ value: 'vi-VN', icon: '🇻🇳', }, + { + name: 'española', + value: 'es-ES', + icon: '🇪🇸', + }, ]; function getLang() { diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml new file mode 100644 index 00000000..b21ba5fa --- /dev/null +++ b/web/translation/translate.es_ES.toml @@ -0,0 +1,495 @@ +"username" = "Nombre de Usuario" +"password" = "Contraseña" +"login" = "Acceso" +"confirm" = "Confirmar" +"cancel" = "Cancelar" +"close" = "Cerrar" +"copy" = "Copiar" +"copied" = "Copiado" +"download" = "Descargar" +"remark" = "Nota" +"enable" = "Habilitar" +"protocol" = "Protocolo" +"search" = "Buscar" +"filter" = "Filtrar" +"loading" = "Cargando" +"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" +"copySuccess" = "Copiado exitosamente" +"sure" = "Seguro" +"encryption" = "Encriptación" +"transmission" = "Transmisión" +"host" = "Anfitrión" +"path" = "Ruta" +"camouflage" = "Camuflaje" +"status" = "Estado" +"enabled" = "Habilitado" +"disabled" = "Deshabilitado" +"depleted" = "Agotado" +"depletingSoon" = "Agotándose pronto" +"domainName" = "Nombre de dominio" +"monitor" = "Listening IP" +"certificate" = "Certificado" +"fail" = "Falló" +"success" = "Éxito" +"getVersion" = "Obtener versión" +"install" = "Instalar" +"clients" = "Clientes" +"usage" = "Uso" +"secretToken" = "Token Secreto" +"remained" = "Restante" + +[menu] +"dashboard" = "Estado del Sistema" +"inbounds" = "Entradas" +"settings" = "Configuraciones del Panel" +"logout" = "Cerrar Sesión" +"link" = "Otro" + +[pages.login] +"title" = "Iniciar Sesión" +"loginAgain" = "El límite de tiempo de inicio de sesión ha expirado. Por favor, inicia sesión nuevamente." + +[pages.login.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 o contraseña inválidos." +"successLogin" = "Inicio de Sesión Exitoso" + +[pages.index] +"title" = "Estado del Sistema" +"memory" = "Memoria" +"hard" = "Disco Duro" +"xrayStatus" = "Estado de Xray" +"stopXray" = "Detener Xray" +"restartXray" = "Reiniciar" +"xraySwitch" = "Cambiar Versión" +"xraySwitchClick" = "Elige la versión a la que deseas cambiar." +"xraySwitchClickDesk" = "Elige sabiamente, ya que las versiones anteriores pueden no ser compatibles con las configuraciones actuales." +"operationHours" = "Tiempo de Funcionamiento" +"systemLoad" = "Carga del Sistema" +"systemLoadDesc" = "promedio de carga del sistema en los últimos 1, 5 y 15 minutos" +"connectionTcpCountDesc" = "Conexiones TCP totales en todas las tarjetas de red." +"connectionUdpCountDesc" = "Conexiones UDP totales en todas las tarjetas de red." +"connectionCount" = "Número de Conexiones" +"upSpeed" = "Velocidad de Subida Total para Todas las Tarjetas de Red." +"downSpeed" = "Velocidad de Bajada Total para Todas las Tarjetas de Red." +"totalSent" = "Tráfico Total de Subida de Todas las Tarjetas de Red desde el inicio del sistema." +"totalReceive" = "Datos Descargados Totales en Todas las Tarjetas de Red desde el inicio del sistema." +"xraySwitchVersionDialog" = "Cambiar Versión de Xray" +"xraySwitchVersionDialogDesc" = "¿Estás seguro de que deseas cambiar la versión de Xray a" +"dontRefresh" = "La instalación está en progreso, por favor no actualices esta página." +"logs" = "Registros" +"config" = "Configuración" +"backup" = "Copia de Seguridad y Restauración" +"backupTitle" = "Copia de Seguridad y Restauración de la Base de Datos" +"backupDescription" = "Recuerda hacer una copia de seguridad antes de importar una nueva base de datos." +"exportDatabase" = "Descargar Base de Datos" +"importDatabase" = "Cargar Base de Datos" + +[pages.inbounds] +"title" = "Entradas" +"totalDownUp" = "Subidas/Descargas Totales" +"totalUsage" = "Uso Total" +"inboundCount" = "Número de Entradas" +"operate" = "Menú" +"enable" = "Habilitar" +"remark" = "Notas" +"protocol" = "Protocolo" +"port" = "Puerto" +"traffic" = "Tráfico" +"details" = "Detalles" +"transportConfig" = "Transporte" +"expireDate" = "Fecha de Expiración" +"resetTraffic" = "Restablecer Tráfico" +"addInbound" = "Agregar Entrada" +"generalActions" = "Acciones Generales" +"create" = "Crear" +"update" = "Actualizar" +"modifyInbound" = "Modificar Entrada" +"deleteInbound" = "Eliminar Entrada" +"deleteInboundContent" = "¿Confirmar eliminación 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" = "Significa Sin Límite" +"totalFlow" = "Flujo Total" +"leaveBlankToNeverExpire" = "Dejar en Blanco para Nunca Expirar" +"noRecommendKeepDefault" = "No hay requisitos especiales para mantener la configuración predeterminada" +"certificatePath" = "Ruta del Archivo de Certificado" +"certificateContent" = "Contenido del Archivo de Certificado" +"publicKeyPath" = "Ruta de la Clave Pública" +"publicKeyContent" = "Contenido de la Clave Pública" +"keyPath" = "Ruta de la Clave Privada" +"keyContent" = "Contenido de la Clave Privada" +"clickOnQRcode" = "Haz clic en el Código QR para Copiar" +"client" = "Client" +"export" = "Exportar Enlaces" +"clone" = "Clonar" +"cloneInbound" = "Clonar Entradas" +"cloneInboundContent" = "Se aplicarán todas las configuraciones de esta entrada, excepto el Puerto, la IP de Escucha y los Clientes, al clon." +"cloneInboundOk" = "Clonar" +"resetAllTraffic" = "Restablecer Tráfico de Todas las Entradas" +"resetAllTrafficTitle" = "Restablecer tráfico de todas las entradas" +"resetAllTrafficContent" = "¿Estás seguro de que deseas restablecer el tráfico de todas las entradas?" +"resetInboundClientTraffics" = "Restablecer Tráfico de Clientes" +"resetInboundClientTrafficTitle" = "Restablecer todo el tráfico de clientes" +"resetInboundClientTrafficContent" = "¿Estás seguro de que deseas restablecer todo el tráfico para los clientes de esta entrada?" +"resetAllClientTraffics" = "Restablecer Tráfico de Todos los Clientes" +"resetAllClientTrafficTitle" = "Restablecer todo el tráfico de clientes" +"resetAllClientTrafficContent" = "¿Estás seguro de que deseas restablecer todo el tráfico para todos los clientes?" +"delDepletedClients" = "Eliminar Clientes Agotados" +"delDepletedClientsTitle" = "Eliminar clientes agotados" +"delDepletedClientsContent" = "¿Estás seguro de que deseas eliminar todos los clientes agotados?" +"email" = "Email" +"emailDesc" = "Por favor proporciona una dirección de correo electrónico única." +"IPLimit" = "Límite de IP" +"IPLimitDesc" = "Desactiva la entrada si la cantidad supera el valor ingresado (ingresa 0 para desactivar el límite de IP)." +"IPLimitlog" = "Registro de IP" +"IPLimitlogDesc" = "Registro de historial de IPs (antes de habilitar la entrada después de que haya sido desactivada por el límite de IP, debes borrar el registro)." +"IPLimitlogclear" = "Limpiar el Registro" +"setDefaultCert" = "Establecer certificado desde el panel" +"xtlsDesc" = "La versión del núcleo de Xray debe ser 1.7.5" +"realityDesc" = "La versión del núcleo de Xray debe ser 1.8.0 o superior." +"telegramDesc" = "Utiliza el ID de Telegram sin @ o los IDs de chat (puedes obtenerlo aquí @userinfobot o usando el comando '/id' en el bot)." +"subscriptionDesc" = "Puedes encontrar tu enlace de suscripción en Detalles, también puedes usar el mismo nombre para varias configuraciones." + +[pages.client] +"add" = "Agregar Cliente" +"edit" = "Editar Cliente" +"submitAdd" = "Agregar Cliente" +"submitEdit" = "Guardar Cambios" +"clientCount" = "Número de Clientes" +"bulk" = "Agregar en Lote" +"method" = "Método" +"first" = "Primero" +"last" = "Último" +"prefix" = "Prefijo" +"postfix" = "Sufijo" +"delayedStart" = "Iniciar después del primer uso" +"expireDays" = "Días de Expiración" +"days" = "día(s)" + +[pages.inbounds.toasts] +"obtain" = "Recibir" + +[pages.inbounds.stream.general] +"requestHeader" = "Encabezado de la Petición" +"name" = "Nombre" +"value" = "Valor" + +[pages.inbounds.stream.tcp] +"requestVersion" = "Versión de la Petición" +"requestMethod" = "Método de la Petición" +"requestPath" = "Ruta de la Petición" +"responseVersion" = "Versión de la Respuesta" +"responseStatus" = "Estado de la Respuesta" +"responseStatusDescription" = "Descripción del Estado de la Respuesta" +"responseHeader" = "Encabezado de la Respuesta" + +[pages.inbounds.stream.quic] +"encryption" = "Cifrado" + +[pages.settings] +"title" = "Configuraciones" +"save" = "Guardar" +"infoDesc" = "Cada cambio realizado aquí debe ser guardado. Por favor, reinicie el panel para aplicar los cambios." +"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." +"actions" = "Acciones" +"resetDefaultConfig" = "Restablecer a Configuración Predeterminada" +"panelSettings" = "Configuraciones del Panel" +"securitySettings" = "Configuraciones de Seguridad" +"xrayConfiguration" = "Configuración de Xray" +"TGBotSettings" = "Configuraciones de Bot de Telegram" +"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 Raíz de la URL del Panel" +"panelUrlPathDesc" = "Debe empezar con '/' y terminar con." +"oldUsername" = "Nombre de Usuario Actual" +"currentPassword" = "Contraseña Actual" +"newUsername" = "Nuevo Nombre de Usuario" +"newPassword" = "Nueva Contraseña" +"telegramBotEnable" = "Habilitar bot de Telegram" +"telegramBotEnableDesc" = "Conéctese a las funciones de este panel a través del bot de Telegram." +"telegramToken" = "Token de Telegram" +"telegramTokenDesc" = "Debe obtener el token del administrador de bots de Telegram @botfather." +"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" = "Usar el formato de tiempo de Crontab." +"tgNotifyBackup" = "Respaldo de Base de Datos" +"tgNotifyBackupDesc" = "Incluir archivo de respaldo de base de datos con notificación de informe." +"tgNotifyLogin" = "Notificación de Inicio de Sesión" +"tgNotifyLoginDesc" = "Muestra el nombre de usuario, dirección IP y hora cuando alguien intenta iniciar sesión en su panel." +"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)." +"tgNotifyCpu" = "Umbral de Alerta de Porcentaje de CPU" +"tgNotifyCpuDesc" = "Reciba notificaciones si el uso de la CPU supera este umbral (unidad: %)." +"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." +"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." +"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 Raíz de la URL de Suscripción" +"subPathDesc" = "Debe empezar con '/' y terminar con '/'" +"subDomain" = "Dominio de Escucha" +"subDomainDesc" = "Dejar en blanco por defecto para monitorear todos los dominios e IPs." +"subUpdates" = "Intervalos de Actualización de Suscripción" +"subUpdatesDesc" = "Horas de intervalo entre actualizaciones en la aplicación del cliente." +"subEncrypt" = "Encriptar configuraciones" +"subEncryptDesc" = "Encriptar las configuraciones devueltas en la suscripción." +"subShowInfo" = "Mostrar información de uso" +"subShowInfoDesc" = "Mostrar tráfico restante y fecha después del nombre de configuración." + +[pages.settings.templates] +"title" = "Plantillas" +"basicTemplate" = "Plantilla Básica" +"advancedTemplate" = "Plantilla Avanzada" +"completeTemplate" = "Plantilla Completa" +"generalConfigs" = "Configuraciones Generales" +"generalConfigsDesc" = "Estas opciones proporcionarán ajustes generales." +"blockConfigs" = "Configuraciones de Bloqueo" +"blockConfigsDesc" = "Estas opciones evitarán que los usuarios se conecten a protocolos y sitios web específicos." +"blockCountryConfigs" = "Configuraciones de Bloqueo por País" +"blockCountryConfigsDesc" = "Estas opciones evitarán que los usuarios se conecten a dominios de países específicos." +"directCountryConfigs" = "Configuraciones de Conexión Directa por País" +"directCountryConfigsDesc" = "Estas opciones conectarán a los usuarios directamente a dominios de países específicos." +"ipv4Configs" = "Configuraciones IPv4" +"ipv4ConfigsDesc" = "Estas opciones solo enrutarán a los dominios objetivo a través de IPv4." +"warpConfigs" = "Configuraciones de WARP" +"warpConfigsDesc" = "Precaución: Antes de usar estas opciones, instale WARP en modo de proxy socks5 en su servidor siguiendo los pasos en el GitHub del panel. WARP enrutará el tráfico a los sitios web a través de los servidores de Cloudflare." +"xrayConfigTemplate" = "Plantilla de Configuración de Xray" +"xrayConfigTemplateDesc" = "Genera el archivo de configuración final de Xray basado en esta plantilla." +"xrayConfigFreedomStrategy" = "Configurar Estrategia para el Protocolo Freedom" +"xrayConfigFreedomStrategyDesc" = "Establece la estrategia de salida de la red en el Protocolo Freedom." +"xrayConfigRoutingStrategy" = "Configurar Estrategia de Enrutamiento de Dominios" +"xrayConfigRoutingStrategyDesc" = "Establece la estrategia general de enrutamiento para la resolución de DNS." +"xrayConfigTorrent" = "Prohibir Uso de BitTorrent" +"xrayConfigTorrentDesc" = "Cambia la plantilla de configuración para evitar el uso de BitTorrent por parte de los usuarios." +"xrayConfigPrivateIp" = "Prohibir Conexiones a Rangos de IP Privadas" +"xrayConfigPrivateIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP privadas." +"xrayConfigAds" = "Bloquear Anuncios" +"xrayConfigAdsDesc" = "Cambia la plantilla de configuración para bloquear anuncios." +"xrayConfigFamily" = "Bloquear Malware y Contenido para Adultos" +"xrayConfigFamilyDesc" = "Resolvedores de DNS para bloquear malware y contenido para adultos para protección familiar." +"xrayConfigSpeedtest" = "Bloquear Sitios Web de Pruebas de Velocidad" +"xrayConfigSpeedtestDesc" = "Cambia la plantilla de configuración para evitar la conexión a sitios web de pruebas de velocidad." +"xrayConfigIRIp" = "Desactivar Conexión a Rangos de IP de Irán" +"xrayConfigIRIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Irán." +"xrayConfigIRDomain" = "Desactivar Conexión a Dominios de Irán" +"xrayConfigIRDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de Irán." +"xrayConfigChinaIp" = "Desactivar Conexión a Rangos de IP de China" +"xrayConfigChinaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de China." +"xrayConfigChinaDomain" = "Desactivar Conexión a Dominios de China" +"xrayConfigChinaDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de China." +"xrayConfigRussiaIp" = "Desactivar Conexión a Rangos de IP de Rusia" +"xrayConfigRussiaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Rusia." +"xrayConfigRussiaDomain" = "Desactivar Conexión a Dominios de Rusia" +"xrayConfigRussiaDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de Rusia." +"xrayConfigDirectIRIp" = "Conexión Directa a Rangos de IP de Irán" +"xrayConfigDirectIRIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de Irán." +"xrayConfigDirectIRDomain" = "Conexión Directa a Dominios de Irán" +"xrayConfigDirectIRDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de Irán." +"xrayConfigDirectChinaIp" = "Conexión Directa a Rangos de IP de China" +"xrayConfigDirectChinaIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de China." +"xrayConfigDirectChinaDomain" = "Conexión Directa a Dominios de China" +"xrayConfigDirectChinaDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de China." +"xrayConfigDirectRussiaIp" = "Conexión Directa a Rangos de IP de Rusia" +"xrayConfigDirectRussiaIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de Rusia." +"xrayConfigDirectRussiaDomain" = "Conexión Directa a Dominios de Rusia" +"xrayConfigDirectRussiaDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de Rusia." +"xrayConfigGoogleIPv4" = "Usar IPv4 para Google" +"xrayConfigGoogleIPv4Desc" = "Agregar enrutamiento para que Google se conecte con IPv4." +"xrayConfigNetflixIPv4" = "Usar IPv4 para Netflix" +"xrayConfigNetflixIPv4Desc" = "Agregar enrutamiento para que Netflix se conecte con IPv4." +"xrayConfigGoogleWARP" = "Rutear Google a través de WARP." +"xrayConfigGoogleWARPDesc" = "Agregar enrutamiento para Google a través de WARP." +"xrayConfigOpenAIWARP" = "Rutear OpenAI (ChatGPT) a través de WARP." +"xrayConfigOpenAIWARPDesc" = "Agregar enrutamiento para OpenAI (ChatGPT) a través de WARP." +"xrayConfigNetflixWARP" = "Rutear Netflix a través de WARP." +"xrayConfigNetflixWARPDesc" = "Agregar enrutamiento para Netflix a través de WARP." +"xrayConfigSpotifyWARP" = "Rutear Spotify a través de WARP." +"xrayConfigSpotifyWARPDesc" = "Agregar enrutamiento para Spotify a través de WARP." +"xrayConfigIRWARP" = "Rutear dominios de Irán a través de WARP." +"xrayConfigIRWARPDesc" = "Agregar enrutamiento para dominios de Irán a través de WARP." +"xrayConfigInbounds" = "Configuración de Entradas" +"xrayConfigInboundsDesc" = "Cambia la plantilla de configuración para aceptar clientes específicos." +"xrayConfigOutbounds" = "Configuración de Salidas" +"xrayConfigOutboundsDesc" = "Cambia la plantilla de configuración para definir formas de salida para este servidor." +"xrayConfigRoutings" = "Configuración de Reglas de Enrutamiento" +"xrayConfigRoutingsDesc" = "Cambia la plantilla de configuración para definir reglas de enrutamiento para este servidor." +"manualLists" = "Listas Manuales" +"manualListsDesc" = "Por favor, utilice el formato de matriz JSON." +"manualBlockedIPs" = "Lista de IPs Bloqueadas" +"manualBlockedDomains" = "Lista de Dominios Bloqueados" +"manualDirectIPs" = "Lista de IPs Directas" +"manualDirectDomains" = "Lista de Dominios Directos" +"manualIPv4Domains" = "Lista de Dominios IPv4" +"manualWARPDomains" = "Lista de Dominios de WARP" + +[pages.settings.security] +"admin" = "Administrador" +"secret" = "Token Secreto" +"loginSecurity" = "Seguridad de Inicio de Sesión" +"loginSecurityDesc" = "Habilitar un paso adicional de seguridad para el inicio de sesión de usuarios." +"secretToken" = "Token Secreto" +"secretTokenDesc" = "Por favor, copia y guarda este token de forma segura en un lugar seguro. Este token es necesario para iniciar sesión y no se puede recuperar con la herramienta de comando x-ui." + +[pages.settings.toasts] +"modifySettings" = "Modificar Configuraciones " +"getSettings" = "Obtener Configuraciones " +"modifyUser" = "Modificar Usuario " +"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" + +[tgbot] +"keyboardClosed" = "❌ ¡Teclado personalizado cerrado!" +"noResult" = "❗ ¡Sin resultados!" +"noQuery" = "❌ ¡Consulta no encontrada! ¡Por favor utiliza el comando nuevamente!" +"wentWrong" = "❌ ¡Algo salió mal!" +"noIpRecord" = "❗ ¡Sin Registro de IP!" +"noInbounds" = "❗ ¡No se encontraron entradas!" +"unlimited" = "♾ Ilimitado" +"month" = "Mes" +"months" = "Meses" +"day" = "Día" +"days" = "Días" +"hours" = "Horas" +"unknown" = "Desconocido" +"inbounds" = "Entradas" +"clients" = "Clients" + +[tgbot.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" = "Buscar un correo electrónico de cliente:\r\n/usage [Email]\r\n \r\nBuscar entradas (con estadísticas de cliente):\r\n/inbound [Nota]" +"helpClientCommands" = "Para buscar estadísticas, simplemente usa el siguiente comando:\r\n \r\n/usage [UUID|Contraseña]\r\n \r\nUsa UUID para vmess/vless y Contraseña para Trojan." + +[tgbot.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" = "💻 Nombre del Host: {{ .Hostname }}\r\n" +"version" = "🚀 Versión de X-UI: {{ .Version }}\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" = "📋 Memoria del servidor: {{ .Current }}/{{ .Total }}\r\n" +"tcpCount" = "🔹 Conteo de TCP: {{ .Count }}\r\n" +"udpCount" = "🔸 Conteo de UDP: {{ .Count }}\r\n" +"traffic" = "🚦 Tráfico: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n" +"xrayStatus" = "ℹ️ Estado de Xray: {{ .State }}\r\n" +"username" = "👤 Nombre de usuario: {{ .Username }}\r\n" +"time" = "⏰ Hora: {{ .Time }}\r\n" +"inbound" = "📍 Inbound: {{ .Remark }}\r\n" +"port" = "🔌 Puerto: {{ .Port }}\r\n" +"expire" = "📅 Fecha de Vencimiento: {{ .Time }}\r\n" +"expireIn" = "📅 Vence en: {{ .Time }}\r\n" +"active" = "💡 Activo: ✅ Sí\r\n" +"inactive" = "💡 Activo: ❌ No\r\n" +"email" = "📧 Email: {{ .Email }}\r\n" +"upload" = "🔼 Subida: ↑{{ .Upload }}\r\n" +"download" = "🔽 Bajada: ↓{{ .Download }}\r\n" +"total" = "📊 Total: ↑↓{{ .UpDown }} / {{ .Total }}\r\n" +"TGUser" = "👤 Usuario de Telegram: {{ .TelegramID }}\r\n" +"exhaustedMsg" = "🚨 Agotado {{ .Type }}: \r\n" +"exhaustedCount" = "🚨 Cantidad de Agotados {{ .Type }}: \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" + +[tgbot.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?" +"dbBackup" = "Obtener Copia de Seguridad de BD" +"serverUsage" = "Uso del Servidor" +"getInbounds" = "Obtener Entradas" +"depleteSoon" = "Pronto se Agotará" +"clientUsage" = "Obtener Uso" +"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" = "📅 Reiniciar Días de Vencimiento" +"ipLog" = "🔢 Registro de IP" +"ipLimit" = "🔢 Límite de IP" +"setTGUser" = "👤 Establecer Usuario de Telegram" +"toggle" = "🔘 Habilitar / Deshabilitar" + +[tgbot.answers] +"errorOperation" = "❗ Error en la Operación." +"getInboundsFailed" = "❌ Error al obtener las entradas" +"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." +"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 ID de usuario de Telegram en su(s) configuración(es).\r\n\r\nSu ID de usuario: {{ .TgUserID }}" +"askToAddUserName" = "¡No se encuentra su configuración!\r\nPor favor, pídale a su administrador que use su nombre de usuario o ID de usuario de Telegram en su(s) configuración(es).\r\n\r\nSu nombre de usuario: @{{ .TgUserName }}\r\n\r\nSu ID de usuario: {{ .TgUserID }}"