This commit is contained in:
Owen
2025-10-04 18:36:44 -07:00
parent 3123f858bb
commit c2c907852d
320 changed files with 35785 additions and 2984 deletions

View File

@@ -67,7 +67,7 @@
"siteDocker": "Expandir para detalles de despliegue de Docker",
"toggle": "Cambiar",
"dockerCompose": "Componer Docker",
"dockerRun": "Docker Run",
"dockerRun": "Ejecutar Docker",
"siteLearnLocal": "Los sitios locales no tienen túnel, aprender más",
"siteConfirmCopy": "He copiado la configuración",
"searchSitesProgress": "Buscar sitios...",
@@ -168,6 +168,9 @@
"siteSelect": "Seleccionar sitio",
"siteSearch": "Buscar sitio",
"siteNotFound": "Sitio no encontrado.",
"selectCountry": "Seleccionar país",
"searchCountries": "Buscar países...",
"noCountryFound": "Ningún país encontrado.",
"siteSelectionDescription": "Este sitio proporcionará conectividad al objetivo.",
"resourceType": "Tipo de recurso",
"resourceTypeDescription": "Determina cómo quieres acceder a tu recurso",
@@ -814,7 +817,7 @@
"redirectUrl": "URL de redirección",
"redirectUrlAbout": "Acerca de la URL de redirección",
"redirectUrlAboutDescription": "Esta es la URL a la que los usuarios serán redireccionados después de la autenticación. Necesitas configurar esta URL en la configuración de tu proveedor de identidad.",
"pangolinAuth": "Auth - Pangolin",
"pangolinAuth": "Autenticación - Pangolin",
"verificationCodeLengthRequirements": "Tu código de verificación debe tener 8 caracteres.",
"errorOccurred": "Se ha producido un error",
"emailErrorVerify": "No se pudo verificar el email:",
@@ -914,8 +917,6 @@
"idpConnectingToFinished": "Conectado",
"idpErrorConnectingTo": "Hubo un problema al conectar con {name}. Por favor, póngase en contacto con su administrador.",
"idpErrorNotFound": "IdP no encontrado",
"idpGoogleAlt": "Google",
"idpAzureAlt": "Azure",
"inviteInvalid": "Invitación inválida",
"inviteInvalidDescription": "El enlace de invitación no es válido.",
"inviteErrorWrongUser": "La invitación no es para este usuario",
@@ -1219,7 +1220,7 @@
"billing": "Facturación",
"orgBillingDescription": "Gestiona tu información de facturación y suscripciones",
"github": "GitHub",
"pangolinHosted": "Pangolin Hosted",
"pangolinHosted": "Pangolin Alojado",
"fossorial": "Fossorial",
"completeAccountSetup": "Completar configuración de cuenta",
"completeAccountSetupDescription": "Establece tu contraseña para comenzar",
@@ -1257,6 +1258,48 @@
"domainPickerSubdomain": "Subdominio: {subdomain}",
"domainPickerNamespace": "Espacio de nombres: {namespace}",
"domainPickerShowMore": "Mostrar más",
"regionSelectorTitle": "Seleccionar Región",
"regionSelectorInfo": "Seleccionar una región nos ayuda a brindar un mejor rendimiento para tu ubicación. No tienes que estar en la misma región que tu servidor.",
"regionSelectorPlaceholder": "Elige una región",
"regionSelectorComingSoon": "Próximamente",
"billingLoadingSubscription": "Cargando suscripción...",
"billingFreeTier": "Nivel Gratis",
"billingWarningOverLimit": "Advertencia: Has excedido uno o más límites de uso. Tus sitios no se conectarán hasta que modifiques tu suscripción o ajustes tu uso.",
"billingUsageLimitsOverview": "Descripción general de los límites de uso",
"billingMonitorUsage": "Monitorea tu uso comparado con los límites configurados. Si necesitas que aumenten los límites, contáctanos a soporte@fossorial.io.",
"billingDataUsage": "Uso de datos",
"billingOnlineTime": "Tiempo en línea del sitio",
"billingUsers": "Usuarios activos",
"billingDomains": "Dominios activos",
"billingRemoteExitNodes": "Nodos autogestionados activos",
"billingNoLimitConfigured": "No se ha configurado ningún límite",
"billingEstimatedPeriod": "Período de facturación estimado",
"billingIncludedUsage": "Uso incluido",
"billingIncludedUsageDescription": "Uso incluido con su plan de suscripción actual",
"billingFreeTierIncludedUsage": "Permisos de uso del nivel gratuito",
"billingIncluded": "incluido",
"billingEstimatedTotal": "Total Estimado:",
"billingNotes": "Notas",
"billingEstimateNote": "Esta es una estimación basada en tu uso actual.",
"billingActualChargesMayVary": "Los cargos reales pueden variar.",
"billingBilledAtEnd": "Se te facturará al final del período de facturación.",
"billingModifySubscription": "Modificar Suscripción",
"billingStartSubscription": "Iniciar Suscripción",
"billingRecurringCharge": "Cargo Recurrente",
"billingManageSubscriptionSettings": "Administra la configuración y preferencias de tu suscripción",
"billingNoActiveSubscription": "No tienes una suscripción activa. Inicia tu suscripción para aumentar los límites de uso.",
"billingFailedToLoadSubscription": "Error al cargar la suscripción",
"billingFailedToLoadUsage": "Error al cargar el uso",
"billingFailedToGetCheckoutUrl": "Error al obtener la URL de pago",
"billingPleaseTryAgainLater": "Por favor, inténtelo de nuevo más tarde.",
"billingCheckoutError": "Error de pago",
"billingFailedToGetPortalUrl": "Error al obtener la URL del portal",
"billingPortalError": "Error del portal",
"billingDataUsageInfo": "Se le cobran todos los datos transferidos a través de sus túneles seguros cuando se conectan a la nube. Esto incluye tanto tráfico entrante como saliente a través de todos sus sitios. Cuando alcance su límite, sus sitios se desconectarán hasta que actualice su plan o reduzca el uso. Los datos no se cargan cuando se usan nodos.",
"billingOnlineTimeInfo": "Se te cobrará en función del tiempo que tus sitios permanezcan conectados a la nube. Por ejemplo, 44.640 minutos equivale a un sitio que funciona 24/7 durante un mes completo. Cuando alcance su límite, sus sitios se desconectarán hasta que mejore su plan o reduzca el uso. No se cargará el tiempo al usar nodos.",
"billingUsersInfo": "Se te cobra por cada usuario en tu organización. La facturación se calcula diariamente según la cantidad de cuentas de usuario activas en tu organización.",
"billingDomainInfo": "Se te cobra por cada dominio en tu organización. La facturación se calcula diariamente según la cantidad de cuentas de dominio activas en tu organización.",
"billingRemoteExitNodesInfo": "Se te cobra por cada nodo gestionado en tu organización. La facturación se calcula diariamente según la cantidad de nodos gestionados activos en tu organización.",
"domainNotFound": "Dominio no encontrado",
"domainNotFoundDescription": "Este recurso está deshabilitado porque el dominio ya no existe en nuestro sistema. Por favor, establece un nuevo dominio para este recurso.",
"failed": "Fallido",
@@ -1320,6 +1363,7 @@
"createDomainDnsPropagationDescription": "Los cambios de DNS pueden tardar un tiempo en propagarse a través de internet. Esto puede tardar desde unos pocos minutos hasta 48 horas, dependiendo de tu proveedor de DNS y la configuración de TTL.",
"resourcePortRequired": "Se requiere número de puerto para recursos no HTTP",
"resourcePortNotAllowed": "El número de puerto no debe establecerse para recursos HTTP",
"billingPricingCalculatorLink": "Calculadora de Precios",
"signUpTerms": {
"IAgreeToThe": "Estoy de acuerdo con los",
"termsOfService": "términos del servicio",
@@ -1368,6 +1412,41 @@
"addNewTarget": "Agregar nuevo destino",
"targetsList": "Lista de destinos",
"targetErrorDuplicateTargetFound": "Se encontró un destino duplicado",
"healthCheckHealthy": "Saludable",
"healthCheckUnhealthy": "No saludable",
"healthCheckUnknown": "Desconocido",
"healthCheck": "Chequeo de salud",
"configureHealthCheck": "Configurar Chequeo de Salud",
"configureHealthCheckDescription": "Configura la monitorización de salud para {target}",
"enableHealthChecks": "Activar Chequeos de Salud",
"enableHealthChecksDescription": "Controlar la salud de este objetivo. Puedes supervisar un punto final diferente al objetivo si es necesario.",
"healthScheme": "Método",
"healthSelectScheme": "Seleccionar método",
"healthCheckPath": "Ruta",
"healthHostname": "IP / Host",
"healthPort": "Puerto",
"healthCheckPathDescription": "La ruta para comprobar el estado de salud.",
"healthyIntervalSeconds": "Intervalo Saludable",
"unhealthyIntervalSeconds": "Intervalo No Saludable",
"IntervalSeconds": "Intervalo Saludable",
"timeoutSeconds": "Tiempo de Espera",
"timeIsInSeconds": "El tiempo está en segundos",
"retryAttempts": "Intentos de Reintento",
"expectedResponseCodes": "Códigos de respuesta esperados",
"expectedResponseCodesDescription": "Código de estado HTTP que indica un estado saludable. Si se deja en blanco, se considera saludable de 200 a 300.",
"customHeaders": "Cabeceras personalizadas",
"customHeadersDescription": "Nueva línea de cabeceras separada: Nombre de cabecera: valor",
"headersValidationError": "Los encabezados deben estar en el formato: Nombre de cabecera: valor.",
"saveHealthCheck": "Guardar Chequeo de Salud",
"healthCheckSaved": "Chequeo de Salud Guardado",
"healthCheckSavedDescription": "La configuración del chequeo de salud se ha guardado correctamente",
"healthCheckError": "Error en el Chequeo de Salud",
"healthCheckErrorDescription": "Ocurrió un error al guardar la configuración del chequeo de salud",
"healthCheckPathRequired": "Se requiere la ruta del chequeo de salud",
"healthCheckMethodRequired": "Se requiere el método HTTP",
"healthCheckIntervalMin": "El intervalo de comprobación debe ser de al menos 5 segundos",
"healthCheckTimeoutMin": "El tiempo de espera debe ser de al menos 1 segundo",
"healthCheckRetryMin": "Los intentos de reintento deben ser de al menos 1",
"httpMethod": "Método HTTP",
"selectHttpMethod": "Seleccionar método HTTP",
"domainPickerSubdomainLabel": "Subdominio",
@@ -1381,6 +1460,7 @@
"domainPickerEnterSubdomainToSearch": "Ingrese un subdominio para buscar y seleccionar entre dominios gratuitos disponibles.",
"domainPickerFreeDomains": "Dominios gratuitos",
"domainPickerSearchForAvailableDomains": "Buscar dominios disponibles",
"domainPickerNotWorkSelfHosted": "Nota: Los dominios gratuitos proporcionados no están disponibles para instancias autogestionadas por ahora.",
"resourceDomain": "Dominio",
"resourceEditDomain": "Editar dominio",
"siteName": "Nombre del sitio",
@@ -1463,6 +1543,72 @@
"autoLoginError": "Error de inicio de sesión automático",
"autoLoginErrorNoRedirectUrl": "No se recibió URL de redirección del proveedor de identidad.",
"autoLoginErrorGeneratingUrl": "Error al generar URL de autenticación.",
"remoteExitNodeManageRemoteExitNodes": "Administrar Nodos Autogestionados",
"remoteExitNodeDescription": "Administrar nodos para extender la conectividad de red",
"remoteExitNodes": "Nodes",
"searchRemoteExitNodes": "Buscar nodos...",
"remoteExitNodeAdd": "Añadir Nodo",
"remoteExitNodeErrorDelete": "Error al eliminar el nodo",
"remoteExitNodeQuestionRemove": "¿Está seguro de que desea eliminar el nodo {selectedNode} de la organización?",
"remoteExitNodeMessageRemove": "Una vez eliminado, el nodo ya no será accesible.",
"remoteExitNodeMessageConfirm": "Para confirmar, por favor escriba el nombre del nodo a continuación.",
"remoteExitNodeConfirmDelete": "Confirmar eliminar nodo",
"remoteExitNodeDelete": "Eliminar Nodo",
"sidebarRemoteExitNodes": "Nodes",
"remoteExitNodeCreate": {
"title": "Crear Nodo",
"description": "Crear un nuevo nodo para extender la conectividad de red",
"viewAllButton": "Ver todos los nodos",
"strategy": {
"title": "Estrategia de Creación",
"description": "Elija esto para configurar manualmente su nodo o generar nuevas credenciales.",
"adopt": {
"title": "Adoptar Nodo",
"description": "Elija esto si ya tiene las credenciales para el nodo."
},
"generate": {
"title": "Generar Claves",
"description": "Elija esto si desea generar nuevas claves para el nodo"
}
},
"adopt": {
"title": "Adoptar Nodo Existente",
"description": "Introduzca las credenciales del nodo existente que desea adoptar",
"nodeIdLabel": "ID del nodo",
"nodeIdDescription": "El ID del nodo existente que desea adoptar",
"secretLabel": "Secreto",
"secretDescription": "La clave secreta del nodo existente",
"submitButton": "Adoptar Nodo"
},
"generate": {
"title": "Credenciales Generadas",
"description": "Utilice estas credenciales generadas para configurar su nodo",
"nodeIdTitle": "ID del nodo",
"secretTitle": "Secreto",
"saveCredentialsTitle": "Agregar Credenciales a la Configuración",
"saveCredentialsDescription": "Agrega estas credenciales a tu archivo de configuración del nodo Pangolin autogestionado para completar la conexión.",
"submitButton": "Crear Nodo"
},
"validation": {
"adoptRequired": "El ID del nodo y el secreto son necesarios al adoptar un nodo existente"
},
"errors": {
"loadDefaultsFailed": "Falló al cargar los valores predeterminados",
"defaultsNotLoaded": "Valores predeterminados no cargados",
"createFailed": "Error al crear el nodo"
},
"success": {
"created": "Nodo creado correctamente"
}
},
"remoteExitNodeSelection": "Selección de nodo",
"remoteExitNodeSelectionDescription": "Seleccione un nodo a través del cual enrutar el tráfico para este sitio local",
"remoteExitNodeRequired": "Un nodo debe ser seleccionado para sitios locales",
"noRemoteExitNodesAvailable": "No hay nodos disponibles",
"noRemoteExitNodesAvailableDescription": "No hay nodos disponibles para esta organización. Crea un nodo primero para usar sitios locales.",
"exitNode": "Nodo de Salida",
"country": "País",
"rulesMatchCountry": "Actualmente basado en IP de origen",
"managedSelfHosted": {
"title": "Autogestionado",
"description": "Servidor Pangolin autoalojado más fiable y de bajo mantenimiento con campanas y silbidos extra",
@@ -1501,11 +1647,53 @@
},
"internationaldomaindetected": "Dominio Internacional detectado",
"willbestoredas": "Se almacenará como:",
"roleMappingDescription": "Determinar cómo se asignan los roles a los usuarios cuando se registran cuando está habilitada la provisión automática.",
"selectRole": "Seleccione un rol",
"roleMappingExpression": "Expresión",
"selectRolePlaceholder": "Elija un rol",
"selectRoleDescription": "Seleccione un rol para asignar a todos los usuarios de este proveedor de identidad",
"roleMappingExpressionDescription": "Introduzca una expresión JMESPath para extraer información de rol del token de ID",
"idpTenantIdRequired": "El ID del cliente es obligatorio",
"invalidValue": "Valor inválido",
"idpTypeLabel": "Tipo de proveedor de identidad",
"roleMappingExpressionPlaceholder": "e.g., contiene(grupos, 'administrador') && 'administrador' || 'miembro'",
"idpGoogleConfiguration": "Configuración de Google",
"idpGoogleConfigurationDescription": "Configura tus credenciales de Google OAuth2",
"idpGoogleClientIdDescription": "Tu ID de cliente de Google OAuth2",
"idpGoogleClientSecretDescription": "Tu secreto de cliente de Google OAuth2",
"idpAzureConfiguration": "Configuración de Azure Entra ID",
"idpAzureConfigurationDescription": "Configure sus credenciales de Azure Entra ID OAuth2",
"idpTenantId": "Tenant ID",
"idpTenantIdPlaceholder": "su-inquilino-id",
"idpAzureTenantIdDescription": "Su ID de inquilino de Azure (encontrado en el resumen de Azure Active Directory)",
"idpAzureClientIdDescription": "Tu ID de Cliente de Registro de Azure App",
"idpAzureClientSecretDescription": "Tu Azure App Registro Cliente secreto",
"idpGoogleTitle": "Google",
"idpGoogleAlt": "Google",
"idpAzureTitle": "Azure Entra ID",
"idpAzureAlt": "Azure",
"idpGoogleConfigurationTitle": "Configuración de Google",
"idpAzureConfigurationTitle": "Configuración de Azure Entra ID",
"idpTenantIdLabel": "Tenant ID",
"idpAzureClientIdDescription2": "Tu ID de Cliente de Registro de Azure App",
"idpAzureClientSecretDescription2": "Tu Azure App Registro Cliente secreto",
"idpGoogleDescription": "Proveedor OAuth2/OIDC de Google",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"customHeaders": "Cabeceras personalizadas",
"customHeadersDescription": "Add custom headers to be sent when proxying requests. One per line in the format Header-Name: value",
"headersValidationError": "Los encabezados deben estar en el formato: Nombre de cabecera: valor.",
"subnet": "Subred",
"subnetDescription": "La subred para la configuración de red de esta organización.",
"authPage": "Página Auth",
"authPageDescription": "Configurar la página de autenticación de su organización",
"authPageDomain": "Auth Page Domain",
"noDomainSet": "Ningún dominio establecido",
"changeDomain": "Cambiar dominio",
"selectDomain": "Seleccionar dominio",
"restartCertificate": "Reiniciar certificado",
"editAuthPageDomain": "Editar dominio Auth Page",
"setAuthPageDomain": "Establecer dominio Auth Page",
"failedToFetchCertificate": "Error al obtener el certificado",
"failedToRestartCertificate": "Error al reiniciar el certificado",
"addDomainToEnableCustomAuthPages": "Añadir un dominio para habilitar páginas de autenticación personalizadas para su organización",
"selectDomainForOrgAuthPage": "Seleccione un dominio para la página de autenticación de la organización",
"domainPickerProvidedDomain": "Dominio proporcionado",
"domainPickerFreeProvidedDomain": "Dominio proporcionado gratis",
"domainPickerVerified": "Verificado",
@@ -1519,10 +1707,16 @@
"domainPickerInvalidSubdomainCannotMakeValid": "No se ha podido hacer válido \"{sub}\" para {domain}.",
"domainPickerSubdomainSanitized": "Subdominio saneado",
"domainPickerSubdomainCorrected": "\"{sub}\" fue corregido a \"{sanitized}\"",
"orgAuthSignInTitle": "Inicia sesión en tu organización",
"orgAuthChooseIdpDescription": "Elige tu proveedor de identidad para continuar",
"orgAuthNoIdpConfigured": "Esta organización no tiene ningún proveedor de identidad configurado. En su lugar puedes iniciar sesión con tu identidad de Pangolin.",
"orgAuthSignInWithPangolin": "Iniciar sesión con Pangolin",
"subscriptionRequiredToUse": "Se requiere una suscripción para utilizar esta función.",
"idpDisabled": "Los proveedores de identidad están deshabilitados.",
"orgAuthPageDisabled": "La página de autenticación de la organización está deshabilitada.",
"domainRestartedDescription": "Verificación de dominio reiniciada con éxito",
"resourceAddEntrypointsEditFile": "Editar archivo: config/traefik/traefik_config.yml",
"resourceExposePortsEditFile": "Editar archivo: docker-compose.yml",
"emailVerificationRequired": "Se requiere verificación de correo electrónico. Por favor, inicie sesión de nuevo a través de {dashboardUrl}/auth/login complete este paso. Luego, vuelva aquí.",
"twoFactorSetupRequired": "La configuración de autenticación de doble factor es requerida. Por favor, inicia sesión de nuevo a través de {dashboardUrl}/auth/login completa este paso. Luego, vuelve aquí.",
"rewritePath": "Rewrite Path",
"rewritePathDescription": "Optionally rewrite the path before forwarding to the target."
"twoFactorSetupRequired": "La configuración de autenticación de doble factor es requerida. Por favor, inicia sesión de nuevo a través de {dashboardUrl}/auth/login completa este paso. Luego, vuelve aquí."
}