♻️ refactor: Refactoring and adding multiple features

This commit is contained in:
web
2025-08-05 06:42:39 -07:00
committed by speakeloudest
parent 5a2fa2e937
commit 47d19d1b44
106 changed files with 6893 additions and 4604 deletions
+4 -11
View File
@@ -1,32 +1,25 @@
{
"ADS Config": "Configuración de ADS",
"Announcement Management": "Gestión de Anuncios",
"Apple": "ID de Apple",
"Application Management": "Gestión de Aplicaciones",
"Auth Control": "Control de Autenticación",
"Coupon Management": "Gestión de Cupones",
"Dashboard": "Tablero",
"Device": "Dispositivo",
"Document Management": "Gestión de Documentos",
"Email": "Correo electrónico",
"Facebook": "Facebook",
"Finance": "Finanzas",
"General": "General",
"GitHub": "GitHub",
"Google": "Google",
"Order Management": "Gestión de Pedidos",
"Payment Config": "Configuración de Pago",
"Phone Number": "Número de Teléfono",
"Product Management": "Gestión de Productos",
"Protocol Management": "Gestión de Protocolos",
"Rule Management": "Gestión de Reglas",
"Server": "Servidor",
"Server Management": "Gestión de Servidores",
"Settings": "Configuración",
"Subscribe Management": "Gestión de Suscripciones",
"Subscribe Config": "Configuración de Suscripción",
"System Config": "Configuración del Sistema",
"System Management": "Gestión del Sistema",
"System Tool": "Herramienta del sistema",
"Telegram": "Telegram",
"Ticket Management": "Gestión de Tickets",
"Twitter": "Twitter",
"User": "Usuario",
"User Detail": "Detalle del Usuario",
"User Management": "Gestión de Usuarios"
+160
View File
@@ -0,0 +1,160 @@
{
"actions": "acciones",
"app": {
"appDownloadURL": "URL de Descarga de la App",
"appIcon": "Ícono de la App",
"appList": "Lista de Aplicaciones",
"appName": "Nombre de la App",
"backupDomains": "Lista de Dominios de Respaldo",
"backupDomainsDescription": "Lista de dominios de respaldo para la resolución de dominios, un dominio por línea",
"batchDelete": "Eliminar en Lote",
"cancel": "Cancelar",
"communicationKey": "Clave de Comunicación",
"communicationKeyDescription": "Clave utilizada para la comunicación con el cliente",
"config": "Configuración",
"configApp": "Configuración de la Aplicación",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Eliminación",
"create": "Crear",
"createApp": "Crear App",
"createSuccess": "Creado exitosamente",
"defaultVersion": "Versión Predeterminada",
"delete": "Eliminar",
"deleteWarning": "Esta acción no se puede deshacer",
"describeDescription": "Se utiliza para describir la aplicación, se muestra en la lista de aplicaciones",
"description": "Descripción",
"downloadLink": "Enlace de Descarga",
"edit": "Editar",
"editApp": "Editar App",
"encryption": "Método de Cifrado",
"encryptionDescription": "Elige el método de cifrado para la comunicación con el cliente. Si se selecciona, el cliente usará este método para comunicarse con el servidor",
"nameDescription": "Nombre de la aplicación, se muestra en la lista de aplicaciones",
"platform": "Plataforma",
"selectApp": "Seleccionar Aplicación",
"selectAppDescription": "Selecciona la aplicación para configurar, todos los ajustes se aplicarán a la aplicación seleccionada",
"startupPicture": "Imagen de Inicio",
"startupPictureDescription": "Imagen de inicio, admite imágenes de red y locales. Para imágenes de red, ingrese la URL completa de la imagen",
"startupPicturePreview": "Vista Previa de la Imagen de Inicio",
"startupPictureSkip": "Tiempo de Salto de la Imagen de Inicio",
"startupPictureSkipDescription": "Tiempo de visualización de la imagen de inicio en segundos, ingrese 0 para no mostrar",
"subscriptionProtocol": "Protocolo de Suscripción",
"updateSuccess": "Actualizado exitosamente",
"version": "Versión"
},
"cancel": "Cancelar",
"config": {
"singleSubscriptionMode": "Modo de Suscripción Única",
"subscriptionDomain": "Dominio de Suscripción",
"subscriptionDomainDescription": "Usado para suscripción; deje en blanco para usar el dominio del sitio",
"subscriptionDomainPlaceholder": "Ingrese el dominio de suscripción, uno por línea",
"subscriptionPath": "Ruta de Suscripción",
"subscriptionPathDescription": "Usado para suscripción; asegúrese de reiniciar el sistema después de la modificación para un rendimiento óptimo",
"subscriptionPathPlaceholder": "Ingrese",
"updateSuccess": "Actualizado con éxito",
"wildcardResolution": "Resolución de Comodín",
"wildcardResolutionDescription": "Usado para suscripción"
},
"confirm": "Confirmar",
"confirmDelete": "¿Estás seguro de que deseas eliminar?",
"copy": "Copiar",
"copySuccess": "Copiado exitosamente",
"create": "Crear",
"createSubscribe": "Crear suscripción",
"createSuccess": "Creación exitosa",
"delete": "Eliminar",
"deleteSuccess": "Eliminación exitosa",
"deleteWarning": "Después de eliminar, los datos no se podrán recuperar. Proceda con precaución.",
"deviceLimit": "Número de dispositivos/unidad",
"edit": "editar",
"editSubscribe": "Editar suscripción",
"form": {
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"NoLimit": "Sin Límite",
"Year": "Año",
"annualReset": "Reinicio Anual",
"basic": "Básico",
"cancel": "Cancelar",
"confirm": "Confirmar",
"deductionRatio": "Configuración de Deducción Automática/Manual",
"deductionRatioDescription": "Utilizado para deducciones. Por defecto, el sistema adopta un algoritmo de cálculo automático. Cuando se proporciona un ratio manual, el sistema calcula proporciones basadas en el tiempo y el ratio de tráfico, asegurando que el total sea igual al 100%.",
"description": "Descripción",
"deviceLimit": "Límite de dispositivos",
"discount": "Descuento",
"discountDescription": "Descuento basado en el precio unitario",
"discountMonths": "Meses",
"discountPercent": "Porcentaje de descuento",
"discount_price": "Precio con descuento",
"duration": "Duración (meses)",
"groupId": "Grupo de Suscripción",
"inventory": "Límite de Suscripción",
"monthlyReset": "Reinicio Mensual",
"name": "Nombre",
"noLimit": "Sin límite",
"noReset": "Sin Reinicio",
"pricing": "Precios",
"purchaseWithDiscount": "Permitir Deducción",
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la funcionalidad de cancelación de suscripción. Después de la activación, el sistema realizará el procesamiento de deducción según las reglas y proporciones configuradas, y el valor restante se devolverá al saldo",
"quota": "Cantidad máxima de compra",
"renewalReset": "Reinicio por Renovación",
"renewalResetDescription": "Reiniciar ciclo al renovar",
"replacement": "Precio de reposición (cada vez)",
"resetCycle": "Ciclo de Reinicio",
"resetOn1st": "Reiniciar el día 1",
"selectResetCycle": "Por favor, seleccione un ciclo de reinicio",
"selectSubscribeGroup": "Por favor seleccione un grupo de suscripción",
"selectUnitTime": "Por favor seleccione la unidad de tiempo",
"server": "Servidor",
"serverGroup": "Grupo de servidores",
"servers": "Servidores",
"speedLimit": "Límite de velocidad ",
"traffic": "Tráfico",
"unitPrice": "Precio unitario",
"unitTime": "Unidad de tiempo"
},
"group": {
"actions": "Acciones",
"cancel": "Cancelar",
"confirm": "Confirmar",
"confirmDelete": "¿Confirmar eliminación?",
"create": "Crear",
"createSubscribeGroup": "Crear nuevo grupo de suscripción",
"createSuccess": "Creación exitosa",
"delete": "Eliminar",
"deleteSuccess": "Eliminación exitosa",
"deleteWarning": "Los datos no se pueden recuperar después de la eliminación, por favor opere con precaución.",
"description": "Descripción",
"edit": "Editar",
"editSubscribeGroup": "Editar grupo de suscripción",
"form": {
"cancel": "Cancelar",
"confirm": "Confirmar",
"description": "Descripción",
"name": "Nombre"
},
"name": "Nombre",
"title": "Lista de grupos de suscripción",
"updateSuccess": "Actualización exitosa",
"updatedAt": "Fecha de actualización"
},
"inventory": "Límite de Suscripción",
"name": "Nombre",
"quota": "Límite de compra/vez",
"replacement": "Restablecer precio/vez",
"sell": "venta",
"show": "Mostrar",
"sold": "Conteo de Suscripciones",
"subscribe": "Suscribirse",
"subscribeGroup": "Suscribirse al grupo",
"tabs": {
"subscribe": "Suscribirse",
"subscribeApp": "Configuración de la App",
"subscribeConfig": "Configuración de Suscripción",
"subscribeGroup": "Grupo de suscripción"
},
"traffic": "tráfico",
"unitPrice": "Precio Unitario",
"updateSuccess": "Actualización exitosa"
}
+74 -146
View File
@@ -1,161 +1,89 @@
{
"actions": "acciones",
"app": {
"appDownloadURL": "URL de Descarga de la App",
"appIcon": "Ícono de la App",
"appList": "Lista de Aplicaciones",
"appName": "Nombre de la App",
"backupDomains": "Lista de Dominios de Respaldo",
"backupDomainsDescription": "Lista de dominios de respaldo para la resolución de dominios, un dominio por línea",
"batchDelete": "Eliminar en Lote",
"actions": {
"cancel": "Cancelar",
"communicationKey": "Clave de Comunicación",
"communicationKeyDescription": "Clave utilizada para la comunicación con el cliente",
"config": "Configuración",
"configApp": "Configuración de la Aplicación",
"confirm": "Confirmar",
"confirmDelete": "Confirmar Eliminación",
"create": "Crear",
"createApp": "Crear App",
"createSuccess": "Creado exitosamente",
"defaultVersion": "Versión Predeterminada",
"delete": "Eliminar",
"deleteWarning": "Esta acción no se puede deshacer",
"describeDescription": "Se utiliza para describir la aplicación, se muestra en la lista de aplicaciones",
"description": "Descripción",
"downloadLink": "Enlace de Descarga",
"edit": "Editar",
"editApp": "Editar App",
"encryption": "Método de Cifrado",
"encryptionDescription": "Elige el método de cifrado para la comunicación con el cliente. Si se selecciona, el cliente usará este método para comunicarse con el servidor",
"nameDescription": "Nombre de la aplicación, se muestra en la lista de aplicaciones",
"platform": "Plataforma",
"selectApp": "Seleccionar Aplicación",
"selectAppDescription": "Selecciona la aplicación para configurar, todos los ajustes se aplicarán a la aplicación seleccionada",
"startupPicture": "Imagen de Inicio",
"startupPictureDescription": "Imagen de inicio, admite imágenes de red y locales. Para imágenes de red, ingrese la URL completa de la imagen",
"startupPicturePreview": "Vista Previa de la Imagen de Inicio",
"startupPictureSkip": "Tiempo de Salto de la Imagen de Inicio",
"startupPictureSkipDescription": "Tiempo de visualización de la imagen de inicio en segundos, ingrese 0 para no mostrar",
"subscriptionProtocol": "Protocolo de Suscripción",
"updateSuccess": "Actualizado exitosamente",
"version": "Versión"
"save": "Guardar",
"saveTemplate": "Guardar Plantilla"
},
"cancel": "Cancelar",
"config": {
"description": "Gestionar la configuración del sistema de suscripciones",
"restrictUserAgent": "Restricción de User-Agent",
"restrictUserAgentDescription": "Habilitar restricciones de acceso basadas en User-Agent",
"singleSubscriptionMode": "Modo de Suscripción Única",
"singleSubscriptionModeDescription": "Cuando está habilitado, todas las suscripciones de usuarios se convertirán en saldo",
"singleSubscriptionModeDescription": "Limitar a los usuarios a una suscripción activa. Las suscripciones existentes no se ven afectadas",
"subscriptionDomain": "Dominio de Suscripción",
"subscriptionDomainDescription": "Usado para suscripción; deje en blanco para usar el dominio del sitio",
"subscriptionDomainPlaceholder": "Ingrese el dominio de suscripción, uno por línea",
"subscriptionDomainDescription": "Dominio personalizado para enlaces de suscripción",
"subscriptionDomainPlaceholder": "Ingresa el dominio de suscripción, uno por línea",
"subscriptionPath": "Ruta de Suscripción",
"subscriptionPathDescription": "Usado para suscripción; asegúrese de reiniciar el sistema después de la modificación para un rendimiento óptimo",
"subscriptionPathPlaceholder": "Ingrese",
"updateSuccess": "Actualizado con éxito",
"subscriptionPathDescription": "Ruta personalizada para los puntos finales de suscripción (mejor rendimiento después del reinicio del sistema)",
"subscriptionPathPlaceholder": "Ingresa la ruta de suscripción",
"title": "Configuración de Suscripción",
"updateError": "Error al actualizar",
"updateSuccess": "Configuraciones actualizadas con éxito",
"userAgentWhitelist": "Lista blanca de User-Agent",
"userAgentWhitelistDescription": "User-Agents permitidos para acceso a la suscripción, uno por línea. Las plantillas integradas se incluyen automáticamente en la lista blanca",
"userAgentWhitelistPlaceholder": "Ingresa los User-Agents permitidos, uno por línea",
"wildcardResolution": "Resolución de Comodín",
"wildcardResolutionDescription": "Usado para suscripción"
"wildcardResolutionDescription": "Habilitar la resolución de dominio comodín para suscripciones"
},
"confirm": "Confirmar",
"confirmDelete": "¿Estás seguro de que deseas eliminar?",
"copy": "Copiar",
"copySuccess": "Copiado exitosamente",
"create": "Crear",
"createSubscribe": "Crear suscripción",
"createSuccess": "Creación exitosa",
"delete": "Eliminar",
"deleteSuccess": "Eliminación exitosa",
"deleteWarning": "Después de eliminar, los datos no se podrán recuperar. Proceda con precaución.",
"deviceLimit": "Número de dispositivos/unidad",
"edit": "editar",
"editSubscribe": "Editar suscripción",
"form": {
"Day": "Día",
"Hour": "Hora",
"Minute": "Minuto",
"Month": "Mes",
"NoLimit": "Sin Límite",
"Year": "Año",
"annualReset": "Reinicio Anual",
"basic": "Básico",
"cancel": "Cancelar",
"confirm": "Confirmar",
"deductionRatio": "Configuración de Deducción Automática/Manual",
"deductionRatioDescription": "Utilizado para deducciones. Por defecto, el sistema adopta un algoritmo de cálculo automático. Cuando se proporciona un ratio manual, el sistema calcula proporciones basadas en el tiempo y el ratio de tráfico, asegurando que el total sea igual al 100%.",
"description": "Descripción",
"deviceLimit": "Límite de dispositivos",
"discount": "Descuento",
"discountDescription": "Descuento basado en el precio unitario",
"discountMonths": "Meses",
"discountPercent": "Porcentaje de descuento",
"discount_price": "Precio con descuento",
"duration": "Duración (meses)",
"groupId": "Grupo de Suscripción",
"inventory": "Límite de Suscripción",
"monthlyReset": "Reinicio Mensual",
"name": "Nombre",
"noLimit": "Sin límite",
"noReset": "Sin Reinicio",
"pricing": "Precios",
"purchaseWithDiscount": "Permitir Deducción",
"purchaseWithDiscountDescription": "Habilitar o deshabilitar la funcionalidad de cancelación de suscripción. Después de la activación, el sistema realizará el procesamiento de deducción según las reglas y proporciones configuradas, y el valor restante se devolverá al saldo",
"quota": "Cantidad máxima de compra",
"renewalReset": "Reinicio por Renovación",
"renewalResetDescription": "Reiniciar ciclo al renovar",
"replacement": "Precio de reposición (cada vez)",
"resetCycle": "Ciclo de Reinicio",
"resetOn1st": "Reiniciar el día 1",
"selectResetCycle": "Por favor, seleccione un ciclo de reinicio",
"selectSubscribeGroup": "Por favor seleccione un grupo de suscripción",
"selectUnitTime": "Por favor seleccione la unidad de tiempo",
"server": "Servidor",
"serverGroup": "Grupo de servidores",
"servers": "Servidores",
"speedLimit": "Límite de velocidad ",
"traffic": "Tráfico",
"unitPrice": "Precio unitario",
"unitTime": "Unidad de tiempo"
"description": "Configurar ajustes de suscripción y plantillas de cliente",
"messages": {
"noClients": "Sin Plantillas de Cliente",
"noClientsDescription": "Aún no hay plantillas de cliente configuradas. Agrega tu primera plantilla para comenzar."
},
"group": {
"actions": "Acciones",
"cancel": "Cancelar",
"confirm": "Confirmar",
"confirmDelete": "¿Confirmar eliminación?",
"create": "Crear",
"createSubscribeGroup": "Crear nuevo grupo de suscripción",
"createSuccess": "Creación exitosa",
"delete": "Eliminar",
"deleteSuccess": "Eliminación exitosa",
"deleteWarning": "Los datos no se pueden recuperar después de la eliminación, por favor opere con precaución.",
"description": "Descripción",
"edit": "Editar",
"editSubscribeGroup": "Editar grupo de suscripción",
"form": {
"cancel": "Cancelar",
"confirm": "Confirmar",
"description": "Descripción",
"name": "Nombre"
"protocol": {
"clients": {
"clash": {
"features": "Gran ecosistema, reglas completas, comunidad activa"
},
"egern": {
"features": "Cliente moderno para iOS, excelente rendimiento"
},
"hiddify": {
"features": "Multiplataforma, protocolos completos, amigable para principiantes"
},
"loon": {
"features": "Cliente avanzado para iOS, reglas ricas, interfaz hermosa"
},
"netch": {
"features": "Cliente proxy enfocado en juegos"
},
"quantumult": {
"features": "Cliente avanzado para iOS, reglas flexibles, scripts ricos"
},
"shadowrocket": {
"features": "Cliente clásico para iOS, configuración flexible"
},
"singbox": {
"features": "Último núcleo, GUI oficial, soporte multiplataforma"
},
"stash": {
"features": "Interfaz móvil moderna, protocolos completos"
},
"surfboard": {
"features": "Gratis, desarrollo activo, interfaz moderna"
},
"surge": {
"features": "Herramienta premium para iOS/Mac, características poderosas"
},
"v2box": {
"features": "Cliente V2Ray fácil de usar"
},
"v2rayn": {
"features": "Cliente popular para Windows, rico en características"
},
"v2rayng": {
"features": "Cliente popular para Android, ligero"
}
},
"name": "Nombre",
"title": "Lista de grupos de suscripción",
"updateSuccess": "Actualización exitosa",
"updatedAt": "Fecha de actualización"
"description": "Gestionar plantillas de configuración de suscripción para clientes proxy",
"features": "Características Clave",
"platforms": "Plataformas",
"subscribeTemplate": "Configuración de Plantilla de Suscripción",
"templateContent": "Contenido de la Plantilla",
"templatePlaceholder": "Ingresa la plantilla de configuración del cliente...",
"title": "Plantillas de Suscripción de Cliente"
},
"inventory": "Límite de Suscripción",
"name": "Nombre",
"quota": "Límite de compra/vez",
"replacement": "Restablecer precio/vez",
"sell": "venta",
"show": "Mostrar",
"sold": "Conteo de Suscripciones",
"subscribe": "Suscribirse",
"subscribeGroup": "Suscribirse al grupo",
"tabs": {
"subscribe": "Suscribirse",
"subscribeApp": "Configuración de la App",
"subscribeConfig": "Configuración de Suscripción",
"subscribeGroup": "Grupo de suscripción"
},
"traffic": "tráfico",
"unitPrice": "Precio Unitario",
"updateSuccess": "Actualización exitosa"
"title": "Gestión de Suscripciones"
}