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

@@ -168,6 +168,9 @@
"siteSelect": "Sélectionner un site",
"siteSearch": "Chercher un site",
"siteNotFound": "Aucun site trouvé.",
"selectCountry": "Sélectionnez un pays",
"searchCountries": "Recherchez des pays...",
"noCountryFound": "Aucun pays trouvé.",
"siteSelectionDescription": "Ce site fournira la connectivité à la cible.",
"resourceType": "Type de ressource",
"resourceTypeDescription": "Déterminer comment vous voulez accéder à votre ressource",
@@ -914,8 +917,6 @@
"idpConnectingToFinished": "Connecté",
"idpErrorConnectingTo": "Un problème est survenu lors de la connexion à {name}. Veuillez contacter votre administrateur.",
"idpErrorNotFound": "IdP introuvable",
"idpGoogleAlt": "Google",
"idpAzureAlt": "Azure",
"inviteInvalid": "Invitation invalide",
"inviteInvalidDescription": "Le lien d'invitation n'est pas valide.",
"inviteErrorWrongUser": "L'invitation n'est pas pour cet utilisateur",
@@ -1257,6 +1258,48 @@
"domainPickerSubdomain": "Sous-domaine : {subdomain}",
"domainPickerNamespace": "Espace de noms : {namespace}",
"domainPickerShowMore": "Afficher plus",
"regionSelectorTitle": "Sélectionner Région",
"regionSelectorInfo": "Sélectionner une région nous aide à offrir de meilleures performances pour votre localisation. Vous n'avez pas besoin d'être dans la même région que votre serveur.",
"regionSelectorPlaceholder": "Choisissez une région",
"regionSelectorComingSoon": "Bientôt disponible",
"billingLoadingSubscription": "Chargement de l'abonnement...",
"billingFreeTier": "Niveau gratuit",
"billingWarningOverLimit": "Attention : Vous avez dépassé une ou plusieurs limites d'utilisation. Vos sites ne se connecteront pas tant que vous n'avez pas modifié votre abonnement ou ajusté votre utilisation.",
"billingUsageLimitsOverview": "Vue d'ensemble des limites d'utilisation",
"billingMonitorUsage": "Surveillez votre consommation par rapport aux limites configurées. Si vous avez besoin d'une augmentation des limites, veuillez nous contacter à support@fossorial.io.",
"billingDataUsage": "Utilisation des données",
"billingOnlineTime": "Temps en ligne du site",
"billingUsers": "Utilisateurs actifs",
"billingDomains": "Domaines actifs",
"billingRemoteExitNodes": "Nœuds auto-hébergés actifs",
"billingNoLimitConfigured": "Aucune limite configurée",
"billingEstimatedPeriod": "Période de facturation estimée",
"billingIncludedUsage": "Utilisation incluse",
"billingIncludedUsageDescription": "Utilisation incluse dans votre plan d'abonnement actuel",
"billingFreeTierIncludedUsage": "Tolérances d'utilisation du niveau gratuit",
"billingIncluded": "inclus",
"billingEstimatedTotal": "Total estimé :",
"billingNotes": "Notes",
"billingEstimateNote": "Ceci est une estimation basée sur votre utilisation actuelle.",
"billingActualChargesMayVary": "Les frais réels peuvent varier.",
"billingBilledAtEnd": "Vous serez facturé à la fin de la période de facturation.",
"billingModifySubscription": "Modifier l'abonnement",
"billingStartSubscription": "Démarrer l'abonnement",
"billingRecurringCharge": "Frais récurrents",
"billingManageSubscriptionSettings": "Gérez les paramètres et préférences de votre abonnement",
"billingNoActiveSubscription": "Vous n'avez pas d'abonnement actif. Commencez votre abonnement pour augmenter les limites d'utilisation.",
"billingFailedToLoadSubscription": "Échec du chargement de l'abonnement",
"billingFailedToLoadUsage": "Échec du chargement de l'utilisation",
"billingFailedToGetCheckoutUrl": "Échec pour obtenir l'URL de paiement",
"billingPleaseTryAgainLater": "Veuillez réessayer plus tard.",
"billingCheckoutError": "Erreur de paiement",
"billingFailedToGetPortalUrl": "Échec pour obtenir l'URL du portail",
"billingPortalError": "Erreur du portail",
"billingDataUsageInfo": "Vous êtes facturé pour toutes les données transférées via vos tunnels sécurisés lorsque vous êtes connecté au cloud. Cela inclut le trafic entrant et sortant sur tous vos sites. Lorsque vous atteignez votre limite, vos sites se déconnecteront jusqu'à ce que vous mettiez à niveau votre plan ou réduisiez l'utilisation. Les données ne sont pas facturées lors de l'utilisation de nœuds.",
"billingOnlineTimeInfo": "Vous êtes facturé en fonction de la durée de connexion de vos sites au cloud. Par exemple, 44 640 minutes équivaut à un site fonctionnant 24/7 pendant un mois complet. Lorsque vous atteignez votre limite, vos sites se déconnecteront jusqu'à ce que vous mettiez à niveau votre forfait ou réduisiez votre consommation. Le temps n'est pas facturé lors de l'utilisation de nœuds.",
"billingUsersInfo": "Vous êtes facturé pour chaque utilisateur dans votre organisation. La facturation est calculée quotidiennement en fonction du nombre de comptes utilisateurs actifs dans votre organisation.",
"billingDomainInfo": "Vous êtes facturé pour chaque domaine dans votre organisation. La facturation est calculée quotidiennement en fonction du nombre de comptes de domaine actifs dans votre organisation.",
"billingRemoteExitNodesInfo": "Vous êtes facturé pour chaque nœud géré dans votre organisation. La facturation est calculée quotidiennement en fonction du nombre de nœuds gérés actifs dans votre organisation.",
"domainNotFound": "Domaine introuvable",
"domainNotFoundDescription": "Cette ressource est désactivée car le domaine n'existe plus dans notre système. Veuillez définir un nouveau domaine pour cette ressource.",
"failed": "Échec",
@@ -1320,6 +1363,7 @@
"createDomainDnsPropagationDescription": "Les modifications DNS peuvent mettre du temps à se propager sur internet. Cela peut prendre de quelques minutes à 48 heures selon votre fournisseur DNS et les réglages TTL.",
"resourcePortRequired": "Le numéro de port est requis pour les ressources non-HTTP",
"resourcePortNotAllowed": "Le numéro de port ne doit pas être défini pour les ressources HTTP",
"billingPricingCalculatorLink": "Calculateur de prix",
"signUpTerms": {
"IAgreeToThe": "Je suis d'accord avec",
"termsOfService": "les conditions d'utilisation",
@@ -1368,6 +1412,41 @@
"addNewTarget": "Ajouter une nouvelle cible",
"targetsList": "Liste des cibles",
"targetErrorDuplicateTargetFound": "Cible en double trouvée",
"healthCheckHealthy": "Sain",
"healthCheckUnhealthy": "En mauvaise santé",
"healthCheckUnknown": "Inconnu",
"healthCheck": "Vérification de l'état de santé",
"configureHealthCheck": "Configurer la vérification de l'état de santé",
"configureHealthCheckDescription": "Configurer la surveillance de la santé pour {target}",
"enableHealthChecks": "Activer les vérifications de santé",
"enableHealthChecksDescription": "Surveiller la vie de cette cible. Vous pouvez surveiller un point de terminaison différent de la cible si nécessaire.",
"healthScheme": "Méthode",
"healthSelectScheme": "Sélectionnez la méthode",
"healthCheckPath": "Chemin d'accès",
"healthHostname": "IP / Hôte",
"healthPort": "Port",
"healthCheckPathDescription": "Le chemin à vérifier pour le statut de santé.",
"healthyIntervalSeconds": "Intervalle sain",
"unhealthyIntervalSeconds": "Intervalle en mauvaise santé",
"IntervalSeconds": "Intervalle sain",
"timeoutSeconds": "Délai",
"timeIsInSeconds": "Le temps est exprimé en secondes",
"retryAttempts": "Tentatives de réessai",
"expectedResponseCodes": "Codes de réponse attendus",
"expectedResponseCodesDescription": "Code de statut HTTP indiquant un état de santé satisfaisant. Si non renseigné, 200-300 est considéré comme satisfaisant.",
"customHeaders": "En-têtes personnalisés",
"customHeadersDescription": "En-têtes séparés par une nouvelle ligne: En-nom: valeur",
"headersValidationError": "Les entêtes doivent être au format : Header-Name: valeur.",
"saveHealthCheck": "Sauvegarder la vérification de l'état de santé",
"healthCheckSaved": "Vérification de l'état de santé enregistrée",
"healthCheckSavedDescription": "La configuration de la vérification de l'état de santé a été enregistrée avec succès",
"healthCheckError": "Erreur de vérification de l'état de santé",
"healthCheckErrorDescription": "Une erreur s'est produite lors de l'enregistrement de la configuration de la vérification de l'état de santé",
"healthCheckPathRequired": "Le chemin de vérification de l'état de santé est requis",
"healthCheckMethodRequired": "La méthode HTTP est requise",
"healthCheckIntervalMin": "L'intervalle de vérification doit être d'au moins 5 secondes",
"healthCheckTimeoutMin": "Le délai doit être d'au moins 1 seconde",
"healthCheckRetryMin": "Les tentatives de réessai doivent être d'au moins 1",
"httpMethod": "Méthode HTTP",
"selectHttpMethod": "Sélectionnez la méthode HTTP",
"domainPickerSubdomainLabel": "Sous-domaine",
@@ -1381,6 +1460,7 @@
"domainPickerEnterSubdomainToSearch": "Entrez un sous-domaine pour rechercher et sélectionner parmi les domaines gratuits disponibles.",
"domainPickerFreeDomains": "Domaines gratuits",
"domainPickerSearchForAvailableDomains": "Rechercher des domaines disponibles",
"domainPickerNotWorkSelfHosted": "Remarque : Les domaines fournis gratuitement ne sont pas disponibles pour les instances auto-hébergées pour le moment.",
"resourceDomain": "Domaine",
"resourceEditDomain": "Modifier le domaine",
"siteName": "Nom du site",
@@ -1463,6 +1543,72 @@
"autoLoginError": "Erreur de connexion automatique",
"autoLoginErrorNoRedirectUrl": "Aucune URL de redirection reçue du fournisseur d'identité.",
"autoLoginErrorGeneratingUrl": "Échec de la génération de l'URL d'authentification.",
"remoteExitNodeManageRemoteExitNodes": "Gérer auto-hébergé",
"remoteExitNodeDescription": "Gérer les nœuds pour étendre votre connectivité réseau",
"remoteExitNodes": "Nodes",
"searchRemoteExitNodes": "Rechercher des nœuds...",
"remoteExitNodeAdd": "Ajouter un noeud",
"remoteExitNodeErrorDelete": "Erreur lors de la suppression du noeud",
"remoteExitNodeQuestionRemove": "Êtes-vous sûr de vouloir supprimer le noeud {selectedNode} de l'organisation ?",
"remoteExitNodeMessageRemove": "Une fois supprimé, le noeud ne sera plus accessible.",
"remoteExitNodeMessageConfirm": "Pour confirmer, veuillez saisir le nom du noeud ci-dessous.",
"remoteExitNodeConfirmDelete": "Confirmer la suppression du noeud",
"remoteExitNodeDelete": "Supprimer le noeud",
"sidebarRemoteExitNodes": "Nodes",
"remoteExitNodeCreate": {
"title": "Créer un noeud",
"description": "Créer un nouveau nœud pour étendre votre connectivité réseau",
"viewAllButton": "Voir tous les nœuds",
"strategy": {
"title": "Stratégie de création",
"description": "Choisissez ceci pour configurer manuellement votre nœud ou générer de nouveaux identifiants.",
"adopt": {
"title": "Adopter un nœud",
"description": "Choisissez ceci si vous avez déjà les identifiants pour le noeud."
},
"generate": {
"title": "Générer des clés",
"description": "Choisissez ceci si vous voulez générer de nouvelles clés pour le noeud"
}
},
"adopt": {
"title": "Adopter un nœud existant",
"description": "Entrez les identifiants du noeud existant que vous souhaitez adopter",
"nodeIdLabel": "Nœud ID",
"nodeIdDescription": "L'ID du noeud existant que vous voulez adopter",
"secretLabel": "Secret",
"secretDescription": "La clé secrète du noeud existant",
"submitButton": "Noeud d'Adopt"
},
"generate": {
"title": "Informations d'identification générées",
"description": "Utilisez ces identifiants générés pour configurer votre noeud",
"nodeIdTitle": "Nœud ID",
"secretTitle": "Secret",
"saveCredentialsTitle": "Ajouter des identifiants à la config",
"saveCredentialsDescription": "Ajoutez ces informations d'identification à votre fichier de configuration du nœud Pangolin auto-hébergé pour compléter la connexion.",
"submitButton": "Créer un noeud"
},
"validation": {
"adoptRequired": "ID de nœud et secret sont requis lors de l'adoption d'un noeud existant"
},
"errors": {
"loadDefaultsFailed": "Échec du chargement des valeurs par défaut",
"defaultsNotLoaded": "Valeurs par défaut non chargées",
"createFailed": "Impossible de créer le noeud"
},
"success": {
"created": "Noeud créé avec succès"
}
},
"remoteExitNodeSelection": "Sélection du noeud",
"remoteExitNodeSelectionDescription": "Sélectionnez un nœud pour acheminer le trafic pour ce site local",
"remoteExitNodeRequired": "Un noeud doit être sélectionné pour les sites locaux",
"noRemoteExitNodesAvailable": "Aucun noeud disponible",
"noRemoteExitNodesAvailableDescription": "Aucun noeud n'est disponible pour cette organisation. Créez d'abord un noeud pour utiliser des sites locaux.",
"exitNode": "Nœud de sortie",
"country": "Pays",
"rulesMatchCountry": "Actuellement basé sur l'IP source",
"managedSelfHosted": {
"title": "Gestion autonome",
"description": "Serveur Pangolin auto-hébergé avec des cloches et des sifflets supplémentaires",
@@ -1501,11 +1647,53 @@
},
"internationaldomaindetected": "Domaine international détecté",
"willbestoredas": "Sera stocké comme :",
"roleMappingDescription": "Détermine comment les rôles sont assignés aux utilisateurs lorsqu'ils se connectent lorsque la fourniture automatique est activée.",
"selectRole": "Sélectionnez un rôle",
"roleMappingExpression": "Expression",
"selectRolePlaceholder": "Choisir un rôle",
"selectRoleDescription": "Sélectionnez un rôle à assigner à tous les utilisateurs de ce fournisseur d'identité",
"roleMappingExpressionDescription": "Entrez une expression JMESPath pour extraire les informations du rôle du jeton ID",
"idpTenantIdRequired": "L'ID du locataire est requis",
"invalidValue": "Valeur non valide",
"idpTypeLabel": "Type de fournisseur d'identité",
"roleMappingExpressionPlaceholder": "ex: contenu(groupes) && 'admin' || 'membre'",
"idpGoogleConfiguration": "Configuration Google",
"idpGoogleConfigurationDescription": "Configurer vos identifiants Google OAuth2",
"idpGoogleClientIdDescription": "Votre identifiant client Google OAuth2",
"idpGoogleClientSecretDescription": "Votre secret client Google OAuth2",
"idpAzureConfiguration": "Configuration de l'entra ID Azure",
"idpAzureConfigurationDescription": "Configurer vos identifiants OAuth2 Azure Entra",
"idpTenantId": "Tenant ID",
"idpTenantIdPlaceholder": "votre-locataire-id",
"idpAzureTenantIdDescription": "Votre ID de locataire Azure (trouvé dans l'aperçu Azure Active Directory)",
"idpAzureClientIdDescription": "Votre ID client d'enregistrement de l'application Azure",
"idpAzureClientSecretDescription": "Le secret de votre client d'enregistrement Azure App",
"idpGoogleTitle": "Google",
"idpGoogleAlt": "Google",
"idpAzureTitle": "Azure Entra ID",
"idpAzureAlt": "Azure",
"idpGoogleConfigurationTitle": "Configuration Google",
"idpAzureConfigurationTitle": "Configuration de l'entra ID Azure",
"idpTenantIdLabel": "Tenant ID",
"idpAzureClientIdDescription2": "Votre ID client d'enregistrement de l'application Azure",
"idpAzureClientSecretDescription2": "Le secret de votre client d'enregistrement Azure App",
"idpGoogleDescription": "Fournisseur Google OAuth2/OIDC",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"customHeaders": "En-têtes personnalisés",
"customHeadersDescription": "Add custom headers to be sent when proxying requests. One per line in the format Header-Name: value",
"headersValidationError": "Les entêtes doivent être au format : Header-Name: valeur.",
"subnet": "Sous-réseau",
"subnetDescription": "Le sous-réseau de la configuration réseau de cette organisation.",
"authPage": "Page d'authentification",
"authPageDescription": "Configurer la page d'authentification de votre organisation",
"authPageDomain": "Domaine de la page d'authentification",
"noDomainSet": "Aucun domaine défini",
"changeDomain": "Changer de domaine",
"selectDomain": "Sélectionner un domaine",
"restartCertificate": "Redémarrer le certificat",
"editAuthPageDomain": "Modifier le domaine de la page d'authentification",
"setAuthPageDomain": "Définir le domaine de la page d'authentification",
"failedToFetchCertificate": "Impossible de récupérer le certificat",
"failedToRestartCertificate": "Échec du redémarrage du certificat",
"addDomainToEnableCustomAuthPages": "Ajouter un domaine pour activer les pages d'authentification personnalisées pour votre organisation",
"selectDomainForOrgAuthPage": "Sélectionnez un domaine pour la page d'authentification de l'organisation",
"domainPickerProvidedDomain": "Domaine fourni",
"domainPickerFreeProvidedDomain": "Domaine fourni gratuitement",
"domainPickerVerified": "Vérifié",
@@ -1519,10 +1707,16 @@
"domainPickerInvalidSubdomainCannotMakeValid": "La «{sub}» n'a pas pu être validée pour {domain}.",
"domainPickerSubdomainSanitized": "Sous-domaine nettoyé",
"domainPickerSubdomainCorrected": "\"{sub}\" a été corrigé à \"{sanitized}\"",
"orgAuthSignInTitle": "Connectez-vous à votre organisation",
"orgAuthChooseIdpDescription": "Choisissez votre fournisseur d'identité pour continuer",
"orgAuthNoIdpConfigured": "Cette organisation n'a aucun fournisseur d'identité configuré. Vous pouvez vous connecter avec votre identité Pangolin à la place.",
"orgAuthSignInWithPangolin": "Se connecter avec Pangolin",
"subscriptionRequiredToUse": "Un abonnement est requis pour utiliser cette fonctionnalité.",
"idpDisabled": "Les fournisseurs d'identité sont désactivés.",
"orgAuthPageDisabled": "La page d'authentification de l'organisation est désactivée.",
"domainRestartedDescription": "La vérification du domaine a été redémarrée avec succès",
"resourceAddEntrypointsEditFile": "Modifier le fichier : config/traefik/traefik_config.yml",
"resourceExposePortsEditFile": "Modifier le fichier : docker-compose.yml",
"emailVerificationRequired": "La vérification de l'e-mail est requise. Veuillez vous reconnecter via {dashboardUrl}/auth/login terminé cette étape. Puis revenez ici.",
"twoFactorSetupRequired": "La configuration d'authentification à deux facteurs est requise. Veuillez vous reconnecter via {dashboardUrl}/auth/login terminé cette étape. Puis revenez ici.",
"rewritePath": "Rewrite Path",
"rewritePathDescription": "Optionally rewrite the path before forwarding to the target."
"twoFactorSetupRequired": "La configuration d'authentification à deux facteurs est requise. Veuillez vous reconnecter via {dashboardUrl}/auth/login terminé cette étape. Puis revenez ici."
}