{ "meta": { "lang": "fr", "name": "French", "native_name": "Français", "direction": "ltr" }, "common": { "loading": "Chargement...", "confirm": "Confirmer", "alert": "Alerte", "prompt": "Saisir une valeur", "copied": "Copié dans le presse-papiers", "save": "Enregistrer", "saved": "Enregistré", "error": "Erreur", "success": "Succès", "warning": "Avertissement", "info": "Information", "all": "Tous", "cancel": "Annuler", "delete": "Supprimer", "actions": "Actions", "close": "Fermer", "required": "Obligatoire", "name_required": "Le nom est obligatoire", "active": "Actif", "inactive": "Inactif", "field_required": "Le champ {field} est obligatoire", "back": "Retour", "edit": "Modifier", "invalid_json": "JSON invalide", "yes": "Oui", "no": "Non" }, "nav": { "main": "Principal", "tools": "Outils", "system": "Système", "dashboard": "Tableau de bord", "devices": "Appareils", "keys": "Clés", "generator": "Générateur", "settings": "Paramètres", "users": "Utilisateurs", "inventory": "Inventory", "tickets": "Tickets", "help_requests": "Demande d'Aide", "activity": "Activité", "automation": "Automatisation", "file_transfer": "Transfert de fichiers", "network": "Adaptateur Réseaux", "dataguard": "Protection de Données", "reports": "Rapports", "tenants": "Tenants", "registrations": "Enregistrements", "management": "Gestion", "toggle_sidebar": "Basculer la barre latérale", "toggle_theme": "Changer de thème", "cdap": "CDAP", "fleet": "Flotte", "scaling": "Mise à l'échelle", "cross_platform": "Multiplateforme", "tokens": "Jetons d'Appareils", "organizations": "Organisations", "policies": "Politiques", "attestation": "Attestation", "remote": "Bureau à Distance", "toolkit": "Kit d'Outils", "security_audit": "Audit de Sécurité", "languages": "Langues", "resource_control": "Contrôle des ressources", "sdk_studio": "SDK Studio", "chat": "Discussion", "help": "Aide", "expand_sidebar": "Développer la barre latérale", "login": "Connexion", "permissions": "Autorisations", "server_management": "Gestion du serveur", "server_attestation": "Attestation du serveur", "commercialization": "Commercialisation" }, "auth": { "login": "Connexion", "logout": "Déconnexion", "login_title": "Se connecter", "login_subtitle": "Connectez-vous à la console BetterDesk", "username": "Nom d'utilisateur", "username_placeholder": "Entrez le nom d'utilisateur", "password": "Mot de passe", "password_placeholder": "Entrez le mot de passe", "remember_me": "Se souvenir de moi", "login_failed": "Échec de la connexion. Veuillez vérifier vos identifiants.", "invalid_credentials": "Nom d'utilisateur ou mot de passe invalide.", "username_collision": "Un compte local portant ce nom d'utilisateur existe déjà. Connectez-vous avec votre mot de passe local, ou demandez à un administrateur de renommer ou supprimer le compte en conflit.", "pro_only_account": "Ce compte est réservé au client de bureau RustDesk. Veuillez utiliser l'application RustDesk pour vous connecter.", "fill_all_fields": "Veuillez remplir tous les champs", "logout_confirm": "Êtes-vous sûr de vouloir vous déconnecter ?", "change_password": "Changer le mot de passe", "password_required": "Le mot de passe est requis", "totp_title": "Authentification à deux facteurs", "totp_subtitle": "Entrez le code à 6 chiffres de votre application d'authentification", "totp_code": "Code de vérification", "totp_verify": "Vérifier", "totp_use_recovery": "Utiliser un code de vérification à la place", "totp_use_code": "Utiliser le code d'authentification à la place", "totp_recovery_code": "Code de récupération", "totp_back_to_login": "Retour à la connexion", "totp_invalid_code": "Code de vérification invalide. Veuillez réessayer.", "totp_enter_code": "Veuillez entrer un code à 6 chiffres", "totp_enter_recovery": "Veuillez entrer un code de récupération", "totp_session_expired": "Session expirée. Veuillez vous reconnecter.", "totp_already_enabled": "L'authentification à deux facteurs est déjà activée", "passwords_mismatch": "Les mots de passe ne correspondent pas", "or": "ou", "login_sso": "Se connecter avec SSO", "login_sso_with": "Se connecter avec {{provider}}", "oidc_denied": "L’accès a été refusé par le fournisseur d’identité.", "oidc_invalid": "Rappel OIDC invalide. Veuillez réessayer.", "oidc_failed": "L’authentification OIDC a échoué. Veuillez réessayer.", "oidc_error": "Une erreur s’est produite pendant la connexion SSO.", "oidc_no_account": "Votre compte est introuvable et l’inscription automatique est désactivée.", "totp_rate_limited": "Trop de tentatives. Veuillez réessayer plus tard.", "emergency_mode_banner": "Serveur Go inaccessible — fonctionnement en mode d’urgence (administrateur uniquement, fonctionnalités limitées)" }, "dashboard": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur BetterDesk", "total_devices": "Total d'Appareils", "online_now": "Actuellement En ligne", "banned": "Bannis", "active_connections": "Connexions actives", "offline_devices": "Actuellement Hors ligne", "server_status": "État du serveur", "quick_actions": "Actions rapides", "manage_devices": "Gérer les appareils connectés", "view_keys": "Voir les clés du serveur", "generate_config": "Générer la configuration client", "server_settings": "Configurer les paramètres", "greeting_morning": "Bonjour, {name}", "greeting_afternoon": "Bonjour, {name}", "greeting_evening": "Bonsoir, {name}", "greeting_night": "Bonsoir, {name}", "health_overview": "Vue d'ensemble de l'état de santé", "devices_online": "Appareils en ligne", "active_alerts": "Alertes actives", "recent_connections": "Appareils enregistrés", "server_uptime": "Temps de fonctionnement du serveur", "activity_feed": "Activité récente", "no_recent_activity": "Aucune activité récente", "just_now": "à l'instant", "ago": "depuis", "tip_desktop_mode": "Essayez le Mode Bureau pour un espace de travail multi-fenêtres avec des widgets de supervision.", "tip_keyboard_shortcuts": "Appuyez sur Ctrl+K n'importe où pour ouvrir la palette de recherche rapide.", "tip_address_book": "Synchronisez votre carnet d'adresses entre vos appareils en vous connectant depuis le client RustDesk.", "tip_2fa": "Activez l'authentification à deux facteurs dans les paramètres pour renforcer la sécurité du compte.", "tip_bulk_actions": "Sélectionnez plusieurs appareils et utilisez les actions groupées pour les gérer en une fois.", "tip_theme": "Basculez entre les thèmes sombre et clair dans les paramètres de la barre latérale.", "tip_cdap": "Connectez des appareils IoT et des capteurs industriels via la passerelle CDAP.", "tip_tutorials": "Cliquez sur le bouton d'aide en bas à droite pour afficher des tutoriels interactifs." }, "devices": { "title": "Appareils", "id": "Identifiant", "hostname": "Nom d'hôte", "username": "Nom d'utilisateur", "platform": "Plateforme", "version": "Version", "ip_address": "Adresse IP", "note": "Note", "last_seen": "Derniere Vu", "last_online": "Derniere fois En Ligne", "first_seen": "Premiere fois Vu", "created": "Créé", "status": "Statut", "ban_reason": "Raison du bannissement", "actions": "Actions", "search_placeholder": "Rechercher des appareils...", "filter_all": "Tous", "filter_online": "En ligne", "filter_offline": "Hors ligne", "filter_banned": "Bannis", "selected": "selectionné", "showing": "Affiché", "of": "de", "sync_status": "État de synchronisation", "sync_success": "Statut synchronisé avec succès", "empty_title": "Aucun appareil trouvé", "empty_text": "Aucun appareil ne correspond à vos filtres actuels", "edit_title": "Détails de l'appareil", "delete_title": "Supprimer l'appareil", "delete_confirm": "Êtes-vous sûr de vouloir supprimer l'appareil {id} ?", "delete_warning": "Vous êtes sur le point de supprimer définitivement cet appareil :", "delete_permanent": "Cette action est irréversible. Toutes les données associées à cet appareil seront définitivement supprimées de la base de données.", "delete_success": "Appareil supprimé avec succès", "revoke_option": "Révoquer l'appareil", "revoke_hint": "Révoquer l'appareil et déconnecter les connexions actives", "revoke_success": "Appareil révoqué avec succès", "details": "Détails de l'appareil", "ban_title": "Bannir l'appareil", "ban_confirm": "Êtes-vous sûr de vouloir bannir l'appareil {id}?", "ban_success": "Appareil banni avec succès", "unban_title": "Débannir l'appareil", "unban_confirm": "Êtes-vous sûr de vouloir débannir l'appareil {id} ?", "unban_success": "Appareil débanni avec succès", "change_id": "Changer l'identifiant", "change_id_title": "Changer l'identifiant de l'appareil", "new_id": "Nouvel identifiant", "change_id_hint": "6-16 caractères, lettres, chiffres, tirets et underscores uniquement", "change_id_success": "Identifiant de l'appareil modifié avec succès", "id_length_error": "L'identifiant doit contenir entre 6 et 16 caractères", "id_format_error": "L'identifiant ne peut contenir que des lettres, des chiffres, des tirets et des underscores", "bulk_delete_title": "Supprimer plusieurs appareils", "bulk_delete_confirm": "Êtes-vous sûr de vouloir supprimer {count} appareils ?", "bulk_delete_success": "{count} appareils supprimés avec succès", "columns": "Colonnes", "toggle_columns": "Selectionner les colonnes visibles", "not_found": "Introuvable", "delete_failed": "Échec de la suppression de l'appareil", "change_id_failed": "Échec du changement de l'identifiant de l'appareil", "invalid_id": "Identifiant d'appareil non valide (6 à 16 caractères requis)", "invalid_id_format": "Format d'identifiant non valide (lettres, chiffres, tirets et underscores uniquement)", "id_exists": "L'identifiant de l'appareil existe déjà", "no_selection": "Aucun appareil sélectionné", "device_type": "Type d'appareil", "filter_type_all": "Tous les Types", "filter_type_rustdesk": "RustDesk", "filter_type_desktop": "Bureau", "filter_type_scada": "SCADA", "filter_type_iot": "IoT", "filter_type_agent": "Agent", "cdap_connected": "CDAP connecté", "revoke": "Révoquer", "access_policy": "Politique d'accès", "unattended_access": "Accès sans surveillance", "enable_unattended": "Activer l'accès sans surveillance", "access_password": "Mot de passe d'accès", "password_configured": "Mot de passe défini", "no_password": "Pas de mot de passe", "new_password": "Nouveau mot de passe (ne rien indiquer pour conserver le mot de passe actuel)", "clear_password": "Effacer le mot de passe", "access_schedule": "Horaires d'accès", "enable_schedule": "Activer l'accès en fonction de l'heure", "allowed_days": "Jours autorisés", "start_time": "Heure de début", "end_time": "Heure de fin", "timezone": "Fuseau horaire", "allowed_operators": "Opérateurs autorisés", "all_operators": "Tous les opérateurs (laisser vide)", "operators_hint": "Noms d'utilisateur séparés par des virgules. Laisser vide pour autoriser tous les opérateurs.", "last_updated_by": "Dernière mise à jour par", "access_policy_saved": "Politique d'accès enregistrée", "display_name": "Nom d'affichage", "display_name_placeholder": "Nom personnalisé (remplace le nom d'hôte)", "note_placeholder": "Remarques concernant cet appareil", "tabs": { "overview": "Aperçu", "hardware": "Matériel", "metrics": "Métriques", "connections": "Connexions", "audit": "Audit", "info": "Information", "history": "Historique" }, "hardware": { "cpu": "Processeur", "memory": "Mémoire", "disk": "Disque", "os": "Système d'exploitation", "hostname": "Nom d'hôte", "uptime": "Temps de fonctionnement", "load_avg": "Charge moyenne", "network": "Adaptateurs Réseaux", "no_data": "Aucune donnée matérielle disponible", "title": "Informations sur le matériel", "gpu": "Carte graphique" }, "tags": "Tags", "filter_by_tags": "Filtrer par étiquettes", "no_tags": "No tags", "all_groups": "Tous les groupes", "create_group": "Créer un groupe", "manage_groups": "Gérer les groupes", "group_name": "Nom du groupe", "group_name_placeholder": "ex. PC multimédia", "dynamic_group": "Groupe dynamique par étiquette", "dynamic_group_hint": "Les appareils portant cette étiquette rejoignent automatiquement le groupe.", "tag_filter": "Tag filter", "group_allowed_users": "Utilisateurs autorisés", "group_allowed_users_hint": "Laissez vide pour que le groupe reste visible à tous les utilisateurs disposant des autorisations sur les appareils.", "group_tag_required": "Un filtre d’étiquette est requis pour les groupes dynamiques", "group_invalid": "Identifiant de groupe invalide", "group_not_found": "Groupe introuvable", "group_saved": "Groupe d’appareils enregistré", "groups_saved": "Groupes d’appareils enregistrés", "group_membership_added": "Ajouté au groupe", "group_membership_removed": "Retiré du groupe", "no_groups": "Aucun groupe pour le moment", "manual_groups": "Groupes manuels", "dynamic_memberships": "Appartenances dynamiques", "group_allowed_user_groups": "Groupes d’utilisateurs autorisés", "group_allowed_user_groups_hint": "Les utilisateurs des groupes sélectionnés peuvent accéder à ce groupe d’appareils.", "no_user_groups": "Aucun groupe d’utilisateurs", "edit_group": "Modifier le groupe", "delete_group": "Supprimer le groupe", "delete_group_confirm": "Supprimer le groupe d’appareils {name} ?", "group_deleted": "Groupe d’appareils supprimé", "folder_group_readonly": "Les groupes associés aux dossiers sont gérés depuis les dossiers.", "manage_user_groups": "Gérer les groupes d’utilisateurs", "restore_failed": "Échec de la restauration de l'appareil", "no_signal_tooltip": "Le client a contacté l'API récemment mais n'est pas enregistré sur le serveur de signal (UDP :21116). Redémarrez le client après la migration du serveur.", "per_page": "Par page" }, "keys": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur BetterDesk", "public_key": "Clé publique", "qr_code": "Code QR", "server_info": "Informations du serveur", "download": "Télécharger la clé", "show_qr": "Afficher le code QR", "qr_hint": "Scannez ce code QR avec l'application mobile RustDesk", "no_key": "Aucune clé publique trouvée", "no_key_to_copy": "Aucune clé à copier", "no_qr": "Code QR non disponible", "download_success": "Fichier de clé téléchargé", "not_found": "Introuvable", "api_not_found": "Clé API non trouvé" }, "settings": { "title": "Paramètres", "subtitle": "Configuration de la console et paramètres du compte", "tab_general": "Général", "tab_server": "Serveur", "tab_branding": "Image de marque", "tab_backup": "Sauvegarde", "language": "Langue", "change_password": "Changer le mot de passe", "password_desc": "Mettre à jour le mot de passe de votre compte", "current_password": "Mot de passe actuel", "new_password": "Nouveau mot de passe", "confirm_password": "Confirmer le mot de passe", "save_password": "Mettre à jour le mot de passe", "password_changed": "Mot de passe modifié avec succès", "fill_all_fields": "Veuillez remplir tous les champs", "passwords_not_match": "Les mots de passe ne correspondent pas", "password_requirements": "Exigences du mot de passe", "password_requirements_not_met": "Le mot de passe ne répond pas aux exigences", "req_length": "Au moins 8 caractères", "req_uppercase": "Au moins une lettre majuscule", "req_lowercase": "Au moins une lettre minuscule", "req_number": "Au moins un chiffre", "server_info": "Informations du serveur", "version": "Version", "database": "Base de données", "uptime": "Temps de fonctionnement", "audit_log": "Journal d'audit", "audit_desc": "Activité récente de la console", "no_audit_logs": "Aucun journal d'audit trouvé", "backend_title": "Serveur Backend", "backend_desc": "Choisissez quel serveur backend à utiliser pour la gestion des appareils et les services de signalisation/relais.", "backend_original": "Origine", "backend_enhanced": "Amélioré", "backend_rustdesk_desc": "Serveurs de signalisation et relais RustDesk standard (hbbs + hbbr). API HTTP de base avec un nombre limité de terminaux.", "backend_betterdesk_desc": "Serveur amélioré basé sur GO avec API REST complète, authentification JWT, liste de blocage, balises, événements WebSocket en temps réel et journal d'audit.", "backend_feature_signal": "Serveur de signalisation (enregistrement d'identifiant)", "backend_feature_relay": "Serveur relais (relais de connexion)", "backend_feature_basic_api": "API REST basique", "backend_feature_full_api": "API REST complète (34+ terminaux)", "backend_feature_jwt": "Authentification JWT & TOTP 2FA", "backend_feature_blocklist": "Gestion de liste de blocage IP/Identifiant", "backend_feature_tags": "Balises et regroupement des appareils", "backend_feature_audit": "Journalisation des événements d'audit", "backend_feature_websocket": "Événements WebSocket en temps réel", "backend_connection": "Connexion", "backend_api_url": "URL de l'API", "backend_test": "Tester la connexion", "backend_testing": "Test en cours...", "backend_save": "Appliquer le backend", "backend_saved": "Serveur Backend modifié avec succès. Les données des appareils seront désormais gérées par le nouveau Backend.", "backend_save_failed": "Échec du changement de serveur Backend", "backend_test_success": "Connexion réussie ! Le serveur est accessible.", "backend_test_failed": "Échec de la connexion. Le serveur est inaccessible.", "backend_confirm_switch": "Êtes-vous sûr de vouloir changer le serveur backend ? Cela modifiera comment sont gérés les appareils.", "backend_unreachable": "Changement impossible : le serveur cible est inaccessible. Démarrez d'abord le serveur.", "invalid_backend": "Sélection de backend invalide. Choisissez 'rustdesk' ou 'betterdesk'.", "backend_status_running": "Connecté", "backend_status_unreachable": "Inaccessible", "backend_status_error": "Erreur", "backend_status_unknown": "Inconnu", "totp_title": "Authentification à deux facteurs", "totp_desc": "Ajoutez une couche de sécurité supplémentaire avec les applications d'authentification TOTP (Google Authenticator, Microsoft Authenticator, Authy, etc.)", "totp_enabled": "2FA activée", "totp_enabled_desc": "Votre compte est protégé par l'authentification à deux facteurs.", "totp_disabled": "2FA non activée", "totp_disabled_desc": "Activez l'authentification à deux facteurs pour une sécurité supplémentaire du compte.", "totp_setup": "Activer 2FA", "totp_disable": "Désactiver 2FA", "totp_step1": "Installez une application d'authentification sur votre téléphone", "totp_step2": "Scannez le code QR ci-dessous", "totp_step3": "Entrez le code à 6 chiffres pour vérifier", "totp_manual_key": "Clé manuelle", "totp_enter_code": "Veuillez entrer le code de verification", "totp_verify_enable": "Vérifier & Activer", "totp_enabled_success": "Authentification à deux facteurs activée !", "totp_recovery_warning": "Conservez ces codes de récupération en lieu sûr. Chaque code ne peut être utilisé qu'une seule fois. Si vous perdez l'accès à votre application d'authentification, vous pouvez utiliser ces codes pour vous connecter.", "totp_done": "Effectué", "totp_disable_warning": "Désactiver l'authentification à deux facteurs rendra votre compte moins sécurisé. Entrez votre mot de passe pour confirmer.", "totp_disabled_success": "L'authentification à deux facteurs a été désactivée.", "tutorials_title": "Tutoriels et guides", "tutorials_desc": "Contrôlez les visites guidées et les aides contextuelles affichées dans la console", "tutorials_enabled": "Activer les tutoriels", "tutorials_enabled_hint": "Lorsque cette option est désactivée, les tutoriels ne démarrent pas automatiquement et le bouton d’aide est masqué", "tutorials_reset_hint": "Marquer tous les tutoriels comme non vus afin de les afficher à nouveau", "tutorials_enabled_toast": "Tutoriels activés", "tutorials_disabled_toast": "Tutoriels désactivés", "tutorials_reset_toast": "Tous les tutoriels ont été réinitialisés", "tab_auth": "Authentification", "ldap_title": "LDAP / Active Directory", "ldap_desc": "Configurez l’authentification externe via LDAP ou Active Directory. Les utilisateurs pourront se connecter avec leurs identifiants de domaine.", "ldap_enabled": "Activer l’authentification LDAP", "ldap_enabled_hint": "Lorsque cette option est activée, les utilisateurs peuvent se connecter avec leurs identifiants LDAP/AD. Les comptes locaux restent disponibles en solution de secours.", "ldap_connection": "Connexion au serveur", "ldap_host": "Hôte", "ldap_port": "Port", "ldap_use_tls": "LDAPS (TLS)", "ldap_start_tls": "StartTLS", "ldap_skip_verify": "Ignorer la vérification TLS", "ldap_timeout": "Délai de connexion (s)", "ldap_timeout_hint": "Nombre de secondes à attendre la réponse du serveur LDAP", "ldap_bind_mode": "Mode de liaison", "ldap_direct_bind": "Liaison directe", "ldap_direct_bind_hint": "Effectue une liaison directe avec un modèle DN au lieu d’utiliser un compte de service pour la recherche.", "ldap_bind_dn": "DN de liaison (compte de service)", "ldap_bind_dn_hint": "Nom distinctif d’un compte de service en lecture seule utilisé pour rechercher les utilisateurs.", "ldap_bind_password": "Mot de passe de liaison", "ldap_base_dn": "DN de base", "ldap_base_dn_hint": "Base de recherche pour trouver les utilisateurs, par ex. dc=example,dc=com", "ldap_user_filter": "Filtre utilisateur", "ldap_user_filter_hint": "Filtre LDAP pour trouver les utilisateurs. Utilisez {{username}} comme espace réservé. Par défaut : (sAMAccountName={{username}})", "ldap_direct_bind_dn": "Modèle DN de liaison directe", "ldap_direct_bind_dn_hint": "Modèle DN pour la liaison directe. Utilisez {{username}} comme espace réservé, par ex. uid={{username}},ou=users,dc=example,dc=com", "ldap_user_attrs": "Attributs utilisateur", "ldap_attr_id": "Attribut du nom d’utilisateur", "ldap_attr_email": "Attribut e-mail", "ldap_attr_name": "Attribut du nom affiché", "ldap_group_mapping": "Mappage groupe → rôle", "ldap_group_base_dn": "DN de base des groupes", "ldap_group_base_dn_hint": "Laissez vide pour utiliser le DN de base principal", "ldap_group_filter": "Filtre de groupe", "ldap_group_attr_name": "Attribut du nom de groupe", "ldap_default_role": "Rôle par défaut", "ldap_default_role_hint": "Rôle attribué aux utilisateurs dont les groupes LDAP ne correspondent à aucun mappage", "ldap_role_viewer": "Lecteur", "ldap_role_operator": "Opérateur", "ldap_role_admin": "Administrateur", "ldap_group_role_map": "Carte groupes → rôles", "ldap_group_role_map_hint": "Associez les groupes LDAP aux rôles BetterDesk. Format : GroupDN=rôle séparé par | (pipe). Exemple : CN=Admins,DC=example,DC=com=admin|CN=Ops,DC=example,DC=com=operator", "ldap_test_connection": "Tester la connexion", "ldap_testing": "Test en cours...", "ldap_test_success": "Connexion réussie ! Le serveur LDAP est joignable et les identifiants de liaison sont valides.", "ldap_test_failed": "Échec de la connexion", "ldap_save": "Enregistrer la configuration LDAP", "ldap_saved": "Configuration LDAP enregistrée avec succès", "oidc_title": "OIDC / OAuth2 (SSO)", "oidc_desc": "Configurez l’authentification unique via un fournisseur OpenID Connect (Azure AD, Okta, Google, Keycloak, etc.).", "oidc_enabled": "Activer l’authentification OIDC", "oidc_enabled_hint": "Autoriser les utilisateurs à se connecter avec un fournisseur d’identité externe", "oidc_provider": "Fournisseur d’identité", "oidc_display_name": "Nom affiché du bouton", "oidc_display_name_hint": "Texte affiché sur le bouton de connexion (par ex. Azure AD, Okta)", "oidc_issuer_url": "URL de l’émetteur", "oidc_issuer_url_hint": "URL de l’émetteur OpenID Connect (la découverte sera automatique)", "oidc_client_id": "ID client", "oidc_client_secret": "Secret client", "oidc_redirect_url": "URL de redirection (rappel)", "oidc_redirect_url_hint": "Doit correspondre exactement à ce qui est configuré dans votre IdP. Généralement : http(s)://votre-serveur:21114/api/auth/oidc/callback", "oidc_scopes": "Portées", "oidc_use_pkce": "Utiliser PKCE (recommandé)", "oidc_auto_discovery": "Découverte automatique", "oidc_allow_signup": "Créer automatiquement les utilisateurs", "oidc_manual_endpoints": "URL des points de terminaison manuels", "oidc_authorization_url": "Point de terminaison d’autorisation", "oidc_token_url": "Point de terminaison des jetons", "oidc_userinfo_url": "Point de terminaison UserInfo", "oidc_claim_mapping": "Mappage des revendications", "oidc_claim_username": "Revendi­cation du nom d’utilisateur", "oidc_claim_email": "Revendi­cation e-mail", "oidc_claim_name": "Revendi­cation du nom affiché", "oidc_claim_groups": "Revendi­cation des groupes", "oidc_role_mapping": "Mappage des rôles", "oidc_default_role": "Rôle par défaut", "oidc_group_role_map": "Mappage groupe → rôle", "oidc_group_role_map_hint": "Un mappage par ligne : nom_groupe=rôle (par ex. admins=admin, operators=operator)", "oidc_test_discovery": "Tester la découverte", "oidc_testing": "Test en cours...", "oidc_test_success": "Découverte réussie ! Points de terminaison résolus.", "oidc_test_failed": "Échec de la découverte", "oidc_issuer_required": "L’URL de l’émetteur est requise pour tester la découverte", "oidc_save": "Enregistrer la configuration OIDC", "oidc_saved": "Configuration OIDC enregistrée avec succès", "tab_advanced": "Avancé", "connection_mode_title": "Stratégie de connexion", "connection_mode_desc": "Contrôlez comment les clients de bureau RustDesk se connectent : P2P direct (hole punch) si possible, ou toujours via relais.", "connection_mode_label": "Mode de connexion par défaut", "connection_mode_p2p_first": "P2P en premier (recommandé) — essayer la connexion directe, se rabattre sur le relais", "connection_mode_relay_only": "Relais uniquement — toutes les sessions utilisent le serveur relais", "connection_mode_advanced": "Options avancées", "connection_mode_fallback_ms": "Délai d'expiration de basculement P2P (ms)", "connection_mode_same_nat_relay": "Forcer le relais lorsque les deux pairs partagent la même IP publique (NAT hairpin)", "connection_mode_network_hint": "P2P nécessite que le port UDP 21116 soit accessible entre les clients. Signal TCP 21116, relais TCP 21117, test NAT 21115 doivent être ouverts sur le serveur. Les navigateurs web utilisent toujours le relais.", "connection_mode_save": "Enregistrer", "connection_mode_save_restart": "Enregistrer et redémarrer le serveur", "connection_mode_saved": "Mode de connexion enregistré", "connection_mode_restart_started": "Redémarrage du serveur initié", "connection_mode_restart_failed": "Échec du redémarrage du serveur", "connection_mode_not_configurable": "Le mode de connexion ne peut pas être modifié sur ce déploiement (aucune unité systemd ou docker-compose trouvé)", "connection_mode_compose_error": "Impossible de trouver la section d'environnement du serveur dans docker-compose.yml", "connection_mode_source_saved": "Enregistré dans", "connection_mode_source_defaults": "Utilisation des valeurs par défaut du serveur (non modifiables depuis le panneau)", "connection_mode_runtime": "Serveur actif", "advanced_title": "Fichiers de configuration", "advanced_desc": "Modifiez directement les fichiers de configuration du serveur. Les modifications peuvent nécessiter un redémarrage des services. Une copie de sauvegarde est créée avant chaque enregistrement.", "advanced_warning": "Ces fichiers contiennent des secrets (clés API, mots de passe de base de données, secrets de session). Ne modifiez que si vous savez ce que vous faites. Une syntaxe incorrecte peut empêcher le serveur de démarrer.", "advanced_files_label": "Fichiers", "advanced_select_file": "Sélectionnez un fichier dans la liste pour afficher ou modifier son contenu.", "advanced_reload": "Recharger", "advanced_save": "Enregistrer le fichier", "advanced_apply_restart": "Appliquer (redémarrer le service)", "advanced_saved": "Fichier de configuration enregistré", "advanced_restart_after_save": "Configuration enregistrée. Redémarrer le service concerné maintenant pour que les modifications prennent effet ?", "advanced_restart_confirm": "Redémarrer le(s) service(s) BetterDesk concerné(s) ? Les connexions actives peuvent être brièvement interrompues.", "advanced_restart_console_confirm": "Redémarrer le service de console web ? Votre session de navigateur se déconnectera brièvement et la page se rechargera lorsque la console sera de retour.", "advanced_restart_started": "Redémarrage du service initié", "advanced_restart_done": "Console redémarrée — rechargement de la page…", "advanced_restart_polling": "En attente du retour en ligne de la console…", "advanced_restart_timeout": "Le redémarrage a été envoyé mais la console n'a pas répondu à temps. Vérifiez les journaux systemd/NSSM et rechargez manuellement.", "advanced_restart_failed": "Échec du redémarrage du service (privilèges insuffisants ou service non installé)", "advanced_save_confirm": "Enregistrer les modifications de ce fichier ? Une sauvegarde de la version précédente sera créée.", "advanced_unsaved_confirm": "Vous avez des modifications non enregistrées. Les ignorer ?", "advanced_no_files": "Aucun fichier de configuration disponible sur ce système.", "advanced_readonly": "lecture seule", "advanced_missing": "manquant", "advanced_new_file": "Nouveau fichier (non créé jusqu'à l'enregistrement)", "advanced_new_file_hint": "Nouveau fichier — ajoutez du contenu et enregistrez", "advanced_backup_created": "sauvegarde créée", "advanced_restart_console": "Redémarrez le service de console web (p. ex. systemctl restart betterdesk-console) pour que les modifications .env prennent effet.", "advanced_restart_goserver": "Redémarrez le serveur Go BetterDesk pour que les modifications de la liste de blocage soient chargées.", "advanced_restart_systemd": "Après avoir modifié des unités systemd, exécutez : systemctl daemon-reload && systemctl restart ", "advanced_restart_generic": "Redémarrez le service concerné pour que les modifications prennent effet.", "advanced_error_unknown": "Fichier de configuration inconnu", "advanced_error_not_found": "Le fichier n'existe pas", "advanced_error_not_file": "Le chemin n'est pas un fichier ordinaire", "advanced_error_too_large": "Le fichier dépasse la taille maximale modifiable (512 Ko)", "advanced_error_binary": "Les fichiers binaires ne peuvent pas être modifiés dans le panneau", "advanced_error_invalid": "Contenu de fichier invalide", "advanced_error_not_writable": "Le fichier n'est pas accessible en écriture par le processus de console", "advanced_file_console-env": "Environnement de la console (.env)", "advanced_file_console-env-local": "Substitutions de la console (.env.local)", "advanced_file_go-blocklist": "Liste de blocage du serveur Go (blocklist.txt)", "advanced_file_systemd-console": "systemd: betterdesk-console (unité de service)", "advanced_file_systemd-server": "systemd: betterdesk-server (unité de service)", "advanced_file_console-session-secret": "Secret de session de la console (.session_secret)", "advanced_file_go-audit-log": "Journal d'audit du serveur Go (audit.jsonl)", "advanced_file_build-env": "Environnement de compilation de l'agent (/etc/betterdesk/build.env)", "advanced_file_docker-supervisord": "Docker: supervisord.conf (configuration supervisord)", "advanced_file_docker-compose": "Docker: docker-compose.yml (orchestration)", "advanced_restart_none": "Aucun redémarrage de service n'est requis pour ce fichier.", "enrollment_title": "Inscription de l'appareil (RustDesk)", "enrollment_desc": "Contrôlez comment les nouveaux clients RustDesk s'inscrivent et comment les opérateurs les approuvent dans la page des demandes d'inscription.", "enrollment_require_approval": "Approbation de l'opérateur requise (mode géré)", "enrollment_require_approval_hint": "Lorsqu'activé, les clients inconnus sont mis en file d'attente jusqu'à ce qu'un opérateur les approuve dans les demandes d'inscription.", "enrollment_rich_approve": "Formulaire d'approbation complet (nom, dossier, groupes, tags)", "enrollment_rich_approve_hint": "Affiche un dialogue détaillé lors de l'approbation des demandes d'inscription ou d'enregistrement LAN.", "enrollment_tag_picker": "Sélectionner des tags parmi les tags d'appareils existants", "enrollment_tag_picker_hint": "Permet aux opérateurs de sélectionner des tags dans la liste utilisée sur la page Appareils plutôt que de les saisir uniquement.", "enrollment_open_requests": "Demandes d'inscription ouvertes", "enrollment_pending_count": "{count} demande(s) d'inscription en attente" }, "audit": { "time": "Heure", "user": "Utilisateur", "action": "Action", "details": "Détails", "action_login": "Connexion", "action_login_failed": "Erreur de Connexion", "action_logout": "Deconnexion", "action_password_change": "Mot de passe modifié", "action_2fa_enable": "2FA Activé", "action_2fa_disable": "2FA Désactivé", "action_user_create": "Utilisateur Créé", "action_user_update": "Utilisateur Mis à Jour", "action_user_delete": "Utilisateur Supprimé", "action_settings_update": "Paramètres Mis à Jour", "action_device_ban": "Appareil Banni", "action_device_unban": "Appareils Débanni", "action_device_delete": "Appareil Supprimé" }, "generator": { "title": "Générateur de configuration client", "subtitle": "Générer la configuration pour les clients RustDesk", "alpha_badge": "ALPHA", "alpha_tooltip": "Fonctionnalité précoce — le générateur de bundles agent est en développement actif.", "config_options": "Options de configuration", "server_address": "Adresse du serveur", "server_address_hint": "Nom de Domaine ou adresse IP de votre serveur", "custom_port": "Port personnalisé", "port_hint": "Laisser vide pour le port par défaut (21116)", "relay_server": "Serveur relais", "relay_placeholder": "Identique au serveur ID si vide", "relay_hint": "Optionnel : adresse de serveur relais séparée", "include_key": "Inclure la clé publique dans la configuration", "generate": "Générer la configuration", "output": "Informations de configuration", "usage_title": "Détails des informations de connexion", "generated": "Configuration générée", "server_required": "L'adresse du serveur est requise", "nothing_to_copy": "Générez d'abord une configuration", "bundles_title": "Packages d’agent", "new_bundle": "Nouveau package", "editor_title": "Éditeur de package", "empty_state": "Sélectionnez un package à gauche ou créez-en un nouveau pour commencer.", "loading": "Chargement…", "no_bundles": "Aucun package pour le moment. Créez le premier.", "bundle_name": "Nom du package", "bundle_name_hint": "Libellé interne uniquement — non affiché aux utilisateurs finaux.", "short_link": "Lien de téléchargement court", "short_link_hint": "Utilisé dans l’URL publique (/d/…). Lettres minuscules, chiffres et tirets uniquement (2–32 caractères). Rempli automatiquement à partir du nom du paquet — raccourcissez-le pour faciliter le partage (p. ex. acme).", "branding_section": "Marque", "company_name": "Nom de l’entreprise / marque", "short_text": "Description courte", "contact_email": "E-mail de contact", "contact_phone": "Téléphone de contact", "contact_url": "Site web de contact", "logo": "Logo", "logo_hint": "PNG, JPEG, SVG ou WebP. Maximum 256 Ko.", "logo_clear": "Supprimer le logo", "primary_color": "Couleur principale", "accent_color": "Couleur de l’en-tête", "default_lang": "Langue par défaut", "allow_unattended": "Autoriser l’accès sans surveillance", "allow_unattended_hint": "Lorsque cette option est activée, l’agent affiche un mot de passe permanent pour l’accès opérateur.", "save": "Enregistrer le package", "revoke": "Révoquer", "unrevoke": "Réactiver", "revoked": "Révoqué", "preview_title": "Aperçu en direct", "preview_hint": "Aspect approximatif de la fenêtre d’agent côté utilisateur final.", "preview_default_name": "Support BetterDesk", "preview_status_ready": "Prêt", "preview_id": "Votre ID", "preview_password": "Mot de passe", "preview_chat": "Discuter avec le support", "preview_settings": "Paramètres (admin uniquement)", "preview_quit": "Quitter (admin uniquement)", "download_link_title": "Lien de téléchargement", "download_link_hint": "Partagez ce lien avec les utilisateurs finaux. Ils verront une page de téléchargement personnalisée. Les anciens liens hex continuent de fonctionner après modification du lien court.", "open_portal": "Ouvrir", "created": "Package créé", "saved": "Package enregistré", "deleted": "Package supprimé", "revoked_ok": "Package révoqué", "unrevoked_ok": "Package réactivé", "link_copied": "Lien copié dans le presse-papiers", "copy_failed": "Impossible de copier automatiquement — veuillez copier manuellement", "unsaved_confirm": "Ignorer les modifications non enregistrées ?", "confirm_revoke": "Révoquer ce package ? Le lien de téléchargement cessera de fonctionner.", "confirm_unrevoke": "Réactiver ce package ?", "confirm_delete": "Supprimer définitivement ce package ? Cette action est irréversible.", "errors": { "validation_failed": "Échec de la validation", "name_required": "Le nom du package est requis", "company_name_required": "Le nom de l’entreprise est requis", "logo_invalid": "Le logo doit être un fichier image valide", "logo_too_large": "Le logo doit faire 256 Ko ou moins", "logo_read_failed": "Impossible de lire le fichier du logo", "primary_color_invalid": "La couleur principale doit être une valeur hexadécimale (ex. #2563eb)", "accent_color_invalid": "La couleur de l’en-tête doit être une valeur hexadécimale (ex. #1e293b)", "contact_url_invalid": "Le site web de contact doit être une URL valide", "rebuild_revoked": "Impossible de reconstruire un paquet révoqué — réactivez-le d'abord", "server_host_invalid": "Entrez un nom de domaine ou une adresse IPv4 valide", "server_host_required": "L'adresse publique du serveur est requise", "token_failed": "Impossible de générer le jeton d'inscription — vérifiez la connectivité du serveur", "slug_invalid": "Le lien court ne peut contenir que des lettres minuscules, des chiffres et des tirets", "slug_too_short": "Le lien court doit comporter au moins 2 caractères", "slug_too_long": "Le lien court doit comporter au maximum 32 caractères", "slug_taken": "Ce lien court est déjà utilisé par un autre paquet" }, "legacy_title": "Générateur de configuration client", "background_color": "Arrière-plan de la fenêtre", "build_error_hint": "Erreur de compilation", "build_status_building": "En cours de compilation", "build_status_failed": "Échoué", "build_status_pending": "En file d'attente", "build_status_ready": "Prêt", "builds_empty": "Aucun build en file d'attente — enregistrez le paquet ou cliquez sur Reconstruire tout.", "builds_hint": "Installateurs compilés sur ce serveur pour chaque plateforme. Reconstruire après avoir corrigé les erreurs de la chaîne d'outils ou mis à jour les sources de l'agent.", "builds_loading": "Chargement de l'état de compilation…", "builds_summary": "{{ready}} prêt · {{pending}} en file d'attente · {{building}} en compilation · {{failed}} échoué", "builds_title": "Compilations client", "connection_section": "Connexion au serveur", "enrollment_per_device": "Par appareil — approuver dans Inscriptions", "enrollment_token": "Enregistrement de l'appareil", "enrollment_token_hint": "Chaque installation s'enregistre d'elle-même. Approuvez les nouveaux appareils dans le panneau Inscriptions ; le serveur délivre ensuite une clé d'accès unique par ordinateur.", "enrollment_token_pending": "Par appareil après approbation", "enrollment_token_set": "Par appareil — approuver dans Inscriptions", "header_text_color": "Couleur du texte d'en-tête", "rebuild_all": "Reconstruire tout", "rebuild_confirm": "Reconstruire tous les installateurs de plateforme pour ce paquet ? Les artefacts prêts existants seront remplacés.", "rebuild_queued": "Toutes les compilations de plateformes mises en file d'attente", "rebuilding_all": "Mise en file d'attente des reconstructions…", "server_host": "Adresse publique du serveur", "server_host_hint": "Nom de domaine ou IP publique où les utilisateurs finaux joignent votre serveur BetterDesk. Le port est pris dans la configuration de la console.", "server_host_placeholder": "support.example.com ou 203.0.113.10", "status_ready_color": "Couleur de l'indicateur prêt", "surface_color": "Arrière-plan de la carte", "text_color": "Couleur du texte", "text_muted_color": "Couleur du texte atténué", "use_https": "Utiliser HTTPS / WSS (recommandé)", "preview_help": "Demander de l'aide" }, "server": { "port": "Port", "api_port": "Port API", "id_server": "Serveur ID", "relay_server": "Serveur relais", "api_key": "Clé API" }, "status": { "online": "En ligne", "offline": "Hors ligne", "banned": "Banni", "running": "En cours", "stopped": "Arrêté", "unknown": "Inconnu", "checking": "Vérification...", "label": "Status", "no_signal": "Pas de signal" }, "actions": { "refresh": "Actualiser", "copy": "Copier", "connect": "Connecter", "connect_desktop": "Connecter via le client de bureau", "remote_viewer": "Visionneuse distante", "web_remote": "Bureau distant web", "details": "Détails", "edit": "Modifier", "delete": "Supprimer", "ban": "Bannir", "unban": "Débannir", "save": "Enregistrer", "cancel": "Annuler", "confirm": "Confirmer", "close": "Fermer", "clear": "Effacer", "ok": "OK", "saved": "Enregistré", "back": "Retour", "create": "Créer", "dismiss": "Ignorer", "view_all": "Tout afficher", "cdap_viewer": "CDAP Snapshot Viewer", "add": "Add", "remove": "Remove" }, "time": { "just_now": "à l'instant", "seconds_ago": "Il y a {count} seconde(s)", "minutes_ago": "Il y a {count} minute(s)", "hours_ago": "Il y a {count} heure(s)", "days_ago": "Il y a {count} jour(s)", "day_mon": "Lun", "day_tue": "Mar", "day_wed": "Mer", "day_thu": "Jeu", "day_fri": "Ven", "day_sat": "Sam", "day_sun": "Dim" }, "users": { "title": "Gestion des Utilisateurs", "subtitle": "Gérer les utilisateurs de la console et les autorisations", "add_user": "Ajouter un utilisateur", "edit_user": "Modifier l'utilisateur", "username": "Nom d'utilisateur", "username_placeholder": "Entrez le nom d'utilisateur", "username_hint": "3-32 caractères, lettres, chiffres et underscores uniquement", "password": "Mot de passe", "password_placeholder": "Entrez le mot de passe", "password_hint": "Minimum 8 caractères avec majuscules, minuscules, chiffres et symboles", "password_leave_empty": "Laisser vide pour conserver l'actuel", "role": "Rôle", "role_admin": "Administrateur", "role_operator": "Opérateur", "role_viewer": "Observateur", "role_pro": "Pro (API seulement)", "role_super_admin": "Super Administrateur", "role_server_admin": "Administrateur du serveur", "role_global_admin": "Administrateur Global", "role_hint": "Les observateurs peuvent uniquement consulter les données, les opérateurs peuvent gérer les appareils, les administrateurs ont un accès complet", "created": "Créé", "last_login": "Dernière connexion", "never": "Jamais", "actions": "Actions", "create": "Créer Utilisateur", "edit": "Modifier", "reset_password": "Réinitialiser le mot de passe", "new_password": "Nouveau mot de passe", "delete_title": "Supprimer l'utilisateur", "delete_confirm": "Êtes-vous sûr de vouloir supprimer l'utilisateur {username} ?", "delete_success": "Utilisateur supprimé avec succès", "user_created": "Utilisateur créé avec succès", "user_updated": "Utilisateur mis à jour avec succès", "password_reset_success": "Mot de passe réinitialisé avec succès", "empty_title": "Aucun Utilisateur trouvé", "empty_text": "Ajouter des utilisateurs pour gérer les permissions d'accès à la console", "fill_required": "Veuillez remplir tous les champs obligatoires", "invalid_username": "Le nom d'utilisateur doit contenir 3-32 caractères, lettres, chiffres et underscores uniquement", "username_exists": "Le nom d'utilisateur existe déjà", "weak_password": "Le mot de passe est trop faible", "password_too_short": "Le mot de passe doit contenir au moins 8 caractères", "invalid_role": "Rôle invalide", "cannot_demote_self": "Vous ne pouvez pas vous rétrograder", "cannot_delete_self": "Vous ne pouvez pas supprimer votre propre compte", "last_admin": "Impossible de supprimer le dernier administrateur", "admin_only": "Cette fonctionnalité est réservée aux administrateurs", "password_required": "Le mot de passe est requis", "not_found": "Utilisateur Introuvable", "strength_weak": "Faible", "strength_medium": "Moyen", "strength_strong": "Fort", "security_tips_title": "Bonnes pratiques de sécurité", "tip_strong_passwords": "Utilisez des mots de passe forts et uniques pour chaque utilisateur", "tip_unique_accounts": "Créez des comptes individuels pour chaque personne", "tip_viewer_role": "Utilisez le rôle observateur pour les utilisateurs qui n'ont besoin que d'un accès en lecture", "tip_operator_role": "Utilisez le rôle opérateur pour les utilisateurs qui doivent gérer les appareils mais pas les utilisateurs", "tip_audit_logs": "Vérifiez régulièrement les journaux d'audit pour détecter les activités suspectes", "organizations": "Organisations", "user_organizations": "Organisations pour {username}", "no_organizations": "L'utilisateur n'est affecté à aucune organisation", "org_removed": "Suppression de l'affectation à une organisation", "server_role_label": "Rôle serveur", "server_role_hint": "Détermine ce que l’utilisateur peut faire dans toute la console (accès au panneau, configuration serveur, audit, etc.).", "org_membership_section": "Appartenance aux organisations", "org_membership_hint": "Un utilisateur peut appartenir à plusieurs organisations. Le rôle d’organisation ne contrôle que les autorisations dans cette organisation et reste indépendant du rôle serveur ci-dessus.", "column_organizations": "Organisations", "no_orgs_short": "—", "org_count_one": "{count} organisation", "org_count_many": "{count} organisations", "all_orgs_assigned": "L’utilisateur est déjà membre de toutes les organisations.", "user_groups": "Groupes d’utilisateurs", "user_groups_hint": "Les groupes d’utilisateurs peuvent accorder l’accès à certains groupes d’appareils.", "loading_user_groups": "Chargement des groupes d’utilisateurs...", "no_user_groups": "Aucun groupe d’utilisateurs disponible", "create_user_group": "Créer un groupe", "edit_user_group": "Modifier le groupe d’utilisateurs", "delete_user_group": "Supprimer le groupe d’utilisateurs", "delete_user_group_confirm": "Supprimer le groupe d’utilisateurs {name} ? Les membres perdront l’accès accordé par ce groupe.", "user_group_created": "Groupe d’utilisateurs créé", "user_group_updated": "Groupe d’utilisateurs mis à jour", "user_group_deleted": "Groupe d’utilisateurs supprimé", "user_group_not_found": "Groupe d’utilisateurs introuvable", "group_name": "Nom du groupe", "group_name_placeholder": "Opérateurs", "group_note": "Note", "group_note_placeholder": "Note facultative", "group_name_required": "Le nom du groupe est requis", "group_members_count": "{count} membres", "provider": "Fournisseur", "provider_local": "Local", "provider_ldap": "LDAP/AD", "provider_oidc": "SSO", "password_managed_by_provider": "Géré par le fournisseur d'identité", "provider_managed_hint": "Ce compte est géré par un fournisseur d'identité externe (LDAP/AD ou SSO). Le mot de passe et le rôle sont contrôlés par le fournisseur et ne peuvent pas être modifiés ici." }, "folders": { "title": "Dossiers", "create": "Créer un dossier", "edit": "Modifier un dossier", "delete": "Supprimer un dossier", "name": "Nom du dossier", "name_placeholder": "Entrez le nom du dossier", "name_required": "Le nom du dossier est obligatoire", "name_too_long": "Le nom du dossier est trop long (max 50 caractères)", "color": "Couleur", "icon": "Icône", "not_found": "Dossier Introuvable", "delete_confirm": "Êtes-vous sûr de vouloir supprimer ce dossier ? Les appareils seront désassignés.", "delete_success": "Dossier supprimé avec succès", "created": "Dossier Créé", "updated": "Dossier mis à jour avec succès", "no_devices_selected": "Aucun appareil sélectionné", "devices_moved": "Appareils déplacés avec succès", "device_assigned": "Appareil assigné au dossier", "unassigned": "Non assigné", "all_devices": "Tous les appareils", "drag_hint": "Glissez les appareils dans les dossiers pour les organiser", "move_to": "Déplacer vers", "toggle_sidebar": "Basculer la barre latérale" }, "errors": { "forbidden_title": "Accès refusé", "forbidden_message": "Vous n'avez pas la permission d'accéder à cette ressource.", "not_found_title": "Page non trouvée", "not_found_message": "La page que vous recherchez n'existe pas ou a été déplacée.", "server_error_title": "Erreur serveur", "server_error_message": "Un problème est survenu. Veuillez réessayer plus tard.", "go_home": "Accueil", "try_again": "Réessayer", "load_devices_failed": "Échec du chargement des appareils", "load_key_failed": "Échec du chargement de la clé", "load_qr_failed": "Échec du chargement du code QR", "load_audit_failed": "Échec du chargement du journal d'audit", "load_users_failed": "Échec du chargement des utilisateurs", "load_folders_failed": "Échec du chargement des dossiers", "download_failed": "Échec du téléchargement", "logout_failed": "Échec de la déconnexion", "password_change_failed": "Échec du changement de mot de passe", "language_change_failed": "Échec du changement de langue", "ban_failed": "Échec du bannissement de l'appareil", "unban_failed": "Échec du débannissement de l'appareil", "delete_failed": "Échec de la suppression de l'appareil", "change_id_failed": "Échec de la modification de l'identifiant de l'appareil", "bulk_delete_failed": "Échec de la suppression des appareils", "sync_failed": "Échec de la synchronisation", "error": "Erreur", "not_found": "Introuvable", "server_error": "Erreur du serveur", "load_device_failed": "Échec du chargement de l'appareil", "load_orgs_failed": "Échec du chargement des organisations" }, "remote": { "title": "Bureau à Distance", "connecting": "Connexion en cours...", "waiting_password": "En attente du mot de passe", "authenticating": "Authentification...", "streaming": "Connecté", "disconnected": "Déconnecté", "error": "Erreur", "status_idle": "Inactif", "password_required": "Le mot de passe est requis", "enter_password_for": "Entrez le mot de passe pour l'appareil", "password_placeholder": "Mot de passe pour l'appareil", "connect": "Connecter", "reconnect": "Reconnecter", "disconnect": "Déconnecter", "back_to_devices": "Retour aux appareils", "fullscreen": "Plein écran", "toggle_audio": "Activer/désactiver le son", "send_keys": "Envoyer des touches de commande", "scale_mode": "Mode de mise à l'échelle", "scale_fit": "Adapter à la fenêtre", "scale_fill": "Remplir la fenêtre", "scale_original": "Taille originale (1:1)", "scale_stretch": "Ajustement automatique", "actions": "Actions", "lock_screen": "Verrouiller l'écran", "restart_remote": "Redémarrer l'appareil distant", "refresh_screen": "Rafraîchir l'écran", "clipboard_paste": "Coller depuis le presse-papiers", "block_input": "Bloquer la saisie", "display_settings": "Paramètres d'affichage", "image_quality": "Qualité d'image", "quality_best": "Meilleure (qualité optimale, 60 images par seconde)", "quality_balanced": "Équilibrée", "quality_low": "Performance", "show_cursor": "Afficher le curseur distant", "lock_after_session": "Verrouiller après la session", "privacy_mode": "Mode confidentiel", "disable_clipboard": "Désactiver le presse-papiers", "chat": "Discussion", "chat_placeholder": "Écrivez un message...", "record": "Enregistrer l'écran", "view_only": "Affichage seulement", "pin_toolbar": "Épingler la barre d'outils", "monitors": "Écrans", "select_monitor": "Sélectionner un écran", "quality_speed": "Vitesse (basse qualité, 60 images par seconde)", "quality_quality": "Qualité (Optimale, 30 images par seconde)", "recording_started": "L'enregistrement a commencé", "recording_stopped": "L'enregistrement s'est arrêté", "download_recording": "Télécharger l'enregistrement", "e2e_encrypted": "Chiffrement de bout en bout", "e2e_key_exchange": "Établissement d'un canal sécurisé...", "confirm_restart": "Êtes-vous sûr de vouloir redémarrer l'appareil distant ?", "webcodecs_not_supported": "Votre navigateur ne prend pas en charge l'API WebCodecs. Veuillez utiliser Chrome 94+ ou Edge 94+.", "webcodecs_insecure_context": "WebCodecs indisponible en HTTP. La vidéo utilise un décodeur logiciel. Pour de meilleures performances, utilisez HTTPS.", "webcodecs_fallback_active": "Décodeur vidéo logiciel actif (performances limitées)", "click_to_start": "Cliquez pour démarrer", "autoplay_blocked": "Le navigateur nécessite une intervention de l'utilisateur pour démarrer la vidéo et le son.", "start_playback": "Démarrer la lecture", "new_connection": "Nouvelle connexion", "device_id_placeholder": "Saisir l'identifiant de l'appareil", "http_warning": "Mode HTTP : limité au décodage logiciel H.264 (~15 images par seconde). Utilisez HTTPS pour des performances optimales (WebCodecs, VP9, 60 images par seconde).", "file_transfer": "Transfert de fichiers", "file_upload": "Transférer", "file_download": "Télécharger", "file_empty": "Ce dossier est vide", "file_transfers": "Transferts", "file_complete": "Terminé", "file_error": "Échec du transfert", "file_show_hidden": "Afficher les fichiers cachés", "file_new_folder": "Nouveau dossier", "file_new_folder_prompt": "Entrez le nom du dossier :", "file_parent": "Dossier parent", "file_root": "Racine", "file_rename": "Renommer", "file_rename_prompt": "Entrez le nouveau nom :", "file_delete_confirm": "Êtes-vous sûr de vouloir supprimer cet élément ?", "file_cancelled": "Transfert annulé", "2fa_required": "Verification 2FA requise", "2fa_hint": "Saisissez le code à 6 chiffres de votre application d'authentification", "2fa_invalid": "Entrez un code à 6 chiffres valide", "verify": "Vérifier", "use_cdap_fallback": "Utiliser la visionneuse CDAP", "cdap_fallback_hint": "Ouvre le viewer JPEG léger qui utilise bd-signal/CDAP au lieu du relais RustDesk. Utile quand le pair est hors ligne sur le relais mais joignable via le canal de gestion de l'agent.", "clipboard_empty": "Le presse-papiers est vide", "clipboard_denied": "Accès au presse-papiers refusé. HTTPS est requis ou l’autorisation n’a pas été accordée.", "file_loading": "Chargement...", "file_timeout": "L’appareil distant n’a pas répondu. Le transfert de fichiers peut ne pas être pris en charge ou être désactivé sur la machine distante.", "codec": "Codec vidéo", "codec_auto": "Auto (recommandé)" }, "branding": { "identity_title": "Identité de marque", "identity_desc": "Personnalisez le nom et la description de l'application affichés dans la console", "app_name": "Nom de l'application", "app_description": "Description de l'application", "logo_title": "Logo", "logo_desc": "Choisissez comment votre logo apparaît dans la barre latérale et la page de connexion", "logo_type_icon": "Icône Material", "logo_type_svg": "Code SVG", "logo_type_image": "URL de l'image", "logo_icon_name": "Nom de l'icône", "logo_icon_hint": "Entrez un nom Material Icons (ex: dns, cloud, security). Voir fonts.google.com/icons", "logo_svg_code": "Code SVG", "logo_svg_hint": "Collez votre balisage SVG ici. Supporte les éléments complets avec chemins et styles.", "logo_image_upload": "Télécharger une image", "logo_image_choose": "Choisir un fichier image", "logo_image_hint": "PNG, JPG, GIF, WebP ou SVG. Max 1,5 Mo. L'image est stockée en données base64.", "logo_image_url": "Données / URL de l'image", "logo_image_url_hint": "Rempli automatiquement lors du téléchargement ou collez une URL manuellement.", "logo_image_too_large": "L'image est trop grande. Taille maximale : 1,5 Mo.", "logo_image_invalid_type": "Type de fichier invalide. Utilisez PNG, JPG, GIF, WebP ou SVG.", "preview": "Aperçu", "colors_title": "Palette de couleurs", "colors_desc": "Personnalisez la palette de couleurs. Laissez vide pour les valeurs par défaut.", "colors_backgrounds": "Arrière-plans", "colors_text": "Texte", "colors_accents": "Couleurs d'accentuation", "colors_borders": "Bordures", "import_export_title": "Importation / exportation", "import_export_desc": "Sauvegardez votre thème en fichier JSON ou importez-en un d'une autre instance", "export_theme": "Exporter le thème", "import_theme": "Importer un thème", "reset_defaults": "Réinitialiser par défaut", "save_branding": "Enregistrer l'image de marque", "saved": "Enregistré", "exported": "Thème exporté", "imported": "Thème importé avec succès. Rechargement...", "import_error": "Échec de l'import du thème. Format de fichier invalide.", "reset_confirm": "Êtes-vous sûr de vouloir réinitialiser l'image de marque par défaut ? Cette action est irréversible.", "reset_success": "Image de marque réinitialisée par défaut. Rechargement...", "logo_type_text": "Text Logo", "logo_text": "Logo Text", "logo_text_hint": "Texte principal affiché comme logo de votre marque", "logo_text_accent": "Accent Text", "logo_text_accent_hint": "Texte secondaire sous le logo (ex. nom du produit ou slogan)", "logo_upload_success": "Logo téléversé avec succès.", "typography_title": "Typography", "typography_desc": "Choisissez les polices pour les titres et le corps du texte. Les polices sont téléchargées sur le serveur pour un hébergement local.", "font_heading": "Police des titres", "font_heading_hint": "Utilisée pour les titres (H1–H6) et le logo texte", "font_body": "Body Font", "font_body_hint": "Utilisée pour le texte courant et les éléments d’interface", "font_search_placeholder": "Rechercher des polices...", "font_system_default": "Valeur système par défaut", "font_clear": "Clear", "font_cat_all": "All", "font_downloaded_count": "polices téléchargées sur le serveur", "agent_desc": "Personnalisez le portail de téléchargement d'agent public affiché aux utilisateurs finaux.", "agent_show_powered": "Afficher « Propulsé par BetterDesk »", "agent_show_powered_hint": "Afficher l'attribution BetterDesk dans le pied de page du portail de téléchargement.", "agent_title": "Page de téléchargement de l'agent", "background_desc": "Définissez un fond d'écran, un dégradé ou un fond uni pour la console. Les cartes flottent au-dessus.", "background_title": "Arrière-plan et apparence", "bg_blur": "Flou d'arrière-plan", "bg_color": "Couleur d'arrière-plan", "bg_gradient": "Dégradé CSS", "bg_gradient_hint": "Tout dégradé CSS valide, p. ex. linear-gradient(135deg, #1e293b, #0f172a)", "bg_image_choose": "Choisir un fichier image", "bg_image_hint": "PNG, JPG, WebP ou GIF. 8 Mo maximum. Stocké sur le serveur.", "bg_image_invalid_type": "Type de fichier invalide. Utilisez PNG, JPG, WebP ou GIF.", "bg_image_too_large": "L'image est trop grande. La taille maximale est de 8 Mo.", "bg_image_upload": "Télécharger l'image d'arrière-plan", "bg_image_url": "Chemin de l'image / URL", "bg_overlay": "Superposition sombre", "bg_overlay_hint": "Assombrit l'arrière-plan pour une meilleure lisibilité du texte.", "bg_size": "Dimensionnement de l'image", "bg_size_auto": "Automatique (original)", "bg_size_contain": "Contenu (ajuster)", "bg_size_cover": "Couvrir (remplir l'écran)", "bg_type_color": "Couleur unie", "bg_type_gradient": "Dégradé", "bg_type_image": "Image", "bg_type_none": "Aucun", "bg_upload_success": "Image d'arrière-plan téléchargée avec succès.", "custom_css_desc": "Avancé : injectez du CSS personnalisé appliqué dans toute la console et la page de connexion.", "custom_css_hint": "À utiliser avec précaution. Les règles invalides ou non sécurisées sont nettoyées. Maximum 20 000 caractères.", "custom_css_title": "CSS personnalisé", "footer_desc": "Ajoutez une ligne de pied de page personnalisée affichée sur l'écran de connexion et dans la barre latérale de la console.", "footer_text": "Texte du pied de page", "footer_text_hint": "p. ex. une mention de droit d'auteur ou le nom de l'entreprise.", "footer_title": "Pied de page et droits d'auteur", "login_bg_inherit": "Identique à la console", "login_desc": "Personnalisez le titre, le sous-titre et l'arrière-plan de l'écran de connexion.", "login_heading": "Titre de connexion", "login_heading_placeholder": "Bon retour", "login_subheading": "Sous-titre de connexion", "login_subheading_placeholder": "Connectez-vous à votre compte", "login_title": "Page de connexion", "powered_by": "Propulsé par", "show_powered": "Afficher l'attribution « BetterDesk »", "show_powered_hint": "Afficher le nom et la version de BetterDesk dans le pied de page de connexion et la barre latérale." }, "device_detail": { "tab_overview": "Vue d'ensemble", "tab_tags": "Étiquettes et notes", "tab_actions": "Actions", "section_identity": "Identité", "section_network": "Réseau", "section_timestamps": "Horodatages", "section_connect": "Connexion", "section_manage": "Gestion", "folder": "Dossier", "status_tier": "Niveau de statut", "device_banned": "Cet appareil est banni", "no_reason": "Aucune raison fournie", "tags": "Tags", "no_tags": "Aucun tag assigné à cet appareil", "tag_placeholder": "Entrez un nom de tag...", "add_tag": "Ajouter", "tag_exists": "Ce tag existe déjà", "notes": "Notes", "notes_placeholder": "Ajoutez des notes sur cet appareil...", "danger_zone": "Zone de danger", "action_connect_web": "Bureau à distance Web", "action_connect_web_desc": "Connexion via le bureau à distance du navigateur", "action_native_remote": "Remote BetterDesk", "action_native_remote_desc": "Flux JPEG natif — aucun plugin requis", "action_connect_desktop": "Client de bureau", "action_connect_desktop_desc": "Ouvrir dans l'application client de bureau", "action_change_id_desc": "Changer l'ID d'enregistrement de l'appareil", "action_ban_desc": "Empêcher cet appareil de se connecter", "action_unban_desc": "Permettre à cet appareil de se reconnecter", "action_delete_desc": "Supprimer définitivement cet appareil", "tab_hardware": "Matériel", "tab_metrics": "Métriques", "section_system": "Système", "section_cpu": "Processeur", "section_memory": "Mémoire", "section_displays": "Écrans", "section_encoding": "Capacités d'encodage", "section_live_metrics": "Métriques en direct", "section_current_usage": "Utilisation actuelle", "section_usage_history": "Historique d'utilisation", "os": "Système d'exploitation", "version": "Version", "cpu_model": "Modèle CPU", "cpu_cores": "Cœurs CPU", "cpu_freq": "Fréquence CPU", "total_memory": "Mémoire totale", "metric_memory": "Mémoire", "metric_disk": "Disque", "metrics_updated": "Mis à jour", "device_groups": "Groupes", "no_sysinfo": "Aucune information matérielle disponible", "no_sysinfo_hint": "Les infos système apparaîtront après que l'appareil aura envoyé un rapport sysinfo", "no_metrics": "Aucune métrique disponible", "no_metrics_hint": "Les métriques apparaîtront après que l'appareil aura envoyé des rapports de battement de cœur", "chart_oldest": "← Plus ancien", "chart_newest": "Plus récent →", "tab_services": "Services", "tab_processes": "Processes", "tab_events": "Events", "tab_activity": "Activity", "tab_files": "Fichiers", "agent_lazy_hint": "Cliquez sur cet onglet pour charger les données en direct depuis l’agent", "agent_offline": "L’agent est hors ligne", "agent_timeout": "L’agent n’a pas répondu à temps", "agent_error": "Impossible de charger les données depuis l’agent", "service_name": "Name", "service_display": "Nom affiché", "service_status": "Status", "service_start": "Start mode", "process_name": "Name", "process_user": "User", "process_memory": "Memory" }, "inventory": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "device_id": "ID de l'appareil", "hostname": "Nom d'hôte", "os": "Système d'exploitation", "cpu": "Processor", "cpu_cores": "Cœurs CPU", "cpu_usage": "Utilisation CPU", "memory": "Memory", "memory_total": "Mémoire totale", "memory_used": "Mémoire utilisée", "memory_available": "Mémoire disponible", "memory_usage": "Utilisation mémoire", "swap": "Swap", "disks": "Disques", "disk_count": "Nombre de disques", "network": "Network Adapters", "network_interfaces": "Interfaces réseau", "software": "Logiciels", "software_count": "Logiciels installés", "system": "Système", "kernel": "Noyau", "architecture": "Architecture", "uptime": "Uptime", "frequency": "Fréquence", "physical_cores": "Cœurs physiques", "logical_cores": "Cœurs logiques", "model": "Modèle", "usage": "Utilisation", "total": "Total", "used": "Utilisé", "available": "Disponible", "mount_point": "Point de montage", "removable": "Amovible", "mac_address": "Adresse MAC", "ip_addresses": "Adresses IP", "traffic": "Trafic", "collect_now": "Collecter maintenant", "collector_running": "Collecte en cours", "collector_stopped": "Collecte arrêtée", "last_upload": "Dernier envoi", "total_uploads": "Total", "last_seen": "Vu en dernier", "collected_at": "Collecté le", "no_data": "No hardware data available", "no_devices": "Aucun appareil avec des données d'inventaire trouvé", "detail_title": "Détails d'inventaire de l'appareil", "telemetry": "Télémétrie", "view_detail": "Voir les détails", "export": "Exporter", "refresh": "Actualiser" }, "tickets": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "create": "Créer", "edit": "Modifier", "delete": "Supprimer", "detail": "Détails du ticket", "ticket_id": "ID du ticket", "ticket_title": "Titre", "description": "Description", "status": "Statut", "priority": "Priorité", "category": "Catégorie", "assigned_to": "Assigné à", "created_by": "Créé par", "device": "Appareil", "sla_due": "Échéance SLA", "created_at": "Créé", "updated_at": "Mis à jour", "resolved_at": "Résolu", "closed_at": "Fermé", "status_open": "Ouvert", "status_in_progress": "En cours", "status_resolved": "Résolu", "status_closed": "Fermé", "priority_low": "Faible", "priority_medium": "Moyen", "priority_high": "Élevé", "priority_critical": "Critique", "category_general": "Général", "category_hardware": "Matériel", "category_software": "Logiciel", "category_network": "Réseau", "category_access": "Accès", "category_other": "Autre", "comments": "Commentaires", "add_comment": "Ajouter un commentaire", "comment_placeholder": "Écrire un commentaire...", "internal_note": "Note interne (non visible par les utilisateurs finaux)", "attachments": "Pièces jointes", "upload_attachment": "Télécharger une pièce jointe", "download": "Télécharger la clé", "connect_device": "Se connecter à l'appareil", "no_tickets": "Aucun ticket trouvé", "no_comments": "Aucun commentaire", "no_attachments": "Aucune pièce jointe", "title_required": "Le titre est requis", "delete_confirm": "Êtes-vous sûr de vouloir supprimer le ticket #{id} ?", "delete_success": "Appareil supprimé avec succès", "created_success": "Ticket créé avec succès", "updated_success": "Ticket mis à jour avec succès", "sla_overdue": "SLA dépassé", "filter_all": "Tous", "search_placeholder": "Rechercher des appareils...", "assign_to_me": "M'assigner", "unassign": "Désassigner", "stats_total": "Total", "stats_open": "Ouverts", "stats_in_progress": "En cours", "stats_resolved": "Résolus", "stats_closed": "Fermés" }, "activity": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "device": "Appareil", "hostname": "Nom d'hôte", "sessions": "Sessions actives", "idle_time": "Temps d'inactivité", "active_time": "Temps actif", "last_report": "Dernier rapport", "top_apps": "Applications principales", "app_name": "Nom de l'application", "window_title": "Titre de la fenêtre", "category": "Catégorie", "duration": "Durée", "started_at": "Démarré", "ended_at": "Terminé", "session_count": "Nombre de sessions", "total_active": "Total actif", "total_idle": "Total inactif", "detail_count": "Enregistrements détaillés", "no_data": "No hardware data available", "no_sessions": "Aucune session enregistrée", "filter_from": "De", "filter_to": "À", "filter_apply": "Appliquer le filtre", "hours": "heures", "minutes": "minutes", "seconds": "secondes", "category_browser": "Navigateur", "category_productivity": "Productivité", "category_communication": "Communication", "category_development": "Développement", "category_media": "Médias", "category_gaming": "Jeux", "category_system": "Système", "category_other": "Autre", "summary": "Résumé", "details": "Détails de l'appareil", "refresh": "Actualiser", "search": "Rechercher des appareils...", "date_range": "Plage de dates", "device_id": "ID de l'appareil", "session_start": "Début de session", "session_end": "Fin de session", "user": "Utilisateur", "no_activity": "Aucune activité enregistrée", "reported_at": "Reported At", "detail": "Détails du ticket", "no_apps": "Aucune application" }, "automation": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "rules": "Règles d'alerte", "rules_subtitle": "Définir les conditions qui déclenchent des notifications", "alerts": "Historique des alertes", "alerts_subtitle": "Voir et acquitter les alertes déclenchées", "commands": "Commandes à distance", "commands_subtitle": "Envoyer des commandes aux appareils distants", "smtp": "Configuration SMTP", "smtp_subtitle": "Paramètres de notification par e-mail", "rule_name": "Nom de la règle", "description": "Description", "condition_type": "Type de condition", "condition_op": "Opérateur", "condition_value": "Seuil", "severity": "Sévérité", "scope_device": "Appareil cible", "scope_all": "Tous les appareils", "cooldown": "Temps de refroidissement (secondes)", "notify_emails": "E-mails de notification", "enabled": "Activé", "disabled": "Désactivé", "create_rule": "Créer une règle", "edit_rule": "Modifier la règle", "delete_rule": "Supprimer la règle", "acknowledge": "Acquitter", "acknowledged": "Acquitté", "unacknowledged": "Non acquitté", "triggered_at": "Déclenché le", "severity_info": "Info", "severity_warning": "Avertissement", "severity_critical": "Critique", "op_gt": "Supérieur à", "op_gte": "Supérieur ou égal", "op_lt": "Inférieur à", "op_lte": "Inférieur ou égal", "op_eq": "Égal à", "op_neq": "Différent de", "type_cpu_usage": "Utilisation CPU (%)", "type_memory_usage": "Utilisation mémoire (%)", "type_disk_usage": "Utilisation disque (%)", "type_offline_duration": "Durée hors ligne (s)", "type_idle_duration": "Durée d'inactivité (s)", "type_custom": "Personnalisé", "command_type": "Type de commande", "command_payload": "Commande / Script", "command_result": "Résultat", "command_status": "Statut", "send_command": "Envoyer la commande", "status_pending": "En attente", "status_running": "En cours", "status_completed": "Terminé", "status_failed": "Échoué", "smtp_host": "Hôte SMTP", "smtp_port": "Port", "smtp_secure": "Utiliser TLS", "smtp_user": "Nom d'utilisateur", "smtp_pass": "Mot de passe", "smtp_from": "Adresse d'expédition", "smtp_test": "Tester la connexion", "smtp_save": "Enregistrer la configuration", "smtp_test_success": "Connexion réussie", "smtp_test_failed": "Échec de la connexion", "no_rules": "Aucune règle d'attribution.", "no_alerts": "Aucune alerte déclenchée", "no_commands": "Aucune commande envoyée", "id_payload_required": "L’ID de l’appareil et la charge utile sont requis", "no_commands_sent": "Aucune commande envoyée pour le moment" }, "file_transfer": { "title": "Tableau de bord", "transfers": "Transferts", "new_transfer": "Nouveau transfert", "upload": "Télécharger vers", "download": "Télécharger la clé", "direction": "Direction", "filename": "Nom du fichier", "file_size": "Taille du fichier", "mime_type": "Type MIME", "progress": "Progression", "status": "Statut", "device": "Appareil", "initiated_by": "Initié par", "created_at": "Créé", "cancel": "Annuler", "cancel_confirm": "Êtes-vous sûr de vouloir annuler ce transfert ?", "download_file": "Télécharger le fichier", "browse_files": "Parcourir les fichiers", "select_file": "Sélectionner un fichier", "select_device": "Sélectionner un appareil", "no_transfers": "Aucun transfert de fichier", "status_pending": "En attente", "status_active": "Actif", "status_completed": "Terminé", "status_failed": "Échoué", "status_cancelled": "Annulé", "bytes_transferred": "Octets transférés", "chunks": "Blocs", "transfer_started": "Transfert démarré", "transfer_completed": "Transfert terminé", "transfer_failed": "Transfert échoué", "transfer_cancelled": "Transfert annulé", "max_file_size": "Taille maximale du fichier : 4 Go", "error_too_large": "Le fichier est trop volumineux", "error_no_device": "Aucun appareil sélectionné", "error_no_file": "Aucun fichier sélectionné" }, "network": { "title": "Tableau de bord", "targets": "Cibles de surveillance", "add_target": "Ajouter une cible", "edit_target": "Modifier la cible", "delete_target": "Supprimer la cible", "delete_confirm": "Êtes-vous sûr de vouloir supprimer cette cible ?", "target_name": "Nom", "host": "Hôte", "port": "Port", "url": "URL", "check_type": "Type de vérification", "timeout": "Délai d'attente (ms)", "interval": "Intervalle (ms)", "enabled": "Activé", "status": "Statut", "last_check": "Dernière vérification", "last_rtt": "Dernier RTT", "rtt_ms": "RTT (ms)", "status_up": "Accessible", "status_down": "Inaccessible", "status_unknown": "Inconnu", "check_now": "Vérifier maintenant", "history": "History", "stats": "Statistiques", "total_targets": "Cibles totales", "targets_up": "Cibles accessibles", "targets_down": "Cibles inaccessibles", "type_ping": "Ping (ICMP)", "type_tcp": "Port TCP", "type_http": "HTTP", "type_https": "HTTPS", "tools": "Outils réseau", "ping_tool": "Test Ping", "tcp_tool": "Vérification port TCP", "http_tool": "Vérification HTTP", "dns_tool": "Résolution DNS", "monitor_start": "Démarrer la surveillance", "monitor_stop": "Arrêter la surveillance", "monitor_running": "Surveillance en cours", "monitor_stopped": "Surveillance arrêtée", "no_targets": "Aucune cible de surveillance configurée", "no_history": "Aucun historique de vérification disponible", "error_code": "Erreur", "status_code": "Code de statut HTTP", "search_targets": "Rechercher des cibles...", "name": "Name", "tab_targets": "Targets", "tab_tools": "Tools", "avg_latency": "Avg Latency", "type": "Type", "latency": "Latency", "check_history": "Historique des vérifications", "name_host_required": "Le nom et l’hôte sont requis", "uptime": "Uptime", "response_time": "Temps de réponse", "avg_response": "Réponse moyenne", "charts": "Graphiques", "realtime": "Temps réel", "response_time_ms": "Temps de réponse (ms)", "uptime_percent": "Disponibilité %", "last_24h": "Dernières 24 heures", "last_7d": "7 derniers jours", "last_30d": "30 derniers jours" }, "dataguard": { "title": "Tableau de bord", "policies": "Politiques DLP", "add_policy": "Ajouter une politique", "edit_policy": "Modifier la politique", "delete_policy": "Supprimer la politique", "delete_confirm": "Êtes-vous sûr de vouloir supprimer cette politique ?", "policy_name": "Nom", "policy_description": "Description", "policy_desc": "Description de la politique", "status": "Statut", "enabled": "Activé", "disabled": "Désactivé", "rules": "Règles d'alerte", "add_rule": "Ajouter une règle", "rule_type": "Type de règle", "rule_type_usb": "Périphérique USB", "rule_type_file": "Opération sur fichier", "action": "Action", "action_allow": "Autoriser", "action_block": "Bloquer", "action_log": "Journaliser uniquement", "filter": "Filtre", "vid": "ID fournisseur (VID)", "pid": "ID produit (PID)", "serial": "Numéro de série", "device_class": "Classe d'appareil", "drive_type": "Type de lecteur", "file_extensions": "Extensions de fichier", "events": "Événements DLP", "event_source": "Source", "event_source_usb": "USB", "event_source_file": "Fichier", "event_type": "Type d'événement", "event_details": "Détails", "no_policies": "Aucune politique DLP configurée", "no_events": "Aucun événement DLP enregistré", "stats": "Statistiques", "total_events": "Total des événements", "blocked_events": "Bloqués", "logged_events": "Journalisés", "usb_events": "Événements USB", "file_events": "Événements fichier", "device_id": "ID de l'appareil", "policy_matched": "Politique correspondante", "timestamp": "Horodatage", "drive_removable": "Amovible", "drive_fixed": "Fixe", "drive_network": "Réseau", "drive_cdrom": "CD-ROM", "drive_unknown": "Inconnu", "total_policies": "Nombre total de politiques", "active_policies": "Politiques actives", "violations": "Violations", "blocked": "Blocked", "tab_policies": "Politiques", "tab_events": "Events", "search_policies": "Rechercher des politiques...", "create_policy": "Créer une politique", "policy_type": "Type de politique", "scope": "Scope", "events_count": "Events", "search_events": "Rechercher des événements...", "event_time": "Event Time", "device": "Appareil", "policy": "Politique", "detail": "Détails du ticket", "scope_help": "ID d’appareils séparés par des virgules, ou laissez vide pour tous", "scope_all": "Tous les appareils", "active": "Actif", "type_file_type": "Type de fichier", "type_usb": "USB", "type_clipboard": "Presse-papiers", "type_screen_share": "Partage d’écran", "type_file_transfer": "Transfert de fichiers" }, "reports": { "title": "Tableau de bord", "generate": "Générer la configuration", "generate_csv": "Exporter CSV", "report_type": "Type de rapport", "type_devices": "Résumé des appareils", "type_activity": "Résumé d'activité", "type_security": "Rapport de sécurité", "type_tickets": "Rapport de tickets", "type_network": "Rapport réseau", "type_inventory": "Rapport d'inventaire", "type_alerts": "Rapport d'alertes", "saved": "Enregistré", "save_report": "Sauvegarder le rapport", "delete_report": "Supprimer le rapport", "delete_confirm": "Êtes-vous sûr de vouloir supprimer ce rapport enregistré ?", "no_saved": "Aucun rapport enregistré", "report_title": "Titre", "created_by": "Créé par", "created_at": "Créé", "filters": "Filtres", "date_from": "De", "date_to": "À", "device_filter": "ID de l'appareil", "generated_at": "Généré le", "section": "Section de données", "total_devices": "Total des appareils", "online": "En ligne", "offline": "Hors ligne", "banned": "Bannis", "platform_distribution": "Distribution par plateforme", "top_applications": "Applications principales", "total_active": "Total actif", "total_idle": "Total inactif", "dlp_stats": "Statistiques DLP", "banned_devices": "Appareils bannis", "audit_logs": "Journaux d'audit", "ticket_stats": "Statistiques des tickets", "category_distribution": "Distribution par catégorie", "priority_distribution": "Distribution par priorité", "targets_status": "Statut des cibles", "os_distribution": "Distribution des OS", "avg_ram": "RAM moyenne", "alert_rules": "Règles d'alerte", "recent_alerts": "Alertes récentes", "tab_generate": "Générer un rapport", "tab_saved": "Rapports enregistrés", "type_devices_desc": "Vue d'ensemble de tous les appareils, plateformes et statuts", "type_activity_desc": "Résumé de l'utilisation des applications et du temps d'inactivité", "type_security_desc": "Actions de bannissement, événements DLP et journaux d'audit", "type_tickets_desc": "Statistiques des tickets et performance SLA", "type_network_desc": "Cibles de surveillance réseau et données de disponibilité", "type_inventory_desc": "Résumé de l'inventaire matériel et logiciel", "type_alerts_desc": "Règles d'alerte et historique des alertes déclenchées", "report_name": "Nom du rapport", "format": "Format", "save": "Enregistrer", "preview": "Aperçu", "download": "Télécharger la clé", "delete_saved": "Supprimer le rapport", "raw_json": "Raw JSON" }, "tenants": { "title": "Tableau de bord", "list": "Locataires", "add_tenant": "Ajouter un locataire", "edit_tenant": "Modifier le locataire", "delete_tenant": "Supprimer le locataire", "delete_confirm": "Êtes-vous sûr de vouloir supprimer ce locataire ? Toutes les affectations d'appareils et d'utilisateurs seront supprimées.", "name": "Name", "slug": "Slug", "contact_name": "Nom du contact", "contact_email": "E-mail du contact", "max_devices": "Max appareils", "max_devices_hint": "0 = illimité", "notes": "Notes", "active": "Actif", "inactive": "Inactif", "devices": "Appareils", "users": "Utilisateurs", "assign_device": "Assigner un appareil", "assign_devices": "Assigner des appareils", "remove_device": "Retirer l'appareil", "assign_user": "Assigner un utilisateur", "remove_user": "Retirer l'utilisateur", "no_tenants": "Aucun locataire configuré", "no_devices": "Aucun appareil avec des données d'inventaire trouvé", "no_users": "Aucun utilisateur assigné à ce locataire", "stats": "Statistiques", "total_devices": "Total des appareils", "online_devices": "Appareils en ligne", "total_users": "Total des utilisateurs", "created_at": "Créé", "updated_at": "Mis à jour", "slug_exists": "Le slug du locataire existe déjà", "total_tenants": "Total des locataires", "active_tenants": "Locataires actifs", "search": "Search devices...", "create_tenant": "Créer un locataire", "detail": "Détails du ticket", "contact": "Contact", "enabled": "Activé", "disabled": "Désactivé", "max": "max", "info": "Information", "status": "Statut" }, "registrations": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "search_placeholder": "Rechercher des appareils...", "no_registrations": "Aucune demande d'inscription", "col_device_id": "ID de l'appareil", "col_hostname": "Nom d'hôte", "col_platform": "Plateforme", "col_ip": "Adresse IP", "col_version": "Version", "col_status": "Statut", "col_requested": "Demandé", "col_actions": "Actions", "status_pending": "En attente", "status_approved": "Approuvé", "status_rejected": "Rejeté", "approve_btn": "Approuver", "approve_confirm": "Êtes-vous sûr de vouloir approuver cet appareil ? Il recevra les identifiants du serveur et pourra se connecter automatiquement.", "approved_success": "Inscription de l'appareil approuvée avec succès", "reject_btn": "Rejeter", "reject_title": "Rejeter l'inscription", "reject_confirm": "Êtes-vous sûr de vouloir rejeter cette demande d'inscription ?", "reject_reason": "Raison (optionnel)", "reject_reason_placeholder": "Entrez la raison du rejet...", "rejected_success": "Inscription de l'appareil rejetée", "delete_confirm": "Êtes-vous sûr de vouloir supprimer cet enregistrement d'inscription ?", "deleted_success": "Enregistrement d'inscription supprimé", "enrollment_title": "Inscription des appareils", "enrollment_subtitle": "Demandes d’inscription en attente depuis les clients de bureau BetterDesk", "enrollment_empty": "Aucune demande d’inscription en attente", "enrollment_approve": "Approve", "enrollment_reject": "Reject", "enrollment_display_name": "Nom affiché", "enrollment_display_name_placeholder": "Saisissez un nom pour cet appareil...", "enrollment_sync_mode": "Mode de synchronisation", "enrollment_sync_silent": "Silencieux — télémétrie minimale", "enrollment_sync_standard": "Standard — synchronisation équilibrée", "enrollment_sync_turbo": "Turbo — synchronisation agressive", "enrollment_approved_success": "Inscription de l’appareil approuvée", "enrollment_rejected_success": "Inscription de l’appareil rejetée", "approve_title": "Approuver l'appareil", "banner_locked_mode": "L'inscription est verrouillée — seuls les appareils liés à un jeton peuvent s'inscrire. Le mode géré est requis pour l'approbation des clients inconnus par l'opérateur.", "banner_open_mode": "L'inscription est ouverte — les nouveaux clients RustDesk s'inscrivent sans approbation de l'opérateur. Définissez le mode géré dans les paramètres pour utiliser cette file d'attente.", "enrollment_settings_link": "Paramètres d'inscription", "field_folder": "Dossier", "field_folder_none": "Aucun dossier", "field_groups": "Groupes d'appareils", "field_name": "Nom de l'appareil", "field_name_placeholder": "Entrez un nom pour cet appareil...", "field_sync_mode": "Mode de synchronisation", "field_tag_add_btn": "Ajouter", "field_tag_add_placeholder": "Ajouter un nouveau tag...", "field_tags": "Tags", "field_tags_existing": "Tags existants", "field_tags_placeholder": "Tags séparés par des virgules (p. ex. bureau, ordinateur portable)...", "reject_ban_hint": "L'appareil sera bloqué et ne pourra plus envoyer de nouvelles demandes d'inscription.", "reject_ban_option": "Bannir cet appareil", "sync_silent": "Silencieux — télémétrie minimale", "sync_standard": "Standard — synchronisation équilibrée", "sync_turbo": "Turbo — synchronisation agressive" }, "backup": { "title": "Tableau de bord", "desc": "Téléchargez une sauvegarde complète de la configuration de votre console, utilisateurs, groupes et paramètres. Les données peer du serveur Go sont incluses lorsque le backend BetterDesk est actif.", "restore_title": "Restaurer", "restore_desc": "Téléchargez un fichier de sauvegarde précédemment téléchargé pour restaurer la configuration de la console. Sélectionnez ci-dessous les sections à restaurer.", "stat_users": "Utilisateurs", "stat_settings": "Paramètres", "stat_folders": "Dossiers", "stat_groups": "Groupes", "stat_strategies": "Stratégies", "stat_backend": "Backend", "download": "Télécharger la clé", "creating": "Création de la sauvegarde...", "download_success": "Fichier de clé téléchargé", "upload": "Télécharger vers", "restore_confirm": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde ? Les sections sélectionnées seront écrasées.", "restore_success": "Sauvegarde restaurée avec succès. Certaines modifications peuvent nécessiter un rechargement de la page.", "restored": "Restauré", "skipped": "Ignoré", "backup_date": "Date de sauvegarde", "opt_settings": "Paramètres de la console", "opt_branding": "Image de marque / Thème", "opt_folders": "Dossiers d'appareils", "opt_groups": "Groupes d'utilisateurs & d'appareils", "opt_addressbooks": "Carnets d'adresses", "opt_users": "Comptes utilisateurs", "opt_users_warning": "Destructif : remplace TOUS les comptes utilisateurs par les données de sauvegarde. Vous pourriez être déconnecté.", "no_file": "Aucun fichier de sauvegarde sélectionné", "invalid_json": "Format JSON invalide", "invalid_format": "Fichier de sauvegarde invalide : pas une sauvegarde BetterDesk", "opt_database": "Base de données (toutes les tables)", "opt_database_hint": "Réimporte toutes les données de la console. Appliqué en direct, aucun redémarrage nécessaire.", "opt_env": "Fichier d'environnement (.env)", "opt_env_warning": "Écrase SESSION_SECRET, la clé API, le DSN de la base de données, les ports et les paramètres TLS. Nécessite un redémarrage du service.", "opt_godb": "Base de données du serveur Go", "opt_godb_warning": "Écrase la base de données SQLite du serveur Go (backend SQLite uniquement). Nécessite un redémarrage du service.", "opt_secrets": "Clés et secrets du serveur", "opt_secrets_warning": "Écrase l'identité du serveur Ed25519, la clé API et le secret de session. Nécessite un redémarrage du service.", "opt_uploads": "Fichiers de marque", "opt_uploads_hint": "Logos et images téléchargées.", "restart_required": "Certains composants restaurés (clés / .env / base de données Go) nécessitent un redémarrage du service pour prendre effet.", "restore_warning": "La restauration des secrets, du fichier d'environnement ou de la base de données du serveur Go écrase l'identité du serveur et nécessite un redémarrage du service par la suite.", "security_warning": "Cette sauvegarde contient des secrets (clés serveur, fichier d'environnement, hachages de mots de passe et secrets 2FA). Conservez-la en sécurité et ne la partagez jamais.", "stat_database": "Moteur de base de données", "stat_env": "Fichier d'environnement", "stat_keys": "Clés serveur incluses", "stat_uploads": "Fichiers de marque" }, "cdap": { "device_detail": "Détail de l'appareil", "loading": "Chargement...", "loading_widgets": "Chargement des widgets de l’appareil...", "load_error": "Impossible de charger les données de l’appareil", "connected": "Connecté", "disconnected": "Déconnecté", "device_offline_msg": "L’appareil est actuellement hors ligne. Les valeurs des widgets peuvent être obsolètes.", "no_widgets": "Cet appareil ne signale aucun widget.", "no_widgets_desc": "Cet appareil n’a pas enregistré de manifeste CDAP avec des définitions de widgets.", "command_log": "Journal des commandes", "clear_log": "Effacer le journal", "confirm_command": "Exécuter cette commande ?", "select_option": "Sélectionner", "cdap_status": "Statut CDAP", "cdap_enabled": "CDAP activé", "cdap_disabled": "CDAP désactivé", "cdap_devices": "Appareils CDAP", "cdap_connections": "Connexions actives", "send_command": "Envoyer la commande", "command_sent": "Commande envoyée", "command_failed": "Échec de l'envoi de la commande", "devices_title": "Appareils CDAP", "devices_subtitle": "Appareils connectés via le protocole Custom Device Application Protocol", "stat_connected": "Connecté", "stat_port": "Port", "search_devices": "Rechercher des appareils...", "no_devices": "Aucun appareil avec des données d'inventaire trouvé", "no_devices_desc": "Aucun appareil CDAP n’est actuellement connecté. Les appareils apparaîtront ici après leur connexion à la passerelle.", "gateway_disabled": "Passerelle CDAP désactivée", "gateway_disabled_desc": "Activez la passerelle CDAP en définissant CDAP_ENABLED=true dans la configuration du serveur.", "gateway_active": "Active", "toggle_enable": "Activer CDAP", "toggle_disable": "Désactiver CDAP", "enabled_restart": "CDAP activé. Un redémarrage du serveur est requis pour appliquer les changements.", "disabled_restart": "CDAP désactivé. Un redémarrage du serveur est requis pour appliquer les changements.", "widgets": "Widgets CDAP", "type_all": "Tous", "type_iot": "IoT", "type_scada": "SCADA", "type_os_agent": "Agent OS", "type_network": "Rapport réseau", "type_camera": "Caméra", "type_custom": "Personnalisé", "active_alerts": "Alertes actives", "alert_fired": "Alerte déclenchée", "alert_cleared": "Alerte effacée", "no_alerts": "Aucune alerte déclenchée", "connect_terminal": "Connecter le terminal", "table_search": "Rechercher...", "just_now": "à l'instant", "terminal_connecting": "Connexion à l’appareil...", "terminal_disconnected": "Déconnecté", "terminal_error": "Échec de la connexion au terminal", "linked_devices": "Appareils liés", "link_device": "Lier un appareil", "unlink_device": "Délier", "no_linked_devices": "Aucun appareil lié", "unlink_confirm": "Voulez-vous vraiment dissocier cet appareil ?", "link_prompt": "Saisissez l’ID pair à lier à cet appareil :", "connect_desktop": "Connecter via le client de bureau", "connect_video": "Connecter le flux", "connect_files": "Parcourir les fichiers", "connect_audio": "Connecter l'audio", "upload_file": "Upload", "desktop_connecting": "Connexion...", "video_connecting": "Connexion...", "files_connecting": "Connexion...", "audio_connecting": "Connexion audio...", "audio_streaming": "Audio en streaming", "clipboard_in": "Presse-papiers appareil → navigateur", "clipboard_out": "Presse-papiers navigateur → appareil", "monitor_select": "Sélectionner le moniteur", "keyframe_request": "Demander une image clé", "quality_auto": "Qualité automatique" }, "desktop": { "switch_mode": "Mode bureau", "console_mode": "Mode console", "loading": "Chargement...", "minimize": "Minimize", "maximize": "Maximize", "restore": "Restore", "close": "Fermer", "widgets_mode": "Mode widgets", "windows_mode": "Windows", "wallpaper": "Fond d'écran", "add_widget": "Ajouter un widget", "remove_widget": "Supprimer le widget", "pop_out_widget": "Pop Out", "pop_in_widget": "Pop In", "configure": "Configurer", "search_widgets": "Rechercher des widgets...", "cat_monitoring": "Monitoring", "cat_devices": "Appareils", "cat_tools": "Tools", "cat_general": "General", "notes_placeholder": "Ajoutez des notes sur cet appareil...", "search_placeholder": "Rechercher des appareils...", "search_pages": "Pages", "search_devices": "Search devices...", "search_no_results": "No results", "exit_desktop": "Quitter le bureau", "refresh": "Actualiser", "fullscreen": "Plein écran", "help": "Help", "widget_clock": "Clock", "widget_device_status": "État des appareils", "widget_server_health": "Infos serveur", "widget_system_stats": "Jauges des appareils", "widget_device_list": "Liste des appareils", "widget_quick_actions": "Actions rapides", "widget_recent_activity": "Activité récente", "widget_notes": "Notes", "widget_network_monitor": "Surveillance réseau", "widget_tickets_summary": "Tickets", "widget_iframe": "Web Embed", "widget_cdap_devices": "Appareils CDAP", "widget_uptime": "Uptime", "widget_port_status": "Port Status", "widget_device_grid": "Grille d’appareils", "widget_multi_gauge": "Jauges serveur", "widget_weekly_chart": "Activité hebdomadaire", "widget_quick_controls": "Contrôles rapides", "widget_bandwidth": "Bandwidth", "widget_connection_stats": "Statistiques de connexion", "widget_weather": "Weather", "widget_world_clock": "World Clock", "widget_bookmarks": "Bookmarks", "widget_user_sessions": "Sessions utilisateur", "widget_alert_feed": "Alert Feed", "label_online": "Online", "label_offline": "Offline", "label_total": "Total", "label_blocked": "Blocked", "label_banned": "Banned", "label_active": "Active", "label_service": "Service", "label_port": "Port", "label_uptime_prefix": "Uptime:", "label_uptime": "Uptime", "label_no_devices": "Aucun appareil", "label_no_activity": "No activity", "label_no_targets": "No targets", "label_unavailable": "Unavailable", "label_open": "Ouvrir", "label_in_progress": "In Progress", "label_resolved": "Resolved", "label_set_url": "Définir l’URL dans la configuration", "label_server_uptime": "Temps de fonctionnement du serveur", "label_merged_info": "Fusionné dans le widget Infos serveur", "label_with_notes": "Avec notes", "label_metric": "Metric", "label_count": "Count", "label_total_devices": "Nombre total d’appareils", "label_throughput": "Throughput", "label_active_relays": "Relais actifs", "label_total_relayed": "Total relayé", "label_total_bytes": "Total Bytes", "label_filter_devices": "Filtrer les appareils...", "label_all": "All", "label_ban": "Ban", "label_unban": "Unban", "label_connect": "Connect", "label_no_cdap_devices": "Aucun appareil CDAP", "action_add_widget": "Ajouter un widget", "label_merged_server_info": "Fusionné dans le widget Infos serveur", "wp_images": "Images", "wp_colors": "Couleurs unies", "wp_custom_color": "Couleur personnalisée", "wp_fit_style": "Style", "wp_fill": "Remplir", "wp_fit": "Ajuster", "wp_stretch": "Étirer", "wp_center": "Centrer", "wp_unavailable": "Les images de fond d’écran ne sont pas installées sur ce serveur.", "wp_download_hint": "Placez des images PNG dans le répertoire public/wallpapers/ pour activer le choix du fond d’écran.", "widget_calendar": "Calendar", "widget_process_monitor": "Surveillance des processus", "widget_disk_usage": "Disk Usage", "widget_log_viewer": "Log Viewer", "widget_speed_test": "Speed Test", "widget_database_stats": "Statistiques de base de données", "widget_docker_containers": "Conteneurs Docker", "widget_shell_command": "Commande shell", "widget_device_map": "Carte des appareils", "widget_remote_connect": "Connexion distante", "label_no_online": "Aucun appareil en ligne", "label_no_events": "Aucun événement aujourd’hui", "label_event_title": "Titre de l’événement :", "label_no_data": "Aucune donnée disponible", "label_download_speed": "Vitesse de téléchargement", "label_latency": "Latency", "label_server": "Serveur", "label_run_test": "Run Test", "label_testing": "Test en cours...", "label_table": "Table", "label_rows": "Rows", "label_last_backup": "Last Backup", "label_no_containers": "Aucun conteneur", "label_docker_unavailable": "Docker non disponible", "label_no_command": "Aucune commande configurée", "label_no_output": "Aucune sortie pour le moment", "label_run": "Run", "label_presets": "Presets", "label_save_preset": "Enregistrer le préréglage", "label_load_preset": "Load Preset", "label_preset_name": "Nom du préréglage :", "label_preset_monitoring": "Monitoring", "label_preset_helpdesk": "Helpdesk", "label_preset_minimal": "Minimal", "label_preset_developer": "Developer", "label_snap_layout": "Snap Layout", "label_auto_arrange": "Disposition automatique", "label_zone_layout": "Zone Layout", "label_2col_equal": "2 colonnes (égales)", "label_2col_wide": "2 colonnes (60/40)", "label_3col": "3 Columns", "label_2x2_grid": "2×2 Grid", "label_1_2": "1 + 2", "label_1_3": "1 + 3", "widget_group": "Groupe de widgets", "ungroup_widgets": "Dégrouper les widgets", "group_widgets": "Grouper les widgets sélectionnés", "snap_layouts": "Dispositions d’ancrage", "snap_left": "Snap Left", "snap_right": "Snap Right", "snap_top_left": "Ancrer en haut à gauche", "snap_top_right": "Ancrer en haut à droite", "snap_bottom_left": "Ancrer en bas à gauche", "snap_bottom_right": "Ancrer en bas à droite", "aero_shake": "Secouer pour réduire les autres fenêtres", "zone_resize": "Faites glisser la bordure pour redimensionner les zones", "zone_borders": "Bordures de zones déplaçables", "app_drawer": "Applications", "search_apps": "Rechercher des applications...", "edit_shortcuts": "Modifier les raccourcis", "widgets": "widgets", "theme": "Theme" }, "desktop_login": { "click_to_sign_in": "Cliquez n’importe où ou appuyez sur une touche pour vous connecter", "username_placeholder": "Entrez le nom d'utilisateur", "password_placeholder": "Entrez le mot de passe", "sign_in": "Sign in", "verify": "Verify", "totp_title": "Authentification à deux facteurs", "totp_subtitle": "Entrez le code à 6 chiffres de votre application d'authentification", "back_to_login": "Retour à la connexion", "fill_all_fields": "Veuillez remplir tous les champs", "invalid_credentials": "Nom d'utilisateur ou mot de passe invalide.", "invalid_code": "Code de vérification invalide", "enter_6_digits": "Saisissez les 6 chiffres", "network_error": "Erreur réseau — vérifiez votre connexion", "session_expired": "Session expirée. Veuillez vous reconnecter." }, "tokens": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "enrollment_mode": "Mode d’inscription", "mode_open": "Ouvert", "mode_open_desc": "Tout appareil peut s’inscrire sans jeton", "mode_managed": "Managed", "mode_managed_desc": "Devices need a valid token to register", "mode_locked": "Locked", "mode_locked_desc": "No new device registrations allowed", "total": "Total", "active": "Actif", "used": "Utilisé", "revoked": "Jeton révoqué", "search_placeholder": "Rechercher des appareils...", "status_pending": "En attente", "status_active": "Actif", "status_used": "Used", "status_revoked": "Révoqué", "status_expired": "Expiré", "bulk_generate": "Génération en lot", "create": "Créer", "edit": "Modifier", "token": "Token", "name": "Name", "status": "Statut", "uses": "Uses", "bound_peer": "Bound Peer", "expires": "Date d'expiration", "created": "Créé", "actions": "Actions", "name_placeholder": "Entrez le nom du dossier", "max_uses": "Max Uses", "max_uses_hint": "0 = illimité", "expires_in": "Expires In", "no_expiration": "Aucune expiration", "expires_1h": "1 hour", "expires_24h": "24 hours", "expires_7d": "7 days", "expires_30d": "30 jours", "note": "Note", "note_placeholder": "Notes about this device", "count": "Count", "count_range": "Nombre de jetons à générer (1-100)", "name_prefix": "Name Prefix", "generate": "Générer la configuration", "token_created": "Jeton créé avec succès", "tokens_generated": "Jetons générés", "copy_warning": "Copiez le jeton maintenant. Il ne sera plus affiché.", "copy_token": "Copy Token", "copied": "Copié dans le presse-papiers", "revoke": "Révoquer", "revoke_confirm": "Êtes-vous sûr de vouloir révoquer ce jeton ? Cela invalidera immédiatement toutes les requêtes API qui l'utilisent.", "revoked_success": "Jeton révoqué avec succès", "no_tokens": "Aucun jeton API créé", "expired": "Expired", "never": "Jamais", "save": "Enregistrer", "cancel": "Annuler", "unlimited": "Unlimited" }, "tutorial": { "next": "Suivant", "prev": "Précédent", "skip": "Passer le tutoriel", "finish": "Terminer", "close": "Fermer", "step_of": "{current} sur {total}", "console_sidebar_title": "Barre latérale de navigation", "console_sidebar_text": "Accédez à tous les modules depuis ici. Cliquez sur une icône pour accéder à la section correspondante. La barre latérale s’adapte à la taille de votre écran.", "console_expand_title": "Développer la barre latérale", "console_expand_text": "Cliquez ici pour développer la barre latérale et voir les libellés complets de tous les éléments de navigation. Cliquez à nouveau pour la réduire.", "console_search_title": "Recherche rapide", "console_search_text": "Recherchez rapidement des appareils, paramètres ou actions. Appuyez sur Ctrl+K pour utiliser le raccourci clavier.", "console_dashboard_title": "Tableau de bord", "console_dashboard_text": "Votre centre principal affiche l’état du serveur, les appareils en ligne et les actions rapides. Surveillez les métriques importantes en un coup d’œil.", "console_devices_title": "Gestion des appareils", "console_devices_text": "Affichez, recherchez et gérez tous les appareils connectés. Filtrez par état, attribuez des étiquettes et configurez chaque appareil.", "console_settings_title": "Paramètres", "console_settings_text": "Configurez le comportement du serveur, les options de sécurité, la marque et la gestion des utilisateurs. Adaptez BetterDesk à vos besoins.", "console_desktop_title": "Mode bureau", "console_desktop_text": "Passez en mode bureau pour un espace de travail fenêtré avec widgets. Idéal pour le multitâche et les tableaux de surveillance.", "console_complete_title": "Vous êtes prêt !", "console_complete_text": "Explorez les catégories de la barre latérale pour découvrir toutes les fonctionnalités. Cliquez sur l’icône Aide à tout moment pour relancer ce guide.", "desktop_topbar_title": "Top Bar", "desktop_topbar_text": "La barre supérieure affiche l’horloge, les contrôles rapides et l’accès au tiroir d’applications. Cliquez sur l’icône de grille pour parcourir toutes les applications.", "desktop_drawer_title": "App Drawer", "desktop_drawer_text": "Ouvrez le tiroir d’applications pour rechercher et lancer n’importe quelle fonction de la console dans une fenêtre flottante. Les applications sont organisées par catégorie.", "desktop_widgets_title": "Tableau de bord des widgets", "desktop_widgets_text": "Votre espace de travail personnalisable. Les widgets affichent des informations en direct et offrent un accès rapide aux fonctions. Faites-les glisser pour les réorganiser.", "desktop_add_widget_title": "Ajouter des widgets", "desktop_add_widget_text": "Cliquez ici pour parcourir les widgets disponibles. Choisissez parmi les vues de surveillance, listes d’appareils, notes et plus encore.", "desktop_taskbar_title": "Taskbar", "desktop_taskbar_text": "Open apps appear here. Click to focus or minimize windows. The clock shows current time and wallpaper button changes the background.", "desktop_snap_title": "Dispositions d’ancrage", "desktop_snap_text": "Faites glisser les fenêtres vers les bords de l’écran pour les ancrer, ou survolez le bouton d’agrandissement pour afficher les préréglages. Essayez Aero Shake !", "desktop_windows_title": "App Windows", "desktop_windows_text": "Les applications s’ouvrent dans des fenêtres déplaçables et redimensionnables. Réduisez, agrandissez ou fermez-les depuis la barre de titre. Les fenêtres se placent au-dessus des widgets.", "desktop_search_title": "Recherche rapide", "desktop_search_text": "Recherchez dans les appareils, pages et paramètres. Appuyez sur Ctrl+K n’importe où pour ouvrir instantanément la recherche.", "desktop_complete_title": "Mode bureau prêt !", "desktop_complete_text": "Essayez d’ouvrir des applications depuis le tiroir et d’organiser les fenêtres côte à côte. Utilisez les préréglages de widgets pour créer rapidement des tableaux de bord.", "devices_folders_title": "Dossiers d’appareils", "devices_folders_text": "Organisez les appareils en dossiers. Cliquez sur un dossier pour filtrer la liste. Faites un clic droit pour renommer ou supprimer.", "devices_search_title": "Recherche et filtre", "devices_search_text": "Recherchez par ID, nom d’hôte ou plateforme. Utilisez les pastilles d’état pour afficher uniquement les appareils en ligne, hors ligne ou tous les appareils.", "devices_table_title": "Liste des appareils", "devices_table_text": "Cliquez sur une ligne d’appareil pour voir les détails. Utilisez le menu kebab à droite pour les actions rapides comme connecter, modifier les étiquettes ou supprimer.", "devices_complete_title": "Gestion des appareils prête !", "devices_complete_text": "Faites glisser les appareils entre dossiers pour les organiser. Double-cliquez sur un appareil pour ouvrir son panneau de détails.", "settings_tabs_title": "Catégories de paramètres", "settings_tabs_text": "Naviguez entre Général, Sécurité, Apparence et les autres sections de configuration.", "settings_content_title": "Paramétrage", "settings_content_text": "Chaque section contient des paramètres précis pour le serveur et la console. Les changements sont enregistrés lorsque vous cliquez sur Enregistrer.", "settings_complete_title": "Vue d’ensemble des paramètres", "settings_complete_text": "Consultez les paramètres de sécurité pour la 2FA, les clés API et la gestion des utilisateurs. Ouvrez Apparence pour personnaliser l’interface de la console.", "help": "Help", "tour_console": "Visite de la console", "tour_desktop": "Visite du mode bureau", "tour_devices": "Visite des appareils", "tour_remote": "Visite de la session distante", "tour_organization": "Configuration de l’organisation", "tour_cdap": "Présentation de CDAP", "tour_chat": "Bases du chat", "tour_settings": "Visite des paramètres", "reset_all": "Réinitialiser tous les tutoriels", "remote_toolbar_title": "Barre d’outils distante", "remote_toolbar_text": "Accédez aux contrôles d’affichage, à la synchronisation du presse-papiers, aux touches spéciales et aux paramètres de qualité depuis la barre d’outils. Activez le plein écran avec F11.", "remote_canvas_title": "Affichage distant", "remote_canvas_text": "Ceci est l’écran distant. Cliquez dedans pour commencer à contrôler l’appareil distant. Les entrées souris et clavier sont transférées automatiquement.", "remote_clipboard_title": "Synchronisation du presse-papiers", "remote_clipboard_text": "Copiez et collez du texte entre votre ordinateur et l’appareil distant. Utilisez Ctrl+C / Ctrl+V normalement lorsque l’affichage distant a le focus.", "remote_complete_title": "Session distante prête !", "remote_complete_text": "Utilisez les boutons de la barre d’outils pour les touches spéciales (Ctrl+Alt+Suppr, Impr. écran) et le changement d’écran. Appuyez sur Échap ou cliquez sur Déconnecter pour terminer la session.", "org_overview_title": "Organisations", "org_overview_text": "Les organisations permettent de regrouper utilisateurs, appareils et politiques. Chaque organisation possède ses propres administrateurs, opérateurs et paramètres.", "org_create_title": "Créer une organisation", "org_create_text": "Cliquez ici pour créer une nouvelle organisation. Indiquez un nom, un identifiant court et une description facultative. Vous deviendrez propriétaire de la nouvelle organisation.", "org_members_title": "Gérer les membres", "org_members_text": "Invitez des utilisateurs par e-mail, attribuez des rôles (admin, opérateur, utilisateur) et gérez l’accès. Les membres peuvent voir les appareils attribués à leur organisation.", "org_devices_title": "Attribuer des appareils", "org_devices_text": "Ajoutez des appareils à l’organisation. Les appareils attribués ici hériteront des politiques de l’organisation et seront visibles par ses membres.", "org_policies_title": "Politiques d’organisation", "org_policies_text": "Définissez les politiques de sécurité de l’organisation, comme les exigences de mot de passe, les délais de session, l’obligation de 2FA et les règles d’inscription des appareils.", "org_complete_title": "Configuration de l’organisation terminée !", "org_complete_text": "Invitez votre équipe et attribuez des appareils pour commencer à utiliser la gestion limitée à l’organisation. Les politiques s’appliquent automatiquement à tous les membres.", "cdap_devices_title": "Appareils CDAP", "cdap_devices_text": "Affichez tous les appareils CDAP connectés — capteurs IoT, automates, ponts et agents personnalisés. Les indicateurs verts signalent des connexions en direct.", "cdap_widgets_title": "Tableau de bord des widgets", "cdap_widgets_text": "Les widgets affichent des données en temps réel depuis les appareils. Jauges, interrupteurs, LEDs, graphiques — chaque type de widget visualise un type de données différent.", "cdap_commands_title": "Envoyer des commandes", "cdap_commands_text": "Interagissez avec les appareils en envoyant des commandes. Certaines commandes nécessitent une confirmation. Le journal des commandes conserve l'historique de toutes les commandes envoyées.", "cdap_terminal_title": "Terminal de l'appareil", "cdap_terminal_text": "Ouvrez une session de terminal vers les agents CDAP pour des diagnostics avancés ou une configuration manuelle. Saisissez les commandes directement.", "cdap_complete_title": "Présentation CDAP terminée !", "cdap_complete_text": "Explorez les widgets des appareils, envoyez des commandes et utilisez le terminal ou le navigateur de fichiers pour une gestion plus approfondie. Les agents CDAP rapportent automatiquement les métriques.", "chat_contacts_title": "Contacts et groupes", "chat_contacts_text": "Consultez vos contacts et groupes de chat. Cliquez sur un contact pour ouvrir une conversation. Les points verts indiquent les utilisateurs en ligne.", "chat_send_title": "Envoyer des messages", "chat_send_text": "Saisissez votre message et appuyez sur Entrée pour l’envoyer. Les messages sont chiffrés de bout en bout lorsque les deux parties prennent en charge l’E2E.", "chat_file_title": "Partager des fichiers", "chat_file_text": "Cliquez sur l’icône de pièce jointe pour partager des fichiers. Les fichiers sont chiffrés et peuvent atteindre 50 Mo.", "chat_complete_title": "Chat prêt !", "chat_complete_text": "Discutez en temps réel avec les opérateurs et les utilisateurs finaux. Créez des groupes pour la communication d’équipe. Tous les messages prennent en charge les accusés de lecture.", "disable_tutorials": "Désactiver les tutoriels", "enable_tutorials": "Activer les tutoriels" }, "help_request": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "new_request": "Nouvelle demande d’aide", "device": "Appareil", "hostname": "Nom d'hôte", "message": "Message", "status": "Statut", "pending": "Pending", "accepted": "Accepted", "resolved": "Resolved", "accept": "Accept", "resolve": "Resolve", "no_requests": "Aucune demande d’aide", "notification": "Demande d’aide reçue de", "stats_total": "Total", "filter_all": "Tous" }, "organizations": { "title": "Tableau de bord", "create": "Créer", "edit": "Modifier", "detail": "Détails du ticket", "name": "Name", "slug": "Slug", "logo_url": "Logo URL", "users": "Utilisateurs", "devices": "Appareils", "invitations": "Invitations", "settings": "Paramètres", "add_user": "Ajouter un utilisateur", "assign_device": "Assigner un appareil", "create_invitation": "Créer une invitation", "delete_confirm": "Supprimer cette organisation ? Tous les utilisateurs, appareils et paramètres associés seront supprimés.", "no_orgs": "Aucune organisation pour le moment", "no_orgs_hint": "Créez votre première organisation pour commencer à gérer les appareils et les utilisateurs.", "connection_policy": "Politique de connexion", "allow_file_transfer": "Autoriser le transfert de fichiers", "allow_clipboard": "Autoriser le presse-papiers", "max_session_duration": "Durée maximale de session (min)", "role_owner": "Propriétaire (admin org.)", "role_admin": "Administrateur", "role_operator": "Opérateur", "role_user": "Membre", "username": "Nom d’utilisateur", "password": "Mot de passe", "display_name": "Nom affiché", "email": "Email", "role": "Role", "last_login": "Last Login", "actions": "Actions", "device_id": "ID de l’appareil", "department": "Department", "building": "Building", "location": "Location", "assigned_user": "Utilisateur attribué", "token": "Token", "expires": "Expires", "used": "Used", "no_users": "Aucun utilisateur dans cette organisation.", "no_devices": "Aucun appareil attribué à cette organisation.", "no_invitations": "Aucune invitation.", "user_added": "User added", "user_removed": "Utilisateur supprimé", "user_updated": "Rôle utilisateur mis à jour", "device_assigned": "Appareil attribué", "device_unassigned": "Appareil retiré", "invitation_created": "Invitation créée", "settings_saved": "Paramètres enregistrés", "org_deleted": "Organisation supprimée", "confirm_remove_user": "Retirer cet utilisateur de l’organisation ?", "confirm_unassign_device": "Retirer cet appareil de l’organisation ?", "confirm_delete_org": "Supprimer cette organisation et toutes les données associées ?", "edit_role": "Modifier le rôle", "raw_settings": "Paramètres bruts", "key": "Key", "value": "Value", "save": "Enregistrer les paramètres", "policy_unattended": "Sans surveillance (instantané)", "policy_attended": "Assisté (avec confirmation)", "policy_ask": "Always ask", "expires_hours": "Expiration (heures)", "loading_failed": "Impossible de charger les données de l’organisation", "name_slug_required": "Le nom et le slug sont requis", "org_created": "Organisation créée", "org_updated": "Organisation mise à jour", "create_new_user": "Créer un nouveau", "add_existing_user": "Ajouter un existant", "none_available": "none", "select_user": "Sélectionner un utilisateur", "org_role": "Rôle dans l’organisation", "link_user_hint": "L’utilisateur sélectionné sera lié à cette organisation avec les identifiants de son compte serveur.", "no_available_users": "Tous les utilisateurs serveur sont déjà liés à cette organisation.", "user_linked": "Utilisateur lié à l’organisation", "device_groups_tab": "Groupes d'appareils", "device_groups_intro": "Les groupes d'appareils liés à cette organisation définissent quelles machines les membres peuvent atteindre dans le client RustDesk. Configurez l'appartenance et l'accès dans Appareils.", "manage_in_devices": "Ouvrir Appareils → Groupes", "no_org_device_groups": "Aucun groupe d'appareils lié à cette organisation.", "create_org_device_group": "Créer un groupe d'appareils", "org_device_group_created": "Groupe d'appareils créé", "org_user_groups_title": "Groupes d'utilisateurs", "org_user_groups_intro": "Les groupes d'utilisateurs liés à l'organisation peuvent accéder aux groupes d'appareils ci-dessus (Appareils → Groupes → Groupes autorisés).", "no_org_user_groups": "Aucun groupe d'utilisateurs lié à cette organisation.", "group_name": "Nom", "group_type": "Type", "group_members": "Appareils", "group_type_manual": "Manuel", "group_type_tag": "Tag", "group_allowed_user_groups": "Groupes d'utilisateurs autorisés", "group_devices_suffix": "appareils", "group_name_required": "Le nom du groupe est requis", "org_team_id": "ID d'équipe de l'organisation", "link_team_id_hint": "Le groupe sera lié automatiquement à cette organisation (team ID = ID organisation)." }, "chat": { "e2e_enabled": "Chiffré de bout en bout", "e2e_establishing": "Établissement du canal sécurisé...", "e2e_established": "Canal sécurisé établi", "e2e_unsupported": "Chiffrement E2E non pris en charge par ce navigateur", "typing_indicator": "écrit...", "read_receipt": "Lu", "delivered": "Remis", "file_share": "Fichier", "file_too_large": "Fichier trop volumineux (max 50 Mo)", "file_encrypted": "Transfert de fichier chiffré", "presence_online": "En ligne", "presence_away": "Absent", "presence_busy": "Occupé", "presence_offline": "Hors ligne", "key_rotation": "Clés de sécurité renouvelées", "new_message": "Nouveau message", "title": "Tableau de bord", "contacts": "Contacts", "groups": "Groupes", "no_contacts": "Aucun contact pour le moment", "no_groups": "Aucun groupe pour le moment", "no_messages": "Aucun message pour le moment", "no_results": "Aucun résultat trouvé", "select_conversation": "Sélectionnez une conversation pour commencer à discuter", "select_conversation_hint": "Sélectionnez une conversation pour afficher les messages", "type_message": "Saisissez un message...", "send": "Envoyer", "attach_file": "Joindre un fichier", "emoji": "Emoji", "info": "Information", "search_messages": "Rechercher des messages", "create_group": "Créer un groupe", "group_name": "Nom du groupe", "group_name_placeholder": "Entrez le nom du groupe", "group_members": "Membres", "cancel": "Annuler", "create": "Créer", "members": "membres", "today": "Aujourd'hui", "yesterday": "Hier", "react": "Réagir", "my_presence": "Mon statut", "search_placeholder": "Rechercher des appareils..." }, "toast": { "device_connected": "Appareil connecté", "device_disconnected": "Appareil déconnecté", "session_started": "Session distante démarrée", "session_ended": "Session distante terminée", "file_upload_complete": "Téléversement du fichier terminé", "settings_saved": "Paramètres enregistrés", "error_generic": "Une erreur s’est produite", "connection_lost": "Connexion perdue", "reconnecting": "Reconnexion..." }, "theme": { "dark": "Dark", "light": "Light", "auto": "System", "title": "Tableau de bord" }, "days": { "mon": "Mon", "tue": "Tue", "wed": "Wed", "thu": "Thu", "fri": "Fri", "sat": "Sat", "sun": "Sun" }, "toolkit": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "cat_network": "Network", "cat_crypto": "Crypto", "cat_encoding": "Encoding", "cat_system": "System", "host": "Hôte", "port": "Port", "domain": "Domain", "run": "Run", "generate": "Générer la configuration", "encode": "Encode", "decode": "Decode", "send": "Envoyer", "refresh": "Actualiser", "algorithm": "Algorithm", "input_text": "Input Text", "enter_text": "Saisissez du texte...", "length": "Length", "options": "Options", "source": "Source", "lines": "Lines", "log_console": "Console", "log_go": "Serveur Go", "mac_address": "Adresse MAC", "broadcast": "Broadcast", "ping_title": "Ping", "ping_desc": "Vérifier la joignabilité et la latence de l’hôte", "tcp_title": "Vérification de port TCP", "tcp_desc": "Tester la connectivité d’un port TCP", "ssl_title": "Inspecteur SSL", "ssl_desc": "Inspecter les détails du certificat SSL/TLS", "http_title": "Contrôle d’état HTTP", "http_desc": "Vérifier l’état d’un point de terminaison HTTP", "dns_title": "DNS Lookup", "dns_desc": "Résoudre un nom d’hôte en adresse IP", "whois_title": "DNS Records", "whois_desc": "Interroger les enregistrements A, AAAA, MX, TXT, NS", "speed_title": "Speed Test", "speed_desc": "Mesurer la bande passante de téléchargement", "run_speed_test": "Lancer le test de débit", "wol_title": "Wake-on-LAN", "wol_desc": "Envoyer un paquet magique pour réveiller un appareil", "wol_sent": "Paquet magique envoyé", "hash_title": "Générateur de hachage", "hash_desc": "Générer des hachages cryptographiques", "password_title": "Générateur de mots de passe", "password_desc": "Mettre à jour le mot de passe de votre compte", "jwt_title": "JWT Decoder", "jwt_desc": "Décoder et inspecter les JSON Web Tokens", "jwt_token": "JWT Token", "base64_title": "Base64", "base64_desc": "Encoder ou décoder des données Base64", "url_title": "URL Encoder", "url_desc": "Encoder ou décoder des composants d’URL", "processes_title": "Liste des processus", "processes_desc": "Afficher les processus système en cours", "disk_title": "Disk Usage", "disk_desc": "Afficher l’utilisation des partitions disque", "db_title": "Statistiques de base de données", "db_desc": "Afficher les statistiques des tables de la base de données", "docker_title": "Conteneurs Docker", "docker_desc": "Afficher les conteneurs Docker en cours d’exécution", "logs_title": "Log Viewer", "logs_desc": "Afficher les sorties de journal récentes", "ip_address": "Adresse IP", "latency": "Latency", "ttl": "TTL", "status": "Statut", "resolved": "Resolved", "subject": "Subject", "issuer": "Issuer", "valid_from": "Valide à partir du", "valid_to": "Valide jusqu’au", "days_left": "Days Left", "days": "days", "protocol": "Protocol", "cipher": "Cipher", "alt_names": "SANs", "chain": "Chain", "record_type": "Type", "record_value": "Value", "hash_value": "Hash", "entropy": "Entropy", "very_strong": "Very Strong", "strong": "Strong", "weak": "Weak", "expiry": "Expiry", "expired": "Expired", "valid": "Valid", "process_name": "Name", "db_type": "Type", "db_size": "Size", "table_name": "Table", "row_count": "Rows", "no_data": "No hardware data available", "no_docker": "Aucun conteneur Docker trouvé ou Docker indisponible", "no_logs": "Aucune ligne de journal disponible" }, "policies": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "select_org": "Organisation", "select_org_placeholder": "Sélectionner une organisation...", "select_org_first": "Sélectionnez une organisation pour voir le journal d'audit des politiques.", "configured": "Configuré", "connection_title": "Politique de connexion", "connection_desc": "Contrôler l'établissement des sessions distantes", "connection_mode": "Mode de connexion", "mode_attended": "Assisté (nécessite l'approbation)", "mode_unattended": "Non assisté (toujours autoriser)", "mode_ask": "Toujours demander", "max_session": "Durée max. de session (minutes)", "idle_lock": "Verrouillage en cas d'inactivité (minutes)", "wallpaper_policy": "Fond d'écran pendant la session", "wallpaper_show": "Afficher", "wallpaper_hide_session": "Masquer pendant la session", "wallpaper_hide_always": "Toujours masquer", "features_title": "Politique de fonctionnalités", "features_desc": "Activer ou désactiver des fonctionnalités spécifiques", "allow_file_transfer": "Autoriser le transfert de fichiers", "allow_clipboard": "Allow Clipboard", "allow_audio": "Autoriser le streaming audio", "allow_recording": "Autoriser l'enregistrement de session", "security_title": "Politique de sécurité", "security_desc": "Appliquer les exigences de sécurité pour les appareils", "require_2fa": "Exiger 2FA pour l'accès non assisté", "password_min_length": "Longueur minimale du mot de passe", "password_require_special": "Exiger des caractères spéciaux", "password_max_age": "Âge max. du mot de passe (jours, 0=jamais)", "allowed_operators": "Allowed Operators", "network_title": "Politique réseau", "network_desc": "Contrôler les serveurs relais et les connexions directes", "block_direct_p2p": "Bloquer P2P direct (forcer relais)", "allowed_relays": "Serveurs relais autorisés (un par ligne)", "ip_allowlist": "Liste blanche IP (CIDR, un par ligne)", "update_title": "Politique de mise à jour", "update_desc": "Contrôler les mises à jour automatiques et les canaux", "auto_update": "Activer la mise à jour automatique", "update_channel": "Canal de mise à jour", "audit_title": "Modifications de politiques", "audit_desc": "Activité récente de la console", "no_audit": "Aucune modification de politique enregistrée.", "save_success": "Politique enregistrée avec succès", "save_failed": "Impossible d’enregistrer la politique", "load_failed": "Impossible de charger les politiques", "block_direct_p2p_hint": "S'applique aux appareils de cette organisation. La valeur par défaut globale est sous Paramètres → Stratégie de connexion." }, "attestation": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "verified": "Vérifié", "pending": "Pending", "failed": "Échoué", "device_list": "Registres d'attestation", "device_list_desc": "Empreintes matérielles et statut de vérification d'identité", "col_device": "ID d'appareil", "col_hostname": "Nom d'hôte", "col_fingerprint": "Empreinte", "col_status": "Statut", "col_last_check": "Dernière vérification", "col_actions": "Actions", "no_records": "Aucun enregistrement d'attestation trouvé.", "verify_success": "Appareil marqué comme vérifié", "verify_failed": "Impossible de vérifier l’appareil", "revoke_success": "Attestation de l’appareil révoquée", "revoke_failed": "Impossible de révoquer l’attestation" }, "fleet": { "title": "Tableau de bord", "tab_resources": "Ressources", "tab_tasks": "Tâches", "tab_builder": "Constructeur", "tab_compliance": "Conformité", "res_title": "Cartographie des ressources", "res_all_types": "Tous les types", "res_type_printer": "Imprimante", "res_type_network_drive": "Lecteur réseau", "res_type_dns": "Serveur DNS", "res_type_proxy": "Proxy", "res_type_vpn": "VPN", "res_add": "Ajouter une ressource", "res_name": "Nom de la ressource", "res_type": "Type", "res_address": "Adresse / Chemin", "res_target": "Cible", "res_scope": "Portée", "res_scope_org": "Organisation", "res_scope_group": "Groupe", "res_scope_device": "Appareil", "res_scope_value": "Valeur de portée", "res_status": "Statut", "res_active": "Actif", "res_inactive": "Inactif", "res_no_data": "Aucune ressource trouvée. Cliquez sur 'Ajouter'.", "res_confirm_delete": "Êtes-vous sûr de vouloir supprimer cette ressource ?", "task_title": "Planificateur de tâches", "task_all_status": "Tous les statuts", "task_status_pending": "En attente", "task_status_running": "En cours", "task_status_success": "Succès", "task_status_failed": "Échoué", "task_search": "Rechercher des tâches…", "task_create": "Créer une tâche", "task_name": "Nom de la tâche", "task_type": "Type", "task_type_script": "Script", "task_type_install": "Installation", "task_type_update": "Mise à jour", "task_type_restart": "Redémarrage", "task_type_deploy": "Déploiement", "task_type_scan": "Scan", "task_targets": "Cibles", "task_targets_help": "IDs d'appareils ou noms de groupes, séparés par des virgules", "task_schedule": "Planification", "task_schedule_once": "Une fois", "task_schedule_cron": "Cron", "task_schedule_interval": "Intervalle", "task_schedule_value": "Valeur de planification", "task_script": "Script / Commande", "task_retries": "Réessais", "task_timeout": "Délai (s)", "task_last_run": "Dernière exécution", "task_no_data": "Aucune tâche trouvée. Créez une nouvelle tâche.", "task_confirm_delete": "Êtes-vous sûr de vouloir supprimer cette tâche ?", "task_output": "Sortie de la tâche", "task_retry": "Réessayer", "builder_title": "Constructeur de workflow visuel", "builder_select_workflow": "Sélectionner un workflow…", "builder_new": "Nouveau", "builder_save": "Enregistrer", "builder_export": "Exporter", "builder_execute": "Exécuter", "builder_dry_run": "Simulation", "builder_triggers": "Déclencheurs", "builder_conditions": "Conditions", "builder_actions": "Actions", "builder_results": "Résultats", "builder_transforms": "Transformations", "builder_properties": "Propriétés", "builder_no_selection": "Sélectionnez un nœud pour modifier ses propriétés.", "builder_node_trigger_manual": "Déclencheur manuel", "builder_node_trigger_schedule": "Schedule", "builder_node_trigger_event": "Déclencheur d’événement", "builder_node_cond_os": "OS Check", "builder_node_cond_threshold": "Threshold", "builder_node_cond_time_window": "Time Window", "builder_node_action_script": "Run Script", "builder_node_action_install": "Install SW", "builder_node_action_restart": "Redémarrer svc", "builder_node_action_file_deploy": "Déployer un fichier", "builder_node_action_message": "Envoyer un message", "builder_node_result_log": "Log Output", "builder_node_result_alert": "Envoyer une alerte", "builder_node_result_chain": "Chaîner le flux", "builder_node_transform_parse": "Parse JSON", "builder_node_transform_filter": "Filter", "builder_node_transform_delay": "Delay", "workflow_name": "Nom du workflow :", "comp_title": "Conformité logicielle", "comp_compliant": "Conforme", "comp_warning": "Avertissement", "comp_critical": "Critique", "comp_score": "Score moyen", "comp_device": "Appareil", "comp_hostname": "Nom d'hôte", "comp_os": "SE", "comp_score_col": "Score", "comp_issues": "Problèmes", "comp_last_scan": "Dernier scan", "comp_scan": "Scanner", "comp_scan_all": "Tout scanner", "comp_remediate": "Remédier", "comp_remediate_confirm": "Exécuter l'auto-remédiation sur cet appareil ?", "comp_no_data": "Pas de données de conformité. Lancez un scan.", "save": "Enregistrer", "cancel": "Annuler", "close": "Fermer", "edit": "Modifier", "delete": "Supprimer", "actions": "Actions", "all_orgs": "Toutes les organisations", "select_org_placeholder": "Sélectionner une organisation...", "all_types": "All Types", "type_printer": "Printer", "type_network_drive": "Lecteur réseau", "type_dns": "Serveur DNS", "type_vpn": "VPN", "type_proxy": "Proxy", "add_resource": "Ajouter une ressource", "edit_resource": "Modifier la ressource", "col_name": "Name", "col_type": "Type", "col_target": "Target", "col_scope": "Scope", "col_status": "Statut", "col_actions": "Actions", "no_resources": "No resources found.", "active": "Actif", "inactive": "Inactif", "address": "Adresse / chemin", "scope_org": "Organisation", "scope_group": "Groupe", "scope_device": "Appareil cible", "scope_value": "Scope Value", "scope_value_hint": "Organization, group, or device ID", "confirm_delete": "Voulez-vous vraiment supprimer cet élément ?", "all_statuses": "Tous les états", "status_pending": "En attente", "status_running": "En cours", "status_success": "Success", "status_failed": "Échoué", "search_tasks": "Rechercher des tâches…", "create_task": "Créer une tâche", "edit_task": "Modifier la tâche", "col_task_name": "Task Name", "col_task_type": "Type", "col_schedule": "Schedule", "col_last_run": "Last Run", "no_tasks": "No tasks found.", "task_type_file_deploy": "Déploiement de fichier", "task_type_registry": "Registry", "target_devices": "Appareils cibles", "target_hint": "Device IDs or group names", "schedule_immediate": "Immediate", "schedule_once": "Once", "schedule_cron": "Cron", "cron_placeholder": "*/5 * * * *", "script_content": "Script / commande", "retry_count": "Retries", "timeout_sec": "Timeout (s)", "loading": "Chargement...", "no_output": "Aucune sortie disponible", "error_loading": "Erreur lors du chargement des données", "select_workflow": "Sélectionner un flux…", "new_workflow": "New", "export": "Exporter", "execute": "Execute", "dry_run": "Dry Run", "node_triggers": "Triggers", "node_manual": "Déclencheur manuel", "node_schedule": "Schedule", "node_event": "Déclencheur d’événement", "node_conditions": "Conditions", "node_os_check": "OS Check", "node_threshold": "Threshold", "node_time_window": "Time Window", "node_actions": "Actions", "node_run_script": "Run Script", "node_install": "Install SW", "node_restart": "Redémarrer svc", "node_file_deploy": "Déployer un fichier", "node_send_message": "Envoyer un message", "node_results": "Results", "node_log_output": "Log Output", "node_send_alert": "Envoyer une alerte", "node_chain": "Chaîner le flux", "node_transforms": "Transforms", "node_parse_json": "Parse JSON", "node_filter": "Filter", "node_delay": "Delay", "node_properties": "Properties", "all_organizations": "Toutes les organisations", "scan_all": "Scan All", "compliant": "Compliant", "non_compliant": "Warning", "critical_issues": "Critical", "avg_score": "Avg. Score", "col_device": "ID d'appareil", "col_hostname": "Nom d'hôte", "col_os": "OS", "col_score": "Score", "col_issues": "Issues", "col_last_scan": "Last Scan", "no_compliance_data": "No compliance data available.", "confirm_remediate": "Exécuter l’auto-remédiation sur cet appareil ?" }, "scaling": { "title": "Tableau de bord", "tab_overview": "Vue d'ensemble", "tab_relays": "Nœuds relais", "tab_rules": "Règles d'attribution", "tab_capacity": "Planification de capacité", "arch_title": "Architecture réseau", "arch_loading": "Chargement du diagramme d'architecture...", "stat_relay_nodes": "Nœuds relais", "stat_total_devices": "Total appareils", "stat_active_sessions": "Sessions actives", "stat_bandwidth": "Bande passante totale", "relay_health": "État des relais", "no_relays": "Aucun nœud relais configuré. Ajoutez votre premier nœud pour distribuer la charge.", "relay_search": "Rechercher des relais...", "relay_add": "Ajouter un nœud relais", "relay_edit": "Modifier le nœud relais", "col_name": "Name", "col_address": "Adresse", "col_location": "Emplacement", "col_devices": "Appareils", "col_sessions": "Sessions actives", "col_bandwidth": "Bande passante", "col_status": "Statut", "col_actions": "Actions", "col_priority": "Priorité", "col_rule_name": "Nom de la règle", "col_match": "Correspondance", "col_target_relay": "Relais cible", "col_fallback": "Repli", "status_online": "En ligne", "status_degraded": "Dégradé", "status_offline": "Hors ligne", "status_enabled": "Activé", "status_disabled": "Désactivé", "confirm_delete_relay": "Êtes-vous sûr de vouloir supprimer ce nœud relais ?", "confirm_delete_rule": "Êtes-vous sûr de vouloir supprimer cette règle d'attribution ?", "rules_hint": "Les règles d'attribution déterminent quel serveur relais gère des groupes d'appareils spécifiques. Les règles sont évaluées par priorité (la plus basse d'abord).", "no_rules": "Aucune règle d'attribution.", "rule_add": "Ajouter une règle", "rule_edit": "Modifier la règle", "rule_match_type": "Type de correspondance", "match_subnet": "Sous-réseau", "match_group": "Groupe d'appareils", "match_tag": "Tag d'appareil", "match_location": "Emplacement", "rule_match_value": "Valeur de correspondance", "fallback_master": "Serveur maître", "fallback_nearest": "Relais le plus proche", "relay_max_sessions": "Max. sessions", "relay_max_bandwidth": "Max. bande passante (Mbps)", "cap_tiers": "Niveaux de capacité", "cap_loading": "Chargement des données de capacité...", "cap_recommendations": "Recommandations", "cap_no_recs": "Aucune recommandation disponible.", "cap_planning": "Planification d'infrastructure", "cap_config": "Configuration de capacité", "cap_max_devices": "Max. appareils", "cap_max_sessions": "Max. sessions", "cap_current": "Actuel", "cap_utilization": "Utilisation", "cap_tier_devices": "Capacité appareils", "cap_tier_sessions": "Capacité sessions", "cap_tier_bandwidth": "Capacité bande passante", "cap_single_sqlite": "Serveur unique (SQLite)", "cap_single_pg": "Serveur unique (PostgreSQL)", "cap_master_3": "Maître + 3 relais", "cap_master_10": "Maître + 10 relais", "rec_no_relays": "Aucun nœud configuré. Envisagez d'ajouter des relais pour de meilleures performances et redondance.", "rec_devices_high": "L'utilisation des appareils est élevée. Envisagez d'ajouter plus de nœuds relais.", "rec_sessions_high": "La capacité de sessions approche sa limite. Envisagez une mise à niveau de l'infrastructure.", "rec_cpu_high": "Certains nœuds relais signalent une utilisation CPU élevée. Envisagez l'équilibrage de charge.", "rec_all_good": "Tous les systèmes fonctionnent dans les paramètres normaux. Aucune action requise.", "save": "Enregistrer", "cancel": "Annuler", "edit": "Modifier", "delete": "Supprimer", "close": "Fermer", "relays_info_banner": "Cette liste est informative. Les serveurs relais réellement utilisés par les clients sont configurés via la variable d’environnement RELAY_SERVERS sur le serveur BetterDesk.", "relay_name_address_required": "Le nom et l’adresse sont requis.", "relay_save_failed": "Impossible d’enregistrer le nœud relais.", "relay_delete_failed": "Impossible de supprimer le nœud relais.", "relay_saved": "Nœud relais enregistré.", "relay_deleted": "Nœud relais supprimé.", "rule_name_value_required": "Le nom de la règle et la valeur de correspondance sont requis.", "rule_save_failed": "Impossible d’enregistrer la règle.", "rule_delete_failed": "Impossible de supprimer la règle.", "rule_saved": "Règle enregistrée.", "rule_deleted": "Règle supprimée." }, "cross_platform": { "title": "Tableau de bord", "tab_matrix": "Matrice de compatibilité", "tab_distribution": "Distribution", "tab_protocols": "Protocoles", "tab_limitations": "Limitations", "matrix_hint": "Matrice de support des fonctionnalités pour toutes les plateformes prises en charge. Vert = support complet, Jaune = partiel, Gris = non disponible, Bleu = planifié.", "col_feature": "Fonctionnalité", "legend_full": "Support complet", "legend_partial": "Support partiel", "legend_none": "Non disponible", "legend_planned": "Planifié", "platform_breakdown": "Répartition par plateforme", "arch_breakdown": "Répartition par architecture", "version_breakdown": "Répartition par version", "summary": "Résumé", "total_devices": "Total des appareils", "unique_platforms": "Plateformes", "unique_archs": "Architectures", "unique_versions": "Versions client", "no_devices": "Aucun appareil avec des données d'inventaire trouvé", "protocols_hint": "La négociation des capacités du protocole garantit que chaque client reçoit uniquement les fonctionnalités prises en charge. Le serveur adapte son comportement en fonction des capacités signalées.", "capability_negotiation": "Négociation des capacités", "codec_support": "Support des codecs (appareils en ligne)", "feature_support": "Support des fonctionnalités (appareils en ligne)", "no_codec_data": "Aucune donnée de codec des appareils en ligne.", "no_feature_data": "Aucune donnée de fonctionnalités des appareils en ligne.", "protobuf_schema": "Schéma Protobuf ClientCapabilities", "diagram_client": "Client", "diagram_server": "Serveur BetterDesk", "diagram_peer": "Pair distant", "limitations_hint": "Chaque plateforme a des limitations spécifiques affectant les fonctionnalités disponibles. Vérifiez-les lors de la planification des déploiements.", "feat_desktop_client": "Client bureau", "feat_background_agent": "Agent en arrière-plan", "feat_remote_target": "Cible distante", "feat_screen_capture": "Capture d'écran", "feat_input_injection": "Injection d'entrée", "feat_file_transfer": "Transfert de fichiers", "feat_clipboard_sync": "Synchronisation du presse-papiers", "feat_audio_streaming": "Streaming audio", "feat_chat": "Chat", "feat_h264": "Codec H.264", "feat_vp9": "Codec VP9", "feat_av1": "Codec AV1", "feat_cdap_agent": "Agent CDAP", "platform_windows": "Windows", "platform_linux": "Linux", "platform_macos": "macOS", "platform_android": "Android", "platform_ios": "iOS", "platform_web": "Navigateur web", "platform_chromeos": "ChromeOS", "status_production": "Production", "status_testing": "Test", "status_planned": "Planifié", "status_limited": "Limité", "status_experimental": "Expérimental", "limit_win_uac": "Élévation UAC requise pour l'installation du service et l'injection d'entrée sur les bureaux sécurisés.", "limit_win_service": "Fonctionne en tant que service NSSM ; nécessite des droits d'administrateur pour l'installation.", "limit_win_firewall": "Les règles du pare-feu Windows doivent autoriser les ports 21115-21119 pour les connexions relais.", "limit_linux_wayland": "Les compositeurs Wayland restreignent la capture d'écran programmatique ; API portail PipeWire requise.", "limit_linux_pipewire": "La capture audio nécessite PipeWire ; repli PulseAudio disponible mais limité.", "limit_linux_arm": "Builds ARM64 disponibles ; certains codecs peuvent utiliser le décodage logiciel (plus lent).", "limit_mac_screen": "Autorisation d'enregistrement d'écran requise dans Réglages > Confidentialité et sécurité.", "limit_mac_signing": "L'agent doit être signé avec un Apple Developer ID pour la distribution.", "limit_mac_notarize": "Notarisation requise pour macOS Gatekeeper (distribution hors App Store).", "limit_android_projection": "L'API MediaProjection nécessite le consentement de l'utilisateur pour chaque session de capture.", "limit_android_accessibility": "L'injection d'entrée nécessite AccessibilityService ; restreint depuis Android 14+.", "limit_android_battery": "Service en arrière-plan limité par le mode Doze ; exemption d'optimisation de batterie possible.", "limit_ios_capture": "Apple interdit la capture d'écran en arrière-plan ; seul le mode visualisation est pris en charge.", "limit_ios_input": "Pas d'injection d'entrée autorisée ; uniquement vue distante et chat.", "limit_ios_appstore": "Distribution uniquement via l'App Store ; TestFlight pour les tests bêta.", "limit_web_https": "L'API WebCodecs et WebRTC nécessitent HTTPS ; HTTP utilise JMuxer en repli (codecs limités).", "limit_web_codec": "Support des codecs dépendant du navigateur ; H.264 largement supporté, VP9/AV1 variable.", "limit_web_performance": "Performance limitée par le sandbox du navigateur ; pas d'accélération matérielle directe.", "limit_chrome_crostini": "Support complet de l'agent uniquement dans le conteneur Linux Crostini.", "limit_chrome_pwa": "Le mode PWA fournit uniquement les capacités web ; pas de fonctions d'agent natives.", "limit_chrome_input": "Injection d'entrée en dehors du conteneur Crostini non prise en charge.", "feat_multi_monitor": "Multi-écran", "feat_session_recording": "Enregistrement de session", "feat_unattended_access": "Accès sans surveillance", "limit_linux_unprivileged": "Les services fonctionnent sous le compte non privilégié dédié « betterdesk » avec durcissement systemd (NoNewPrivileges, ProtectSystem=strict).", "limit_win_virtual_account": "Les services fonctionnent sous des comptes virtuels isolés au lieu de LocalSystem ; les chemins de journaux personnalisés peuvent nécessiter des ajustements ACL." }, "security_audit": { "title": "Tableau de bord", "tab_overview": "Vue d'ensemble", "tab_events": "Events", "tab_hardening": "Durcissement", "tab_vulnerabilities": "Vulnérabilités", "security_score": "Score de sécurité", "failed_logins": "Connexions échouées (24h)", "active_bans": "Bannissements actifs", "api_keys": "Clés API", "old_keys": "Anciennes clés (>90j)", "security_checks": "Vérifications de sécurité", "tls_status": "Statut TLS", "pass": "OK", "warning": "Avertissement", "fail": "Échec", "tls_signal": "Signal TLS", "tls_relay": "Relay TLS", "tls_api": "API TLS", "tls_wss": "WebSocket sécurisé", "enabled": "Activé", "disabled": "Désactivé", "all_events": "Tous les événements", "event_login_failed": "Connexion échouée", "event_login_success": "Connexion réussie", "event_peer_banned": "Appareil banni", "event_ip_banned": "IP bannie", "event_config_changed": "Configuration modifiée", "event_key_created": "Clé créée", "refresh": "Actualiser", "col_time": "Heure", "col_action": "Action", "col_actor": "Acteur", "col_target": "Target", "col_ip": "Adresse IP", "col_details": "Détails", "no_events": "Aucun événement DLP enregistré", "hardening_hint": "Priorités de durcissement sécuritaire pour votre déploiement BetterDesk. Triés par gravité.", "no_hardening": "Aucun élément de durcissement disponible.", "vuln_hint": "Résultats de l'analyse des vulnérabilités. Exécutez npm audit régulièrement.", "no_vulns": "Aucune vulnérabilité trouvée. Vos dépendances sont sécurisées." }, "languages": { "title": "Tableau de bord", "total_languages": "Nombre total de langues", "fully_translated": "Entièrement traduit", "needs_review": "À vérifier", "reference_keys": "Clés de référence", "no_languages": "Aucun fichier de langue trouvé.", "badge_reference": "Reference", "badge_review": "À vérifier", "badge_complete": "Complete", "coverage": "coverage", "keys": "Clés", "missing": "missing", "extra": "extra", "view_missing": "Voir les éléments manquants", "fix_missing": "Fix Missing", "missing_keys_for": "Clés manquantes pour", "missing_keys_count": "keys missing (English fallback values shown)", "and_more": "et encore {n}...", "all_keys_present": "Toutes les clés sont présentes !", "confirm_fix": "Add missing keys to {code} with English fallback values?", "fixed_title": "Keys Fixed", "fixed_msg": "Les clés manquantes dans {code} doivent être traduites manuellement.", "no_fix_needed": "Aucune clé manquante à compléter." }, "resource_control": { "title": "Tableau de bord", "tab_overview": "Vue d'ensemble", "tab_usb": "USB Control", "tab_optical": "Lecteurs optiques", "tab_monitors": "Monitors", "tab_disks": "Disk Access", "tab_quotas": "Quotas de ressources", "compliance_by_category": "Conformité par catégorie", "device_compliance": "Conformité des appareils", "search_devices": "Rechercher des appareils...", "col_device": "ID d'appareil", "col_platform": "Plateforme", "col_status": "Statut", "col_usb": "USB", "col_optical": "Optical", "col_monitors": "Monitors", "col_disks": "Disks", "col_quotas": "Quotas", "col_actions": "Actions", "stat_total_devices": "Total appareils", "stat_compliant": "Compliant", "stat_partial": "Partial", "stat_noncompliant": "Non-Compliant", "stat_compliance_rate": "Taux de conformité", "badge_na": "N/A", "badge_compliant": "OK", "badge_partial": "Partial", "badge_noncompliant": "Fail", "btn_configure": "Configurer", "no_devices": "Aucun appareil avec des données d'inventaire trouvé", "usb_title": "Contrôle des ports USB", "usb_hint": "Contrôlez l’accès aux périphériques de stockage USB pour l’appareil sélectionné ou pour la politique par défaut de l’organisation.", "usb_storage_policy": "Politique de stockage USB", "usb_whitelist": "Appareils en liste blanche (un par ligne)", "usb_whitelist_hint": "VID:PID (ex. 0781:5583)", "usb_audit_log": "Journaliser les connexions de périphériques USB", "optical_title": "Contrôle des lecteurs optiques", "optical_hint": "Contrôlez l’accès aux lecteurs CD/DVD/Blu-ray pour l’appareil sélectionné.", "optical_policy": "Politique des lecteurs optiques", "optical_audit_log": "Journaliser l’accès aux lecteurs optiques", "monitors_title": "Gestion des moniteurs", "monitors_hint": "Configurez les paramètres des moniteurs, y compris le nombre maximal, l’application de la résolution, la luminosité et les horaires d’alimentation.", "monitors_max_count": "Nombre maximal de moniteurs (0 = illimité)", "monitors_max_hint": "0 signifie aucune limite", "monitors_resolution": "Résolution max.", "monitors_brightness": "Limite de luminosité", "monitors_power_schedule": "Horaire d’alimentation", "monitors_power_hint": "ex. off:22:00-06:00", "disks_title": "Contrôle d’accès aux disques", "disks_hint": "Configurez les politiques d’accès aux disques, y compris le mode lecture seule, l’obligation de chiffrement et la visibilité des partitions.", "disks_readonly": "Forcer le mode lecture seule", "disks_encryption": "Exiger le chiffrement (BitLocker/LUKS)", "disks_smart": "Activer la surveillance S.M.A.R.T.", "disks_hidden": "Partitions masquées", "disks_hidden_hint": "Lettres de lecteur ou points de montage séparés par des virgules", "quotas_title": "Quotas de ressources", "quotas_hint": "Définissez des quotas CPU, RAM, bande passante et disque par utilisateur pour l’appareil sélectionné.", "quotas_cpu": "CPU Limit", "quotas_ram": "RAM Limit", "quotas_bandwidth": "Limite de bande passante (Mbps)", "quotas_bandwidth_hint": "0 = illimité", "quotas_disk_quota": "Quota disque (Go)", "quotas_disk_hint": "0 = illimité", "quotas_process_whitelist": "Liste blanche des processus (un par ligne)", "quotas_process_hint": "ex. chrome.exe, code.exe", "policy_allowed": "Allowed", "policy_blocked": "Blocked", "policy_whitelist": "Liste blanche uniquement", "policy_any": "Any" }, "sdk_studio": { "title": "Tableau de bord", "subtitle": "Vue d'ensemble de votre serveur RustDesk", "new_flow": "New Flow", "open_flow": "Open Flow", "save_flow": "Save Flow", "import_flow": "Import Flow", "run_flow": "Run", "debug": "Debug", "deploy": "Deploy", "undo": "Undo", "redo": "Redo", "untitled": "Untitled Flow", "code_mode": "Code Mode", "toggle_grid": "Toggle Grid", "zoom_in": "Zoom In", "zoom_out": "Zoom Out", "zoom_fit": "Fit to Screen", "palette": "Node Palette", "search_nodes": "Search nodes...", "cat_sources": "Sources", "cat_processing": "Processing", "cat_outputs": "Outputs", "empty_title": "Aucun appareil trouvé", "empty_desc": "Drag nodes from the palette to start building a flow", "browse_templates": "Browse Templates", "inspector": "Inspector", "select_node": "Select a node to inspect its properties", "console": "Console", "clear_console": "Clear", "console_ready": "Studio ready", "label": "Status", "configuration": "Configuration", "connections": "Connections", "inputs": "Inputs", "outputs": "Outputs", "delete_node": "Delete Node", "nodes": "Nodes", "wires": "Wires", "status_ready": "Ready", "status_deployed": "Deployed", "flow_name": "Flow Name", "flow_desc": "Description", "loading": "Chargement...", "no_flows": "No saved flows yet", "confirm_delete": "Are you sure you want to delete this item?", "templates": "Templates", "node_modbus_tcp": "Modbus TCP", "node_modbus_rtu": "Modbus RTU", "node_snmp_poll": "SNMP Poll", "node_rest_poll": "REST Poll", "node_mqtt_subscribe": "MQTT Subscribe", "node_webhook": "Webhook", "node_device_telemetry": "Device Telemetry", "node_database_query": "Database Query", "node_file_watch": "File Watch", "node_filter": "Filter", "node_transform": "Transform", "node_aggregate": "Aggregate", "node_delay": "Delay", "node_debounce": "Debounce", "node_switch": "Switch", "node_merge": "Merge", "node_script": "Script", "node_widget_update": "Widget Update", "node_alert": "Alert", "node_command": "Command", "node_log": "Log", "node_rest_call": "REST Call", "node_mqtt_publish": "MQTT Publish", "node_database_write": "Database Write", "node_email": "Email", "node_modbus_write": "Modbus Write" }, "updates": { "tab_title": "Updates", "title": "Tableau de bord", "desc": "Téléchargez une sauvegarde complète de la configuration de votre console, utilisateurs, groupes et paramètres. Les données peer du serveur Go sont incluses lorsque le backend BetterDesk est actif.", "current_version": "Version installée", "latest_version": "Latest version", "status": "Statut", "check_now": "Vérifier maintenant", "checking": "Vérification...", "up_to_date": "À jour", "update_available": "Mise à jour disponible", "changelog": "Release Notes", "no_changelog": "Aucune note de version disponible", "files_changed": "Fichiers modifiés", "files": "Fichiers", "changes_unavailable": "Impossible de charger la liste des changements. Vous pouvez quand même installer la mise à jour.", "create_backup": "Créer une sauvegarde avant la mise à jour", "install": "Install Update", "install_confirm": "Are you sure you want to install this update? The console will restart after the update.", "installing": "Installation de la mise à jour…", "creating_backup": "Création de la sauvegarde…", "downloading": "Téléchargement des fichiers…", "install_success": "Mise à jour installée avec succès. La console redémarre…", "install_failed": "Échec de l’installation de la mise à jour", "restarting": "Attente du redémarrage de la console…", "restart_complete": "Console redémarrée avec succès", "restart_timeout": "Console did not restart in time. Please check manually.", "no_version": "Aucune version de mise à jour sélectionnée. Recherchez d’abord les mises à jour.", "backups_title": "Sauvegardes de mise à jour", "backups_desc": "Sauvegardes préalables créées automatiquement avant chaque mise à jour", "no_backups": "Aucune sauvegarde de mise à jour trouvée", "restore": "Restore", "restore_confirm": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde ? Les sections sélectionnées seront écrasées.", "restore_success": "Sauvegarde restaurée avec succès. Certaines modifications peuvent nécessiter un rechargement de la page.", "baseline_set": "Référence définie", "commits_behind": "commits de retard", "total_files": "Nombre total de fichiers", "applied": "Applied", "failed": "Échec", "skipped": "Skipped", "removed": "Removed", "auto": "Auto", "manual": "Manual", "component_console": "Web Console", "component_server": "Serveur Go", "component_agent": "Agent", "component_scripts": "Scripts et Docker", "component_other": "Other", "server_rebuild_warning": "Go Server source changed — binary rebuild required. Use the ALL-IN-ONE script or compile manually.", "include_server": "Include Go Server (compile & deploy binary)", "checking_go": "Vérification de Go…", "go_not_found": "Go n’est pas installé", "go_check_failed": "Impossible de vérifier la disponibilité de Go", "server_building": "Compilation du serveur Go… Cela peut prendre quelques minutes.", "server_built": "Binaire du serveur compilé", "server_build_failed": "Échec de la compilation du serveur", "server_stale_title": "Binaire du serveur obsolète", "server_stale_desc": "Le code source du serveur Go a été mis à jour, mais le binaire en cours d’exécution n’a pas été reconstruit. Reconstruisez-le maintenant pour appliquer les mises à jour de sécurité et de bibliothèques.", "rebuild_server": "Reconstruire le binaire du serveur", "rebuilding_server": "Rebuilding…", "rebuild_server_success": "Binaire du serveur reconstruit et redémarré", "rebuild_server_failed": "Échec de la reconstruction du binaire du serveur", "server_deployed": "Binaire du serveur déployé", "server_deploy_failed": "Échec du déploiement du serveur", "server_build_note": "Server compilation may take 1-5 minutes. The page will remain unresponsive during compilation.", "server_source_downloading": "Téléchargement du code source du serveur…", "delete": "Supprimer", "delete_confirm": "Supprimer définitivement la sauvegarde {name} ? Cette action est irréversible.", "delete_success": "Sauvegarde supprimée", "delete_failed": "Impossible de supprimer la sauvegarde", "retention_label": "Conserver les N sauvegardes les plus récentes", "retention_hint": "Les anciennes sauvegardes sont supprimées automatiquement après chaque mise à jour. Utilisez 0 pour toutes les conserver.", "retention_saved": "Paramètre de rétention enregistré", "retention_invalid": "La rétention doit être un entier entre 0 et 1000", "retention_required_for_prune": "Définissez d’abord une valeur de rétention supérieure à 0", "prune_now": "Apply now", "prune_confirm": "Ne conserver que les {n} sauvegardes les plus récentes et supprimer le reste ?", "prune_done": "{n} sauvegarde(s) supprimée(s)", "total_size": "Total size", "backups_count": "backup(s)", "strategy_label": "Méthode de mise à jour", "strategy_download": "Télécharger le binaire précompilé", "strategy_compile": "Compiler depuis les sources", "both_available": "Télécharger et compiler", "download_available": "Téléchargement disponible", "no_method": "Aucune méthode de mise à jour", "no_release": "No release", "available": "Disponible", "server_downloading": "Téléchargement du binaire serveur…", "server_downloaded": "Binaire serveur téléchargé", "server_download_failed": "Échec du téléchargement du binaire serveur", "server_download_note": "Un binaire précompilé sera téléchargé depuis GitHub Releases. Cela prend généralement moins d’une minute.", "install_go_hint": "Installez Go depuis https://go.dev/dl/ pour activer la compilation, ou publiez une version avec des binaires précompilés", "strategy_install_go": "Installer Go automatiquement et compiler", "strategy_install_go_hint": "Downloads the official Go toolchain (~120 MB) into the console data directory, then compiles the server. Use this when Go is not installed on the host.", "auto_strategy": "Auto", "auto_strategy_hint": "The console will pick the best available method (download → compile → auto-install Go).", "auto_available": "Reconstruction automatique prête", "toolchain_ready": "Chaîne d’outils installée", "toolchain_will_install": "Go toolchain will be installed automatically", "toolchain_downloading": "Téléchargement de la chaîne d’outils Go…", "toolchain_failed": "Échec de l’installation de la chaîne d’outils Go", "modal_title": "Installation de la mise à jour", "modal_done_title": "Mise à jour terminée", "modal_close": "Fermer", "modal_reload_now": "Recharger la console", "phase_confirm": "Confirmation", "phase_backup": "Backup", "phase_console": "Fichiers de la console", "phase_server": "Serveur Go", "phase_restart": "Redémarrage", "phase_done": "Done", "preparing": "Preparing…", "backup_skipped": "Sauvegarde ignorée (choix utilisateur)", "server_skipped": "Serveur Go ignoré", "server_not_selected": "Go server not selected", "server_processing": "Traitement de la mise à jour du serveur Go…", "no_restart_needed": "Aucun redémarrage requis", "complete": "Mise à jour appliquée", "complete_summary": "La mise à jour a été appliquée avec succès.", "complete_with_errors": "La mise à jour est terminée, mais certaines étapes ont échoué. Voir les détails ci-dessous.", "modal_done_with_errors_title": "Mise à jour terminée avec erreurs", "console_will_restart": "Le processus de console va maintenant redémarrer…", "restart_complete_msg": "La console a terminé son redémarrage. Cliquez sur Recharger pour charger la nouvelle version. La page se rechargera automatiquement dans 8 secondes.", "refresh_recommended": "Les ressources statiques ont changé — rechargez la page pour voir la nouvelle interface.", "confirm_title": "Appliquer la mise à jour", "confirm_with_backup": "Une sauvegarde préalable sera créée automatiquement.", "confirm_no_backup": "Aucune sauvegarde ne sera créée (continuez à vos risques).", "channel_title": "Canal de mise à jour", "channel_desc": "Choisissez la source des mises à jour. En production, utilisez Stable.", "channel_stable": "Version stable (main)", "channel_development": "Développement (dev)", "channel_branch_label": "Branche GitHub", "channel_save": "Changer de canal", "channel_saved": "Canal changé. Cliquez sur Vérifier les mises à jour.", "channel_save_failed": "Échec de l’enregistrement du canal", "channel_switch_warning": "Changer de canal modifie la branche GitHub utilisée. Le SHA suivi est conservé — la prochaine vérification peut montrer un grand écart. Continuer ?", "channel_pick_label": "Basculer vers", "channel_apply_hint": "Après confirmation, le changement est enregistré. Puis cliquez sur Vérifier les mises à jour.", "channel_confirm_switch": "Passer la source de {from} à {to} ? Le commit installé reste jusqu’à Vérifier les mises à jour.", "docker_title": "Déploiement d'images Docker", "docker_desc": "Cette console s'exécute à partir d'une image conteneur préconstruite. Les mises à jour s'appliquent en tirant de nouvelles images depuis GHCR, pas via l'installation intégrée ni la recompilation Go.", "docker_install_note": "L'installation intégrée est désactivée dans Docker. Exécutez les commandes ci-dessus sur l'hôte, puis actualisez cette page.", "docker_update_available": "Nouvelles images conteneur disponibles", "docker_sha_unknown": "À jour (commit d'image inconnu)", "docker_images": "Images" }, "permissions": { "title": "Autorisations", "subtitle": "Gérer les autorisations basées sur les rôles et les remplacements personnalisés", "info_title": "Fonctionnement des autorisations", "info_desc": "Chaque rôle dispose d’autorisations par défaut. Vous pouvez ajouter ou retirer des autorisations individuelles par rôle avec les bascules ci-dessous. Les remplacements personnalisés sont mis en évidence et peuvent être rétablis aux valeurs par défaut à tout moment.", "select_role": "Sélectionner un rôle", "select_role_placeholder": "Choisissez un rôle...", "reset_overrides": "Réinitialiser tous les remplacements", "granted": "Granted", "overrides": "Overrides", "level": "Level", "super_admin_tag": "Full access", "server_level_tag": "Niveau serveur", "custom": "Custom", "default": "Default", "revert": "Revenir à la valeur par défaut", "saved": "Autorisation mise à jour", "reverted": "Rétabli à la valeur par défaut", "all_reverted": "Tous les remplacements ont été rétablis", "confirm_reset": "Réinitialiser tous les remplacements personnalisés de ce rôle aux valeurs par défaut ?", "empty_title": "Sélectionnez un rôle", "empty_desc": "Choisissez un rôle dans la liste ci-dessus pour afficher et gérer ses autorisations.", "locked_title": "Super Admin", "locked_desc": "Le Super Admin possède toutes les autorisations par défaut et ne peut pas être personnalisé.", "cat_device": "Appareils", "cat_user": "Users", "cat_server": "Serveur", "cat_org": "Organisations", "cat_audit": "Audit et surveillance", "cat_cdap": "CDAP", "cat_enrollment": "Enrollment", "cat_chat": "Chat", "cat_branding": "Branding", "perm_device_view": "Voir les appareils", "perm_device_connect": "Se connecter aux appareils", "perm_device_edit": "Modifier les appareils", "perm_device_delete": "Supprimer les appareils", "perm_device_ban": "Bannir / débannir les appareils", "perm_device_change_id": "Changer l’ID de l’appareil", "perm_user_view": "Voir les utilisateurs", "perm_user_create": "Créer des utilisateurs", "perm_user_edit": "Modifier les utilisateurs", "perm_user_delete": "Supprimer les utilisateurs", "perm_server_config": "Configuration du serveur", "perm_server_keys": "Gérer les clés API", "perm_org_create": "Créer des organisations", "perm_org_edit": "Modifier les organisations", "perm_org_delete": "Supprimer les organisations", "perm_org_manage_users": "Gérer les utilisateurs de l’organisation", "perm_org_manage_devices": "Gérer les appareils de l’organisation", "perm_audit_view": "Voir les journaux d’audit", "perm_metrics_view": "Voir les métriques", "perm_blocklist_edit": "Modifier la liste de blocage", "perm_cdap_view": "Voir les appareils CDAP", "perm_cdap_command": "Envoyer des commandes CDAP", "perm_cdap_terminal": "Accès au terminal CDAP", "perm_cdap_files": "Accès aux fichiers CDAP", "perm_enrollment_manage": "Gérer l’inscription", "perm_enrollment_approve": "Approuver l’inscription", "perm_chat_access": "Chat access", "perm_branding_edit": "Modifier la marque", "perm_server_attestation": "Attestation de performance du serveur" }, "notifications": { "title": "Centre de notifications", "empty": "Aucune nouvelle notification", "mark_all_read": "Tout marquer comme lu", "see_all": "Voir toutes les demandes d’aide", "help_request": "Demande d’aide", "just_now": "just now" }, "accessibility": { "title": "Accessibilité", "subtitle": "Adaptez la console à votre vision, au mouvement et à la lecture.", "close": "Fermer le menu accessibilité", "profiles": "Profils rapides", "profile_low_vision": "Low vision", "profile_low_vision_hint": "Texte plus grand, fort contraste et focus visible.", "profile_dyslexia": "Confort de lecture", "profile_dyslexia_hint": "Police lisible et espacement plus large.", "profile_motion_safe": "Motion safe", "profile_motion_safe_hint": "Réduit les transitions et met les animations en pause.", "profile_color_assist": "Aide aux couleurs", "profile_color_assist_hint": "Filtre de couleur, libellés et liens mis en évidence.", "reading": "Lecture", "font_size": "Taille du texte", "line_height": "Hauteur de ligne", "letter_spacing": "Espacement des lettres", "word_spacing": "Espacement des mots", "readable_font": "Police lisible", "readable_font_hint": "Utilise des formes de lettres larges et familières.", "dyslexia_spacing": "Espacement pour dyslexie", "dyslexia_spacing_hint": "Ajoute un espacement supplémentaire pour les textes longs.", "visual": "Visuel", "contrast": "Contraste", "contrast_normal": "Normal", "contrast_high_dark": "Contraste élevé sombre", "contrast_high_light": "Contraste élevé clair", "contrast_yellow_black": "Jaune sur noir", "color_filter": "Filtre de vision des couleurs", "filter_none": "None", "filter_protanopia": "Protanopia", "filter_deuteranopia": "Deuteranopia", "filter_tritanopia": "Tritanopia", "filter_achromatopsia": "Achromatopsia", "saturation": "Saturation des couleurs", "underline_links": "Souligner les liens", "underline_links_hint": "Rend les liens visibles sans dépendre de la couleur.", "highlight_links": "Mettre en évidence les actions", "highlight_links_hint": "Trace un contour autour des liens et boutons.", "highlight_headings": "Mettre en évidence les titres", "highlight_headings_hint": "Marque les titres de section avec une barre colorée.", "hide_media": "Dim media", "hide_media_hint": "Assombrit les images, vidéos et canevas.", "interaction": "Interaction", "strong_focus": "Focus renforcé", "strong_focus_hint": "Affiche un large contour de focus clavier.", "large_cursor": "Grand curseur", "large_cursor_hint": "Utilise un pointeur plus grand à fort contraste.", "reduce_motion": "Réduire les mouvements", "reduce_motion_hint": "Raccourcit les transitions et le défilement fluide.", "pause_animations": "Mettre les animations en pause", "pause_animations_hint": "Arrête les mouvements visuels en boucle.", "reading_guide": "Guide de lecture", "reading_guide_hint": "Suit le pointeur avec une ligne lumineuse.", "reading_mask": "Masque de lecture", "reading_mask_hint": "Assombrit le contenu au-dessus et au-dessous du pointeur.", "preview": "Aperçu", "preview_title": "Aperçu de l’espace opérateur", "preview_text": "Vérifiez si le texte, les liens, les contrôles et les libellés d’état sont confortables à lire avant de fermer ce menu.", "preview_link": "Lien vers les détails de l’appareil", "preview_status": "Online", "preview_button": "Action principale", "preview_secondary": "Secondary", "reset": "Réinitialiser", "done": "Terminé" }, "server_mgmt": { "title": "Gestion du serveur", "subtitle": "Panneau de type Cockpit pour l'hôte de la console BetterDesk (BÊTA).", "beta_tooltip": "Fonction bêta — en développement actif.", "notice_title": "Fonction bêta", "notice_body": "Ces outils s'exécutent sur l'hôte où tourne le processus de la console BetterDesk. Toutes les opérations sont auditées.", "tab_overview": "Aperçu", "tab_terminal": "Terminal", "tab_files": "Fichiers", "tab_services": "Services", "cpu": "CPU", "memory": "Mémoire", "load": "Charge moyenne", "disks": "Disques", "history": "Historique (60 derniers échantillons)", "host_info": "Infos hôte", "cores": "cœurs", "uptime": "Temps d'activité", "no_disks": "Aucune donnée disque disponible", "info_hostname": "Hostname", "info_platform": "Platform", "info_kernel": "Kernel", "info_node": "Node.js", "info_process_id": "Process ID", "info_pty_available": "PTY disponible", "term_connect": "Connecter", "term_disconnect": "Déconnecter", "term_clear": "Effacer", "term_status": "Status", "term_connecting": "Connexion…", "term_connected": "Connecté", "term_disconnected": "Déconnecté", "term_error": "Erreur de connexion", "term_warning": "Les commandes s’exécutent sous l’utilisateur propriétaire du processus de console. Ajoutez une règle sudoers pour permettre l’élévation.", "term_hint": "Astuce : tapez `sudo -i` pour obtenir les privilèges root (configuration sudoers requise).", "term_lib_failed": "Impossible de charger la bibliothèque de terminal", "files_up": "Niveau supérieur", "files_go": "Go", "files_mkdir": "New folder", "files_name": "Nom", "files_size": "Taille", "files_perms": "Mode", "files_mtime": "Modifié", "files_rename": "Renommer", "files_rename_prompt": "New name:", "files_empty": "Répertoire vide", "files_error": "Impossible de lister le répertoire", "read_failed": "Impossible de lire le fichier", "save_failed": "Impossible d’enregistrer le fichier", "rename_failed": "Échec du renommage", "delete_failed": "Échec de la suppression", "delete_confirm": "Supprimer cette entrée ?", "mkdir_prompt": "Nom du nouveau dossier :", "mkdir_failed": "Impossible de créer le dossier", "file_saved": "Fichier enregistré", "binary_warn": "Fichier binaire — aperçu uniquement", "encoding_utf8": "UTF-8 text", "truncated": "truncated", "full": "full", "svc_search_placeholder": "Rechercher des services…", "svc_name": "Service", "svc_state": "État", "svc_description": "Description", "svc_empty": "Aucun service trouvé", "svc_load_failed": "Impossible de charger les services", "svc_action_failed": "Échec de l’action", "svc_confirm": "Run", "svc_start": "Démarrer", "svc_stop": "Arrêter", "svc_restart": "Redémarrer", "svc_reload": "Recharger", "svc_enable": "Activer", "svc_disable": "Désactiver", "svc_status": "Status" }, "download": { "title": "Télécharger l’agent BetterDesk", "choose_platform": "Choisissez votre plateforme", "choose_platform_hint": "Sélectionnez l’installateur correspondant à votre système d’exploitation.", "download": "Télécharger", "building": "Construction…", "failed": "Échec de la construction", "need_help": "Besoin d’aide ?", "powered_by": "Propulsé par" }, "server_attestation": { "title": "Attestation du serveur", "subtitle": "Benchmark de performance qui détermine la capacité de connexions distantes simultanées à un seuil de 80% CPU, RAM et disque.", "warning_title": "Test de charge", "warning_body": "Le benchmark simule des connexions WebSocket parallèles aux serveurs de signal et de relais. Exécutez pendant les heures creuses — ce test charge la production.", "run_benchmark": "Lancer le benchmark", "abort": "Abandonner", "download_report": "Télécharger le rapport JSON", "last_test": "Dernier test", "no_test_yet": "Aucun benchmark n'a encore été exécuté", "max_connections": "Connexions maximales", "threshold_80": "Seuil à 80% — métriques finales", "disk": "Disque", "ramp_chart": "Graphique de montée en charge", "connections": "Connexions", "connections_short": "conn.", "tier_guide_title": "Que signifie chaque niveau ?", "tier_bronze": "BRONZE", "tier_iron": "IRON", "tier_titanium": "TITANIUM", "tier_platinum": "PLATINUM", "tier_obsidian": "OBSIDIAN", "tier_none": "NON ÉVALUÉ", "tier_bronze_desc": "1–25 connexions simultanées — petit VPS (1–2 vCPU, 2–4 Go de RAM).", "tier_iron_desc": "26–75 connexions — serveur milieu de gamme (2–4 vCPU, 4–8 Go de RAM).", "tier_platinum_desc": "76–200 connexions — serveur haute performance (4–8 vCPU, 8–16 Go de RAM).", "tier_titanium_desc": "201–400 connexions — infrastructure d'entreprise (8+ vCPU, 16–32 Go de RAM).", "tier_obsidian_desc": "401+ connexions — classe turbo : matériel dédié, 16+ vCPU, 32+ Go de RAM, NVMe.", "docker_note": "Remarque : dans Docker, les métriques CPU/RAM peuvent refléter les limites du conteneur plutôt que l'hôte physique.", "badge_tooltip": "Attestation du serveur BetterDesk — certification de performance du serveur", "confirm_run": "Ce benchmark effectuera un test de charge du serveur avec des connexions simulées. Continuer ?", "starting": "Démarrage…", "complete": "Benchmark terminé", "signal_peers": "Pairs de signal", "relay_sessions": "Sessions de relais", "page_error": "Échec du chargement de la page d'attestation du serveur", "mode_estimated": "Estimé (WebSocket inaccessible)", "incomplete": "Benchmark terminé sans niveau valide" }, "commercialization": { "title": "Commercialisation", "subtitle": "Forfaits support, sessions facturables et rapports", "alpha_badge": "ALPHA", "alpha_tooltip": "Fonctionnalité précoce — facturation et forfaits en développement actif.", "tabs": { "overview": "Aperçu", "packages": "Forfaits et contrats", "sessions": "Séances", "reports": "Rapports", "settings": "Paramètres avancés" }, "clock": { "title": "Heure serveur (NTP)", "check_now": "Vérifier", "unsynced": "L'horloge du serveur n'est pas synchronisée — les sessions facturables peuvent être bloquées" }, "stats": { "active_sessions": "Sessions facturables actives" }, "packages": { "new": "Nouveau forfait", "name": "Nom", "included_minutes": "Minutes incluses", "overage_rate": "Tarif dépassement / h", "currency": "Devise", "heading": "Forfaits de support", "prompt_name": "Nom du forfait", "create_title": "Nouveau forfait pour l'organisation", "create_submit": "Créer le forfait", "select_org": "Organisation", "select_org_placeholder": "Sélectionner une organisation…" }, "sessions": { "device": "Appareil", "operator": "Opérateur", "duration": "Durée", "phase": "Phase", "amount": "Montant" }, "reports": { "session": "Séance", "summary": "Résumé", "date": "Date" }, "contracts": { "title": "Contrats organisationnels", "new": "Assigner un forfait", "org": "Organisation", "package": "Forfait", "remaining": "Minutes restantes", "status": "Statut", "actions": "Actions", "suspend": "Suspendre", "activate": "Activer", "select_org": "Sélectionner une organisation", "select_package": "Sélectionner un forfait", "no_orgs": "Aucune organisation trouvée", "no_packages": "Créez d'abord un forfait" }, "export": { "csv": "Exporter CSV", "pdf": "Exporter PDF", "sessions_csv": "Exporter les sessions CSV" }, "report": { "title": "Rapport de travail", "subtitle": "Décrivez le travail effectué pendant cette session à distance.", "category": "Catégorie", "ticket_ref": "Référence ticket", "summary": "Travail effectué", "skip": "Ignorer pour l'instant", "submit": "Envoyer le rapport", "summary_required": "Le résumé est obligatoire", "saved": "Rapport de travail enregistré" }, "empty": { "packages": "Aucun forfait pour l'instant. Créez-en un avec le bouton ci-dessus.", "contracts": "Aucun contrat d'organisation pour l'instant. Assignez un forfait à une organisation.", "sessions": "Aucune session facturable enregistrée.", "reports": "Aucun rapport de travail soumis." }, "assign": { "title": "Assigner un forfait existant", "submit": "Assigner" }, "form": { "cancel": "Annuler" } } }