mirror of
https://github.com/PRVTPRO/Amnezia-Web-Panel.git
synced 2026-10-23 03:37:36 +09:00
Every config and link the panel issues carried the address it opens SSH
to. That is not always where clients can reach the instance: a second IP
on the same box, a port forward, a domain name. Telemt made it worse --
it prints its own tg:// links, and install rewrote public_host in
config.toml with the panel's address, so a manually bound instance
handed out links to the wrong endpoint after every reinstall.
An instance record now carries optional public_host/public_port, set
from the globe button on its card or via
POST /api/servers/{id}/protocol/public-endpoint. The address flows into
AmneziaWG/WireGuard Endpoints, vless:// and tg:// links, connections
created for a user and self-service provisioning. Unset means exactly
what it meant before: the server address and the instance's listen port.
- telemt: the address is written into config.toml and reloaded without a
restart; saving with the box down keeps the record and warns
- telemt: _patch_public_links matches the keys line by line -- the old
pattern could span lines and weld public_host onto the line above
- xray: an explicit public port wins, but meta.json (synced from the
live server.json) still beats the panel's remembered port
- reinstalling an instance keeps the address, like its exit link
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
585 lines
33 KiB
JSON
585 lines
33 KiB
JSON
{
|
|
"nav_servers": "Serveurs",
|
|
"nav_users": "Utilisateurs",
|
|
"nav_settings": "Paramètres",
|
|
"nav_connections": "Connexions",
|
|
"nav_logout": "Déconnexion",
|
|
"theme_dark": "Sombre",
|
|
"theme_light": "Clair",
|
|
"back_to_servers": "← Retour aux serveurs",
|
|
"server_check": "Vérifier",
|
|
"server_checking": "Vérification...",
|
|
"protocols": "Protocoles",
|
|
"install": "Installer",
|
|
"uninstall": "Désinstaller",
|
|
"run": "En cours",
|
|
"stop": "Arrêté",
|
|
"not_installed": "Pas installé",
|
|
"installed": "Installé",
|
|
"add_server": "Ajouter un serveur",
|
|
"no_servers": "Aucun serveur ajouté",
|
|
"name": "Nom",
|
|
"host": "Hôte",
|
|
"port": "Port",
|
|
"status": "Statut",
|
|
"actions": "Actions",
|
|
"edit": "Modifier",
|
|
"delete": "Supprimer",
|
|
"save": "Enregistrer",
|
|
"cancel": "Annuler",
|
|
"loading": "Chargement...",
|
|
"copy": "Copier",
|
|
"download": "Télécharger",
|
|
"config": "Configuration",
|
|
"qr_code": "Code QR",
|
|
"vpn_key": "Clé VPN",
|
|
"clients": "Clients",
|
|
"traffic": "Trafic",
|
|
"limit": "Limite",
|
|
"manage": "Gérer",
|
|
"no_protocols": "Aucun protocole",
|
|
"add_server_desc": "Ajoutez votre premier serveur VPN pour commencer. Identifiants SSH requis.",
|
|
"ssh_host": "Hôte / IP",
|
|
"ssh_port": "Port SSH",
|
|
"ssh_user": "Utilisateur",
|
|
"ssh_password": "Mot de passe",
|
|
"ssh_key": "Clé SSH",
|
|
"ssh_key_placeholder": "Clé SSH privée",
|
|
"ssh_key_hint": "Collez le contenu de votre fichier id_rsa ou id_ed25519",
|
|
"connect": "Connecter",
|
|
"connecting": "Connexion...",
|
|
"server_added": "Serveur ajouté avec succès",
|
|
"server_deleted": "Serveur supprimé",
|
|
"delete_confirm": "Voulez-vous vraiment supprimer ce serveur ?",
|
|
"success": "Succès",
|
|
"error": "Erreur",
|
|
"info": "Info",
|
|
"login_title": "Connexion au Panneau",
|
|
"username": "Nom d'utilisateur",
|
|
"password": "Mot de passe",
|
|
"captcha": "Captcha",
|
|
"captcha_placeholder": "Entrez les caractères",
|
|
"captcha_hint": "Cliquez pour rafraîchir",
|
|
"login": "Connexion",
|
|
"logging_in": "Connexion...",
|
|
"login_error": "Échec de la connexion",
|
|
"check_done": "Vérification terminée",
|
|
"check_error": "Erreur de connexion",
|
|
"ssh_ok": "Connexion SSH",
|
|
"docker_ok": "Docker",
|
|
"docker_not_installed": "Docker non installé",
|
|
"awg_desc": "Version moderne basée sur awg-go. Obfuscation avancée (S3, S4).",
|
|
"awg3_desc": "Complète l'obfuscation 2.0 par la protection des en-têtes et le remplissage des données. Les délais de handshake et de renouvellement des clés sont aléatoires, sans signature temporelle fixe.",
|
|
"awg_mtu": "MTU",
|
|
"awg_mtu_hint": "Utilisé dans les configurations client générées. Les applications Amnezia utilisent 1376.",
|
|
"awg_settings_btn": "AWG",
|
|
"awg_settings_title": "Paramètres AmneziaWG",
|
|
"awg_settings_desc": "S'appliquent aux configurations générées à partir de maintenant. Les clients ayant déjà importé une configuration conservent les anciennes valeurs jusqu'à un nouvel import.",
|
|
"awg_settings_saved": "Paramètres AmneziaWG enregistrés",
|
|
"awg_special_junk": "Paquets leurres (I1-I5)",
|
|
"awg_special_junk_hint": "Envoyés juste avant la poignée de main, pour qu'une session commence par des octets d'un autre protocole. Le I1 par défaut imite une réponse DNS.",
|
|
"awg_special_junk_syntax": "Balises : <b 0xHEX> octets fixes, <r N> octets aléatoires, <rc N> lettres, <rd N> chiffres, <c> compteur de paquets, <t> heure unix.",
|
|
"awg_special_junk_reset": "Par défaut",
|
|
"awg_legacy_desc": "Version AWG originale. Compatible avec les anciens clients.",
|
|
"xray_desc": "Masque le trafic en trafic web normal (XTLS-Reality). Résiste au DPI.",
|
|
"not_checked": "Non vérifié",
|
|
"connections": "Connexions",
|
|
"add": "Ajouter",
|
|
"loading_connections": "Chargement des connexions...",
|
|
"no_connections": "Aucune connexion",
|
|
"no_connections_desc": "Ajoutez votre première connexion pour générer un fichier VPN",
|
|
"install_protocol": "Installer le protocole",
|
|
"port_default_hint": "Port par défaut : 55424. Assurez-vous qu'il est libre.",
|
|
"port_xray_hint": "Port recommandé : 443. Assurez-vous qu'il n'est pas utilisé par un serveur web.",
|
|
"reinstall": "Réinstaller",
|
|
"uninstall_confirm": "Désinstaller {} ? Toutes les données seront perdues.",
|
|
"stop_container_confirm": "Arrêter le conteneur {} ?",
|
|
"start_container_confirm": "Démarrer le conteneur {} ?",
|
|
"stopping": "Arrêt",
|
|
"starting": "Démarrage",
|
|
"stopped": "arrêté",
|
|
"started": "démarré",
|
|
"server_config": "Configuration du serveur",
|
|
"add_connection": "Ajouter une connexion",
|
|
"connection_name": "Nom de la connexion",
|
|
"connection_name_placeholder": "Ex: iPhone, Laptop",
|
|
"assign_to_user": "Assigner à l'utilisateur (optionnel)",
|
|
"no_assign": "— Aucune assignation —",
|
|
"select_search_placeholder": "Rechercher...",
|
|
"select_search_empty": "Aucun résultat",
|
|
"create": "Créer",
|
|
"creating": "Création...",
|
|
"connection_created": "Connexion \"{}\" créée",
|
|
"delete_connection_confirm": "Supprimer cette connexion ? Elle cessera de fonctionner.",
|
|
"connection_deleted": "Connexion supprimée",
|
|
"self_service_title": "Self-Service",
|
|
"self_service_enabled": "Activer le self-service",
|
|
"self_service_enabled_desc": "Permettre aux utilisateurs de créer et gérer leurs propres connexions VPN",
|
|
"self_service_web": "Activer le self-service web",
|
|
"self_service_telegram": "Activer le self-service Telegram",
|
|
"self_service_max_conns": "Max connexions par utilisateur",
|
|
"self_service_rate_limit": "Limite de débit (créations)",
|
|
"self_service_rate_window": "Fenêtre de débit (secondes)",
|
|
"self_service_protocols": "Protocoles autorisés",
|
|
"server_self_service_enabled": "Autoriser le self-service",
|
|
"server_self_service_enabled_desc": "Les utilisateurs peuvent créer des connexions sur ce serveur",
|
|
"create_connection": "Créer une connexion",
|
|
"delete_connection": "Supprimer",
|
|
"connections_counter": "Connexions : {0} / {1}",
|
|
"device_name": "Nom du périphérique",
|
|
"self_service_disabled": "Le self-service n'est pas activé.",
|
|
"config_tab": "📄 Config",
|
|
"vpn_key_tab": "🔑 Clé-VPN",
|
|
"qr_code_tab": "📱 Code-QR",
|
|
"copy_config": "📋 Copier",
|
|
"download_conf": "⬇ Télécharger .conf",
|
|
"copy_key": "📋 Copier la clé",
|
|
"vpn_link_hint": "Collez ce lien dans AmneziaVPN pour une config automatique",
|
|
"qr_hint": "Scannez le code QR dans l'application AmneziaVPN",
|
|
"qr_format_amnezia": "Amnezia",
|
|
"qr_format_wireguard": "Simple",
|
|
"qr_format_amnezia_hint": "Série animée pour AmneziaVPN, transmet le nom du serveur. Gardez la caméra jusqu'à ce que toutes les images soient lues —",
|
|
"qr_format_wireguard_hint": "La configuration ou le lien tel quel, pour AmneziaWG, wg-quick et d'autres clients. Le nom du serveur n'est pas transmis.",
|
|
"no_data": "Aucune donnée",
|
|
"start_btn": "▶ Start",
|
|
"stop_btn": "⏹ Stop",
|
|
"config_btn": "⚙️ Config",
|
|
"done": "Terminé",
|
|
"installing": "Installation...",
|
|
"start_install": "Début de l'installation...",
|
|
"check_docker": "Vérification de Docker...",
|
|
"prepare_host": "Préparation de l'hôte...",
|
|
"build_container": "Construction du conteneur...",
|
|
"install_success": "Protocole installé avec succès !",
|
|
"install_error": "Erreur d'installation : ",
|
|
"qr_error": "Échec de génération du QR code",
|
|
"users_title": "Utilisateurs",
|
|
"search_placeholder": "Recherche par nom, email ou Telegram...",
|
|
"add_user": "Ajouter Utilisateur",
|
|
"prev_page": "← Retour",
|
|
"next_page": "Suivant →",
|
|
"page_info": "Page {} sur {}",
|
|
"loading_users": "Chargement des utilisateurs...",
|
|
"nothing_found": "Rien trouvé",
|
|
"search_empty_desc": "Essayez une autre requête ou créez un utilisateur",
|
|
"username_label": "Nom d'utilisateur",
|
|
"password_label": "Mot de passe",
|
|
"role_label": "Rôle",
|
|
"role_user_desc": "User — voit ses propres connexions",
|
|
"role_support_desc": "Support — gestion des serveurs",
|
|
"role_admin_desc": "Admin — accès complet",
|
|
"tg_id_label": "ID Telegram (opt.)",
|
|
"email_label": "Email (opt.)",
|
|
"traffic_limit_label": "Limite trafic (Go) (0 = illimité)",
|
|
"description_label": "Description (opt.)",
|
|
"auto_conn_title": "Création auto de connexion (optionnel)",
|
|
"server_label": "Serveur",
|
|
"no_create_conn": "— Ne pas créer —",
|
|
"protocol_label": "Protocole",
|
|
"edit_user_title": "Modifier utilisateur : {}",
|
|
"edit_user_tg": "ID Telegram (optionnel)",
|
|
"edit_user_email": "Email (optionnel)",
|
|
"edit_user_limit": "Limite trafic (Go) (0 = illimité)",
|
|
"new_password_hint": "Nouveau mot de passe (laisser vide si inchangé)",
|
|
"op_type_label": "Type d'opération",
|
|
"create_new_conn": "Créer nouvelle connexion",
|
|
"link_existing_conn": "Lier existante",
|
|
"select_existing_conn": "Sélectionner connexion",
|
|
"existing_conn_hint": "Seules les connexions libres sont affichées. Maintenez Ctrl pour en sélectionner plusieurs",
|
|
"conn_name_panel": "Nom (dans le panneau)",
|
|
"user_conns_title": "Connexions utilisateur",
|
|
"no_free_conns": "Aucune connexion libre",
|
|
"linking": "Liaison...",
|
|
"conn_linked": "Connexion liée",
|
|
"enabling": "Activation",
|
|
"disabling": "Désactivation",
|
|
"user_enabled": "Utilisateur activé",
|
|
"user_disabled": "Utilisateur désactivé",
|
|
"delete_user_confirm": "Supprimer l'utilisateur ? Ses connexions seront supprimées.",
|
|
"share_access": "Partager l'accès",
|
|
"enable_public_access": "Activer l'accès public",
|
|
"share_password_label": "Mot de passe (optionnel)",
|
|
"share_password_hint": "Si défini, requis pour l'accès",
|
|
"public_link_label": "Lien public",
|
|
"disabled": "Désactivé",
|
|
"out_of": "sur",
|
|
"settings_title": "Paramètres du Panneau",
|
|
"appearance": "🎨 Apparence",
|
|
"title_label": "Titre",
|
|
"logo_label": "Logo (Emoji ou symbole)",
|
|
"subtitle_label": "Sous-titre",
|
|
"captcha_title": "🔐 Captcha",
|
|
"enable_captcha": "Activer captcha",
|
|
"telegram_bot_title": "🤖 Bot Telegram",
|
|
"bot_token_label": "Bot Token (@BotFather)",
|
|
"bot_status": "Statut",
|
|
"bot_running": "✅ En cours",
|
|
"bot_stopped": "⏹ Arrêté",
|
|
"bot_stop_btn": "⏹ Arrêter",
|
|
"bot_start_btn": "▶️ Démarrer",
|
|
"bot_hint": "Sauvegardez après modification du token. Le bot redémarrera.",
|
|
"api_docs_title": "🔌 Documentation API",
|
|
"api_docs_hint": "Utilisez ces interfaces pour explorer l'API",
|
|
"tunnels_title": "Tunnels",
|
|
"local_server": "Serveur local",
|
|
"tunnel_install_enable": "Installer et activer",
|
|
"tunnel_enable": "Activer le tunnel",
|
|
"tunnel_running": "Tunnel en cours",
|
|
"tunnel_stop": "Arrêter",
|
|
"tunnel_stopping": "Arrêt...",
|
|
"tunnel_stopped": "Tunnel arrêté",
|
|
"tunnel_delete": "Supprimer",
|
|
"tunnel_deleted": "Tunnel supprimé",
|
|
"tunnel_delete_confirm": "Arrêter et supprimer ce binaire de tunnel géré par le panneau ?",
|
|
"tunnel_starting": "Démarrage du tunnel...",
|
|
"tunnel_started": "Tunnel démarré",
|
|
"tunnel_waiting_url": "Tunnel démarré. En attente de l'URL publique...",
|
|
"tunnel_no_public_url": "L'URL publique apparaîtra ici après le démarrage du tunnel.",
|
|
"tunnels_hint": "Les tunnels rapides exposent ce panneau local sur Internet. Gardez des identifiants administrateur robustes et partagez les URL publiques uniquement avec des utilisateurs de confiance.",
|
|
"ngrok_authtoken_placeholder": "ngrok authtoken (optionnel pour certains comptes)",
|
|
"import_users_title": "📤 Import Utilisateurs",
|
|
"import_source_label": "Source Import / Sync",
|
|
"remnawave_url_label": "URL Remnawave",
|
|
"api_key_label": "Clé API",
|
|
"enable_sync": "Activer synchronisation",
|
|
"sync_hint": "Synchro automatique avec Remnawave",
|
|
"sync_now_btn": "🔄 Sync maintenant",
|
|
"delete_sync_btn": "🗑 Supprimer synchro",
|
|
"auto_create_conns": "Créer connexions auto",
|
|
"sync_server_label": "Serveur pour nouvelles connexions",
|
|
"save_changes": "💾 Enregistrer changements",
|
|
"sync_success": "Sync terminée : {} utilisateurs",
|
|
"sync_deleted": "Supprimé {} utilisateurs sync",
|
|
"delete_sync_confirm": "Supprimer TOUS les utilisateurs synchronisés ? Irréversible.",
|
|
"settings_saved": "Paramètres enregistrés",
|
|
"bot_started": "Bot démarré",
|
|
"bot_stopped_msg": "Bot arrêté",
|
|
"sync_running": "Synchronisation...",
|
|
"deleting": "Suppression...",
|
|
"my_connections_title": "Mes Connexions",
|
|
"show_config": "📄 Voir config",
|
|
"no_connections_user_desc": "Contactez l'admin pour une connexion",
|
|
"share_title": "Accès Connexion",
|
|
"vpn_access": "Accès VPN",
|
|
"user_label_share": "Utilisateur",
|
|
"share_protected_desc": "Accès protégé par mot de passe.",
|
|
"auth_success": "Succès Auth",
|
|
"loading_share_conns": "Chargement...",
|
|
"no_active_conns": "Aucune connexion active.",
|
|
"show_settings_btn": "🔑 Voir paramètres",
|
|
"copied": "Copié !",
|
|
"active": "Actif",
|
|
"site_description": "Panneau Web Amnezia — gestion serveurs VPN et AmneziaWG",
|
|
"toggle_theme": "Changer thème",
|
|
"copied_to_clipboard": "Copié dans le presse-papier",
|
|
"share_not_found": "404 Introuvable",
|
|
"share_not_found_desc": "Lien invalide ou accès désactivé.",
|
|
"invalid_captcha": "Captcha invalide",
|
|
"account_disabled": "Compte désactivé",
|
|
"invalid_login": "Login ou password incorrect",
|
|
"user_exists": "L'utilisateur existe déjà",
|
|
"cannot_delete_self": "Vous ne pouvez pas vous supprimer",
|
|
"wrong_share_password": "Mauvais mot de passe",
|
|
"saving": "Enregistrement...",
|
|
"select_lang": "Choisir la langue",
|
|
"lang_ru": "Русский",
|
|
"lang_en": "English",
|
|
"lang_fr": "Français",
|
|
"lang_zh": "中文 (Chinese)",
|
|
"lang_fa": "فارسی (Persian)",
|
|
"backup_title": "Sauvegarde Simple",
|
|
"download_backup": "Télécharger data.json",
|
|
"restore_backup": "Restaurer depuis un fichier",
|
|
"restore_confirm": "Êtes-vous sûr ? Les données actuelles seront écrasées et l'application redémarrera.",
|
|
"restore_success": "Sauvegarde restaurée avec succès !",
|
|
"auto_backup_title": "Auto backup",
|
|
"enable_auto_backup": "Activer les sauvegardes automatiques des serveurs",
|
|
"auto_backup_interval_label": "Intervalle de création",
|
|
"auto_backup_hint": "Le panneau créera des sauvegardes des protocoles installés sur chaque serveur selon l'intervalle choisi.",
|
|
"auto_backup_last_run": "Dernier lancement",
|
|
"auto_backup_last_status": "Statut",
|
|
"auto_backup_created_count": "Sauvegardes créées",
|
|
"hours_suffix": "h",
|
|
"invalid_backup_file": "Fichier ou structure de sauvegarde invalide",
|
|
"config_unavailable": "Configuration indisponible",
|
|
"config_unavailable_desc": "Ce client a été créé via l'application native Amnezia.\\nLa clé privée est stockée uniquement sur l'appareil de l'utilisateur et ne peut pas être récupérée par le serveur.",
|
|
"client_public_key": "Clé publique du client :",
|
|
"management": "Gestion",
|
|
"server_management": "Gestion du serveur",
|
|
"server_management_desc": "Effectuer des actions au niveau du système sur votre machine.",
|
|
"check_server_services": "Vérifier les services du serveur",
|
|
"reboot_server": "Redémarrer le serveur",
|
|
"clear_server": "Réinitialiser le serveur",
|
|
"remove_server": "Retirer le serveur du panneau",
|
|
"telemt_desc": "Proxy Telegram basé sur MTProxy avec obfuscation avancée.",
|
|
"dns_desc": "Serveur DNS personnel pour bloquer les publicités et protéger la vie privée.",
|
|
"dns_internal_hint": "The service runs on the internal network (172.29.172.254) without binding to host ports.",
|
|
"telemt_port_hint": "Port for the Telegram proxy (typically 443).",
|
|
"socks5_desc": "Single-account SOCKS5 proxy (3proxy) with username/password authentication.",
|
|
"socks5_username": "Username",
|
|
"socks5_password": "Password",
|
|
"socks5_password_placeholder": "Leave empty to auto-generate",
|
|
"socks5_password_hint": "If left empty, a random 16-character password will be generated.",
|
|
"socks5_port_hint": "TCP port the proxy will listen on. The default in the official Amnezia client is 38080.",
|
|
"socks5_change_settings": "Change settings",
|
|
"socks5_settings_title": "SOCKS5 — Connection settings",
|
|
"socks5_port_change_hint": "Changing the port recreates the container; existing sessions will be dropped.",
|
|
"socks5_settings_saved": "SOCKS5 settings saved",
|
|
"adguard_desc": "AdGuard Home — DNS-based ad blocker with a web admin UI.",
|
|
"adguard_mode": "Installation mode",
|
|
"adguard_mode_sidebyside": "Side-by-side",
|
|
"adguard_mode_sidebyside_hint": "runs alongside AmneziaDNS on a separate internal IP (172.29.172.253)",
|
|
"adguard_mode_replace": "Replace AmneziaDNS",
|
|
"adguard_mode_replace_hint": "removes amnezia-dns and takes its IP — VPN clients use AdGuard immediately",
|
|
"adguard_dns_port": "DNS port (53)",
|
|
"adguard_dns_port_hint": "Internal DNS port served to VPN clients via the docker network.",
|
|
"adguard_web_port": "Web UI port",
|
|
"adguard_dot_port": "DoT port",
|
|
"adguard_doh_port": "DoH port",
|
|
"adguard_expose_web": "Expose to internet",
|
|
"adguard_expose": "Expose to host",
|
|
"adguard_install_hint": "Initial AdGuard setup runs through its built-in wizard via the web UI after install.",
|
|
"adguard_internal_ip": "Internal IP",
|
|
"adguard_web_ui": "Admin URL",
|
|
"adguard_open_ui": "Open Web UI",
|
|
"edit_server_title": "Edit server",
|
|
"edit_keep_credential": "Leave empty to keep the current value",
|
|
"server_saved": "Server settings saved",
|
|
"servers_reordered": "Servers reordered",
|
|
"ping_checking": "Checking connectivity...",
|
|
"offline": "offline",
|
|
"api_tokens_title": "API tokens",
|
|
"api_tokens_hint": "Bearer tokens for external integrations. Send the token in the `Authorization: Bearer <token>` header. Tokens have admin-equivalent rights and stop working if their owner is disabled or demoted.",
|
|
"api_tokens_empty": "No API tokens yet. Create one to integrate the panel with an external service.",
|
|
"api_tokens_create": "Create token",
|
|
"api_tokens_create_title": "Create API token",
|
|
"api_tokens_name_label": "Name",
|
|
"api_tokens_name_placeholder": "e.g. Linear integration, CI bot, monitoring",
|
|
"api_tokens_name_hint": "Used to identify this token in the list. The token value itself is generated for you.",
|
|
"api_tokens_name_required": "Token name is required",
|
|
"api_tokens_created_title": "Token created",
|
|
"api_tokens_value_label": "Token value",
|
|
"api_tokens_warning_title": "This is the only time you'll see this token.",
|
|
"api_tokens_warning_body": "Copy it now and store it in your integration's secret manager. The panel keeps only a hash — if you lose this value you'll need to revoke and recreate the token.",
|
|
"api_tokens_revoke": "Revoke",
|
|
"api_tokens_revoke_confirm": "Revoke token \"{}\"? Any integration using it will stop working.",
|
|
"api_tokens_revoked": "Token revoked",
|
|
"api_tokens_created": "Created",
|
|
"api_tokens_last_used": "Last used",
|
|
"api_tokens_owner": "Owner",
|
|
"api_tokens_never": "never",
|
|
"coming_soon": "Coming soon",
|
|
"promo_star_cta": "Star us on GitHub",
|
|
"aivpn_subtitle": "AI-driven protocol selection that picks the right tunnel for the moment. Land it sooner — drop a star.",
|
|
"revproxy_title": "Reverse Proxy",
|
|
"revproxy_subtitle": "High-performance traffic obfuscation: hide your VPN endpoint behind a polished public-facing site, drop the DPI footprint.",
|
|
"warp_hint": "WARP routes this host outbound through Cloudflare. It does not create a public panel URL like Quick Tunnel or ngrok.",
|
|
"warp_install_hint": "Install the official Cloudflare WARP client first, then restart the panel.",
|
|
"warp_install_required": "Install WARP first",
|
|
"warp_connect": "Connect WARP",
|
|
"warp_disconnect": "Disconnect",
|
|
"warp_connected": "WARP connected",
|
|
"warp_disconnected": "WARP disconnected",
|
|
"warp_status_unknown": "WARP status is unknown.",
|
|
"warp_status_not_installed": "Cloudflare WARP CLI is not installed on this host.",
|
|
"warp_status_connected": "Cloudflare WARP is connected.",
|
|
"warp_status_connecting": "Cloudflare WARP is connecting.",
|
|
"warp_status_disconnected": "Cloudflare WARP is disconnected.",
|
|
"warp_status_not_registered": "Cloudflare WARP is installed but not registered yet. Connect will try to register automatically.",
|
|
"warp_status_service_unavailable": "Cloudflare WARP service is not available. Make sure warp-svc is running.",
|
|
"warp_status_error": "Cloudflare WARP returned an error.",
|
|
"install_starting": "Starting installation...",
|
|
"server_check_complete": "Check completed",
|
|
"server_connection_error": "Connection error",
|
|
"connections_load_error": "Error loading connections",
|
|
"connection_updated": "Connection updated",
|
|
"edit_connection": "Edit connection",
|
|
"enable_connection_progress": "Enabling connection...",
|
|
"disable_connection_progress": "Disabling connection...",
|
|
"connection_enabled": "Connection enabled",
|
|
"connection_disabled": "Connection disabled",
|
|
"gb": "GB",
|
|
"marketplace": "Templates",
|
|
"open_marketplace": "Open Templates",
|
|
"marketplace_desc": "Install protocol and service templates available for this server.",
|
|
"installed_apps": "Installed applications",
|
|
"installed_apps_hint": "Only installed protocols and services are shown here. Use Templates to add more.",
|
|
"no_installed_apps": "No installed applications yet",
|
|
"no_installed_apps_desc": "Open Templates to install protocols or services on this server.",
|
|
"install_another": "Install another",
|
|
"new_instance": "new instance",
|
|
"port_next_instance_hint": "Choose a free UDP port for the additional instance.",
|
|
"web_servers": "Serveurs web",
|
|
"nginx_desc": "Serveur web NGINX avec certificat HTTPS Let's Encrypt et index.html modifiable.",
|
|
"nginx_domain": "Domaine",
|
|
"nginx_email": "Email Let's Encrypt",
|
|
"nginx_port_hint": "Port HTTPS exposé sur le serveur. Le port 80/TCP doit être libre et accessible pour la validation Let's Encrypt.",
|
|
"nginx_install_hint": "Le domaine doit déjà pointer vers ce serveur. Le port 80/TCP est utilisé pour la validation HTTP-01 du certificat.",
|
|
"site": "Site",
|
|
"site_editor": "Éditeur du site",
|
|
"site_saved": "Site enregistré",
|
|
"nginx_dns_hint": "Creez cet enregistrement DNS avant l installation :",
|
|
"backup": "Backup",
|
|
"backups": "Backups",
|
|
"backup_desc": "Backups are created on the server and contain valuable protocol files needed to restore or recreate it later.",
|
|
"create_backup": "Create backup",
|
|
"creating_backup": "Creating backup...",
|
|
"backup_created": "Backup created",
|
|
"no_backups": "No backups yet",
|
|
"no_backups_desc": "Create the first backup for this protocol.",
|
|
"refresh": "Refresh",
|
|
"rename": "Renommer",
|
|
"connection_renamed": "Connexion renommée",
|
|
"enter_connection_name": "Saisir un nouveau nom de connexion",
|
|
"config_saved": "Configuration enregistrée",
|
|
"reset_traffic": "Réinitialiser le trafic",
|
|
"resetting": "Réinitialisation...",
|
|
"reset_traffic_confirm": "Réinitialiser le trafic actuel de cet utilisateur ? Les statistiques totales seront conservées.",
|
|
"traffic_reset_success": "Trafic réinitialisé",
|
|
"host_tuning": "Réglages hôte",
|
|
"conn_warning_text": "⚠️ Attention : {count} connexions ouvertes le {date} à {time} !",
|
|
"clear_warnings": "Effacer les avertissements",
|
|
"warnings_cleared": "Avertissements effacés",
|
|
"max_speed": "Vitesse max (Mbps)",
|
|
"speed_limit_unlim": "Limite de vitesse (0 = illimité)",
|
|
"port_in_use_by": "Le port {port} est déjà utilisé par {owner}. Choisissez un autre port.",
|
|
"exit_desc": "Exit node: a transit endpoint for other panel servers. Client traffic that enters elsewhere leaves to the internet from this server.",
|
|
"exit_port_hint": "UDP port the transit link listens on. Only other panel servers connect here, never end users. Open it in the server's firewall for the entry nodes.",
|
|
"exit_subnet": "Transit subnet",
|
|
"exit_subnet_hint": "Private IPv4 /24 shared between this exit and its entry nodes. Must not overlap the client subnets (10.8.x.x).",
|
|
"exit_obfuscation": "Obfuscate the inter-node link (AmneziaWG)",
|
|
"exit_obfuscation_short": "Obfuscation",
|
|
"exit_obfuscation_hint": "Enable when the hop between the nodes crosses DPI. Plain WireGuard otherwise. AmneziaWG Legacy entries can only use a non-obfuscated exit.",
|
|
"exit_peers": "Peers",
|
|
"exit_peers_title": "Exit node — linked entry nodes",
|
|
"exit_peer_name": "Entry node",
|
|
"exit_transit_ip": "Transit IP",
|
|
"exit_public_key": "Public key",
|
|
"exit_handshake": "Handshake",
|
|
"exit_transfer": "Transfer",
|
|
"exit_peer_external": "not managed by this panel",
|
|
"exit_peer_remove_confirm": "Remove this peer? The entry node behind it loses its route through this exit.",
|
|
"exit_peer_removed": "Peer removed",
|
|
"exit_no_peers": "No entry nodes are linked to this exit yet.",
|
|
"exit_stop_confirm": "Entry nodes route their clients through this exit. Stopping it puts those clients on the kill-switch (no traffic). Stop anyway?",
|
|
"exit_in_use": "Entry nodes route through this exit node",
|
|
"exit_link_title": "Exit node",
|
|
"exit_link_desc": "Route all clients of this instance through another panel server. The link between the nodes is encrypted; clients keep their configs. IPv4 only: while linked, client IPv6 is refused rather than leaking from this server.",
|
|
"exit_link_select": "Exit node",
|
|
"exit_link_none": "Traffic leaves directly from this server.",
|
|
"exit_link_current": "Linked to {name} (transit {ip})",
|
|
"exit_link_via": "Exit node",
|
|
"exit_link_btn": "Link",
|
|
"exit_unlink_btn": "Unlink",
|
|
"exit_unlink_confirm": "Unlink from the exit node? Clients will leave to the internet from this server again.",
|
|
"exit_link_saved": "Exit node linked",
|
|
"exit_unlinked": "Exit node unlinked",
|
|
"exit_link_stale": "The exit node is unreachable or was removed. Clients are blocked by the kill-switch until you unlink or repair the link.",
|
|
"exit_link_repair": "Repair link",
|
|
"exit_no_exit_nodes": "No exit nodes installed yet. Install the Exit Node service on the server that should be the egress.",
|
|
"exit_no_handshake": "No handshake from the exit node within 15 s — is the transit UDP port reachable? The link was rolled back.",
|
|
"exit_apply_failed": "The routing could not be applied on this server; the link was rolled back.",
|
|
"exit_not_found": "Exit node not found or not installed.",
|
|
"not_linked": "This instance is not linked to an exit node.",
|
|
"exit_mtu_too_big": "The client MTU of this instance exceeds the link MTU (1420). Lower it in the AWG settings (1376 is the default).",
|
|
"exit_link_force": "Link anyway",
|
|
"exit_self": "A server cannot be its own exit node.",
|
|
"exit_legacy_obfuscation": "AmneziaWG Legacy can only link to a non-obfuscated exit node.",
|
|
"exit_link_ipv6_warning": "This instance is dual-stack. While linked, client IPv6 is refused so nothing leaks from this server; clients fall back to IPv4 automatically.",
|
|
"exit_link_ipv6_confirm": "Client IPv6 will be refused while linked. Continue?",
|
|
"exit_link_mtu_warning": "Client MTU {mtu} exceeds the link MTU {exit_mtu}. Lower it in the AWG settings before linking.",
|
|
"exit_status_up": "up",
|
|
"exit_status_stale": "no handshake",
|
|
"exit_status_down": "down",
|
|
"exit_handshake_ago": "handshake {s}s ago",
|
|
"no_handshake_yet": "No handshake yet — the link stays up, check the exit's firewall.",
|
|
"old_exit_unreachable_orphan_peer": "The previous exit node was unreachable; its peer entry was left behind.",
|
|
"exit_unreachable_orphan_peer": "The exit node was unreachable; its peer entry was left behind.",
|
|
"exit_egress_check": "Check egress",
|
|
"exit_egress_checking": "Checking the egress IP…",
|
|
"exit_egress_match": "✓ Clients leave from {ip} — the exit node {name}.",
|
|
"exit_egress_mismatch": "⚠ Clients leave from {ip}, the exit node address is {expected}. Expected when the exit is behind NAT.",
|
|
"exit_egress_direct": "✗ Clients still leave from this server ({ip}) — their traffic is not going through the link.",
|
|
"exit_egress_unknown": "Could not determine the egress IP: the check services did not answer.",
|
|
"exit_egress_failed": "The egress check could not run on this server.",
|
|
"exit_dns_via_exit": "Resolve client DNS at the exit node",
|
|
"exit_dns_via_exit_hint": "Off by default: DNS queries stay on this server. On, they follow the link and are answered by the AmneziaDNS of the exit node, so a resolver never sees this server's country. Requires AmneziaDNS on the exit node.",
|
|
"exit_dns_via_exit_on": "Client DNS now resolves at the exit node",
|
|
"exit_dns_via_exit_off": "Client DNS resolves on this server again",
|
|
"exit_dns_needs_dns": "Install AmneziaDNS on the exit node before routing client DNS through it.",
|
|
"awg_mtu_exit_hint": "This instance is linked to an exit node: the link carries at most {exit_mtu}, so keep the client MTU at or below it.",
|
|
"exit_dns_disabled_no_dns": "The exit node has no AmneziaDNS any more — client DNS was brought back to this server.",
|
|
"exit_defaults_title": "Exit nodes",
|
|
"exit_default_node": "Default exit node",
|
|
"exit_default_none": "None — new instances keep their own egress",
|
|
"exit_default_hint": "Every AmneziaWG instance installed from now on is linked to this exit node right after the install. Existing instances are left alone, and an install still succeeds if the link fails.",
|
|
"exit_default_cleared": "The default exit node no longer exists and was cleared.",
|
|
"exit_restore_entries_relinked": "Restored the exit-node peers of {n} linked entry node(s).",
|
|
"exit_restore_entries_failed": "{n} entry node(s) could not be re-registered on this exit — repair them from their own page.",
|
|
"exit_restore_relinked": "The exit-node link of this instance was re-established after the restore.",
|
|
"exit_restore_stale": "The exit-node link could not be re-established after the restore — clients stay on the kill-switch until you repair or remove it.",
|
|
"exit_restore_removed": "The archive carried an exit-node link this panel does not track; it was removed and clients leave from this server again.",
|
|
"exit_restore_orphan": "The archive carried an unknown exit-node link and it could not be removed — check this instance manually.",
|
|
"on": "on",
|
|
"off": "off",
|
|
"restore": "Restaurer",
|
|
"restore_confirm_protocol": "Êtes-vous sûr ? La configuration actuelle du protocole sera écrasée par cette sauvegarde.",
|
|
"delete_backup_confirm": "Supprimer cette sauvegarde du serveur ? Cette action est irréversible.",
|
|
"backup_deleted": "Sauvegarde supprimée",
|
|
"upload_backup": "Téléverser",
|
|
"uploading_backup": "Téléversement...",
|
|
"backup_uploaded": "Sauvegarde téléversée",
|
|
"wgeasy_import": "Import from wg-easy",
|
|
"wgeasy_import_title": "Import from wg-easy / amnezia-wg-easy",
|
|
"wgeasy_web_port": "wg-easy web UI port (on this server)",
|
|
"wgeasy_password": "wg-easy admin password",
|
|
"wgeasy_username": "Username (v15 only)",
|
|
"wgeasy_fetch": "Load clients",
|
|
"wgeasy_import_btn": "Import",
|
|
"wgeasy_import_warning": "The old wg-easy container will be stopped (not deleted). User configs keep working unchanged.",
|
|
"wgeasy_no_clients": "No clients selected",
|
|
"wgeasy_confirm": "Import selected clients? The old wg-easy container will be stopped.",
|
|
"wgeasy_importing": "Importing, this may take a few minutes...",
|
|
"wgeasy_target_wg": "target: WireGuard (no obfuscation)",
|
|
"wgeasy_target_awg": "obfuscation detected → target: AmneziaWG 2.0",
|
|
"rename_instance": "Rename instance",
|
|
"instance_name": "Instance name",
|
|
"rename_instance_hint": "Leave empty to restore the default name.",
|
|
"no_expiry": "Sans expiration",
|
|
"telemt_secret_label": "Secret (hex)",
|
|
"telemt_ad_tag_label": "Tag AD (hex)",
|
|
"telemt_max_conns_label": "Connexions TCP max",
|
|
"telemt_quota_label": "Quota (octets)",
|
|
"telemt_max_ips_label": "IP uniques max",
|
|
"telemt_expiry_label": "Expiration (ISO 8601)",
|
|
"optional": "Facultatif",
|
|
"role_none_desc": "Aucun rôle — simple fiche, connexion impossible",
|
|
"role_none_badge": "Aucun rôle",
|
|
"password_optional_no_role": "Aucun mot de passe requis pour le rôle « Aucun rôle »",
|
|
"password_required_for_role": "Un mot de passe est requis pour le rôle sélectionné",
|
|
"username_empty": "Le nom d'utilisateur ne peut pas être vide",
|
|
"invalid_role": "Rôle invalide",
|
|
"awg_dns6_hint": "Utilisé dans les clés quand le tunnel est dual-stack (IPv4+IPv6)",
|
|
"unlink_key_title": "Dissocier la clé {} de l'utilisateur « {} » ?",
|
|
"unlink_confirm": "Vraiment dissocier ?!",
|
|
"conn_unlinked": "Connexion dissociée",
|
|
"peer_already_linked": "Ce pair est déjà lié à l'utilisateur {}",
|
|
"peer_already_linked_self": "Ce pair est déjà lié à cet utilisateur",
|
|
"select_connection": "Sélectionnez une connexion",
|
|
"name_required": "Le nom est requis",
|
|
"no_servers_available": "Aucun serveur disponible",
|
|
"assign_user": "Utilisateur",
|
|
"no_user_option": "— ne pas lier —",
|
|
"stop_peer_title": "Arrêter",
|
|
"start_peer_title": "Activer",
|
|
"ssh_cooldown_title": "SSH cooldown (s)",
|
|
"ssh_cooldown_hint": "Délai initial avant reconnexion à un serveur injoignable. Ne modifiez pas si le serveur fonctionne correctement.",
|
|
"public_endpoint_title": "Adresse publique",
|
|
"public_endpoint_for": "Adresse utilisée par les clients de {}",
|
|
"public_endpoint_host": "Hôte",
|
|
"public_endpoint_port": "Port",
|
|
"public_endpoint_port_placeholder": "port de l'instance",
|
|
"public_endpoint_hint": "Laissez vide pour utiliser l'adresse du serveur et le port de l'instance. Renseignez ces champs si l'instance répond sur une autre IP du même serveur, derrière une redirection de port ou sous un nom de domaine.",
|
|
"public_endpoint_not_applied": "Enregistré, mais non appliqué sur le serveur"
|
|
}
|