From fcd1b7e8259c0008e6483b5d45f37ee64319bcb2 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Thu, 17 Apr 2025 09:16:32 -0300 Subject: [PATCH] Update French translations for various UI elements and messages --- locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 48615 bytes locale/fr/LC_MESSAGES/django.po | 908 +++++++++++++++++++------------- 2 files changed, 556 insertions(+), 352 deletions(-) create mode 100644 locale/fr/LC_MESSAGES/django.mo diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..9f0d671bca7f9ae97f476c8a32dea1f01d8b7b90 GIT binary patch literal 48615 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\n" "Language-Team: LANGUAGE \n" @@ -17,53 +18,54 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" + #: console/views.py:25 console/views.py:57 user_manager/forms.py:16 msgid "Console" -msgstr "" +msgstr "Console" #: console/views.py:27 msgid "iptables list" -msgstr "" +msgstr "liste iptables" #: console/views.py:33 msgid "running processes" -msgstr "" +msgstr "processus en cours" #: console/views.py:36 msgid "WireGuard show" -msgstr "" +msgstr "état WireGuard" #: console/views.py:39 msgid "Memory usage" -msgstr "" +msgstr "Utilisation de la mémoire" #: console/views.py:42 msgid "Routing table" -msgstr "" +msgstr "Table de routage" #: console/views.py:54 msgid "DNS container test script" -msgstr "" +msgstr "Script de test du conteneur DNS" #: console/views.py:57 msgid "Invalid command" -msgstr "" +msgstr "Commande invalide" #: console/views.py:64 msgid "Invalid target" -msgstr "" +msgstr "Cible invalide" #: console/views.py:69 msgid "Enhanced filter is enabled. This command is not available." -msgstr "" +msgstr "Le filtre avancé est activé. Cette commande n’est pas disponible." #: dns/forms.py:22 wireguard/forms.py:22 msgid "Primary DNS" -msgstr "" +msgstr "DNS primaire" #: dns/forms.py:23 wireguard/forms.py:23 msgid "Secondary DNS" -msgstr "" +msgstr "DNS secondaire" #: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109 #: templates/firewall/manage_firewall_rule.html:380 @@ -74,11 +76,11 @@ msgstr "" #: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49 #: user_manager/forms.py:180 vpn_invite/forms.py:192 vpn_invite/forms.py:326 msgid "Back" -msgstr "" +msgstr "Retour" #: dns/forms.py:29 msgid "Resolver Settings" -msgstr "" +msgstr "Paramètres du résolveur" #: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134 #: templates/firewall/manage_firewall_rule.html:379 @@ -90,11 +92,11 @@ msgstr "" #: user_manager/forms.py:98 user_manager/forms.py:205 vpn_invite/forms.py:191 #: vpn_invite/forms.py:325 msgid "Save" -msgstr "" +msgstr "Enregistrer" #: dns/forms.py:65 templates/dns/static_host_list.html:17 msgid "Hostname" -msgstr "" +msgstr "Nom d’hôte" #: dns/forms.py:66 templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 @@ -102,7 +104,7 @@ msgstr "" #: templates/firewall/manage_redirect_rule.html:68 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" -msgstr "" +msgstr "Adresse IP" #: dns/forms.py:68 dns/forms.py:110 #: templates/firewall/manage_firewall_rule.html:382 @@ -111,242 +113,247 @@ msgstr "" #: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48 #: user_manager/forms.py:181 msgid "Delete" -msgstr "" +msgstr "Supprimer" #: dns/forms.py:75 msgid "Static DNS" -msgstr "" +msgstr "DNS statique" #: dns/forms.py:111 templates/dns/static_host_list.html:68 #: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177 #: wireguard_peer/forms.py:10 msgid "Name" -msgstr "" +msgstr "Nom" #: dns/forms.py:112 firewall/forms.py:111 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 #: templates/firewall/manage_redirect_rule.html:19 msgid "Description" -msgstr "" +msgstr "Description" #: dns/forms.py:113 msgid "List URL" -msgstr "" +msgstr "URL de la liste" #: dns/forms.py:125 msgid "DNS Filter List Details" -msgstr "" +msgstr "Détails de la liste de filtres DNS" #: dns/views.py:33 msgid "DNS settings applied successfully" -msgstr "" +msgstr "Paramètres DNS appliqués avec succès" #: dns/views.py:68 msgid "Default DNS Filter List created successfully" -msgstr "" +msgstr "Liste de filtres DNS par défaut créée avec succès" #: dns/views.py:71 msgid "" "Pending Changes|There are pending DNS changes that have not been applied" msgstr "" +"Modifications en attente|Des changements DNS n’ont pas encore été appliqués" #: dns/views.py:90 msgid "DNS Forwarders" -msgstr "" +msgstr "Redirecteurs DNS" #: dns/views.py:91 msgid "" "All DNS queries will be forwarded to the primary resolver. If the primary " "resolver is not available, the secondary resolver will be used." msgstr "" +"Toutes les requêtes DNS seront transmises au résolveur primaire. Si celui‑ci " +"est indisponible, le résolveur secondaire sera utilisé." #: dns/views.py:118 msgid "Static DNS deleted successfully" -msgstr "" +msgstr "Entrée DNS statique supprimée avec succès" #: dns/views.py:121 msgid "Static DNS not deleted|Invalid confirmation" -msgstr "" +msgstr "DNS statique non supprimé|Confirmation invalide" #: dns/views.py:131 msgid "Static DNS saved successfully" -msgstr "" +msgstr "DNS statique enregistré avec succès" #: dns/views.py:154 msgid "DNS Filter List not deleted | Filter List is enabled" -msgstr "" +msgstr "Liste de filtres DNS non supprimée | La liste est activée" #: dns/views.py:161 msgid "Error removing config file: " -msgstr "" +msgstr "Erreur lors de la suppression du fichier de configuration : " #: dns/views.py:164 msgid "DNS Filter List deleted successfully" -msgstr "" +msgstr "Liste de filtres DNS supprimée avec succès" #: dns/views.py:167 msgid "DNS Filter List not deleted | Invalid confirmation" -msgstr "" +msgstr "Liste de filtres DNS non supprimée | Confirmation invalide" #: dns/views.py:177 msgid "DNS Filter List saved successfully" -msgstr "" +msgstr "Liste de filtres DNS enregistrée avec succès" #: dns/views.py:204 msgid "Failed to read existing config file: " -msgstr "" +msgstr "Impossible de lire le fichier de configuration existant : " #: dns/views.py:222 msgid "Failed to fetch the host list: " -msgstr "" +msgstr "Échec du téléchargement de la liste d’hôtes : " #: dns/views.py:232 msgid "Failed to write config file: " -msgstr "" +msgstr "Impossible d’écrire le fichier de configuration : " #: dns/views.py:257 msgid "DNS Filter List updated successfully" -msgstr "" +msgstr "Liste de filtres DNS mise à jour avec succès" #: dns/views.py:274 msgid "DNS Filter List enabled successfully" -msgstr "" +msgstr "Liste de filtres DNS activée avec succès" #: dns/views.py:276 msgid "DNS Filter List not enabled | No valid hosts found" -msgstr "" +msgstr "Liste de filtres DNS non activée | Aucun hôte valide trouvé" #: dns/views.py:281 msgid "DNS Filter List disabled successfully" -msgstr "" +msgstr "Liste de filtres DNS désactivée avec succès" #: firewall/forms.py:41 msgid "Port is required." -msgstr "" +msgstr "Le port est obligatoire." #: firewall/forms.py:44 msgid "Port 8000 (tcp) is reserved for wireguard-webadmin." -msgstr "" +msgstr "Le port 8000 (TCP) est réservé à wireguard‑webadmin." #: firewall/forms.py:48 #, python-format msgid "Port %s is already in use by another WireGuard instance." -msgstr "" +msgstr "Le port %s est déjà utilisé par une autre instance WireGuard." #: firewall/forms.py:51 msgid "Invalid Destination. Either Peer or IP Address must be informed." -msgstr "" +msgstr "Destination invalide : renseignez soit un Peer, soit une adresse IP." #: firewall/forms.py:54 msgid "Peer and IP Address cannot be selected at the same time." msgstr "" +"Le Peer et l’adresse IP ne peuvent pas être sélectionnés simultanément." #: firewall/forms.py:57 msgid "IP Address cannot be used without selecting a WireGuard instance." msgstr "" +"Une adresse IP ne peut être utilisée sans sélectionner d’instance WireGuard." #: firewall/forms.py:81 msgid "wg+ (Any WireGuard Interface)" -msgstr "" +msgstr "wg+ (n’importe quelle interface WireGuard)" #: firewall/forms.py:112 msgid "Firewall Chain" -msgstr "" +msgstr "Chaîne du pare‑feu" #: firewall/forms.py:113 msgid "In Interface" -msgstr "" +msgstr "Interface entrante" #: firewall/forms.py:114 msgid "Out Interface" -msgstr "" +msgstr "Interface sortante" #: firewall/forms.py:115 msgid "Source IP" -msgstr "" +msgstr "IP source" #: firewall/forms.py:116 firewall/forms.py:121 wireguard/forms.py:18 #: wireguard_peer/forms.py:30 msgid "Netmask" -msgstr "" +msgstr "Masque" #: firewall/forms.py:117 msgid "Source Peer" -msgstr "" +msgstr "Peer source" #: firewall/forms.py:118 msgid "Source Peer Include Networks" -msgstr "" +msgstr "Inclure les réseaux du Peer source" #: firewall/forms.py:119 msgid "Not Source" -msgstr "" +msgstr "Non‑source" #: firewall/forms.py:120 msgid "Destination IP" -msgstr "" +msgstr "IP de destination" #: firewall/forms.py:122 msgid "Destination Peer" -msgstr "" +msgstr "Peer de destination" #: firewall/forms.py:123 msgid "Destination Peer Include Networks" -msgstr "" +msgstr "Inclure les réseaux du Peer destination" #: firewall/forms.py:124 msgid "Not Destination" -msgstr "" +msgstr "Non‑destination" #: firewall/forms.py:125 templates/firewall/firewall_rule_list.html:44 #: templates/firewall/manage_firewall_rule.html:263 #: templates/firewall/manage_redirect_rule.html:22 #: templates/firewall/redirect_rule_list.html:13 msgid "Protocol" -msgstr "" +msgstr "Protocole" #: firewall/forms.py:126 templates/firewall/manage_redirect_rule.html:35 msgid "Destination Port" -msgstr "" +msgstr "Port de destination" #: firewall/forms.py:127 templates/firewall/firewall_rule_list.html:141 msgid "New" -msgstr "" +msgstr "Nouveau" #: firewall/forms.py:128 templates/firewall/firewall_rule_list.html:60 #: templates/firewall/firewall_rule_list.html:142 msgid "Related" -msgstr "" +msgstr "Connexe" #: firewall/forms.py:129 templates/firewall/firewall_rule_list.html:61 #: templates/firewall/firewall_rule_list.html:143 msgid "Established" -msgstr "" +msgstr "Établi" #: firewall/forms.py:130 templates/firewall/firewall_rule_list.html:144 msgid "Invalid" -msgstr "" +msgstr "Invalide" #: firewall/forms.py:131 templates/firewall/firewall_rule_list.html:145 msgid "Untracked" -msgstr "" +msgstr "Non suivi" #: firewall/forms.py:132 msgid "Not State" -msgstr "" +msgstr "Sans état" #: firewall/forms.py:133 msgid "Rule Action" -msgstr "" +msgstr "Action" #: firewall/forms.py:134 msgid "Sort Order" -msgstr "" +msgstr "Ordre" #: firewall/forms.py:182 msgid "Default Forward Policy" -msgstr "" +msgstr "Politique de transfert par défaut" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:63 @@ -354,315 +361,324 @@ msgstr "" #: templates/firewall/firewall_rule_list.html:168 #: templates/firewall/firewall_rule_list.html:187 msgid "ACCEPT" -msgstr "" +msgstr "Accepter" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 templates/firewall/firewall_rule_list.html:170 #: templates/firewall/firewall_rule_list.html:187 msgid "REJECT" -msgstr "" +msgstr "Rejeter" #: firewall/forms.py:182 firewall/models.py:62 firewall/models.py:75 #: firewall/models.py:76 msgid "DROP" -msgstr "" +msgstr "Abandonner" #: firewall/forms.py:183 msgid "Allow Peer to Peer" -msgstr "" +msgstr "Autoriser Peer ↔ Peer" #: firewall/forms.py:184 msgid "Allow Instance to Instance" -msgstr "" +msgstr "Autoriser Instance ↔ Instance" #: firewall/forms.py:185 msgid "WAN Interface" -msgstr "" +msgstr "Interface WAN" #: firewall/models.py:62 msgid "MASQUERADE" -msgstr "" +msgstr "MASQUERADE" #: firewall/tools.py:44 msgid "Masquerade traffic from VPN to WAN" -msgstr "" +msgstr "Masquer le trafic du VPN vers le WAN" #: firewall/tools.py:54 firewall/tools.py:58 firewall/tools.py:62 msgid "Reject traffic to private networks exiting on WAN interface" -msgstr "" +msgstr "Rejeter le trafic vers les réseaux privés sortant sur l’interface WAN" #: firewall/tools.py:66 msgid "Allow traffic from VPN to WAN" -msgstr "" +msgstr "Autoriser le trafic du VPN vers le WAN" #: firewall/views.py:21 msgid "Port Forward List" -msgstr "" +msgstr "Liste des redirections de port" #: firewall/views.py:32 msgid "Manage Port Forward" -msgstr "" +msgstr "Gérer la redirection de port" #: firewall/views.py:42 msgid "Port Forward rule deleted successfully" -msgstr "" +msgstr "Règle de redirection supprimée avec succès" #: firewall/views.py:44 msgid "" "Error deleting Port Forward rule|Confirmation did not match. Port Forward " "rule was not deleted." msgstr "" +"Erreur de suppression|La confirmation ne correspond pas ; la règle de " +"redirection n’a pas été supprimée." #: firewall/views.py:54 msgid "Port Forward rule saved successfully" -msgstr "" +msgstr "Règle de redirection enregistrée avec succès" #: firewall/views.py:79 msgid "Firewall Rule List" -msgstr "" +msgstr "Liste des règles du pare‑feu" #: firewall/views.py:93 msgid "Manage Firewall Rule" -msgstr "" +msgstr "Gérer la règle du pare‑feu" #: firewall/views.py:111 msgid "Firewall rule deleted successfully" -msgstr "" +msgstr "Règle du pare‑feu supprimée avec succès" #: firewall/views.py:113 msgid "" "Error deleting Firewall rule|Confirmation did not match. Firewall rule was " "not deleted." msgstr "" +"Erreur de suppression de la règle|La confirmation ne correspond pas ; la " +"règle n’a pas été supprimée." #: firewall/views.py:125 msgid "Firewall rule saved successfully" -msgstr "" +msgstr "Règle du pare‑feu enregistrée avec succès" #: firewall/views.py:157 msgid "Manage Firewall Settings" -msgstr "" +msgstr "Gérer les paramètres du pare‑feu" #: firewall/views.py:173 msgid "Firewall settings saved successfully" -msgstr "" +msgstr "Paramètres du pare‑feu enregistrés avec succès" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" -msgstr "" +msgstr "Langue" #: intl_tools/forms.py:22 templates/base.html:80 msgid "Change Language" -msgstr "" +msgstr "Changer de langue" #: templates/access_denied.html:9 msgid "Access Denied" -msgstr "" +msgstr "Accès refusé" #: templates/access_denied.html:12 msgid "Sorry, you do not have permission to access this page." -msgstr "" +msgstr "Désolé, vous n’avez pas l’autorisation d’accéder à cette page." #: templates/access_denied.html:12 msgid "" "Please contact your system administrator if you believe this is an error." msgstr "" +"Veuillez contacter votre administrateur système si vous pensez qu’il s’agit " +"d’une erreur." #: templates/accounts/login.html:14 templates/user_manager/list.html:8 #: user_manager/forms.py:13 vpn_invite/forms.py:281 msgid "Username" -msgstr "" +msgstr "Nom d’utilisateur" #: templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" -msgstr "" +msgstr "Mot de passe" #: templates/accounts/login.html:32 msgid "Login" -msgstr "" +msgstr "Connexion" #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." -msgstr "" +msgstr "Vous avez été déconnecté avec succès." #: templates/accounts/logout.html:14 msgid "Login again" -msgstr "" +msgstr "Se reconnecter" #: templates/base.html:112 templates/dns/static_host_list.html:72 #: vpn_invite/forms.py:78 vpn_invite/forms.py:79 vpn_invite/forms.py:80 #: vpn_invite/forms.py:81 vpn_invite/forms.py:82 msgid "Status" -msgstr "" +msgstr "Statut" #: templates/base.html:158 user_manager/views.py:74 msgid "User Manager" -msgstr "" +msgstr "Gestion des utilisateurs" #: templates/base.html:176 templates/wireguard/wireguard_peer_list.html:195 #: vpn_invite/views.py:37 msgid "VPN Invite" -msgstr "" +msgstr "Invitation VPN" #: templates/base.html:254 msgid "Update Required" -msgstr "" +msgstr "Mise à jour requise" #: templates/base.html:256 msgid "" "Your WireGuard settings have been modified. To apply these changes, please " "update the configuration and reload the WireGuard service." msgstr "" +"Les paramètres WireGuard ont été modifiés. Pour appliquer ces changements, " +"mettez à jour la configuration et rechargez le service WireGuard." #: templates/base.html:265 msgid "Update and restart service" -msgstr "" +msgstr "Mettre à jour et redémarrer le service" #: templates/base.html:273 msgid "Update and reload service" -msgstr "" +msgstr "Mettre à jour et recharger le service" #: templates/base.html:286 msgid "Update Available" -msgstr "" +msgstr "Mise à jour disponible" #: templates/base.html:288 msgid "Version" -msgstr "" +msgstr "Version" #: templates/console/console.html:12 msgid "Clear" -msgstr "" +msgstr "Effacer" #: templates/console/console.html:27 msgid "Destination Hostname or IP Address" -msgstr "" +msgstr "Nom d’hôte ou adresse IP de destination" #: templates/dns/static_host_list.html:9 msgid "Static Host List" -msgstr "" +msgstr "Liste d’hôtes statiques" #: templates/dns/static_host_list.html:45 msgid "Add" -msgstr "" +msgstr "Ajouter" #: templates/dns/static_host_list.html:46 msgid "Settings" -msgstr "" +msgstr "Paramètres" #: templates/dns/static_host_list.html:47 msgid "Apply" -msgstr "" +msgstr "Appliquer" #: templates/dns/static_host_list.html:59 msgid "DNS Filter Lists" -msgstr "" +msgstr "Listes de filtres DNS" #: templates/dns/static_host_list.html:70 msgid "Hosts" -msgstr "" +msgstr "Hôtes" #: templates/dns/static_host_list.html:71 msgid "Last Update" -msgstr "" +msgstr "Dernière mise à jour" #: templates/dns/static_host_list.html:73 msgid "Update" -msgstr "" +msgstr "Mettre à jour" #: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53 #: templates/user_manager/peer_group_list.html:35 #: templates/wireguard/wireguard_peer_list.html:196 msgid "Edit" -msgstr "" +msgstr "Modifier" #: templates/dns/static_host_list.html:116 msgid "Add Filter List" -msgstr "" +msgstr "Ajouter une liste de filtres" #: templates/firewall/firewall_nav_tabs.html:11 msgid "Port Forward" -msgstr "" +msgstr "Redirection de port" #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" -msgstr "" +msgstr "Politique par défaut" #: templates/firewall/firewall_rule_list.html:40 msgid "In" -msgstr "" +msgstr "Entrée" #: templates/firewall/firewall_rule_list.html:41 msgid "Out" -msgstr "" +msgstr "Sortie" #: templates/firewall/firewall_rule_list.html:42 #: templates/firewall/manage_firewall_rule.html:141 msgid "Source" -msgstr "" +msgstr "Source" #: templates/firewall/firewall_rule_list.html:43 #: templates/firewall/manage_firewall_rule.html:202 #: templates/firewall/redirect_rule_list.html:15 msgid "Destination" -msgstr "" +msgstr "Destination" #: templates/firewall/firewall_rule_list.html:45 #: templates/firewall/manage_redirect_rule.html:30 #: templates/firewall/redirect_rule_list.html:14 #: templates/wireguard/wireguard_status.html:47 vpn_invite/forms.py:284 msgid "Port" -msgstr "" +msgstr "Port" #: templates/firewall/firewall_rule_list.html:46 msgid "State" -msgstr "" +msgstr "État" #: templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 msgid "Action" -msgstr "" +msgstr "Action" #: templates/firewall/firewall_rule_list.html:53 msgid "Automatic rule: Allow established/related traffic" -msgstr "" +msgstr "Règle automatique : autoriser le trafic établi/associé" #: templates/firewall/firewall_rule_list.html:58 #: templates/firewall/firewall_rule_list.html:138 msgid "all" -msgstr "" +msgstr "tous" #: templates/firewall/firewall_rule_list.html:71 #: templates/firewall/firewall_rule_list.html:97 msgid "Automatic Rule: Port forward." -msgstr "" +msgstr "Règle automatique : redirection de port." #: templates/firewall/firewall_rule_list.html:158 msgid "Automatic Rule: Firewall Settings Peer to Peer traffic" -msgstr "" +msgstr "Règle automatique : trafic Peer ↔ Peer (paramètres du pare‑feu)" #: templates/firewall/firewall_rule_list.html:179 msgid "Automatic Rule: Firewall Settings Instance to Instance" msgstr "" +"Règle automatique : trafic Instance ↔ Instance (paramètres du pare‑feu)" #: templates/firewall/firewall_rule_list.html:194 msgid "Create Firewall Rule" -msgstr "" +msgstr "Créer une règle de pare‑feu" #: templates/firewall/firewall_rule_list.html:195 #: templates/firewall/redirect_rule_list.html:59 msgid "Firewall Settings" -msgstr "" +msgstr "Paramètres du pare‑feu" #: templates/firewall/firewall_rule_list.html:196 msgid "Display automatic rules" -msgstr "" +msgstr "Afficher les règles automatiques" #: templates/firewall/manage_firewall_rule.html:18 msgid "General" -msgstr "" +msgstr "Général" #: templates/firewall/manage_firewall_rule.html:79 msgid "" @@ -680,10 +696,23 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Configuration avancée du pare‑feu " +"VPN
\n" +"

\n" +" Cette interface est un outil complet " +"de gestion des règles de pare‑feu ; elle permet de définir des politiques de " +"trafic avancées entre pairs VPN et réseaux. Elle simplifie la création de " +"règles, le filtrage de paquets et les configurations NAT afin d’offrir un " +"contrôle précis sur la sécurité. Les utilisateurs peuvent spécifier adresses " +"IP source et destination, ports, protocoles et actions pour ajuster le flux " +"de trafic, garantissant ainsi un environnement réseau sûr et efficace.\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:100 msgid "Interface" -msgstr "" +msgstr "Interface" #: templates/firewall/manage_firewall_rule.html:179 msgid "" @@ -704,6 +733,21 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Sélection de la source
\n" +"

\n" +" Vous pouvez appliquer cette règle à " +"une adresse IP ou un réseau précis et/ou à plusieurs peers.

\n" +" L’option « Inclure les réseaux du " +"peer » ajoute automatiquement toutes les IP autorisées associées à chaque " +"peer sélectionné.

\n" +" Attention : choisir plusieurs peers " +"avec réseaux inclus en source et en destination peut rapidement augmenter le " +"nombre de règles générées.

\n" +" L’option « Non‑source » annule la " +"source IP, le réseau ou le/les peer(s) sélectionné(s).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:240 msgid "" @@ -725,6 +769,22 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Sélection de la destination
\n" +"

\n" +" Cette règle peut s’appliquer à une " +"adresse IP ou à un réseau précis et/ou à plusieurs peers comme destination." +"

\n" +" « Inclure les réseaux du peer » " +"ajoute automatiquement toutes les IP autorisées de chaque peer sélectionné " +"en destination.

\n" +" Le choix de plusieurs peers avec " +"réseaux inclus en source et destination peut générer un grand nombre de " +"règles.

\n" +" L’option « Non‑destination » annule " +"la destination IP, le réseau ou le/les peer(s) sélectionné(s).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:297 msgid "" @@ -741,18 +801,30 @@ msgid "" "

\n" " " msgstr "" +"\n" +"
Protocole et port
\n" +"

\n" +" Seuls les protocoles les plus " +"courants sont listés. Si vous en avez besoin d’un autre, ouvrez une issue " +"sur GitHub.

\n" +" Choisir TCP+UDP dupliquera les " +"règles générées.

\n" +" Les ports peuvent être indiqués " +"individuellement (ex. 8080) ou en plages (ex. 8001:8999).\n" +"

\n" +" " #: templates/firewall/manage_firewall_rule.html:320 msgid "Packet State" -msgstr "" +msgstr "État du paquet" #: templates/firewall/manage_firewall_rule.html:471 msgid "Please type 'delete' to remove this firewall rule." -msgstr "" +msgstr "Tapez « delete » pour supprimer cette règle de pare‑feu." #: templates/firewall/manage_firewall_settings.html:61 msgid "Reset firewall to default" -msgstr "" +msgstr "Réinitialiser le pare‑feu" #: templates/firewall/manage_firewall_settings.html:77 msgid "" @@ -760,29 +832,32 @@ msgid "" "sure you want to continue?\\n\\nType 'delete all rules and reset firewall' " "to confirm." msgstr "" +"Réinitialiser le pare‑feu supprimera toutes les règles et paramètres. " +"Voulez‑vous vraiment continuer ?\\n\\nTapez « delete all rules and reset " +"firewall » pour confirmer." #: templates/firewall/manage_redirect_rule.html:40 msgid "Destination Type" -msgstr "" +msgstr "Type de destination" #: templates/firewall/manage_redirect_rule.html:42 #: templates/firewall/manage_redirect_rule.html:48 #: templates/vpn_invite/invite_settings.html:17 user_manager/forms.py:178 msgid "Peer" -msgstr "" +msgstr "Pair" #: templates/firewall/manage_redirect_rule.html:57 msgid "WireGuard Instance" -msgstr "" +msgstr "Instance WireGuard" #: templates/firewall/manage_redirect_rule.html:74 msgid "Add Forward Rule (allow)" -msgstr "" +msgstr "Ajouter une règle Forward (allow)" #: templates/firewall/manage_redirect_rule.html:80 #: templates/firewall/redirect_rule_list.html:17 msgid "Masquerade Source" -msgstr "" +msgstr "Masquer l’adresse source" #: templates/firewall/manage_redirect_rule.html:91 msgid "" @@ -812,18 +887,43 @@ msgid "" "all connections to match the IP address of the WireGuard instance.

\n" " " msgstr "" +"\n" +"
Ports par défaut
\n" +"

Le fichier docker-compose.yml " +"par défaut définit la plage de ports TCP 8080‑8089. " +"Si vous souhaitez rediriger vers une autre plage, modifiez ce " +"fichier manuellement, puis relancez l’étape Docker Compose décrite dans les " +"instructions de " +"déploiement.

\n" +"
Type de destination : Peer
\n" +"

La redirection de port privilégiera la première " +"adresse IP du peer dont la priorité est zéro.

\n" +"
Type de destination : Adresse IP
\n" +"

Les règles de transfert de port pointeront vers " +"l’adresse IP spécifiée. N’oubliez pas d’associer cette IP ou ce réseau à un " +"peer.

\n" +"
Ajouter une règle Forward
\n" +"

Génère automatiquement une règle de transfert " +"afin de respecter des paramètres de pare‑feu plus stricts.

\n" +"
Masquer l’adresse source
\n" +"

Solution temporaire lorsque le peer n’utilise pas " +"le VPN comme passerelle par défaut. Cette configuration est déconseillée, " +"car elle remplace l’adresse source de toutes les connexions par l’IP de " +"l’instance WireGuard.

\n" +" " #: templates/firewall/manage_redirect_rule.html:143 msgid "To delete this rule, please type:" -msgstr "" +msgstr "Pour supprimer cette règle, saisissez :" #: templates/firewall/redirect_rule_list.html:12 msgid "Instance" -msgstr "" +msgstr "Instance" #: templates/firewall/redirect_rule_list.html:16 msgid "Allow Forward" -msgstr "" +msgstr "Autoriser Forward" #: templates/firewall/redirect_rule_list.html:46 msgid "" @@ -832,169 +932,172 @@ msgid "" "recommended, as it alters the source address of all connections to match the " "IP address of the WireGuard instance." msgstr "" +"Ceci est une solution temporaire lorsqu’un peer n’utilise pas le VPN comme " +"passerelle par défaut. Cette configuration est déconseillée ; elle remplace " +"l’adresse source de toutes les connexions par l’IP de l’instance WireGuard." #: templates/firewall/redirect_rule_list.html:58 msgid "Create Port forwarding Rule" -msgstr "" +msgstr "Créer une règle de redirection de port" #: templates/user_manager/list.html:9 user_manager/forms.py:20 msgid "User Level" -msgstr "" +msgstr "Niveau utilisateur" #: templates/user_manager/list.html:10 user_manager/forms.py:24 #: user_manager/views.py:17 msgid "Peer Groups" -msgstr "" +msgstr "Groupes de peers" #: templates/user_manager/list.html:11 msgid "Permissions" -msgstr "" +msgstr "Autorisations" #: templates/user_manager/list.html:26 msgid "All" -msgstr "" +msgstr "Tous" #: templates/user_manager/list.html:31 msgid "Restart Enabled" -msgstr "" +msgstr "Redémarrage autorisé" #: templates/user_manager/list.html:36 msgid "Reload Enabled" -msgstr "" +msgstr "Rechargement autorisé" #: templates/user_manager/list.html:42 msgid "Console Enabled" -msgstr "" +msgstr "Console autorisée" #: templates/user_manager/list.html:48 msgid "Enhanced Filter Enabled" -msgstr "" +msgstr "Filtre avancé activé" #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" -msgstr "" +msgstr "Ajouter un utilisateur" #: templates/user_manager/list_buttons.html:3 msgid "List Users" -msgstr "" +msgstr "Lister les utilisateurs" #: templates/user_manager/list_buttons.html:4 msgid "List Peer Groups" -msgstr "" +msgstr "Lister les groupes de peers" #: templates/user_manager/list_buttons.html:5 user_manager/views.py:43 msgid "Add Peer Group" -msgstr "" +msgstr "Ajouter un groupe de peers" #: templates/user_manager/peer_group_list.html:9 #: templates/wireguard/wireguard_status.html:48 msgid "Peers" -msgstr "" +msgstr "Peers" #: templates/user_manager/peer_group_list.html:10 user_manager/forms.py:179 msgid "Server Instance" -msgstr "" +msgstr "Instance serveur" #: templates/user_manager/peer_group_list.html:11 msgid "Users" -msgstr "" +msgstr "Utilisateurs" #: templates/vpn_invite/invite_settings.html:18 msgid "Expiration" -msgstr "" +msgstr "Expiration" #: templates/vpn_invite/invite_settings.html:31 msgid "Remove VPN invitation for peer" -msgstr "" +msgstr "Supprimer l’invitation VPN du peer" #: templates/vpn_invite/invite_settings.html:38 msgid "No active VPN invitations" -msgstr "" +msgstr "Aucune invitation VPN active" #: templates/vpn_invite/invite_settings.html:49 vpn_invite/views.py:77 msgid "Email Settings" -msgstr "" +msgstr "Paramètres e‑mail" #: templates/vpn_invite/invite_settings.html:50 msgid "Invite Settings" -msgstr "" +msgstr "Paramètres d’invitation" #: templates/wireguard/wireguard_manage_ip.html:18 msgid "Enter Allowed IP" -msgstr "" +msgstr "Saisir l’IP autorisée" #: templates/wireguard/wireguard_manage_ip.html:34 #: templates/wireguard/wireguard_manage_peer.html:103 #: templates/wireguard/wireguard_manage_peer.html:153 #: wireguard_peer/forms.py:31 msgid "Priority" -msgstr "" +msgstr "Priorité" #: templates/wireguard/wireguard_manage_ip.html:58 msgid "Please type \\\"delete\\\" to remove this IP address." -msgstr "" +msgstr "Tapez \\\"delete\\\" pour supprimer cette adresse IP." #: templates/wireguard/wireguard_manage_peer.html:8 msgid "Peer Configuration" -msgstr "" +msgstr "Configuration du peer" #: templates/wireguard/wireguard_manage_peer.html:17 msgid "Enter Name" -msgstr "" +msgstr "Saisir le nom" #: templates/wireguard/wireguard_manage_peer.html:23 wireguard_peer/forms.py:14 msgid "Persistent Keepalive" -msgstr "" +msgstr "Keep‑alive persistant" #: templates/wireguard/wireguard_manage_peer.html:29 wireguard/forms.py:14 #: wireguard_peer/forms.py:11 msgid "Public Key" -msgstr "" +msgstr "Clé publique" #: templates/wireguard/wireguard_manage_peer.html:36 wireguard/forms.py:13 #: wireguard_peer/forms.py:12 msgid "Private Key" -msgstr "" +msgstr "Clé privée" #: templates/wireguard/wireguard_manage_peer.html:46 wireguard_peer/forms.py:13 msgid "Pre-Shared Key" -msgstr "" +msgstr "Clé pré‑partagée" #: templates/wireguard/wireguard_manage_peer.html:57 #: templates/wireguard/wireguard_peer_list.html:136 msgid "Peer Traffic" -msgstr "" +msgstr "Trafic du peer" #: templates/wireguard/wireguard_manage_peer.html:73 #: templates/wireguard/wireguard_peer_list.html:151 msgid "No traffic history, please wait a few minutes" -msgstr "" +msgstr "Aucun historique de trafic ; veuillez patienter quelques minutes" #: templates/wireguard/wireguard_manage_peer.html:85 msgid "AllowedIPs at Peer section of wg" -msgstr "" +msgstr "AllowedIPs dans la section Peer de wg" #: templates/wireguard/wireguard_manage_peer.html:86 msgid "Peer IP Addresses and networks" -msgstr "" +msgstr "Adresses IP et réseaux du peer" #: templates/wireguard/wireguard_manage_peer.html:88 #: templates/wireguard/wireguard_manage_peer.html:169 msgid "Add IP Address" -msgstr "" +msgstr "Ajouter une adresse IP" #: templates/wireguard/wireguard_manage_peer.html:101 #: templates/wireguard/wireguard_manage_peer.html:151 msgid "Main ip address" -msgstr "" +msgstr "Adresse IP principale" #: templates/wireguard/wireguard_manage_peer.html:116 msgid "Client Routing Configuration" -msgstr "" +msgstr "Configuration du routage client" #: templates/wireguard/wireguard_manage_peer.html:118 msgid "Add Client route" -msgstr "" +msgstr "Ajouter une route client" #: templates/wireguard/wireguard_manage_peer.html:124 msgid "" @@ -1004,6 +1107,10 @@ msgid "" "will need to manually update the client configuration file to reflect these " "settings." msgstr "" +"Le client n’est pas configuré pour utiliser le VPN comme passerelle par " +"défaut.\\n\\nSeuls les réseaux indiqués ci‑dessous sont routés via le VPN." +"\\n\\nRemarque : ces routes ne sont pas poussées automatiquement vers le " +"client ; vous devrez mettre à jour manuellement son fichier de configuration." #: templates/wireguard/wireguard_manage_peer.html:127 msgid "" @@ -1011,133 +1118,141 @@ msgid "" "setting routes all client internet traffic through the VPN, enhancing " "privacy and security across all connections." msgstr "" +"Le client est configuré pour utiliser le VPN comme passerelle par défaut." +"\\n\\nTout son trafic Internet passe donc par le VPN, améliorant la " +"confidentialité et la sécurité de ses connexions." #: templates/wireguard/wireguard_manage_peer.html:136 msgid "default route" -msgstr "" +msgstr "route par défaut" #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Delete Peer" -msgstr "" +msgstr "Supprimer le peer" #: templates/wireguard/wireguard_manage_peer.html:188 msgid "Action Required!" -msgstr "" +msgstr "Action requise !" #: templates/wireguard/wireguard_manage_peer.html:189 msgid "" "When manually updating the \"Public Key\", \"Pre-Shared Key\", or \"Private " "Key\", please ensure the configuration is correct." msgstr "" +"Lorsque vous modifiez manuellement la « Clé publique », la « Clé " +"pré‑partagée » ou la « Clé privée », vérifiez que la configuration est " +"correcte." #: templates/wireguard/wireguard_manage_peer.html:209 msgid "Please type \\\"delete\\\" to remove peer configuration." -msgstr "" +msgstr "Tapez \\\"delete\\\" pour supprimer la configuration du peer." #: templates/wireguard/wireguard_manage_server.html:18 msgid "Create Instance" -msgstr "" +msgstr "Créer une instance" #: templates/wireguard/wireguard_manage_server.html:132 msgid "Delete Configuration" -msgstr "" +msgstr "Supprimer la configuration" #: templates/wireguard/wireguard_peer_list.html:75 #: templates/wireguard/wireguard_peer_list.html:125 msgid "Throughput" -msgstr "" +msgstr "Débit" #: templates/wireguard/wireguard_peer_list.html:76 #: templates/wireguard/wireguard_peer_list.html:126 msgid "Transfer" -msgstr "" +msgstr "Transfert" #: templates/wireguard/wireguard_peer_list.html:77 #: templates/wireguard/wireguard_peer_list.html:127 msgid "Latest Handshake" -msgstr "" +msgstr "Dernier handshake" #: templates/wireguard/wireguard_peer_list.html:79 #: templates/wireguard/wireguard_peer_list.html:128 msgid "Endpoints" -msgstr "" +msgstr "Points de terminaison" #: templates/wireguard/wireguard_peer_list.html:81 #: templates/wireguard/wireguard_peer_list.html:129 msgid "Allowed IPs" -msgstr "" +msgstr "IPs autorisées" #: templates/wireguard/wireguard_peer_list.html:102 msgid "Are you sure you want to create a new peer?" -msgstr "" +msgstr "Voulez‑vous vraiment créer un nouveau peer ?" #: templates/wireguard/wireguard_peer_list.html:102 #: templates/wireguard/wireguard_peer_list.html:104 msgid "Create Peer" -msgstr "" +msgstr "Créer un peer" #: templates/wireguard/wireguard_peer_list.html:106 #: templates/wireguard/wireguard_peer_list.html:617 msgid "Show extras" -msgstr "" +msgstr "Afficher les extras" #: templates/wireguard/wireguard_peer_list.html:158 msgid "Close QR Code" -msgstr "" +msgstr "Fermer le QR Code" #: templates/wireguard/wireguard_peer_list.html:168 msgid "VPN Invite Details" -msgstr "" +msgstr "Détails de l’invitation VPN" #: templates/wireguard/wireguard_peer_list.html:174 msgid "Expires on" -msgstr "" +msgstr "Expire le" #: templates/wireguard/wireguard_peer_list.html:178 msgid "Enter Email or WhatsApp Number" -msgstr "" +msgstr "Saisir l’e‑mail ou le numéro WhatsApp" #: templates/wireguard/wireguard_peer_list.html:179 msgid "Email or phone number" -msgstr "" +msgstr "E‑mail ou numéro de téléphone" #: templates/wireguard/wireguard_peer_list.html:182 msgid "Copy Text" -msgstr "" +msgstr "Copier le texte" #: templates/wireguard/wireguard_peer_list.html:183 msgid "Email" -msgstr "" +msgstr "E‑mail" #: templates/wireguard/wireguard_peer_list.html:184 msgid "WhatsApp" -msgstr "" +msgstr "WhatsApp" #: templates/wireguard/wireguard_peer_list.html:192 msgid "Close" -msgstr "" +msgstr "Fermer" #: templates/wireguard/wireguard_peer_list.html:193 msgid "Config" -msgstr "" +msgstr "Config" #: templates/wireguard/wireguard_peer_list.html:194 msgid "QR Code" -msgstr "" +msgstr "QR Code" #: templates/wireguard/wireguard_peer_list.html:204 msgid "No WireGuard Instances Found" -msgstr "" +msgstr "Aucune instance WireGuard trouvée" #: templates/wireguard/wireguard_peer_list.html:205 msgid "" "There are no WireGuard instances configured. You can add a new instance by " "clicking the button below." msgstr "" +"Aucune instance WireGuard n’est configurée. Vous pouvez en ajouter une en " +"cliquant sur le bouton ci‑dessous." #: templates/wireguard/wireguard_peer_list.html:208 msgid "Add WireGuard Instance" -msgstr "" +msgstr "Ajouter une instance WireGuard" #: templates/wireguard/wireguard_peer_list.html:570 msgid "" @@ -1145,6 +1260,9 @@ msgid "" "indicating that another peer has an IP overlapping this network or that the " "configuration file is outdated." msgstr "" +"Cette adresse n’apparaît pas dans la sortie de la commande « wg show ». Il " +"est probable qu’un autre peer utilise un IP chevauchant ce réseau ou que le " +"fichier de configuration soit obsolète." #: templates/wireguard/wireguard_peer_list.html:585 msgid "" @@ -1152,158 +1270,162 @@ msgid "" "may indicate that another peer is using an overlapping IP or that the " "configuration file is outdated." msgstr "" +"Au moins une adresse n’apparaît pas dans la sortie « wg show » ; cela peut " +"signifier qu’un autre peer utilise un IP chevauchant ou que la configuration " +"est obsolète." #: templates/wireguard/wireguard_peer_list.html:614 msgid "Hide extras" -msgstr "" +msgstr "Masquer les extras" #: templates/wireguard/wireguard_peer_list.html:658 #: templates/wireguard/wireguard_peer_list.html:792 msgid "Access Password" -msgstr "" +msgstr "Mot de passe d’accès" #: templates/wireguard/wireguard_peer_list.html:658 #: templates/wireguard/wireguard_peer_list.html:792 msgid "(Share this password via a separate secure channel)" -msgstr "" +msgstr "(Partagez ce mot de passe via un canal sécurisé distinct)" #: templates/wireguard/wireguard_peer_list.html:661 msgid "Unknown error" -msgstr "" +msgstr "Erreur inconnue" #: templates/wireguard/wireguard_peer_list.html:665 msgid "Error creating invite." -msgstr "" +msgstr "Erreur lors de la création de l’invitation." #: templates/wireguard/wireguard_peer_list.html:702 msgid "Invite text copied to clipboard." -msgstr "" +msgstr "Texte d’invitation copié dans le presse‑papiers." #: templates/wireguard/wireguard_peer_list.html:704 msgid "Failed to copy text." -msgstr "" +msgstr "Échec de la copie du texte." #: templates/wireguard/wireguard_peer_list.html:707 msgid "Clipboard API not supported." -msgstr "" +msgstr "API Clipboard non prise en charge." #: templates/wireguard/wireguard_peer_list.html:716 msgid "Please enter a valid phone number for WhatsApp." -msgstr "" +msgstr "Veuillez saisir un numéro de téléphone WhatsApp valide." #: templates/wireguard/wireguard_peer_list.html:728 #: templates/wireguard/wireguard_peer_list.html:774 msgid "Invite data is not available." -msgstr "" +msgstr "Les données d’invitation ne sont pas disponibles." #: templates/wireguard/wireguard_peer_list.html:737 msgid "Please enter a valid email address." -msgstr "" +msgstr "Veuillez saisir une adresse e‑mail valide." #: templates/wireguard/wireguard_peer_list.html:759 msgid "Error sending email." -msgstr "" +msgstr "Erreur lors de l’envoi de l’e‑mail." #: templates/wireguard/wireguard_peer_list.html:796 #: templates/wireguard/wireguard_peer_list.html:800 msgid "Error refreshing invite." -msgstr "" +msgstr "Erreur lors de l’actualisation de l’invitation." #: templates/wireguard/wireguard_peer_list.html:815 msgid "No invite data available to refresh." -msgstr "" +msgstr "Aucune donnée d’invitation à actualiser." #: templates/wireguard/wireguard_peer_list.html:835 msgid "Error closing invite:" -msgstr "" +msgstr "Erreur lors de la fermeture de l’invitation :" #: templates/wireguard/wireguard_status.html:9 msgid "Update Configuration" -msgstr "" +msgstr "Mettre à jour la configuration" #: templates/wireguard/wireguard_status.html:16 msgid "Restart Wireguard service" -msgstr "" +msgstr "Redémarrer le service WireGuard" #: templates/wireguard/wireguard_status.html:24 msgid "Reload Wireguard service" -msgstr "" +msgstr "Recharger le service WireGuard" #: templates/wireguard/wireguard_status.html:42 msgid "Instance Traffic" -msgstr "" +msgstr "Trafic de l’instance" #: templates/wireguard/wireguard_status.html:46 wireguard/forms.py:15 msgid "Public Address" -msgstr "" +msgstr "Adresse publique" #: user_manager/forms.py:15 msgid "Password Confirmation" -msgstr "" +msgstr "Confirmation du mot de passe" #: user_manager/forms.py:17 msgid "Reload WireGuard" -msgstr "" +msgstr "Recharger WireGuard" #: user_manager/forms.py:18 msgid "Restart WireGuard" -msgstr "" +msgstr "Redémarrer WireGuard" #: user_manager/forms.py:19 msgid "Enhanced Filter" -msgstr "" +msgstr "Filtre avancé" #: user_manager/forms.py:119 msgid "Password is required for new users." -msgstr "" +msgstr "Le mot de passe est requis pour les nouveaux utilisateurs." #: user_manager/forms.py:121 msgid "Password confirmation is required for new users." msgstr "" +"La confirmation du mot de passe est requise pour les nouveaux utilisateurs." #: user_manager/forms.py:125 msgid "The two password fields didn't match." -msgstr "" +msgstr "Les deux champs de mot de passe ne correspondent pas." #: user_manager/forms.py:127 msgid "Password must be at least 8 characters long." -msgstr "" +msgstr "Le mot de passe doit comporter au moins 8 caractères." #: user_manager/forms.py:220 msgid "A peer group with that name already exists." -msgstr "" +msgstr "Un groupe de peers portant ce nom existe déjà." #: user_manager/models.py:13 msgid "Debugging Analyst" -msgstr "" +msgstr "Analyste de débogage" #: user_manager/models.py:14 vpn_invite/models.py:25 msgid "View Only" -msgstr "" +msgstr "Lecture seule" #: user_manager/models.py:15 vpn_invite/models.py:25 msgid "Peer Manager" -msgstr "" +msgstr "Gestionnaire de peers" #: user_manager/models.py:16 vpn_invite/models.py:25 msgid "WireGuard Manager" -msgstr "" +msgstr "Gestionnaire WireGuard" #: user_manager/models.py:17 vpn_invite/models.py:25 msgid "Administrator" -msgstr "" +msgstr "Administrateur" #: user_manager/views.py:31 msgid "Edit Peer Group: " -msgstr "" +msgstr "Modifier le groupe de peers : " #: user_manager/views.py:36 msgid "Peer Group deleted|Peer Group deleted: " -msgstr "" +msgstr "Groupe de peers supprimé|Groupe supprimé : " #: user_manager/views.py:39 msgid "Peer Group not deleted|Invalid confirmation." -msgstr "" +msgstr "Groupe non supprimé|Confirmation invalide." #: user_manager/views.py:58 msgid "" @@ -1317,30 +1439,39 @@ msgid "" "this peer group, including adding or removing peers.

\n" " " msgstr "" +"\n" +"
Peers
\n" +"

Sélectionnez les peers que les utilisateurs de ce groupe peuvent " +"gérer.

\n" +"\n" +"
Instances WireGuard
\n" +"

Tous les peers de cette instance WireGuard pourront être gérés " +"par les utilisateurs du groupe, y compris l’ajout et la suppression.

\n" +" " #: user_manager/views.py:98 msgid "Edit User" -msgstr "" +msgstr "Modifier l’utilisateur" #: user_manager/views.py:104 msgid "User deleted|User deleted: " -msgstr "" +msgstr "Utilisateur supprimé|Utilisateur supprimé : " #: user_manager/views.py:107 msgid "User not deleted|Invalid confirmation." -msgstr "" +msgstr "Utilisateur non supprimé|Confirmation invalide." #: user_manager/views.py:128 msgid "User Disconnected|User Disconnected: " -msgstr "" +msgstr "Utilisateur déconnecté|Utilisateur déconnecté : " #: user_manager/views.py:132 msgid "User updated|User updated: " -msgstr "" +msgstr "Utilisateur mis à jour|Utilisateur mis à jour : " #: user_manager/views.py:134 msgid "User created|User created: " -msgstr "" +msgstr "Utilisateur créé|Utilisateur créé : " #: user_manager/views.py:139 msgid "" @@ -1384,170 +1515,211 @@ msgid "" "\n" " " msgstr "" +"\n" +"

Niveaux d’utilisateur

\n" +"
Analyste de débogage
\n" +"

Accès aux informations système de base et aux journaux pour le " +"dépannage. Aucun droit de modifier les paramètres ni de consulter des " +"données sensibles (comme les clés des peers).

\n" +"\n" +"
Lecture seule
\n" +"

Droit de tout visualiser, y compris les clés des peers et les " +"fichiers de configuration. Impossible de modifier quoi que ce soit.

\n" +"\n" +"
Gestionnaire de peers
\n" +"

Peut ajouter, modifier et supprimer des peers et des adresses IP, " +"sans toutefois modifier la configuration des instances WireGuard ni d’autres " +"paramètres avancés.

\n" +"\n" +"
Gestionnaire WireGuard
\n" +"

Autorisé à ajouter, modifier et supprimer les configurations des " +"instances WireGuard.

\n" +"\n" +"
Administrateur
\n" +"

Accès complet au système : peut consulter et modifier tous les " +"paramètres, configurations et gérer les utilisateurs.

\n" +"\n" +"
\n" +"

Groupes de peers

\n" +"

Sélectionnez les groupes de peers accessibles à cet utilisateur. " +"Sans sélection, il aura accès à tous les peers.

\n" +"\n" +"

Console

\n" +"

Activer ou désactiver l’accès à la console Web pour cet " +"utilisateur.

\n" +"\n" +"

Filtre avancé

\n" +"

Limite la réponse de l’API aux seuls peers autorisés pour " +"l’utilisateur. Selon la taille de votre environnement, cette option peut " +"affecter les performances. Pour compenser, augmentez éventuellement " +"l’« intervalle d’actualisation Web » afin de réduire le nombre de requêtes.\n" +"\n" +" " #: user_manager/views.py:175 msgid "Please type the username to proceed." -msgstr "" +msgstr "Veuillez saisir le nom d’utilisateur pour continuer." #: vpn_invite/forms.py:49 vpn_invite/forms.py:294 msgid "Enabled" -msgstr "" +msgstr "Activé" #: vpn_invite/forms.py:49 msgid "Disabled" -msgstr "" +msgstr "Désactivé" #: vpn_invite/forms.py:68 vpn_invite/forms.py:69 vpn_invite/forms.py:70 #: vpn_invite/forms.py:71 vpn_invite/forms.py:72 msgid "URL" -msgstr "" +msgstr "URL" #: vpn_invite/forms.py:73 vpn_invite/forms.py:74 vpn_invite/forms.py:75 #: vpn_invite/forms.py:76 vpn_invite/forms.py:77 msgid "Text" -msgstr "" +msgstr "Texte" #: vpn_invite/forms.py:83 msgid "Web Page Instructions" -msgstr "" +msgstr "Instructions de la page Web" #: vpn_invite/forms.py:84 msgid "Email Subject" -msgstr "" +msgstr "Objet de l’e‑mail" #: vpn_invite/forms.py:85 msgid "Email Message" -msgstr "" +msgstr "Message e‑mail" #: vpn_invite/forms.py:86 msgid "Email Enabled" -msgstr "" +msgstr "E‑mail activé" #: vpn_invite/forms.py:87 msgid "WhatsApp Message" -msgstr "" +msgstr "Message WhatsApp" #: vpn_invite/forms.py:88 msgid "WhatsApp Enabled" -msgstr "" +msgstr "WhatsApp activé" #: vpn_invite/forms.py:89 msgid "Text Message" -msgstr "" +msgstr "Message texte" #: vpn_invite/forms.py:90 msgid "Expiration (minutes)" -msgstr "" +msgstr "Expiration (minutes)" #: vpn_invite/forms.py:91 msgid "Random Password" -msgstr "" +msgstr "Mot de passe aléatoire" #: vpn_invite/forms.py:92 msgid "Invite URL" -msgstr "" +msgstr "URL d’invitation" #: vpn_invite/forms.py:93 msgid "Required User Level" -msgstr "" +msgstr "Niveau utilisateur requis" #: vpn_invite/forms.py:94 msgid "Default Password" -msgstr "" +msgstr "Mot de passe par défaut" #: vpn_invite/forms.py:95 msgid "Random Password Length" -msgstr "" +msgstr "Longueur du mot de passe aléatoire" #: vpn_invite/forms.py:96 msgid "Random Password Complexity" -msgstr "" +msgstr "Complexité du mot de passe aléatoire" #: vpn_invite/forms.py:103 msgid "General Settings" -msgstr "" +msgstr "Paramètres généraux" #: vpn_invite/forms.py:125 msgid "Download Buttons" -msgstr "" +msgstr "Boutons de téléchargement" #: vpn_invite/forms.py:158 msgid "Message templates" -msgstr "" +msgstr "Modèles de message" #: vpn_invite/forms.py:165 msgid "Email Message Template" -msgstr "" +msgstr "Modèle de message e‑mail" #: vpn_invite/forms.py:176 msgid "WhatsApp Message Template" -msgstr "" +msgstr "Modèle de message WhatsApp" #: vpn_invite/forms.py:183 msgid "Text Message Template" -msgstr "" +msgstr "Modèle de message texte" #: vpn_invite/forms.py:205 msgid "Invite URL must start with 'https://'." -msgstr "" +msgstr "L’URL d’invitation doit commencer par « https:// »." #: vpn_invite/forms.py:207 msgid "Invite URL must end with '/invite/'." -msgstr "" +msgstr "L’URL d’invitation doit se terminer par « /invite/ »." #: vpn_invite/forms.py:213 msgid "Expiration (minutes) must be between 1 and 1440." -msgstr "" +msgstr "L’expiration (en minutes) doit être comprise entre 1 et 1440." #: vpn_invite/forms.py:222 msgid "Default password must not be provided when random password is enabled." -msgstr "" +msgstr "Le mot de passe par défaut ne doit pas être fourni lorsque le mot de passe aléatoire est activé." #: vpn_invite/forms.py:224 msgid "Random password length must be at least 6 characters." -msgstr "" +msgstr "La longueur du mot de passe aléatoire doit être d’au moins 6 caractères." #: vpn_invite/forms.py:229 msgid "Default password must be provided when random password is disabled." -msgstr "" +msgstr "Un mot de passe par défaut doit être fourni lorsque le mot de passe aléatoire est désactivé." #: vpn_invite/forms.py:231 msgid "Default password must be at least 6 characters long." -msgstr "" +msgstr "Le mot de passe par défaut doit comporter au moins 6 caractères." #: vpn_invite/forms.py:241 msgid "Text field must not be empty when download button is enabled." -msgstr "" +msgstr "Le champ texte ne doit pas être vide lorsque le bouton de téléchargement est activé." #: vpn_invite/forms.py:243 msgid "URL field must not be empty when download button is enabled." -msgstr "" +msgstr "Le champ URL ne doit pas être vide lorsque le bouton de téléchargement est activé." #: vpn_invite/forms.py:252 msgid "" "Default password must not be contained in any message template. Found at: " -msgstr "" +msgstr "Le mot de passe par défaut ne doit figurer dans aucun modèle de message. Trouvé dans : " #: vpn_invite/forms.py:259 #, python-brace-format msgid "The template must include the placeholder '{invite_url}'." -msgstr "" +msgstr "Le modèle doit contenir l’espace réservé « {invite_url} »." #: vpn_invite/forms.py:283 msgid "Host" -msgstr "" +msgstr "Hôte" #: vpn_invite/forms.py:285 msgid "Encryption" -msgstr "" +msgstr "Chiffrement" #: vpn_invite/forms.py:286 msgid "From Address" -msgstr "" +msgstr "Adresse de l’expéditeur" #: vpn_invite/forms.py:337 msgid "SMTP port must be between 1 and 65535." -msgstr "" +msgstr "Le port SMTP doit être compris entre 1 et 65535." #: vpn_invite/models.py:8 #, python-brace-format @@ -1562,6 +1734,16 @@ msgid "" "Note: This invitation link will expire in {expire_minutes} minutes. If you " "need a new link after expiration, please request another invite." msgstr "" +"Bonjour,\n" +"\n" +"Vous êtes invité·e à rejoindre notre réseau VPN WireGuard sécurisé. Cliquez " +"sur le lien ci‑dessous pour accéder à votre configuration VPN personnalisée :\n" +"\n" +"{invite_url}\n" +"\n" +"Remarque : ce lien d’invitation expirera dans {expire_minutes} minutes. " +"Si vous avez besoin d’un nouveau lien après expiration, veuillez demander " +"une nouvelle invitation." #: vpn_invite/models.py:16 msgid "" @@ -1572,22 +1754,28 @@ msgid "" "download the configuration file to quickly import your " "settings and start using your secure VPN connection.

" msgstr "" +"

Bienvenue dans votre configuration VPN

\n" +"

Commencez par télécharger l’application WireGuard pour votre appareil à " +"l’aide de l’un des liens ci‑dessous.

\n" +"

Une fois installée, vous pouvez scanner le QR Code ou " +"télécharger le fichier de configuration pour importer " +"rapidement vos paramètres et profiter de votre connexion VPN sécurisée.

" #: vpn_invite/models.py:30 msgid "Letters, Digits, Special Characters" -msgstr "" +msgstr "Lettres, chiffres, caractères spéciaux" #: vpn_invite/models.py:31 msgid "Letters, Digits" -msgstr "" +msgstr "Lettres, chiffres" #: vpn_invite/models.py:31 msgid "Letters" -msgstr "" +msgstr "Lettres" #: vpn_invite/models.py:31 msgid "Digits" -msgstr "" +msgstr "Chiffres" #: vpn_invite/models.py:55 msgid "" @@ -1595,227 +1783,241 @@ msgid "" "After installation, you can scan the QR code or download the configuration " "file to import on your device." msgstr "" +"Téléchargez l’application WireGuard pour votre appareil via l’un des liens " +"ci‑dessous. Après l’installation, scannez le QR Code ou téléchargez le " +"fichier de configuration pour l’importer sur votre appareil." #: vpn_invite/models.py:61 msgid "WireGuard VPN Invite" -msgstr "" +msgstr "Invitation VPN WireGuard" #: vpn_invite/views.py:53 msgid "Invite Settings|Settings saved successfully." -msgstr "" +msgstr "Paramètres d’invitation | Paramètres enregistrés avec succès." #: vpn_invite/views.py:57 msgid "VPN Invite Settings" -msgstr "" +msgstr "Paramètres de l’invitation VPN" #: vpn_invite/views.py:73 msgid "Email Settings|Settings saved successfully." -msgstr "" +msgstr "Paramètres e‑mail | Paramètres enregistrés avec succès." #: wireguard/forms.py:11 msgid "Display Name" -msgstr "" +msgstr "Nom à afficher" #: wireguard/forms.py:12 msgid "Instance ID" -msgstr "" +msgstr "ID de l’instance" #: wireguard/forms.py:16 msgid "Listen Port" -msgstr "" +msgstr "Port d’écoute" #: wireguard/forms.py:17 msgid "Internal IP Address" -msgstr "" +msgstr "Adresse IP interne" #: wireguard/forms.py:19 msgid "Post Up" -msgstr "" +msgstr "Post‑Up" #: wireguard/forms.py:20 msgid "Post Down" -msgstr "" +msgstr "Post‑Down" #: wireguard/forms.py:21 msgid "Web Refresh Interval" -msgstr "" +msgstr "Intervalle d’actualisation Web" #: wireguard/forms.py:42 msgid "Peer List Refresh Interval must be at least 5 seconds" -msgstr "" +msgstr "L’intervalle d’actualisation de la liste des peers doit être d’au moins 5 secondes." #: wireguard/forms.py:45 msgid "Invalid hostname or IP Address" -msgstr "" +msgstr "Nom d’hôte ou adresse IP invalide" #: wireguard/forms.py:54 msgid "The selected network range overlaps with another instance." -msgstr "" +msgstr "La plage réseau sélectionnée chevauche une autre instance." #: wireguard/views.py:97 msgid "WireGuard Status" -msgstr "" +msgstr "Statut WireGuard" #: wireguard/views.py:129 msgid "Update WireGuard Instance" -msgstr "" +msgstr "Mettre à jour l’instance WireGuard" #: wireguard/views.py:133 msgid "Delete WireGuard Instance" -msgstr "" +msgstr "Supprimer l’instance WireGuard" #: wireguard/views.py:136 msgid "Error removing instance: wg" -msgstr "" +msgstr "Erreur lors de la suppression de l’instance : wg" #: wireguard/views.py:136 -msgid "" -"|Cannot delete the requested WireGuard instance. There are still peers " -"associated with this instance." -msgstr "" +msgid "|Cannot delete the requested WireGuard instance. There are still peers associated with this instance." +msgstr "|Impossible de supprimer l’instance WireGuard demandée ; des peers y sont encore associés." #: wireguard/views.py:139 msgid "|WireGuard instance deleted: wg" -msgstr "" +msgstr "|Instance WireGuard supprimée : wg" #: wireguard/views.py:142 msgid "Invalid confirmation|Please confirm deletion of WireGuard instance: wg" -msgstr "" +msgstr "Confirmation invalide | Veuillez confirmer la suppression de l’instance WireGuard : wg" #: wireguard/views.py:146 msgid "Create a new WireGuard Instance" -msgstr "" +msgstr "Créer une nouvelle instance WireGuard" #: wireguard/views.py:147 msgid "New WireGuard Instance" -msgstr "" +msgstr "Nouvelle instance WireGuard" #: wireguard_peer/forms.py:29 msgid "Allowed IP or Network" -msgstr "" +msgstr "IP ou réseau autorisé" #: wireguard_peer/forms.py:39 msgid "Please provide a valid IP address." -msgstr "" +msgstr "Veuillez fournir une adresse IP valide." #: wireguard_peer/forms.py:48 msgid "A peer can have only one IP with priority zero." -msgstr "" +msgstr "Un peer ne peut avoir qu’une seule IP de priorité zéro." #: wireguard_peer/forms.py:54 msgid "This IP is already in use by another peer." -msgstr "" +msgstr "Cette adresse IP est déjà utilisée par un autre peer." #: wireguard_peer/forms.py:56 msgid "" "The IP address does not belong to the Peer's WireGuard instance network " "range. Please check the IP address or change the priority." msgstr "" +"L’adresse IP n’appartient pas à la plage réseau de l’instance WireGuard du " +"peer. Veuillez vérifier l’adresse ou modifier la priorité." #: wireguard_peer/forms.py:58 msgid "The netmask for priority 0 IP must be 32." -msgstr "" +msgstr "Le masque de sous‑réseau pour une IP de priorité 0 doit être 32." #: wireguard_peer/forms.py:60 msgid "The IP address is the same as the Peer's WireGuard instance address." -msgstr "" +msgstr "Cette adresse IP est identique à celle de l’instance WireGuard du peer." #: wireguard_peer/forms.py:63 msgid "" "The IP address belongs to the Peer's WireGuard instance network range. " "Please check the IP address or change use priority 0 instead." msgstr "" +"L’adresse IP se trouve déjà dans la plage réseau de l’instance WireGuard du " +"peer. Vérifiez l’adresse ou utilisez plutôt la priorité 0." #: wireguard_peer/forms.py:66 msgid "Priority must be greater than or equal to 1" -msgstr "" +msgstr "La priorité doit être supérieure ou égale à 1." #: wireguard_peer/forms.py:68 msgid "Invalid config file" -msgstr "" +msgstr "Fichier de configuration invalide" #: wireguard_peer/views.py:50 msgid "WireGuard Peer List" -msgstr "" +msgstr "Liste des peers WireGuard" #: wireguard_peer/views.py:129 msgid "Create a new Peer for instance wg" -msgstr "" +msgstr "Créer un nouveau peer pour l’instance wg" #: wireguard_peer/views.py:148 msgid "Peer created|Peer created successfully." -msgstr "" +msgstr "Peer créé | Peer créé avec succès." #: wireguard_peer/views.py:153 msgid "Error creating peer|No available IP address found for peer creation." -msgstr "" +msgstr "Erreur de création | Aucune adresse IP disponible pour créer le peer." #: wireguard_peer/views.py:166 msgid "Peer deleted|Peer deleted successfully." -msgstr "" +msgstr "Peer supprimé | Peer supprimé avec succès." #: wireguard_peer/views.py:169 msgid "" "Error deleting peer|Invalid confirmation message. Type \"delete\" to confirm." msgstr "" +"Erreur de suppression | Message de confirmation invalide. Tapez « delete » " +"pour confirmer." #: wireguard_peer/views.py:171 msgid "Update Peer: " -msgstr "" +msgstr "Mettre à jour le peer : " #: wireguard_peer/views.py:182 msgid "Peer updated|Peer updated successfully." -msgstr "" +msgstr "Peer mis à jour | Peer mis à jour avec succès." #: wireguard_peer/views.py:220 msgid "IP address deleted|IP address deleted successfully." -msgstr "" +msgstr "Adresse IP supprimée | Suppression réussie." #: wireguard_peer/views.py:225 msgid "" "Error deleting IP address|Invalid confirmation message. Type \"delete\" to " "confirm." msgstr "" +"Erreur de suppression de l’IP | Message de confirmation invalide. Tapez " +"« delete » pour confirmer." #: wireguard_peer/views.py:230 msgid "Manage client route" -msgstr "" +msgstr "Gérer la route client" #: wireguard_peer/views.py:232 msgid "Manage IP address or Network" -msgstr "" +msgstr "Gérer l’adresse IP ou le réseau" #: wireguard_peer/views.py:245 msgid "IP address updated|IP address updated successfully." -msgstr "" +msgstr "Adresse IP mise à jour | Mise à jour réussie." #: wireguard_peer/views.py:247 msgid "IP address added|IP address added successfully." -msgstr "" +msgstr "Adresse IP ajoutée | Ajout réussi." #: wireguard_tools/views.py:160 msgid "" "Export successful!|WireGuard configuration files have been exported to /etc/" "wireguard/." msgstr "" +"Exportation réussie ! | Les fichiers de configuration WireGuard ont été " +"exportés vers /etc/wireguard/." #: wireguard_tools/views.py:162 msgid "" "Export successful!|WireGuard configuration files have been exported to /etc/" "wireguard/. Don't forget to restart the interfaces." msgstr "" +"Exportation réussie ! | Les fichiers WireGuard ont été exportés vers /etc/" +"wireguard/. N’oubliez pas de redémarrer les interfaces." #: wireguard_tools/views.py:255 msgid "Error reloading" -msgstr "" +msgstr "Erreur de rechargement" #: wireguard_tools/views.py:267 msgid "Error stopping" -msgstr "" +msgstr "Erreur à l’arrêt" #: wireguard_tools/views.py:272 msgid "Error starting" -msgstr "" +msgstr "Erreur au démarrage" + #: wireguard_tools/views.py:279 msgid "" @@ -1823,19 +2025,21 @@ msgid "" "check if the the peers are working as expected. If you find any issues, " "please report them." msgstr "" +"AVERTISSEMENT | L’interface a été rechargée, pas redémarrée. Vérifiez que les " +"peers fonctionnent comme prévu ; signalez tout problème rencontré." #: wireguard_tools/views.py:280 msgid "WireGuard reloaded|The WireGuard service has been reloaded." -msgstr "" +msgstr "WireGuard rechargé | Le service WireGuard a été rechargé." #: wireguard_tools/views.py:282 msgid "WireGuard restarted|The WireGuard service has been restarted." -msgstr "" +msgstr "WireGuard redémarré | Le service WireGuard a été redémarré." #: wireguard_tools/views.py:285 msgid "Errors encountered|Error processing one or more interfaces." -msgstr "" +msgstr "Erreurs rencontrées | Problème lors du traitement d’une ou plusieurs interfaces." #: wireguard_tools/views.py:288 msgid "No interfaces found|No WireGuard interfaces were found to process." -msgstr "" +msgstr "Aucune interface trouvée | Aucune interface WireGuard à traiter."