diff --git a/messages/fr-FR.json b/messages/fr-FR.json
index 2b3368a07..792775fdd 100644
--- a/messages/fr-FR.json
+++ b/messages/fr-FR.json
@@ -148,6 +148,11 @@
"createLink": "Créer un lien",
"resourcesNotFound": "Aucune ressource trouvée",
"resourceSearch": "Rechercher des ressources",
+ "machineSearch": "Rechercher des machines",
+ "machinesSearch": "Rechercher des clients de la machine...",
+ "machineNotFound": "Aucune machine trouvée",
+ "userDeviceSearch": "Rechercher des périphériques utilisateur",
+ "userDevicesSearch": "Rechercher des appareils utilisateurs...",
"openMenu": "Ouvrir le menu",
"resource": "Ressource",
"title": "Titre de la page",
@@ -323,6 +328,54 @@
"apiKeysDelete": "Supprimer la clé d'API",
"apiKeysManage": "Gérer les clés d'API",
"apiKeysDescription": "Les clés d'API sont utilisées pour s'authentifier avec l'API d'intégration",
+ "provisioningKeysTitle": "Clé de provisioning",
+ "provisioningKeysManage": "Gérer les clés de provisioning",
+ "provisioningKeysDescription": "Les clés de provisioning sont utilisées pour authentifier la fourniture automatique de sites pour votre organisation.",
+ "provisioningManage": "Mise en place",
+ "provisioningDescription": "Gérer les clés de provisioning et examiner les sites en attente d'approbation.",
+ "pendingSites": "Sites en attente",
+ "siteApproveSuccess": "Site approuvé avec succès",
+ "siteApproveError": "Erreur lors de l'approbation du site",
+ "provisioningKeys": "Clés de provisionnement",
+ "searchProvisioningKeys": "Recherche des clés de provision...",
+ "provisioningKeysAdd": "Générer une clé de provisioning",
+ "provisioningKeysErrorDelete": "Erreur lors de la suppression de la clé de provisioning",
+ "provisioningKeysErrorDeleteMessage": "Erreur lors de la suppression de la clé de provisioning",
+ "provisioningKeysQuestionRemove": "Êtes-vous sûr de vouloir supprimer cette clé de provisioning de l'organisation ?",
+ "provisioningKeysMessageRemove": "Une fois supprimée, la clé ne peut plus être utilisée pour le provisionnement du site.",
+ "provisioningKeysDeleteConfirm": "Confirmer la suppression de la clé de provisioning",
+ "provisioningKeysDelete": "Supprimer la clé de provisioning",
+ "provisioningKeysCreate": "Générer une clé de provisioning",
+ "provisioningKeysCreateDescription": "Générer une nouvelle clé de provisioning pour l'organisation",
+ "provisioningKeysSeeAll": "Voir toutes les clés de provisioning",
+ "provisioningKeysSave": "Enregistrer la clé de provisioning",
+ "provisioningKeysSaveDescription": "Vous ne pourrez voir cela qu'une seule fois. Copiez-le dans un endroit sécurisé.",
+ "provisioningKeysErrorCreate": "Erreur lors de la création de la clé de provisioning",
+ "provisioningKeysList": "Nouvelle clé de provisioning",
+ "provisioningKeysMaxBatchSize": "Taille maximale du lot",
+ "provisioningKeysUnlimitedBatchSize": "Taille de lot illimitée (sans limite)",
+ "provisioningKeysMaxBatchUnlimited": "Illimité",
+ "provisioningKeysMaxBatchSizeInvalid": "Entrez une taille de lot maximale valide (1–1 000 000).",
+ "provisioningKeysValidUntil": "Valable jusqu'au",
+ "provisioningKeysValidUntilHint": "Laisser vide pour ne pas expirer.",
+ "provisioningKeysValidUntilInvalid": "Entrez une date et une heure valides.",
+ "provisioningKeysNumUsed": "Nombre de fois utilisées",
+ "provisioningKeysLastUsed": "Dernière utilisation",
+ "provisioningKeysNoExpiry": "Pas d'expiration",
+ "provisioningKeysNeverUsed": "Jamais",
+ "provisioningKeysEdit": "Modifier la clé de provisioning",
+ "provisioningKeysEditDescription": "Mettre à jour la taille maximale du lot et la durée d'expiration de cette clé.",
+ "provisioningKeysApproveNewSites": "Approuver les nouveaux sites",
+ "provisioningKeysApproveNewSitesDescription": "Approuver automatiquement les sites qui s'inscrivent avec cette clé.",
+ "provisioningKeysUpdateError": "Erreur lors de la mise à jour de la clé de provisioning",
+ "provisioningKeysUpdated": "Clé de provisioning mise à jour",
+ "provisioningKeysUpdatedDescription": "Vos modifications ont été enregistrées.",
+ "provisioningKeysBannerTitle": "Clés de provisioning du site",
+ "provisioningKeysBannerDescription": "Générez une clé de provisioning et utilisez-la avec le connecteur Newt pour créer automatiquement des sites au premier démarrage — pas besoin de configurer des identifiants distincts pour chaque site.",
+ "provisioningKeysBannerButtonText": "En savoir plus",
+ "pendingSitesBannerTitle": "Sites en attente",
+ "pendingSitesBannerDescription": "Les sites qui se connectent à l'aide d'une clé de provisioning apparaissent ici pour être revus. Approuver chaque site avant qu'il ne devienne actif et qu'il accède à vos ressources.",
+ "pendingSitesBannerButtonText": "En savoir plus",
"apiKeysSettings": "Paramètres de {apiKeyName}",
"userTitle": "Gérer tous les utilisateurs",
"userDescription": "Voir et gérer tous les utilisateurs du système",
@@ -509,9 +562,12 @@
"userSaved": "Utilisateur enregistré",
"userSavedDescription": "L'utilisateur a été mis à jour.",
"autoProvisioned": "Auto-provisionné",
+ "autoProvisionSettings": "Paramètres de la fourniture automatique",
"autoProvisionedDescription": "Permettre à cet utilisateur d'être géré automatiquement par le fournisseur d'identité",
"accessControlsDescription": "Gérer ce que cet utilisateur peut accéder et faire dans l'organisation",
"accessControlsSubmit": "Enregistrer les contrôles d'accès",
+ "singleRolePerUserPlanNotice": "Votre plan ne prend en charge qu'un seul rôle par utilisateur.",
+ "singleRolePerUserEditionNotice": "Cette édition ne prend en charge qu'un rôle par utilisateur.",
"roles": "Rôles",
"accessUsersRoles": "Gérer les utilisateurs et les rôles",
"accessUsersRolesDescription": "Invitez des utilisateurs et ajoutez-les aux rôles pour gérer l'accès à l'organisation",
@@ -1119,6 +1175,7 @@
"setupTokenDescription": "Entrez le jeton de configuration depuis la console du serveur.",
"setupTokenRequired": "Le jeton de configuration est requis.",
"actionUpdateSite": "Mettre à jour un site",
+ "actionResetSiteBandwidth": "Réinitialiser la bande passante de l'organisation",
"actionListSiteRoles": "Lister les rôles autorisés du site",
"actionCreateResource": "Créer une ressource",
"actionDeleteResource": "Supprimer une ressource",
@@ -1148,7 +1205,7 @@
"actionRemoveUser": "Supprimer un utilisateur",
"actionListUsers": "Lister les utilisateurs",
"actionAddUserRole": "Ajouter un rôle utilisateur",
- "actionSetUserOrgRoles": "Set User Roles",
+ "actionSetUserOrgRoles": "Définir les rôles de l'utilisateur",
"actionGenerateAccessToken": "Générer un jeton d'accès",
"actionDeleteAccessToken": "Supprimer un jeton d'accès",
"actionListAccessTokens": "Lister les jetons d'accès",
@@ -1265,6 +1322,7 @@
"sidebarRoles": "Rôles",
"sidebarShareableLinks": "Liens",
"sidebarApiKeys": "Clés API",
+ "sidebarProvisioning": "Mise en place",
"sidebarSettings": "Réglages",
"sidebarAllUsers": "Tous les utilisateurs",
"sidebarIdentityProviders": "Fournisseurs d'identité",
@@ -1890,6 +1948,40 @@
"exitNode": "Nœud de sortie",
"country": "Pays",
"rulesMatchCountry": "Actuellement basé sur l'IP source",
+ "region": "Région",
+ "selectRegion": "Sélectionner une région",
+ "searchRegions": "Rechercher des régions...",
+ "noRegionFound": "Aucune région trouvée.",
+ "rulesMatchRegion": "Sélectionnez un groupement régional de pays",
+ "rulesErrorInvalidRegion": "Région invalide",
+ "rulesErrorInvalidRegionDescription": "Veuillez sélectionner une région valide.",
+ "regionAfrica": "L'Afrique",
+ "regionNorthernAfrica": "Afrique du Nord",
+ "regionEasternAfrica": "Afrique de l'Est",
+ "regionMiddleAfrica": "Afrique Moyenne",
+ "regionSouthernAfrica": "Afrique australe",
+ "regionWesternAfrica": "Afrique de l'Ouest",
+ "regionAmericas": "Amériques",
+ "regionCaribbean": "Caraïbes",
+ "regionCentralAmerica": "Amérique centrale",
+ "regionSouthAmerica": "Amérique du Sud",
+ "regionNorthernAmerica": "Amérique du Nord",
+ "regionAsia": "L'Asie",
+ "regionCentralAsia": "Asie centrale",
+ "regionEasternAsia": "Asie de l'Est",
+ "regionSouthEasternAsia": "Asie du Sud-Est",
+ "regionSouthernAsia": "Asie du Sud",
+ "regionWesternAsia": "Asie de l'Ouest",
+ "regionEurope": "L’Europe",
+ "regionEasternEurope": "Europe de l'Est",
+ "regionNorthernEurope": "Europe du Nord",
+ "regionSouthernEurope": "Europe du Sud",
+ "regionWesternEurope": "Europe occidentale",
+ "regionOceania": "Oceania",
+ "regionAustraliaAndNewZealand": "Australie et Nouvelle-Zélande",
+ "regionMelanesia": "Melanesia",
+ "regionMicronesia": "Micronesia",
+ "regionPolynesia": "Polynesia",
"managedSelfHosted": {
"title": "Gestion autonome",
"description": "Serveur Pangolin auto-hébergé avec des cloches et des sifflets supplémentaires",
@@ -1938,6 +2030,25 @@
"invalidValue": "Valeur non valide",
"idpTypeLabel": "Type de fournisseur d'identité",
"roleMappingExpressionPlaceholder": "ex: contenu(groupes) && 'admin' || 'membre'",
+ "roleMappingModeFixedRoles": "Rôles fixes",
+ "roleMappingModeMappingBuilder": "Constructeur de cartographie",
+ "roleMappingModeRawExpression": "Expression brute",
+ "roleMappingFixedRolesPlaceholderSelect": "Sélectionnez un ou plusieurs rôles",
+ "roleMappingFixedRolesPlaceholderFreeform": "Tapez les noms des rôles (correspondance exacte par organisation)",
+ "roleMappingFixedRolesDescriptionSameForAll": "Assigner le même jeu de rôles à chaque utilisateur auto-provisionné.",
+ "roleMappingFixedRolesDescriptionDefaultPolicy": "Pour les politiques par défaut, les noms de rôles de type qui existent dans chaque organisation où les utilisateurs sont fournis. Les noms doivent correspondre exactement.",
+ "roleMappingClaimPath": "Chemin de revendication",
+ "roleMappingClaimPathPlaceholder": "Groupes",
+ "roleMappingClaimPathDescription": "Chemin dans le bloc de jeton qui contient les valeurs source (par exemple, les groupes).",
+ "roleMappingMatchValue": "Valeur de la correspondance",
+ "roleMappingAssignRoles": "Assigner des rôles",
+ "roleMappingAddMappingRule": "Ajouter une règle de mappage",
+ "roleMappingRawExpressionResultDescription": "L'expression doit être évaluée à une chaîne ou un tableau de chaînes.",
+ "roleMappingRawExpressionResultDescriptionSingleRole": "L'expression doit être évaluée à une chaîne (un seul nom de rôle).",
+ "roleMappingMatchValuePlaceholder": "Valeur de la correspondance (par exemple: admin)",
+ "roleMappingAssignRolesPlaceholderFreeform": "Tapez les noms des rôles (exact par org)",
+ "roleMappingBuilderFreeformRowHint": "Les noms de rôle doivent correspondre à un rôle dans chaque organisation cible.",
+ "roleMappingRemoveRule": "Supprimer",
"idpGoogleConfiguration": "Configuration Google",
"idpGoogleConfigurationDescription": "Configurer les identifiants Google OAuth2",
"idpGoogleClientIdDescription": "Google OAuth2 Client ID",
@@ -2334,6 +2445,8 @@
"logRetentionAccessDescription": "Durée de conservation des journaux d'accès",
"logRetentionActionLabel": "Retention du journal des actions",
"logRetentionActionDescription": "Durée de conservation du journal des actions",
+ "logRetentionConnectionLabel": "Rétention du journal de connexion",
+ "logRetentionConnectionDescription": "Durée de conservation des logs de connexion",
"logRetentionDisabled": "Désactivé",
"logRetention3Days": "3 jours",
"logRetention7Days": "7 jours",
@@ -2344,6 +2457,13 @@
"logRetentionEndOfFollowingYear": "Fin de l'année suivante",
"actionLogsDescription": "Voir l'historique des actions effectuées dans cette organisation",
"accessLogsDescription": "Voir les demandes d'authentification d'accès aux ressources de cette organisation",
+ "connectionLogs": "Journaux de connexion",
+ "connectionLogsDescription": "Voir les journaux de connexion pour les tunnels de cette organisation",
+ "sidebarLogsConnection": "Journaux de connexion",
+ "sidebarLogsStreaming": "Streaming en cours",
+ "sourceAddress": "Adresse source",
+ "destinationAddress": "Adresse de destination",
+ "duration": "Durée",
"licenseRequiredToUse": "Une licence Enterprise Edition ou Pangolin Cloud est requise pour utiliser cette fonctionnalité. Réservez une démonstration ou une évaluation de POC.",
"ossEnterpriseEditionRequired": "La version Enterprise Edition est requise pour utiliser cette fonctionnalité. Cette fonctionnalité est également disponible dans Pangolin Cloud. Réservez une démo ou un essai POC.",
"certResolver": "Résolveur de certificat",
@@ -2683,5 +2803,90 @@
"approvalsEmptyStateStep2Description": "Modifier un rôle et activer l'option 'Exiger les autorisations de l'appareil'. Les utilisateurs avec ce rôle auront besoin de l'approbation de l'administrateur pour les nouveaux appareils.",
"approvalsEmptyStatePreviewDescription": "Aperçu: Lorsque cette option est activée, les demandes de périphérique en attente apparaîtront ici pour vérification",
"approvalsEmptyStateButtonText": "Gérer les rôles",
- "domainErrorTitle": "Nous avons des difficultés à vérifier votre domaine"
+ "domainErrorTitle": "Nous avons des difficultés à vérifier votre domaine",
+ "idpAdminAutoProvisionPoliciesTabHint": "Configurer les politiques de mappage des rôles et de l'organisation dans l'onglet Paramètres de la fourniture automatique.",
+ "streamingTitle": "Streaming d'événements",
+ "streamingDescription": "Diffusez en temps réel des événements de votre organisation vers des destinations externes.",
+ "streamingUnnamedDestination": "Destination sans nom",
+ "streamingNoUrlConfigured": "Aucune URL configurée",
+ "streamingAddDestination": "Ajouter une destination",
+ "streamingHttpWebhookTitle": "Webhook HTTP",
+ "streamingHttpWebhookDescription": "Envoyez des événements à n'importe quel point de terminaison HTTP avec une authentification flexible et un template.",
+ "streamingS3Title": "Amazon S3",
+ "streamingS3Description": "Flux d'événements vers un compartiment de stockage d'objet compatible S3. Bientôt.",
+ "streamingDatadogTitle": "Datadog",
+ "streamingDatadogDescription": "Transférer des événements directement sur votre compte Datadog. Prochainement.",
+ "streamingTypePickerDescription": "Choisissez un type de destination pour commencer.",
+ "streamingFailedToLoad": "Impossible de charger les destinations",
+ "streamingUnexpectedError": "Une erreur inattendue s'est produite.",
+ "streamingFailedToUpdate": "Impossible de mettre à jour la destination",
+ "streamingDeletedSuccess": "Destination supprimée avec succès",
+ "streamingFailedToDelete": "Impossible de supprimer la destination",
+ "streamingDeleteTitle": "Supprimer la destination",
+ "streamingDeleteButtonText": "Supprimer la destination",
+ "streamingDeleteDialogAreYouSure": "Êtes-vous sûr de vouloir supprimer",
+ "streamingDeleteDialogThisDestination": "cette destination",
+ "streamingDeleteDialogPermanentlyRemoved": "? Toutes les configurations seront définitivement supprimées.",
+ "httpDestEditTitle": "Modifier la destination",
+ "httpDestAddTitle": "Ajouter une destination HTTP",
+ "httpDestEditDescription": "Mettre à jour la configuration pour cette destination de streaming d'événements HTTP.",
+ "httpDestAddDescription": "Configurez un nouveau point de terminaison HTTP pour recevoir les événements de votre organisation.",
+ "httpDestTabSettings": "Réglages",
+ "httpDestTabHeaders": "En-têtes",
+ "httpDestTabBody": "Corps",
+ "httpDestTabLogs": "Journaux",
+ "httpDestNamePlaceholder": "Ma destination HTTP",
+ "httpDestUrlLabel": "URL de destination",
+ "httpDestUrlErrorHttpRequired": "L'URL doit utiliser http ou https",
+ "httpDestUrlErrorHttpsRequired": "HTTPS est requis pour les déploiements du cloud",
+ "httpDestUrlErrorInvalid": "Entrez une URL valide (par exemple https://example.com/webhook)",
+ "httpDestAuthTitle": "Authentification",
+ "httpDestAuthDescription": "Choisissez comment les requêtes à votre terminaison sont authentifiées.",
+ "httpDestAuthNoneTitle": "Aucune authentification",
+ "httpDestAuthNoneDescription": "Envoie des requêtes sans en-tête d'autorisation.",
+ "httpDestAuthBearerTitle": "Jeton de Porteur",
+ "httpDestAuthBearerDescription": "Ajoute un en-tête Authorization: Bearer à chaque requête.",
+ "httpDestAuthBearerPlaceholder": "Votre clé API ou votre jeton",
+ "httpDestAuthBasicTitle": "Authentification basique",
+ "httpDestAuthBasicDescription": "Ajoute une autorisation : en-tête de base . Fournissez des informations d'identification comme nom d'utilisateur:mot de passe.",
+ "httpDestAuthBasicPlaceholder": "nom d'utilisateur:mot de passe",
+ "httpDestAuthCustomTitle": "En-tête personnalisé",
+ "httpDestAuthCustomDescription": "Spécifiez un nom d'en-tête HTTP personnalisé et une valeur pour l'authentification (par exemple X-API-Key).",
+ "httpDestAuthCustomHeaderNamePlaceholder": "Nom de l'en-tête (par exemple X-API-Key)",
+ "httpDestAuthCustomHeaderValuePlaceholder": "Valeur de l'en-tête",
+ "httpDestCustomHeadersTitle": "En-têtes HTTP personnalisés",
+ "httpDestCustomHeadersDescription": "Ajouter des en-têtes personnalisés à chaque requête sortante. Utile pour les jetons statiques ou un type de contenu personnalisé. Par défaut, Content-Type: application/json est envoyé.",
+ "httpDestNoHeadersConfigured": "Aucun en-tête personnalisé configuré. Cliquez sur \"Ajouter un en-tête\" pour en ajouter un.",
+ "httpDestHeaderNamePlaceholder": "Nom de l'en-tête",
+ "httpDestHeaderValuePlaceholder": "Valeur",
+ "httpDestAddHeader": "Ajouter un en-tête",
+ "httpDestBodyTemplateTitle": "Modèle de corps personnalisé",
+ "httpDestBodyTemplateDescription": "Contrôle la structure de charge utile JSON envoyée à votre terminal. Si désactivé, un objet JSON par défaut est envoyé pour chaque événement.",
+ "httpDestEnableBodyTemplate": "Activer le modèle de corps personnalisé",
+ "httpDestBodyTemplateLabel": "Modèle de corps (JSON)",
+ "httpDestBodyTemplateHint": "Utilisez les variables de modèle pour référencer les champs d'événement dans votre charge utile.",
+ "httpDestPayloadFormatTitle": "Format de la charge utile",
+ "httpDestPayloadFormatDescription": "Comment les événements sont sérialisés dans chaque corps de requête.",
+ "httpDestFormatJsonArrayTitle": "Tableau JSON",
+ "httpDestFormatJsonArrayDescription": "Une requête par lot, le corps est un tableau JSON. Compatible avec la plupart des webhooks génériques et des datadog.",
+ "httpDestFormatNdjsonTitle": "NDJSON",
+ "httpDestFormatNdjsonDescription": "Une requête par lot, body est un JSON délimité par une nouvelle ligne — un objet par ligne, pas de tableau extérieur. Requis par Splunk HEC, Elastic / OpenSearch, et Grafana Loki.",
+ "httpDestFormatSingleTitle": "Un événement par demande",
+ "httpDestFormatSingleDescription": "Envoie un POST HTTP séparé pour chaque événement individuel. Utilisé uniquement pour les terminaux qui ne peuvent pas gérer des lots.",
+ "httpDestLogTypesTitle": "Types de logs",
+ "httpDestLogTypesDescription": "Choisissez quels types de journaux sont envoyés à cette destination. Seuls les types de journaux activés seront diffusés.",
+ "httpDestAccessLogsTitle": "Journaux d'accès",
+ "httpDestAccessLogsDescription": "Tentatives d'accès aux ressources, y compris les demandes authentifiées et refusées.",
+ "httpDestActionLogsTitle": "Journaux des actions",
+ "httpDestActionLogsDescription": "Actions administratives effectuées par les utilisateurs au sein de l'organisation.",
+ "httpDestConnectionLogsTitle": "Journaux de connexion",
+ "httpDestConnectionLogsDescription": "Événements de connexion du site et du tunnel, y compris les connexions et les déconnexions.",
+ "httpDestRequestLogsTitle": "Journal des requêtes",
+ "httpDestRequestLogsDescription": "Journaux des requêtes HTTP pour les ressources proxiées, y compris la méthode, le chemin et le code de réponse.",
+ "httpDestSaveChanges": "Enregistrer les modifications",
+ "httpDestCreateDestination": "Créer une destination",
+ "httpDestUpdatedSuccess": "Destination mise à jour avec succès",
+ "httpDestCreatedSuccess": "Destination créée avec succès",
+ "httpDestUpdateFailed": "Impossible de mettre à jour la destination",
+ "httpDestCreateFailed": "Impossible de créer la destination"
}