/* 
  Localizable.strings
  ServBay

  Created by Sam Wu on 2023/7/12.
  
*/
"servbay_name" = "ServBay";
"servbay_copyright" = "CopyRight © 2024 ServBay, LLC.\nAll Rights Reserved.";
"servbay_slogan" = "The all in one localized web development environment.";

// Boutons génériques
"button_ok" = "OK";
"button_cancel" = "Annuler";
"button_stop_request" = "Arrêter la demande";
"button_save" = "Enregistrer";
"button_edit" = "Éditer";
"button_apply" = "Appliquer";
"button_reset" = "Réinitialiser";
"button_clear" = "Effacer";
"button_delete" = "Supprimer";
"button_close" = "Fermer";

// AI Gateway 请求诊断（33-SPEC）
"aigateway.nav.requests" = "Requêtes récentes";
"aigateway.requests.title" = "Requêtes récentes";
"aigateway.requests.subtitle" = "Afficher les résultats des requêtes, le processus de secours et chaque tentative en amont ; ne pas enregistrer le corps des requêtes ou des réponses.";
"aigateway.requests.empty" = "Aucune demande ne correspond aux critères";
"aigateway.requests.load_failed" = "Impossible de lire le diagnostic demandé pour le moment. Veuillez vérifier que l’AI Gateway est en cours d’exécution.";
"aigateway.requests.load_more" = "Charger plus";
"aigateway.requests.loading_more" = "Chargement…";
"aigateway.requests.view_detail" = "Voir les détails de la demande";
"aigateway.requests.column.time" = "Temps";
"aigateway.requests.column.client" = "Client / Clé secrète";
"aigateway.requests.column.model" = "Modèle";
"aigateway.requests.column.route" = "Canal final";
"aigateway.requests.column.result" = "Résultat";
"aigateway.requests.column.metrics" = "Temps écoulé / Essais";
"aigateway.requests.column.action" = "Opération";
"aigateway.requests.stats.total" = "Nombre total de demandes";
"aigateway.requests.stats.succeeded" = "Succès";
"aigateway.requests.stats.failed" = "Échec";
"aigateway.requests.stats.rescued" = "Sauvegarde de secours";
"aigateway.requests.filter.all" = "Tout";
"aigateway.requests.filter.status" = "Statut";
"aigateway.requests.filter.error" = "Type d’erreur";
"aigateway.requests.filter.fallback" = "Repli";
"aigateway.requests.filter.fallback_only" = "Fallback uniquement";
"aigateway.requests.filter.no_fallback" = "Fallback non utilisé";
"aigateway.requests.filter.model" = "Modèle";
"aigateway.requests.filter.apply" = "Application";
"aigateway.requests.filter.reset" = "Réinitialiser";
"aigateway.requests.filter.advanced" = "Plus de filtres";
"aigateway.requests.filter.client" = "Type de client";
"aigateway.requests.filter.key" = "ID de clé";
"aigateway.requests.filter.channel" = "ID du canal";
"aigateway.requests.filter.type" = "Type de demande";
"aigateway.requests.time.all" = "Tout le temps";
"aigateway.requests.time.1h" = "Dernière heure";
"aigateway.requests.time.24h" = "Dernières 24 heures";
"aigateway.requests.time.7d" = "Les 7 derniers jours";
"aigateway.requests.time.custom" = "Heure spécifiée";
"aigateway.requests.status.in_progress" = "En cours";
"aigateway.requests.status.succeeded" = "Succès";
"aigateway.requests.status.failed" = "Échec";
"aigateway.requests.status.cancelled" = "Annulé";
"aigateway.requests.status.stale" = "Interruption anormale";
"aigateway.requests.status.unknown" = "Inconnu";
"aigateway.requests.error.auth" = "Échec de l’authentification";
"aigateway.requests.error.permission" = "Autorisation insuffisante";
"aigateway.requests.error.not_found" = "La ressource n'existe pas";
"aigateway.requests.error.rate_limited" = "Trop de requêtes";
"aigateway.requests.error.connection" = "Échec de la connexion";
"aigateway.requests.error.timeout" = "La demande a expiré";
"aigateway.requests.error.protocol" = "Incompatible avec le protocole";
"aigateway.requests.error.upstream" = "Erreur du service amont";
"aigateway.requests.error.quota" = "Limite insuffisante";
"aigateway.requests.error.budget" = "Limite de budget atteinte";
"aigateway.requests.error.no_channel" = "Aucun canal disponible";
"aigateway.requests.error.client" = "Erreur de configuration du client";
"aigateway.requests.error.cancelled" = "La demande a été annulée";
"aigateway.requests.error.unknown" = "Erreur inconnue";
"aigateway.requests.fallback.rescued" = "Récupération de secours réussie";
"aigateway.requests.fallback.used" = "Fallback déjà essayé";
"aigateway.requests.attempts.format" = "%d tentatives";
"aigateway.requests.detail.title" = "Détails de la demande";
"aigateway.requests.detail.load_failed" = "Impossible de lire les détails de cette demande pour le moment.";
"aigateway.requests.detail.summary" = "Aperçu des requêtes";
"aigateway.requests.detail.request_id" = "ID de demande";
"aigateway.requests.detail.time" = "Heure de début";
"aigateway.requests.detail.client" = "Client / Clé";
"aigateway.requests.detail.protocol" = "Protocole d’entrée / Type";
"aigateway.requests.detail.model" = "Demander le modèle → Analyser le modèle";
"aigateway.requests.detail.channel" = "Canal final";
"aigateway.requests.detail.status" = "État final";
"aigateway.requests.detail.error" = "Type d’erreur";
"aigateway.requests.detail.upstream_status" = "Code d’état en amont";
"aigateway.requests.detail.latency" = "Durée totale";
"aigateway.requests.detail.ttft" = "Temps du premier octet";
"aigateway.requests.detail.tokens" = "Nombre total de jetons";
"aigateway.requests.detail.cost" = "Coût";
"aigateway.requests.detail.attempts" = "Tentative en amont";
"aigateway.requests.detail.no_attempts" = "Aucune tentative en amont n’a été enregistrée pour cette requête.";
"aigateway.requests.detail.no_channel" = "Aucun canal sélectionné";
"aigateway.requests.detail.latency_format" = "Durée : %@";
"aigateway.requests.detail.ttft_format" = "Premier octet : %@";
"aigateway.requests.detail.account_format" = "Compte : %@";
"aigateway.requests.detail.reached_upstream.yes" = "Arrivé en amont";
"aigateway.requests.detail.reached_upstream.no" = "Non arrivé en amont";
"aigateway.requests.detail.retryable.yes" = "Réessayable";
"aigateway.requests.detail.retryable.no" = "Non réessayable";
"aigateway.requests.action.open" = "Aller au traitement";
"aigateway.requests.action.open_key" = "Vérifier les paramètres de clé virtuelle";
"aigateway.requests.action.open_client" = "Vérifier les paramètres de connexion du client";
"aigateway.requests.action.open_channel" = "Vérifier les paramètres du canal";
"aigateway.requests.action.test_channel" = "Rétenter la connexion du canal";
"aigateway.requests.action.select_model" = "Sélectionner un modèle disponible pour le canal";
"aigateway.requests.action.reauthorize" = "Réautoriser le compte d’abonnement";
"aigateway.requests.action.wait_cooldown" = "Le canal est en cours de refroidissement, veuillez réessayer plus tard.";
"aigateway.requests.action.test_succeeded" = "Test du canal réussi.";
"aigateway.requests.action.test_failed" = "Échec du test du canal, veuillez vérifier la configuration sur la page du canal.";
"aigateway.requests.drilldown.client" = "Afficher les requêtes récentes de ce client";
"aigateway.requests.drilldown.channel" = "Voir les dernières requêtes de ce canal";
"aigateway.requests.drilldown.statistics" = "Voir les demandes associées";
"aigateway.requests.retention.title" = "Demander la conservation des paramètres de diagnostic";
"aigateway.requests.retention.description" = "Seules les métadonnées de diagnostic des requêtes et des tentatives seront conservées. Le nettoyage ne supprimera pas les statistiques d’agrégation d’utilisation.";
"aigateway.requests.retention.days_format" = "Conserver pendant %d jours";
"aigateway.requests.retention.cleanup" = "Nettoyer maintenant";
"aigateway.requests.retention.cleanup_confirm_title" = "Effacer les rapports de diagnostic expirés ?";
"aigateway.requests.retention.cleanup_confirm_message" = "Les requêtes expirées et les détails des tentatives seront supprimés selon la période de conservation actuellement enregistrée, sans impact sur l’agrégation de l’utilisation.";
"aigateway.requests.retention.load_failed" = "Impossible de lire les paramètres réservés pour le moment.";
"aigateway.requests.retention.saved" = "Les paramètres de sauvegarde ont été enregistrés.";
"aigateway.requests.retention.save_failed" = "Échec de la sauvegarde des paramètres de conservation.";
"aigateway.requests.retention.cleanup_failed" = "Échec du nettoyage, veuillez réessayer plus tard.";
"aigateway.requests.retention.cleanup_result" = "%d demandes et %d tentatives ont été supprimées.";
"button_restore" = "Restaurer";
"button_pause" = "Pause";
"button_download" = "Télécharger";
"button_continue" = "Continuer";
"button_add" = "Ajouter";
"button_init" = "Démarrer l'installation";
"button_initing" = "Initialisation";
"button_inited" = "Ouvrir ServBay";
"button_check_internet" = "Vérifier la connexion";
"button_next" = "Suivant";
"button_prev" = "Précédent";
"button_logout" = "Se déconnecter";
"button_login" = "Se connecter";
"button_upgrade" = "Mettre à jour maintenant";
"button_search" = "Rechercher";
"button_yes" = "Oui";
"button_no" = "Non";
"button_configure" = "Configurer";
"button_refresh" = "Actualiser";
"button_request" = "Demander";
"button_diagnostics_start_check" = "Démarrer le contrôle";
"button_diagnostics_cancel_check" = "Annuler le contrôle";
"button_diagnostics_save_log" = "Sauvegarder le journal";
"button_force_uninstall" = "Désinstallation forcée";
"button_retry" = "Réessayer";

// État du service
"service_status_running" = "En cours";
"service_status_stopped" = "Arrêté";
"service_status_na" = "Inconnu";
"service_status_enabled" = "Activé";
"service_status_disabled" = "Désactivé";
"service_status_installed" = "Installé";
"service_status_not_installed" = "Non installé";
"service_status_unknown" = "Inconnu";
"starting_refresh_init" = "Actualisation de l'état du service...";
"starting_refresh_completed" = "Actualisation de l'état du service terminée";
"starting_init_letsstart" = "Commençons l'installation de ServBay";
"starting_init_letsstart_nointernet" = "Pas de connexion Internet";
"starting_init_letsstart_hint" = "Cliquez sur le bouton pour initialiser votre ServBay.\nNote : Vous serez invité à entrer votre mot de passe système pour installer ServBay Helper pour gérer les services.";
"starting_init_letsstart_hint_nointernet" = "Il n'y a actuellement pas de connexion Internet ou la connexion réseau est instable. Impossible de récupérer les informations de package disponibles. Veuillez rouvrir l'application et essayer d'installer lorsque le réseau est stable.";
"starting_init_noneed" = "ServBay a déjà été initialisé, il n'est pas nécessaire de le réinitialiser.";
"starting_init_working" = "Initialisation de %@ ...";
"starting_init_installing" = "Installation en cours de %@ ...";
"starting_init_all_done" = "ServBay a été initialisé, veuillez passer à l'étape suivante.";
"starting_init_step_done" = "Terminé";
"starting_init_step_failed" = "Échoué";

/* Welcome 安装失败诊断弹窗 */
"alert_install_error_title" = "Échec de l’installation de %@";
"install_error_label_step" = "Étape échouée";
"install_error_label_package" = "Paquet logiciel";
"install_error_label_file" = "Fichier";
"install_error_label_error" = "Erreur";
"install_error_label_expected_hash" = "SHA-256 attendu";
"install_error_label_actual_hash" = "SHA-256 réel";
"install_error_label_log_hint" = "Pour plus de détails, veuillez consulter le journal : /tmp/servbay-install.log";
"install_error_step_metadata" = "Rechercher les informations du paquet";
"install_error_step_download" = "Télécharger";
"install_error_step_verify" = "Vérifier";
"install_error_step_unpack" = "Décompresser";
"install_error_reason_metadata_missing" = "Le paquet n'a pas été trouvé dans la liste des versions en ligne. Il se peut qu'un problème de réseau ait empêché le téléchargement complet de la liste des versions. Veuillez vérifier votre connexion réseau et réessayer.";
"install_error_reason_hash_mismatch" = "Échec de la vérification SHA-256, le fichier téléchargé pourrait être corrompu ou altéré.";
"install_error_reason_tmp_missing" = "Fichier temporaire téléchargé introuvable, le téléchargement peut être incomplet ou le dossier temporaire a été nettoyé.";
"install_error_reason_validator_missing" = "Le fichier clé n’a pas été trouvé après la décompression, le paquet est peut-être corrompu.";
"install_error_reason_unknown" = "Erreur inconnue.";
"starting_init_setting" = "Paramètre";
"starting_init_helper" = "ServBay Helper";
"starting_init_servbay_root_ca" = "ServBay Root CA";
"starting_init_demo_website_ssl" = "Demo Website SSL";
"starting_init_mariadb" = "MariaDB";
"starting_init_mysql" = "MySQL";
"starting_init_postgresql" = "PostgreSQL";
"starting_init_mongodb" = "MongoDB";
"starting_init_mailpit" = "Mailpit";
"starting_init_ollama" = "Ollama";
"starting_init_service" = "Service";
"starting_init_template" = "Modèle";
"starting_init_ollama_models" = "Modèles Ollama";
"starting_init_demohost" = "Site de démonstration";
"starting_init_nginxfile" = "nginx.conf & /etc/hosts";
"starting_init_caddyfile" = "Caddyfile & /etc/hosts";
"starting_init_apachefile" = "httpd.conf & /etc/hosts";
"starting_init_package_selection_title" = "Veuillez sélectionner les packages à installer";
"starting_init_package_selection_version" = "Version";
"starting_init_package_selection_php_alert_title" = "Alerte";
"starting_init_package_selection_php_alert" = "Vous devez utiliser PHP pour exécuter les outils de gestion de sites Web et de bases de données par défaut.";

// Barre de menu
"menu_application" = "Application";
"menu_about" = "À propos";
"menu_quit" = "Quitter";
"menu_support" = "Support";
"menu_service" = "Service";
"menu_start" = "Démarrer";
"menu_stop" = "Arrêter";
"menu_restart" = "Redémarrer";
"menu_window" = "Fenêtre";
"menu_window_close" = "Fermer la fenêtre";
"menu_help" = "Aide";
"menu_open" = "Ouvrir";
"menu_current_status" = "État actuel";
"menu_check_update" = "Vérifier les mises à jour";
"menu_edit" = "Modifier";
"menu_undo" = "Annuler";
"menu_redo" = "Rétablir";
"menu_cut" = "Couper";
"menu_copy" = "Copier";
"menu_paste" = "Coller";
"menu_select_all" = "Tout sélectionner";
"menu_blog" = "Blog";
"menu_community" = "Community";
"menu_x" = "X (Twitter)";
"menu_facebook" = "Facebook";
"menu_youtube" = "Youtube";
"menu_website" = "Website";
"menu_database_tools" = "Outils DB";
"menu_starred" = "Hôtes favoris";
"menu_starred_more" = "Plus d'hôtes favoris";

// start/stop/restart services
"menu_start_services" = "Démarrer les Services";
"menu_start_all_services" = "Démarrer Tous les Services";
"menu_start_x_service" = "Démarrer le Service %@";
"menu_stop_services" = "Arrêter les Services";
"menu_stop_all_services" = "Arrêter Tous les Services";
"menu_stop_x_service" = "Arrêter le Service %@";
"menu_restart_services" = "Redémarrer les Services";
"menu_restart_all_services" = "Redémarrer Tous les Services";
"menu_restart_x_service" = "Redémarrer le Service %@";
"menu_web" = "Web";
"menu_php" = "PHP";
"menu_mysql_mariadb" = "MySQL/MariaDB";
"menu_mail" = "Mail";
"menu_dns" = "DNS";
"menu_clear_redis_data" = "Effacer les Données Redis";
"menu_stop_and_quit" = "Arrêter Tous les Services et Quitter";

// Astuces
"tips_host_save_successful" = "Enregistrement réussi";
"tips_service_all_start_start" = "Démarrage de tous les services en cours ...";
"tips_service_all_start_completed" = "Tous les services ont été démarrés avec succès";
"tips_service_all_stop_start" = "Arrêt de tous les services en cours ...";
"tips_service_all_stop_completed" = "Tous les services ont été arrêtés avec succès";
"tips_service_all_restart_start" = "Redémarrage de tous les services en cours ...";
"tips_service_all_restart_completed" = "Tous les services ont été redémarrés avec succès";
"tips_service_init_start" = "Initialisation de %@ v%@ en cours ...";
"tips_service_init_completed" = "Initialisation de %@ v%@ terminée";
"tips_service_enable_start" = "Activation du service %@ en cours ...";
"tips_service_enable_completed" = "Service %@ activé";
"tips_service_disable_start" = "Désactivation du service %@ en cours ...";
"tips_service_disable_completed" = "Service %@ désactivé";
"tips_service_start_start" = "Démarrage du service %@ en cours ...";
"tips_service_start_completed" = "Service %@ démarré avec succès";
"tips_service_stop_start" = "Arrêt du service %@ en cours ...";
"tips_service_stop_completed" = "Service %@ arrêté avec succès";
"tips_service_restart_start" = "Redémarrage du service %@ en cours ...";
"tips_service_restart_completed" = "Service %@ redémarré avec succès";
"tips_service_file_download_start" = "Commencer à télécharger le package %@ ...";
"tips_service_file_download_successful" = "Le package %@ a été téléchargé avec succès. L'installation commence maintenant.";
"tips_service_file_download_failed" = "Échec du téléchargement du package : %@";
"tips_service_file_download_file_notfound" = "Le fichier distant n'existe pas.";
"tips_service_file_download_file_corrupted" = "Fichier corrompu";
"tips_service_file_install_successful" = "Le package %@ a été installé avec succès";
"tips_service_file_install_failed" = "L'installation du package %@ a échoué";
"tips_service_file_uninstall_successful" = "Le package %@ a été désinstallé avec succès";
"tips_service_file_uninstall_failed" = "La désinstallation du package %@ a échoué";
"tips_copied" = "%@ %@ a été copié";
"tips_service_not_install" = "Le service %@ n'est pas installé";
"tips_service_not_install_simple" = "Non installé";
"tips_service_not_enabled" = "Le service %@ n'est pas activé";
"tips_service_start_failed" = "Échec du démarrage du service %@";
"tips_service_stop_failed" = "Échec de l'arrêt du service %@";
"tips_service_restart_failed" = "Échec du redémarrage du service %@";
"tips_service_unknown_error" = "Impossible de capturer les informations d'erreur. Veuillez vérifier manuellement le fichier log du service pour identifier l'erreur.";
"tips_some_service_failed" = "Un ou plusieurs services %@ ont échoué. Veuillez vérifier l'état du service et le log pour identifier l'erreur.";
"tips_green_install" = "Tous les paquets sont installés dans des répertoires séparés et n'affectent pas les logiciels existants du système. Vous pouvez installer en toute confiance.";
"tips_service_enabled_title" = "Le service est activé";
"tips_service_enabled_minio_desc" = "Nom d'utilisateur : %1$@\nMot de passe : %2$@\nURL d'accès : %3$@";
"tips_service_enabled_meilisearch_desc" = "Meilisearch clé principale : %1$@\nURL d’accès : %2$@";
"tips_service_enabled_typesense_desc" = "Clé API Typesense : %1$@\nURL d’accès : %2$@";
"tips_service_enabled_mailpit_desc" = "URL d'accès au site de gestion en arrière-plan : %1$@";
"tips_service_enabled_ollama_desc" = "URL de l’API Ollama : %1$@";

// Barre de navigation de gauche
"navmenu_dashboard" = "Tableau de bord";
"navmenu_website" = "Sites Web";
"navmenu_dns" = "DNS";
"navmenu_ssl" = "Certificats SSL";
"navmenu_database" = "Base de données";
"navmenu_ai" = "AI";
"navmenu_language" = "Langages";
"navmenu_mail" = "Courrier électronique";
"navmenu_webserver" = "Serveur Web";
"navmenu_rproxy" = "Transfert de port local";
"navmenu_log" = "Journal";
"navmenu_package" = "Paquets";
"navmenu_backup" = "Sauvegarde";
"navmenu_category" = "Catégorie";
"navmenu_setting" = "Paramètres";
"navmenu_troubleshoot" = "Dépannage";
"navmenu_store" = "Boutique";
"navmenu_about_about" = "À propos de ServBay";
"navmenu_about_website" = "Ouvrir le site Web de ServBay";
"navmenu_about_help" = "Centre d'aide";
"navmenu_about_talk" = "Communauté Discord de ServBay";
"navmenu_about_blog" = "Blog de ServBay";
"navmenu_about_facebook" = "Suivez ServBay sur Facebook";
"navmenu_about_twitter" = "Suivez ServBay sur X";
"navmenu_about_youtube" = "Suivez ServBay sur Youtube";
"navmenu_database_mariadb" = "MariaDB";
"navmenu_database_pgsql" = "PostgreSQL";
"navmenu_database_mysql" = "MySQL";
"navmenu_database_mongodb" = "MongoDB";
"navmenu_nosql_redis" = "Redis";
"navmenu_nosql_memcached" = "Memcached";
"navmenu_php" = "PHP";
"navmenu_php_56" = "PHP 5.6";
"navmenu_php_71" = "PHP 7.1";
"navmenu_php_72" = "PHP 7.2";
"navmenu_php_73" = "PHP 7.3";
"navmenu_php_74" = "PHP 7.4";
"navmenu_php_80" = "PHP 8.0";
"navmenu_php_81" = "PHP 8.1";
"navmenu_php_82" = "PHP 8.2";
"navmenu_php_83" = "PHP 8.3";
"navmenu_php_84" = "PHP 8.4";
"navmenu_python" = "Python";
"navmenu_go" = "Go";
"navmenu_nodejs" = "Node.js";
"navmenu_nosql" = "NoSQL";
"navmenu_ollama" = "Ollama";
"navmenu_tools" = "Outils";
"navmenu_java" = "Java";
"navmenu_rust" = "Rust";
"navmenu_ruby" = "Ruby";
"navmenu_dotnet" = ".NET";
"navmenu_tunnel" = "Tunnel";
"navmenu_storage" = "Stockage d'objets";
"navmenu_search" = "Rechercher";
"navmenu_minio" = "MinIO";
"navmenu_typesense" = "Typesense";
"navmenu_meilisearch" = "Meilisearch";
"navmenu_bun" = "Petit pain";
"navmenu_deno" = "Deno";
"navmenu_dnsmasq" = "dnsmasq";

// Dashboard
"dashboard_common_service" = "Services communs";

// host
"host_no_hosts" = "Aucun site web\n\nCliquez sur le bouton pour ajouter";
"host_add_text" = "Ajouter un site Web";
"host_name_text" = "Nom";
"host_name_tips" = "Site de démonstration";
"host_domain_text" = "Domaine";
"host_domain_tips" = "Utilisez des espaces pour séparer plusieurs domaines, par exemple demo.com www.demo.com";
"host_webhost_protocal_text" = "Protocole Web";
"host_webhost_type_text" = "Type d'hôte";
"host_webhost_type_php" = "PHP";
"host_webhost_type_static" = "Statique";
"host_webhost_type_rproxy" = "Proxy inverse";
"host_webhost_type_redirect" = "Redirection";
"host_email_text" = "Adresse e-mail pour émettre un certificat SSL";
"host_email_tips" = "Vérification et notifications d'expiration";
"host_ssl_request_method_text" = "Méthode de demande de certificat SSL";
"host_ssl_public_acme_cert_text" = "Certificat SSL CA public (ACME)";
"host_ssl_file_text" = "Fichier de clé privée de certificat SSL (*.key)";
"host_ssl_file_key_text" = "Fichier de certificat SSL (*.pem, *.crt)";
"host_ssl_request_selfsign" = "ServBay CA";
"host_ssl_request_public" = "CA public";
"host_ssl_request_caddy" = "Caddy";
"host_ssl_request_custom" = "Personnalisé";
"host_ssl_select_public_certificate" = "Veuillez sélectionner";
"host_redirect_301" = "301 (permanent)";
"host_redirect_302" = "302 (temporaire)";
"host_hostscheme_http" = "HTTP";
"host_hostscheme_https" = "HTTPS";
"host_hostscheme_http_https" = "HTTP et HTTPS";
"host_php_version_text" = "Version de PHP";
"host_php_version_default" = "Par défaut (global)";
"host_php_rewrite_text" = "Règles de réécriture";
"apache_htaccess_hint" = "Apache utilise le fichier .htaccess pour configurer les règles de réécriture";
"host_ipaddress_text" = "Adresse IP";
"host_port_text" = "Port";
"host_custom_text" = "Personnalisé";
"host_custom_port_text" = "Port personnalisé";
"host_custom_configure_text" = "Configuration personnalisée";
"host_rproxy_custom_text" = "Proxy inverse personnalisé";
"host_rproxy_configure_custom_text" = "Entrez la configuration de proxy inverse personnalisée ci-dessous";
"host_domain_invalid_tips" = "Domaine incorrect ou déjà existant";
"host_upgrade_vip_unlock_multiple_domains" = "Veuillez passer à ServBay Pro pour entrer plusieurs domaines.";
"host_configure_custom_tips" = "Entrez la configuration %@ personnalisée ci-dessous";
"host_root_directory" = "Répertoire d'hôte";
"host_path_space_warning" = "Le chemin contient des espaces, ce qui peut entraîner des dysfonctionnements du serveur Web, de la sauvegarde/restauration, etc. Il est recommandé d’utiliser un chemin sans espaces.";
"host_redirect_type" = "Type de redirection";
"host_redirect_target_url" = "URL de destination";
"host_delete_alert_title" = "Supprimer l'hôte \"%@\"";
"host_delete_alert_text" = "Êtes-vous sûr de vouloir supprimer l'hôte \"%@\"?";
"host_pause_alert_title" = "Mettre en pause l'hôte \"%@\"";
"host_pause_alert_text" = "Êtes-vous sûr de vouloir mettre en pause l'hôte \"%@\"?";
"host_save_alert_title" = "Erreur";
"host_save_alert_domain_exists" = "Le domaine %@ existe déjà";
"host_caddyfile_invalid" = "Erreur de configuration de Caddy";
"host_nginxfile_invalid" = "Erreur de configuration de NGINX";
"host_apachefile_invalid" = "Erreur de configuration de Apache";
"host_cors_enable" = "CORS";
"host_cors_allow_origin" = "Access-Control-Allow-Origin";
"host_cors_allow_origin_prompt" = "https://www.servbay.com https://www.servbay.dev";
"host_cors_allow_methods" = "Access-Control-Allow-Methods";
"host_cors_allow_methods_prompt" = "POST, GET, OPTIONS";
"host_cors_allow_headers" = "Access-Control-Allow-Headers";
"host_cors_allow_headers_prompt" = "Content-Type, Authorization";
"host_cors_allow_credentials" = "Allow-Credentials";
"host_custom_config_self_manage_certificate" = "Lors de la configuration personnalisée, vous devez créer ou demander vous-même un certificat SSL.";
"host_caddy_not_allow_alert_text" = "Le serveur Web par défaut n'est pas Caddy, la sélection n'est pas autorisée.";
"host_current_web_server" = "Serveur Web : %@";
"host_certificate_not_exists" = "Le fichier de certificat '%1$@' ou le fichier de clé '%2$@' n'existe pas.";
"host_root_folder_not_exists" = "Le dossier racine '%@' n'existe pas.";
"host_root_folder_not_set" = "Le paramètre du dossier racine n'est pas défini.";
"host_certificate_not_set" = "Les paramètres du certificat ne sont pas définis.";
"host_system_readonly" = "Site Web du Système";
"host_category_none" = "Non classé";
"host_category_assign_to" = "Attribué au groupe : %1$@";
"host_category_right_click_tips" = "Faites un clic droit sur le site Web pour l’ajouter à un groupe";
"host_category_cannot_delete" = "Impossible de supprimer";
"host_category_cannot_delete_tips" = "Cette catégorie contient des sites Web et ne peut pas être supprimée";
"host_category_exists" = "La catégorie existe déjà";
"host_category_exists_tips" = "Le nom de catégorie que vous avez entré existe déjà";
"host_category_cancel_assign" = "Désassigner le groupe";

// backup
"backup_nav_setting" = "Paramètres de sauvegarde";
"backup_nav_config" = "Config.";
"backup_nav_websites" = "Sites";
"backup_nav_ssl_cert" = "SSL";
"backup_title_setting" = "Param. sauveg.";
"backup_action_by_hand" = "Sauveg. manuelle";
"backup_table_header_filename" = "Nom";
"backup_table_header_day" = "Date";
"backup_table_header_filesize" = "Taille";
"backup_table_header_note" = "Note";
"backup_tips_success" = "Sauvegarde OK";
"backup_tips_failed" = "Échec sauveg.";
"backup_all_databases" = "Sauveg. toutes BDD";
"backup_no_running_pg" = "PostgreSQL non actif";
"backup_no_running_mariadb" = "MariaDB non actif";
"backup_no_running_mysql" = "MySQL non actif";
"backup_all_ssl_cert" = "Sauveg. tous certs";
"backup_all_websites" = "Sauveg. tous sites";
"backup_tips_restore_success" = "Restauration réussie";
"backup_tips_restore_failed" = "Échec restauration";
"backup_status_stopped" = "Arrêté";
"backup_every_day" = "Quotidien";
"backup_every_week" = "Hebdo";
"backup_every_month" = "Mensuel";
"backup_weekday_monday" = "Lun";
"backup_weekday_tuesday" = "Mar";
"backup_weekday_wednesday" = "Mer";
"backup_weekday_thursday" = "Jeu";
"backup_weekday_friday" = "Ven";
"backup_weekday_saturday" = "Sam";
"backup_weekday_sunday" = "Dim";
"backup_dist_folder" = "Répertoire de stockage des sauvegardes";
"backup_auto_backup" = "Sauvegarde automatique";
"backup_frequency" = "Fréquence de sauvegarde";
"backup_day_of_month" = "Jour";
"backup_day_of_week" = "Semaine";
"backup_time_of_day" = "Temps";
"backup_auto_cleanup" = "Nettoyage automatique";
"backup_auto_cleanup_keep_days" = "Conserver la sauvegarde (jours)";
"backup_backup_category" = "Type de sauvegarde";
"backup_permission_required_title" = "Autorisation d’accès au disque requise";
"backup_permission_required_message" = "ServBay ne peut pas accéder au dossier de sauvegarde. Veuillez activer l’accès complet au disque pour ServBay dans Réglages du système > Confidentialité et sécurité > Accès complet au disque.";

// service
"service_column_service" = "Nom du paquet";
"service_column_latest_ver" = "Dernière version : %@";
"service_column_current_ver" = "Version installée actuelle : %@";
"service_column_ver" = "Version";
"service_column_status" = "Statut";
"service_column_pid" = "PID";
"service_column_enable" = "Activation";
"service_column_arch" = "Architecture";
"service_column_installed" = "Gérer";
"service_column_action" = "Contrôle";
"service_upgrade_alert_title" = "Mettre à jour %@";
"service_upgrade_alert_text" = "Êtes-vous sûr de vouloir mettre à jour %@ à la version %@?";
"service_upgrade_alert_button" = "Mettre à jour";
"service_upgrade_runtime_alert_title" = "Mise à niveau de ServBay Runtime requise";
"service_upgrade_runtime_alert_text" = "Avant de continuer, vous devez mettre à niveau \"ServBay Runtime\" vers %1$@ ou une version supérieure.\nVeuillez aller dans \"%2$@\" - \"%3$@\" et mettre à niveau \"ServBay Runtime\".";
"service_install_button" = "Installer";
"service_uninstall_button" = "Désinstaller";
"service_uninstall_alert_title" = "Désinstaller %@";
"service_uninstall_alert_text" = "Êtes-vous sûr de vouloir désinstaller le package de logiciel %@?";
"service_notinstall_alert_title" = "Package %@ non installé";
"service_notinstall_alert_text" = "Le package %@ n'est pas installé ou a été corrompu. Veuillez réinstaller le package";
"service_package_downloading" = "Téléchargement du paquet logiciel %@ (%@), vitesse: %@...";
"service_set_default_version_title" = "Définir comme version par défaut";
"service_set_default_version_desc" = "Souhaitez-vous définir %@ comme version par défaut ? La version par défaut actuelle est %@.";
"service_not_allow_uninstall_web_server_desc" = "Le serveur web par défaut actuel est %@ et ne peut pas être désinstallé.";
"service_not_allow_uninstall_default_version_desc" = "La version par défaut actuelle du service %1$@ est %2$@ et ne peut pas être désinstallée. Veuillez définir une nouvelle version par défaut du service dans [Paramètres] avant d'essayer de désinstaller la version actuelle.";
"service_enable_service" = "Activer le service";
"service_disable_default_version_alert_title" = "❗️Désactiver le service par défaut❗️";
"service_disable_default_version_alert_text" = "%@ est la version par défaut actuelle du service. Désactiver la version par défaut peut affecter l'exécution de votre code. Êtes-vous sûr de vouloir la désactiver ?\n\n(Si vous n'avez plus besoin de la version actuelle, veuillez définir une nouvelle version par défaut)";
"service_package_not_support_title" = "Package non pris en charge";
"service_package_not_support_desc" = "Le package sélectionné n'est temporairement pas pris en charge : %@";

// settings
"setting_launch_at_login" = "Lancer à la connexion";
"setting_launch_at_login_hint" = "Ouvrir automatiquement l'APP ServBay après la connexion de l'utilisateur";
"setting_start_with_system" = "Démarrer les services avec le système";
"setting_start_with_system_hint" = "Démarrer automatiquement les services sélectionnés après le démarrage du système";
"setting_release_channel" = "Canal de mise à jour";
"setting_release_channel_hint" = "Le canal pour les mises à jour du programme ServBay";
"setting_release_channel_alert_title" = "Changement réussi";
"setting_release_channel_alert_text" = "Le canal de mise à jour par défaut a été changé avec succès.";
"setting_language" = "Langue";
"setting_language_hint" = "Veuillez sélectionner votre langue";
"setting_language_update_button" = "Changer de langue";
"setting_language_alert_title" = "Langue changée";
"setting_language_alert_text" = "Redémarrez l'application pour utiliser la nouvelle langue";
"setting_appearance" = "Apparence";
"setting_appearance_hint" = "Choisissez votre thème de couleur préféré";
"theme_follow_system" = "Suivre le système";
"theme_light" = "Clair";
"theme_dark" = "Sombre";
"setting_package_priority" = "Paquet par défaut";
"setting_package_priority_hint" = "Définissez la priorité de l’outil en ligne de commande pour choisir d’utiliser ServBay ou les paquets système";
"setting_package_priority_servbay" = "ServBay";
"setting_package_priority_system" = "Système";
"setting_package_priority_servbay_example" = "Priorité à ServBay : utiliser les paquets de ServBay (par exemple : python utilisera le Python de ServBay)";
"setting_package_priority_system_example" = "Priorité au système : utiliser en priorité les paquets système, ServBay en complément (par exemple : python utilisera en priorité le Python du système)";
"setting_package_priority_update_title" = "Paramètres de l’application";
"setting_package_priority_update_message" = "L’ordre du PATH sera mis à jour. Veuillez redémarrer le terminal ou exécuter source ~/.zshrc pour que les modifications prennent effet.";
"setting_web_server" = "Serveur Web par défaut";
"setting_web_server_hint" = "Veuillez sélectionner le serveur Web par défaut";
"setting_web_server_alert_title" = "Changement réussi";
"setting_web_server_alert_text" = "Le serveur Web par défaut a été changé avec succès";
"setting_sql_server" = "Serveur SQL par défaut";
"setting_sql_server_hint" = "Veuillez sélectionner le serveur SQL par défaut";
"setting_sql_server_alert_title" = "Changement réussi";
"setting_sql_server_alert_text" = "Le serveur SQL par défaut a été changé avec succès";
"setting_default_version" = "Version par défaut";
"setting_default_version_hint" = "Définir la version par défaut du package logiciel (y compris la ligne de commande)";
"setting_default_version_alert_title" = "Version par défaut modifiée";
"setting_default_version_alert_text" = "La version par défaut du package logiciel a été modifiée, et les outils en ligne de commande (php, python, node, mysql, psql, etc.) utiliseront la version par défaut définie";
"setting_default_version_php" = "PHP";
"setting_default_version_python" = "Python";
"setting_default_version_go" = "Go";
"setting_default_version_openjdk" = "OpenJDK";
"setting_default_version_dotnetsdk" = ".NET SDK";
"setting_default_version_ruby" = "Ruby";
"setting_default_version_rust" = "Rust";
"setting_default_version_node" = "Node.js";
"setting_default_version_mariadb" = "MariaDB";
"setting_default_version_mysql" = "MySQL";
"setting_default_version_postgresql" = "PostgreSQL";
"setting_default_version_mongodb" = "MongoDB";
"setting_default_version_not_set" = "Non défini";
"setting_ca" = "Certificat racine ServBay";
"setting_ca_hint" = "Installer le certificat racine SSL public/utilisateur de ServBay";
"setting_ca_reinstall_button" = "Réinstaller le CA racine ServBay";
"setting_ca_reinstall_alert_title" = "Réinstaller le CA racine ServBay";
"setting_ca_reinstall_alert_text" = "Le certificat CA racine public/utilisateur ServBay a été réinstallé avec succès";
"setting_ca_renew_all_button" = "Recréer tous les certificats utilisateurs ServBay";
"setting_ca_renew_all_alert_title" = "Recréer tous les certificats utilisateurs ServBay";
"setting_ca_renew_all_alert_text" = "Tous les certificats CA utilisateurs ServBay ont été recréés.";
"setting_ca_renew_all_confirm_alert_title" = "🚫 Recréer tous les certificats utilisateurs ServBay 🚫";
"setting_ca_renew_all_confirm_alert_text" = "❓ Êtes-vous sûr de vouloir recréer tous les certificats CA utilisateurs ServBay ?\n‼️ Cela supprimera tous les certificats actuellement émis et les réémettra.";
"setting_ca_need_privilege_alert_title" = "Nécessite des privilèges plus élevés";
"setting_ca_need_privilege_alert_text" = "Depuis macOS 15.4, l'installation des certificats racine SSL nécessite des privilèges système plus élevés.\n\nVeuillez saisir le mot de passe administrateur dans les fenêtres contextuelles suivantes pour installer et initialiser correctement ServBay CA.\n\n‼️‼️‼️\nSi ServBay CA n'est pas installé correctement, des erreurs de certificat apparaîtront lors de l'ouverture des sites web\n‼️‼️‼️";
"setting_ca_install_button" = "Installer le certificat racine ServBay";
"setting_ca_install_failed_alert_title" = "Échec de l'installation de ServBay CA";
"setting_ca_install_failed_alert_text" = "‼️‼️‼️\nL'installation de ServBay CA a échoué. Veuillez vérifier et réessayer, ou installer et définir manuellement la confiance dans 'Trousseau'\n‼️‼️‼️";
"setting_ca_remove_button" = "Supprimer le certificat racine ServBay";
"setting_ca_remove_alert_title" = "Supprimer le certificat racine ServBay";
"setting_ca_remove_alert_text" = "Certificat racine ServBay supprimé avec succès";
"setting_cli_tools" = "Outils en ligne de commande";
"setting_cli_tools_hint" = "Installez ServBay dans les environnements zsh ou bash pour utiliser les commandes intégrées de ServBay telles que PHP, Python, Node.js, MySQL, Redis, etc. dans le terminal";
"setting_zsh_install_button" = "Configurer PATH de ServBay pour zsh";
"setting_zsh_install_alert_title" = "Configurer PATH de ServBay pour zsh";
"setting_zsh_install_alert_text" = "La variable d'environnement PATH de ServBay a été ajoutée au fichier .zshrc.";
"setting_bash_install_button" = "Configurer PATH de ServBay pour bash";
"setting_bash_install_alert_title" = "Configurer PATH de ServBay pour bash";
"setting_bash_install_alert_text" = "La variable d'environnement PATH de ServBay a été ajoutée au fichier .bash_profile.";
"setting_ai_client" = "Connexion du client AI";
"setting_ai_client_hint" = "Intégrez en un clic le service MCP de ServBay dans des clients IA comme Claude Code, Codex, Cursor, pour permettre à l’IA de gérer directement votre environnement de développement local.";
"setting_ai_client_integrate_button" = "Connexion";
"setting_ai_client_remove_button" = "Supprimer l'accès";
"setting_ai_client_status_integrated" = "Connecté";
"setting_ai_client_status_integrated_stale" = "Connecté (redirige vers une autre version)";
"setting_ai_client_status_not_integrated" = "Non connecté";
"setting_ai_client_status_client_not_found" = "Client non détecté";
"setting_ai_client_integrate_success" = "ServBay MCP a été connecté à %@";
"setting_ai_client_integrate_failed" = "Échec de la connexion à %@ : %@";
"setting_ai_client_remove_success" = "ServBay MCP a été retiré de %@";
"setting_ai_client_remove_nothing" = "%@ Aucun point d'accès ServBay MCP amovible n'est actuellement disponible";
"setting_ai_client_remove_failed" = "Échec de suppression de l'accès depuis %@ : %@";
"setting_ai_client_client_not_found_tips" = "%@ non détecté, veuillez d'abord installer ce client avant de vous connecter";
"setting_mcp_server" = "Serveur MCP ServBay";
"setting_mcp_server_hint" = "ServBay MCP permet aux clients IA de gérer votre environnement de développement local. L'état ci-dessous est détecté automatiquement.";
"setting_mcp_status_label" = "État";
"setting_mcp_version_label" = "Version";
"setting_mcp_path_label" = "Chemin";
"setting_mcp_refresh_button" = "Actualiser";
"setting_mcp_status_idle" = "—";
"setting_mcp_status_checking" = "Vérification de ServBay MCP...";
"setting_mcp_status_installed" = "ServBay MCP est installé et prêt.";
"setting_mcp_status_not_installed" = "ServBay MCP n'est pas installé. Mettez à niveau ou réinstallez ServBay pour ajouter la prise en charge de MCP.";
"setting_mcp_status_upgrade_available" = "ServBay MCP est installé mais nécessite une mise à jour.";
"setting_mcp_status_servbay_not_running" = "ServBay MCP est installé, mais ServBay n'est pas en cours d'exécution. Démarrez ServBay et réessayez.";
"setting_mcp_status_permission_error" = "ServBay MCP a été trouvé, mais ne peut pas être exécuté. Vérifiez les autorisations du fichier ou réinstallez ServBay.";
"setting_mcp_status_invalid_binary" = "Le binaire ServBay MCP est invalide ou a renvoyé une version inattendue.";
"setting_mcp_status_unknown_error" = "Impossible de vérifier l'état de ServBay MCP. Réessayez ou réinstallez ServBay.";
"setting_ai_client_mcp_label" = "MCP :";
"setting_ai_client_rule_label" = "Règle IA :";
"setting_ai_client_rule_installed" = "Installée";
"setting_ai_client_rule_not_installed" = "Non installée";
"setting_ai_client_install_rule_button" = "Installer la règle IA";
"setting_ai_client_advanced_button" = "Avancé";
"setting_ai_client_repair_button" = "Réparer";
"setting_ai_client_config_path_fmt" = "Configuration : %@";
"setting_ai_client_open_config_button" = "Ouvrir la configuration";
"setting_ai_client_copy_config_button" = "Copier la configuration manuelle";
"setting_ai_client_copy_rule_button" = "Copier la règle IA";
"setting_ai_client_last_error_fmt" = "Dernière erreur : %@";
"setting_ai_client_install_rule_success" = "La règle IA ServBay a été installée pour %@";
"setting_ai_client_install_rule_failed" = "Échec de l'installation de la règle IA pour %@ : %@";
"setting_ai_client_install_rule_sheet_title" = "Installer la règle IA — %@";
"setting_ai_client_install_rule_sheet_message" = "Les règles IA sont installées par projet (espace de travail). ServBay écrira sa règle dans un fichier du dossier de projet que vous choisissez (%@) afin que l'IA sache quand utiliser ServBay MCP dans ce projet. Votre contenu existant ne sera pas écrasé : seule la section gérée par ServBay est mise à jour.";
"setting_ai_client_install_rule_sheet_install_button" = "Installer";
"setting_ai_client_install_rule_global_button" = "Installer les règles d'IA globalement";
"setting_ai_client_install_rule_global_sheet_title" = "Installation globale des règles d’IA — %@";
"setting_ai_client_install_rule_global_sheet_message" = "La règle d’IA sera installée globalement. ServBay écrira la règle dans le fichier de règles global du client (%@), afin que l’IA sache quand utiliser ServBay MCP dans tous les projets. Le contenu existant ne sera pas écrasé — seule la zone gérée par ServBay sera mise à jour.";
"setting_ai_client_install_rule_global_success" = "La règle ServBay AI a été installée globalement pour %@";
"setting_ai_client_global_rule_label" = "Règle d’IA globale :";
"setting_ai_client_remove_rule_global_button" = "Supprimer les règles d’IA globalement";
"setting_ai_client_remove_rule_global_sheet_title" = "Suppression globale de la règle d’IA — %@";
"setting_ai_client_remove_rule_global_sheet_message" = "ServBay va supprimer la zone hébergée ServBay du fichier de règles global de ce client (%@). Vos autres contenus ne seront pas affectés — seule la zone hébergée ServBay sera supprimée.";
"setting_ai_client_remove_rule_global_success" = "La règle ServBay AI a été supprimée des règles globales de %@";
"setting_ai_client_remove_rule_global_nothing" = "Il n'y a actuellement aucune règle ServBay AI pouvant être supprimée dans les règles globales de %@";
"setting_ai_client_remove_rule_global_failed" = "Échec de la suppression de la règle d’IA des règles globales de %@ : %@";
"setting_ai_client_choose_workspace_prompt" = "Choisir un projet";
"setting_ai_client_choose_workspace_title" = "Choisir le dossier du projet";
"setting_ai_client_choose_workspace_message" = "Les règles d’IA sont installées par projet. Choisissez le dossier du projet dans lequel ServBay écrira sa règle d’IA. La règle est ajoutée à des fichiers comme AGENTS.md, CLAUDE.md ou .cursor/rules dans ce dossier afin que l’IA sache quand utiliser ServBay MCP dans ce projet.";
"setting_ai_client_copied_tips" = "Copié dans le presse-papiers";
"setting_alert_successful" = "Opération réussie";
"setting_db_password" = "Mot de passe de la base de données";
"setting_db_password_hint" = "Nom d'utilisateur et mot de passe par défaut pour MariaDB et PostgreSQL";
"setting_db_password_mariadb" = "MariaDB";
"setting_db_password_postgresql" = "PostgreSQL";
"setting_db_password_account" = "Compte";
"setting_db_password_password" = "Mot de passe";
"setting_db_host" = "Hôte";
"setting_db_port" = "Port";
"setting_db_socket" = "Socket";
"setting_dns_server" = "Redirection DNS";
"setting_dns_server_hint" = "Configurez le(s) serveur(s) DNS en amont. Tous les noms de domaine non personnalisés seront redirigés vers le serveur DNS configuré pour résolution. Gardez-le par défaut ou réglez-le sur Google/Cloudflare DNS public";
"setting_dns_server_custom" = "Personnaliser le DNS en amont";
"setting_dns_server_alert_title" = "Adresse IP incorrecte";
"setting_dns_server_alert_text" = "L'adresse DNS en amont est incorrecte. Veuillez entrer une adresse IP valide. Pour plusieurs adresses IP, séparez-les par une virgule(,)";
"setting_database_password_migrated_mysql" = "Les informations relatives à MySQL et MariaDB ont été migrées";
"setting_database_password_migrated_postgresql" = "Les informations liées à PostgreSQL ont été migrées";
"setting_reset_dialog_alert_sucess_title" = "Dialogues réinitialisés";
"setting_reset_dialog_alert_sucess_text" = "Réinitialisation réussie";
"setting_start_all_services_when_start_up" = "Démarrer tous les services au lancement de ServBay";
"setting_stop_all_services_when_tear_down" = "Arrêter tous les services à la fermeture de ServBay";
"setting_monitor_system_resources_when_window_closed" = "Surveillance des ressources système en arrière-plan";
"setting_monitor_system_resources_when_window_closed_hint" = "Continuer à surveiller les ressources système (CPU, mémoire, etc.) après la fermeture de la fenêtre principale. Utilisé pour afficher les données dans la barre de menu.";

// 更新

// Mise à jour
"update_new_version" = "Nouvelle version disponible : %@";
"update_new_version_tips" = "Voulez-vous la télécharger maintenant ?";
"update_no_new_version_tips" = "Aucune nouvelle version disponible";
"update_release_notes" = "Notes de version";
"update_new_version_avaliable_title" = "Nouvelle version disponible";
"update_new_version_avaliable_tips" = "ServBay a publié une nouvelle version, veuillez mettre à jour dès que possible";
"update_new_version_downloaded_tips" = "La nouvelle version de ServBay a été téléchargée, veuillez cliquer pour installer";

// Conseils pour les boutons
"help_tips_service_button_start" = "Démarrer le service";
"help_tips_service_button_stop" = "Arrêter le service";
"help_tips_service_button_restart" = "Redémarrer le service";
"help_tips_open_log" = "Voir le journal";
"help_tips_add_host" = "Ajouter un site web";
"help_tips_open_web" = "Ouvrir le site web";
"help_tips_open_folder" = "Ouvrir le dossier";
"help_tips_select_log_directory" = "Sélectionner le répertoire des journaux";
"select_log_directory" = "Veuillez sélectionner le répertoire de sauvegarde du fichier journal";
"help_tips_ssl_enabled" = "SSL activé";
"help_tips_ssl_disabled" = "SSL désactivé";
"help_tips_website_type" = "Type de site web";
"help_tips_upgrade" = "Mettre à niveau vers une nouvelle version";
"help_tips_install" = "Installer le package logiciel";
"help_tips_uninstall" = "Désinstaller le package logiciel";
"help_tips_default_version" = "Version par défaut";
"help_tips_copy" = "Copier";
"help_tips_reveal" = "Afficher";
"help_tips_pause" = "Mettre en pause le site web";
"help_tips_enable" = "Activer le site web";
"help_tips_pause_domain" = "Mettre en pause le domaine";
"help_tips_enable_domain" = "Activer le domaine";
"help_tips_add_star" = "Ajouter aux favoris";
"help_tips_remove_star" = "Retirer des favoris";
"help_tips_renew_certificate" = "Renouveler le certificat SSL";
"help_tips_delete_certificate" = "Supprimer le certificat SSL";
"help_tips_open_website_setting" = "Ouvrir les paramètres du site Web";
"help_tips_reset_password" = "Réinitialiser le mot de passe de l'utilisateur root";
"help_tips_change_password" = "Changer le mot de passe de l'utilisateur root";
"help_tips_enable_in_settings" = "Veuillez activer dans %1$@ - %2$@";
"help_tips_open_backup" = "Ouvrir sauvegarde";
"help_tips_restore_backup" = "Restaurer";
"help_tips_delete_backup" = "Supprimer";
"help_tips_will_delete" = "Supprimer ?";
"help_tips_will_restore" = "Restaurer ?";

// Alert
"alert_unknown_app" = "Application inconnue";
"alert_app_port_unavailable_service" = "%1$@: occupe le port %2$@ %3$@";
"alert_port_unavailable" = "Ports non disponibles";
"alert_conflict_app" = "Les apps suivantes sont en conflit avec ServBay";
"alert_conflict_app_message" = "%@ est en cours d'exécution et a modifié les paramètres système, ce qui pourrait causer des problèmes avec ServBay (y compris occupation de ports, échec de la résolution des noms de domaine, problèmes d'accès aux sites Web, etc.). Veuillez le désactiver ou le fermer.";
"alert_port_unavailable_tips" = "Les processus suivants occupant des ports ont été détectés, ce qui peut affecter le fonctionnement normal de ServBay. Veuillez fermer les services suivants :";
"alert_port_unavailable_service" = "Le port %2$@ (%1$@) est occupé par le processus %3$@ (PID : %4$@)";
"alert_helper_not_install_title" = "🚫 ServBay Helper non installé 🚫";
"alert_helper_not_install_text" = "ServBay Helper n'est pas correctement installé. En raison des restrictions du système macOS, l'écoute sur les ports inférieurs à 1024 (comme HTTP 80, HTTPS 443, DNS 53) nécessite des permissions système. Veuillez réinstaller ServBay Helper pour résoudre ce problème.\n\nSi vous avez besoin d'aide, veuillez visiter le centre d'aide ou rejoindre notre canal Discord.";
"alert_helper_cannot_connect_title" = "🚫 Impossible de se connecter à ServBay Helper 🚫";
"alert_helper_cannot_connect_text" = "Impossible de se connecter à ServBay Helper. En raison des restrictions du système macOS, l'écoute sur les ports inférieurs à 1024 (comme HTTP 80, HTTPS 443, DNS 53) nécessite des permissions système. Veuillez réinstaller ServBay Helper pour résoudre ce problème.\n\nSi vous avez besoin d'aide, veuillez visiter le centre d'aide ou rejoindre notre canal Discord.";
"alert_helper_not_running_title" = "🚫 ServBay Helper ne fonctionne pas 🚫";
"alert_helper_not_running_text" = "ServBay Helper est installé mais ne fonctionne pas. En raison des restrictions du système macOS, l'écoute des ports inférieurs à 1024 (comme HTTP 80, HTTPS 443, DNS 53) nécessite des autorisations système. Veuillez réinstaller ServBay Helper pour résoudre ce problème.\n\nSi vous avez besoin d'aide, veuillez visiter le centre d'aide ou rejoindre notre canal Discord.";
"alert_need_help_text" = "Besoin d'aide ?";
"alert_processing_title" = "Traitement en cours";
"alert_processed_title" = "Traitement terminé";
"alert_processing_desc" = "La tâche est en cours de traitement...";
"alert_need_root_privileges_title" = "Privilèges d'administrateur requis";
"alert_need_root_privileges_desc" = "La gestion du service nécessite des privilèges système. Veuillez entrer le mot de passe administrateur pour obtenir les autorisations nécessaires à la gestion du service.";
"alert_need_install_rosetta_title" = "Installation de Rosetta requise";
"alert_need_install_rosetta_desc" = "Pour exécuter d'anciens logiciels d'architecture non-Arm64 sur les puces Silicon (M1/M2/M3/M4), Rosetta doit être installé. Veuillez exécuter la commande suivante dans le terminal pour installer :\n\nsoftwareupdate --install-rosetta --agree-to-license";
"alert_reset_all_dialog_again_status" = "Réinitialiser tous les dialogues";
"alert_reset_all_dialog_again_status_tips" = "Autoriser l’affichage à nouveau";
"alert_button_reset_tips" = "Réinitialiser";
"alert_option_do_not_alert_again" = "Ne plus afficher";
"alert_composer_2_2_cmd_line" = "Pour utiliser Composer 2.2, exécutez la commande : composer-2.2";

// onboarding
"onboard_page_title_1" = "Bienvenue chez ServBay";
"onboard_page_desc_1" = "L'outil essentiel pour les développeurs web.";
"onboard_page_title_2" = "Sites Web faciles à gérer";
"onboard_page_desc_2" = "Cliquez, remplissez, ajoutez – c'est tout ce qu'il faut. Votre nouveau projet web vous attend.";
"onboard_page_title_3" = "Suite complète !";
"onboard_page_desc_3" = "Serveur web, langages de programmation, bases de données, NoSQL, même DNS et e-mail - nous avons tous les outils dont vous avez besoin. Il suffit de cliquer pour installer ou mettre à niveau dans Services.";
"onboard_page_title_4" = "Ligne de commande prise en charge";
"onboard_page_desc_4" = "Codez comme un pro. Exécutez des scripts et gérez les bases de données à votre manière.";
"onboard_page_title_5" = "Toutes les ressources dont vous avez besoin";
"onboard_page_desc_5" = "Vous ne savez pas comment commencer ? Besoin d'aide ? Envie de donner votre avis ou de discuter ? Voici quelques ressources utiles pour vous.";
"onboard_tools" = "Outils";
"onboard_support_community" = "Support & Communauté";
"onboard_follow" = "Suivez ServBay sur";
"onboard_subheadline_1" = "Ouvrir le site de démonstration";
"onboard_subheadline_2" = "Gérer les bases de données avec phpMyAdmin";
"onboard_subheadline_3" = "Gérer les bases de données avec Adminer";
"onboard_subheadline_4" = "Obtenir de l'aide sur le Centre de support";
"onboard_subheadline_5" = "Regarder une vidéo tutorielle sur Youtube";
"onboard_subheadline_6" = "Discuter avec des gens cool sur la communauté Discord";

// sign in
"help_tips_user_icon_not_login" = "Se connecter";
"signin_with_title" = "Se connecter à ServBay";
"signin_with_desc" = "Connectez-vous à ServBay pour débloquer plus de fonctionnalités";
"signin_with_following_service" = "Inscrivez-vous ou connectez-vous avec l'un des services suivants";
"signin_with_google" = "Continuer avec Google";
"signin_with_github" = "Continuer avec Github";
"signin_with_apple" = "Continuer avec Apple ID";
"signin_with_microsoft" = "Continuer avec Microsoft";
"signin_with_email" = "Continuer avec l’e-mail";
"signin_with_wechat" = "Continuer avec WeChat";
"signin_alert_title" = "Échec de la connexion utilisateur";
"signin_alert_text" = "Veuillez vérifier le message d'erreur et vous reconnecter.";

// vip
"upgrade_signin_title" = "Se connecter à ServBay";
"upgrade_signin_maxhost" = "Les utilisateurs non enregistrés ne peuvent ajouter que 3 hôtes.\n\nVous souhaitez ajouter plus d'hôtes ? Inscrivez-vous gratuitement à un compte ServBay maintenant pour débloquer plus d'hôtes et des fonctionnalités supplémentaires !";
"upgrade_signin_php_extension" = "Vous devez vous connecter à ServBay pour utiliser les fonctionnalités Pro gratuites.\n\nVous souhaitez gérer les extensions PHP librement ? Inscrivez-vous gratuitement à un compte ServBay maintenant pour débloquer la gestion des extensions PHP, ajouter plus d'hôtes et accéder à des fonctionnalités supplémentaires !";
"upgrade_signin_common" = "Vous devez vous connecter à ServBay pour utiliser les fonctionnalités Pro gratuites.";
"upgrade_vip_features" = "Fonctionnalités Pro";
"upgrade_vip_title" = "Débloquez les fonctionnalités Pro";
"upgrade_vip_free_title" = "Fonctionnalités Pro Gratuites";
"upgrade_vip_slogan" = "Mettez à niveau vers %@ pour accéder à toutes les fonctionnalités disponibles !";
"upgrade_vip_list_title_1" = "Gestion illimitée de sites Web et d'hôtes";
"upgrade_vip_list_desc_1" = "Prend en charge un nombre illimité d'hébergements de sites Web, des ports HTTP/HTTPS personnalisables et des configurations d'hôte avancées telles que plusieurs domaines et alias.";
"upgrade_vip_list_title_2" = "Gestion illimitée des enregistrements DNS et des fichiers Hosts";
"upgrade_vip_list_desc_2" = "Fournit des capacités de gestion illimitée des enregistrements DNS et permet une gestion facile des fichiers hosts locaux, facilitant la résolution de domaine et le débogage de développement local.";
"upgrade_vip_list_title_3" = "Configuration flexible des services et instances de base de données multiples";
"upgrade_vip_list_desc_3" = "Personnalisez facilement les configurations pour les langages de développement comme Python, PHP, Node.js, et les services comme MySQL, PostgreSQL, MongoDB, Redis, et prend en charge plusieurs instances de base de données fonctionnant simultanément.";
"upgrade_vip_list_title_4" = "Services complets de certificats SSL";
"upgrade_vip_list_desc_4" = "Certificats SSL gratuits (via le protocole ACME, prenant en charge Let's Encrypt, ZeroSSL, Google Trust Services, etc.), prend en charge les certificats multi-domaines (SAN), les certificats wildcard et le renouvellement automatique des certificats SSL.";
"upgrade_vip_list_title_5" = "Système PKI et prise en charge de certificats avancés";
"upgrade_vip_list_desc_5" = "Système PKI complet intégré, prend en charge la création de certificats CA privés illimités, ainsi que des certificats S/MIME, de signature de code et de signature de document gratuits.";
"upgrade_vip_list_title_6" = "Tunnels avancés et proxy inversé";
"upgrade_vip_list_desc_6" = "Exposez facilement les environnements de développement locaux à l'internet public via des tunnels sécurisés, prenant en charge les tunnels intégrés de ServBay et divers services comme Cloudflared, FRP, Ngrok, Pinggy.io.";
"upgrade_vip_list_title_7" = "Serveur de messagerie intégré";
"upgrade_vip_list_desc_7" = "Fonctionnalité de serveur de messagerie intégrée pour un développement local pratique et le test des applications d'envoi et de réception d'e-mails.";
"upgrade_vip_list_title_8" = "Sauvegardes automatisées et stockage externe";
"upgrade_vip_list_desc_8" = "Fournit un mécanisme de sauvegarde automatique et prend en charge le stockage sécurisé des données de sauvegarde sur des emplacements externes, garantissant la sécurité des données.";
"upgrade_vip_list_title_9" = "Prise en charge CORS inter-origines";
"upgrade_vip_list_desc_9" = "Prise en charge CORS (Cross-Origin Resource Sharing) intégrée, simplifiant la configuration et la gestion des requêtes inter-origines pendant le développement.";
"upgrade_vip_list_title_10" = "Support technique prioritaire";
"upgrade_vip_list_desc_10" = "Une équipe technique professionnelle fournit des services d'assistance prioritaires via divers canaux tels que l'e-mail, Telegram, Discord, WhatsApp et WeChat.";
"upgrade_vip_list_title_11" = "Plus de fonctionnalités et services exclusifs";
"upgrade_vip_list_desc_11" = "Mis à jour en continu, avec plus de services exclusifs, d'outils avancés et d'améliorations de fonctionnalités à débloquer à l'avenir.";
"upgrade_pro_label" = "ServBay Pro";
"plan_badge_upgrade_slogan" = "Passez à ServBay Pro dès aujourd'hui !";
"plan_badge_trial_expired_on" = "La période d'essai expire le : %@";
"plan_badge_trial_info_not_found" = "Informations sur la période d'essai non disponibles";
"plan_badge_plan_member_since" = "Membre depuis : %@";
"plan_badge_plan_info_not_found" = "Informations sur le plan non disponibles";
"plan_badge_billing_cycle_monthly" = "Mensuel";
"plan_badge_billing_cycle_yearly" = "Annuel";
"plan_badge_billing_cycle_trial" = "Essai";
"vip_proud_member_slogan" = "Vous êtes un membre précieux dont nous sommes fiers.";

// DNS
"upgrade_7day_free_trial" = "Essai gratuit de 7 jours";
"dns_nav_dns" = "Serveur DNS";
"dns_nav_hosts" = "Fichier hosts";
"dns_nav_hosts_domain" = "Géré par \"%@\"";
"dns_nav_add" = "Ajouter un domaine à %@";
"dns_add_text" = "Ajouter un domaine";
"dns_add_domain" = "Domaine";
"dns_add_domain_prompt" = "Par exemple, servbay, servbay.local ou demo.servbay.test";
"dns_add_ip" = "Adresse(s) IP";
"dns_add_ip_prompt" = "Adresse(s) IPv4/v6, séparer les entrées multiples par une virgule(,). Par exemple, 127.0.0.1, ::1";
"dns_add_type" = "Ajouter à";
"dns_website_domain_not_editable" = "Le domaine %@ appartient à un site web et ne peut pas être modifié dans le DNS.";
"dnsmasq_config" = "Configuration dnsmasq";
"dns_port" = "Port DNS";
"listen_address" = "Adresse d’écoute";
"bind_interfaces" = "Associer l’interface";
"no_hosts" = "Ne pas lire le fichier Hosts";
"cache_size" = "Taille du cache";
"local_ttl" = "TTL local";
"disable_negative_cache" = "Désactiver le cache négatif";
"upstream_servers" = "Serveur en amont";
"dns_server_address" = "Adresse du serveur DNS";
"add_server" = "Ajouter un serveur";
"strict_order" = "Ordre strict";
"log_queries" = "Enregistrer les journaux de requête";
"log_file_path" = "Chemin du fichier journal";
"filter_private_ip" = "Filtrer les IP privées";
"prevent_dns_rebinding" = "Empêcher la réinitialisation du DNS";
"max_concurrent_queries" = "Nombre maximal de requêtes simultanées";
"config_directory" = "Répertoire de configuration";
"run_as_user" = "Utilisateur en cours d’exécution";
"leave_empty_for_default" = "Laisser vide pour utiliser la valeur par défaut";
"leave_empty_if_not_used" = "Laisser vide si non utilisé";
"validation_failed" = "Échec de la vérification";
"config_saved" = "Configuration enregistrée";
"config_saved_restart_message" = "La configuration a été enregistrée. Le service dnsmasq doit être redémarré pour que la configuration prenne effet. Voulez-vous le redémarrer maintenant ?";
"config_saved_restarting" = "La configuration a été enregistrée, redémarrage du service dnsmasq en cours...";
"restart_now" = "Redémarrer maintenant";
"restart_later" = "Redémarrer plus tard";
"save_failed" = "Échec de l’enregistrement";
"save_failed_message" = "Échec de l’enregistrement de la configuration. Veuillez vérifier les autorisations du fichier ou réessayer plus tard.";
"upstream_dns_mode_system" = "DNS système";
"upstream_dns_mode_custom" = "Personnaliser";
"upstream_dns_system_hint" = "Le serveur DNS actuel du système sera automatiquement utilisé comme serveur amont, et la dernière configuration DNS du système sera lue à chaque enregistrement.";
"upstream_dns_custom_hint" = "Configurer manuellement la liste des serveurs DNS en amont";
"load_system_dns" = "Lire depuis le système";

// dashboard
"dashboard_web_server" = "Serveur Web";
"dashboard_php" = "PHP";
"dashboard_mariadb" = "MariaDB";
"dashboard_mysql" = "MySQL";
"dashboard_postgresql" = "PostgreSQL";
"dashboard_mongodb" = "MongoDB";
"dashboard_nosql" = "NoSQL";
"dashboard_dns" = "DNS";
"dashboard_redis" = "Redis";
"dashboard_memcached" = "Memcached";
"dashboard_search" = "Recherche";
"dashboard_tunnel" = "Tunnel";
"dashboard_overview" = "Aperçu";
"dashboard_cpuload" = "Charge CPU";
"dashboard_cpuload_system" = "Système";
"dashboard_cpuload_user" = "Utilisateur";
"dashboard_cpuload_nice" = "Nice";
"dashboard_cpuload_idle" = "Inactif";
"dashboard_cpu_usage_history" = "Historique d'utilisation CPU";
"dashboard_memory" = "Mémoire";
"dashboard_memory_pressure" = "Pression";
"dashboard_memory_app" = "App";
"dashboard_memory_wired" = "Câblé";
"dashboard_memory_compressed" = "Compressé";
"dashboard_storage" = "Stockage";
"dashboard_network" = "Réseau";
"dashboard_network_upload" = "Upload";
"dashboard_network_download" = "Download";
"dashboard_system_monitor" = "Charge système";

// starred
"starred_friendly_remind_title" = "Les hôtes favoris seront repliés";
"starred_friendly_remind_text" = "Trop d'hôtes favoris n'amélioreront pas l'efficacité de gestion. Nous vous recommandons d'ajouter seulement 5 hôtes favoris. Les hôtes favoris supplémentaires seront repliés dans la barre de menus.";
"starred_first_title" = "Accès rapide à votre hôte";
"starred_first_text" = "En ajoutant une étoile à un hôte, vous pouvez accéder rapidement à l'hôte dans la liste des hôtes et dans la barre de menus, améliorant ainsi l'efficacité du travail.";

// features
"new_features_139_1_title" = "Recherche maintenant prise en charge pour les hôtes et DNS";
"new_features_139_1_text" = "Nous avons introduit une nouvelle fonctionnalité de recherche. Désormais, vous pouvez facilement rechercher sur les pages des hôtes ou DNS. Cela est très pratique lorsque vous avez un grand nombre d'hôtes ou de domaines à gérer.";
"new_features_139_2_title" = "Nouvelle fonctionnalité d'ajout d'étoiles";
"new_features_139_2_text" = "Vous pouvez désormais ajouter des étoiles aux hôtes que vous utilisez fréquemment. Avec la fonctionnalité d'étoiles, les hôtes peuvent être épinglés en haut de la liste pour une recherche facile. De plus, les hôtes étoilés peuvent être rapidement accessibles depuis la barre de menus, ce qui apporte une grande commodité au travail de développement.";
"new_features_140_1_title" = "Nouvelle interface de gestion des services et prise en charge de MySQL";
"new_features_140_1_text" = "Désormais, vous pouvez utiliser MySQL dans ServBay. En plus d'une toute nouvelle interface de gestion des services, nous vous proposons toutes les versions de MySQL 5.1 à MySQL 9.0, répondant à tous vos besoins de gestion des données.";
"new_features_140_2_title" = "Nouvelles fonctionnalités de gestion de base de données";
"new_features_140_2_text" = "Avec les nouvelles fonctionnalités de gestion de base de données, vous pouvez configurer et gérer en détail des bases de données comme MariaDB, MySQL et Redis, jusqu'à chaque version. Vous pouvez effectuer des configurations uniques pour différentes versions, y compris des numéros de port personnalisés, des modifications de mot de passe, des importations de données et des sauvegardes.";
"new_features_140_3_title" = "Paramètres par défaut du serveur SQL";
"new_features_140_3_text" = "Avec l'introduction de la nouvelle prise en charge de MySQL, vous pouvez désormais configurer la base de données SQL par défaut. Vous pouvez choisir MariaDB ou MySQL comme base de données par défaut, facilitant ainsi le développement d'applications.";
"new_features_140_4_title" = "Prise en charge des règles de réécriture";
"new_features_140_4_text" = "Nous savons que vos applications sont variées, c'est pourquoi nous prenons désormais en charge la configuration des règles de réécriture. Vous pouvez facilement choisir la configuration URL Rewrite appropriée pour vos programmes Laravel, WordPress, ThinkPHP, etc. Vous ne savez pas laquelle choisir ? Optez simplement pour la configuration par défaut !";
"new_features_140_5_title" = "Prise en charge de plusieurs domaines et ports personnalisés";
"new_features_140_5_text" = "À nos utilisateurs Pro qui nous soutiennent depuis le début, votre nouvelle fonctionnalité exclusive est arrivée ! Désormais, vous pouvez saisir plusieurs domaines différents pour votre site Web et spécifier différents ports d'accès, tout cela à votre convenance. Le développement n'a jamais été aussi facile.";

// common
"version_title" = "Configuration de %@";
"bind_ip" = "Lier IP";
"bind_port" = "Lier le port";
"skip_networking" = "Ignorer le réseau";
"datadir" = "Répertoire de données";
"socket" = "Socket";
"additional_parameters" = "Paramètres supp.";

// redis
"redis_title" = "Configuration du service Redis";
"redis_run_mode" = "Mode de fonctionnement";
"redis_run_mode_master" = "Maître";
"redis_run_mode_slave" = "Esclave";
"redis_bind_ip_prompt" = "127.0.0.1 ::1";
"redis_bind_port_prompt" = "6379";
"redis_master_ip" = "IP du maître";
"redis_master_ip_prompt" = "10.0.0.2";
"redis_master_port" = "Port du maître";
"redis_protected_mode" = "Mode protégé";
"redis_require_password" = "Nécessite un mot de passe";
"redis_password" = "Mot de passe";
"redis_log_level" = "Niveau de journalisation";
"redis_password_not_set" = "Veuillez définir un mot de passe";
"redis_flush_button" = "Vider toutes les données";
"redis_flush_confirm_title" = "Êtes-vous sûr de vouloir vider toutes les données Redis ?";
"redis_flushed" = "Données Redis vidées.";

// memcached
"memcached_title" = "Configuration du service Memcached";
"memcached_memory" = "Mémoire (Mo)";
"memcached_connections" = "Connexions";

// mysql
"mysql_bind_ip_prompt" = "Laisser vide ou séparer par des virgules, par ex. 0.0.0.0,::";
"mysql_bind_port_prompt" = "3306";
"mysql_slowquerylog" = "Journal des requêtes lentes";
"mysql_slowquerylog_file" = "Fichier de journal des requêtes lentes";
"mysql_additional_parameters" = "Paramètres supplémentaires [mysqld]";

// postgresql
"pg_socket_only" = "Seulement Socket";
"pg_allow_remote_access" = "Autoriser les connexions à distance";
"pg_remote_cidrs" = "CIDR IP autorisés";
"pg_remote_cidrs_prompt" = "0.0.0.0/0, ::/0";
"pg_max_connections" = "Connexions max";
"pg_shared_buffers" = "Tampons partagés";
"pg_work_mem" = "Mémoire de travail";
"pg_wal_buffers" = "Tampons WAL";
"pg_max_wal_size" = "Taille max WAL";
"pg_min_wal_size" = "Taille min WAL";
"pg_command_line" = "Ligne de commande";

// php
"php_title" = "%@ Configuration du service";
"php_fpm_title" = "PHP FPM";
"php_fpm_pm" = "Gest. de proc.";
"php_fpm_pm_max_children" = "Enfants max";
"php_fpm_pm_start_servers" = "Démarr. serv.";
"php_fpm_pm_min_spare_servers" = "Min serv.";
"php_fpm_pm_max_spare_servers" = "Max serv.";
"php_fpm_pm_max_requests" = "Requêtes max";
"php_fpm_listen_mode" = "Mode d'écoute";
"php_fpm_display_error" = "Afficher les erreurs";
"php_fpm_memory_limit" = "Limite de mémoire";
"php_fpm_socket_file" = "Socket";
"php_fpm_listen_address" = "Adresse d'écoute";
"php_fpm_log_level" = "Niveau de journalisation";
"php_fpm_log_file" = "Fichier journal FPM";
"php_fpm_log_error" = "Journal erreurs FPM";
"php_fpm_errorlog_file" = "Fichier journal des erreurs FPM";
"php_fpm_slowlog" = "Journal lent";
"php_fpm_slowlog_file" = "Fichier journal lent";
"php_fpm_timeout" = "Délai d'attente";
"php_ini_title" = "php.ini";
"php_ini_expose_php" = "Exposer PHP";
"php_ini_shortopentag" = "Balise courte";
"php_ini_fix_pathinfo" = "Corriger pathinfo";
"php_ini_max_execution_time" = "Durée exec. max";
"php_ini_max_input_time" = "Temps d'entrée max";
"php_ini_memory_limit" = "Limite de mémoire";
"php_ini_implicitflush" = "Vidage implicite";
"php_ini_output_compression" = "Comp. de sortie";
"php_ini_enable_dl" = "Activer dl()";
"php_ini_enable_gc" = "Activer GC";
"php_ini_report_memleaks" = "Rapport fuites mém.";
"php_ini_output_buffering" = "Tampon sortie";
"php_ini_display_errors" = "Afficher les erreurs";
"php_ini_display_startup_errors" = "Afficher les erreurs de démarrage";
"php_ini_log_errors" = "Journal les erreurs";
"php_ini_error_reporting" = "Rapport d'erreurs";
"php_ini_errorlog_file" = "Fichier journal des erreurs PHP";
"php_ini_open_basedir" = "open_basedir";
"php_ini_open_basedir_prompt" = "Laisser vide ou séparer par des deux-points, par exemple /tmp/:/Applications/ServBay/www";
"php_ini_disable_functions" = "disable_functions";
"php_ini_disable_functions_prompt" = "Laisser vide ou séparer par des virgules, par exemple system,exec,shell_exec";
"php_ini_disable_classes" = "disable_classes";
"php_ini_disable_classes_prompt" = "Laisser vide ou séparer par des virgules, par exemple readfile,system";
"php_ini_post_max_size" = "Taille post max";
"php_ini_file_uploads" = "Téléch. fichiers";
"php_ini_upload_max_filesize" = "Taille fichier max";
"php_ini_max_file_uploads" = "Nb téléch. max";
"php_ini_upload_tmp_dir" = "Répertoire d'upload temporaire";
"php_ini_upload_tmp_dir_prompt" = "Laisser vide pour utiliser la valeur par défaut du système";
"php_ini_post_max_size_alert" = "'post_max_size' doit être inférieur à 'memory_limit'.";
"php_ini_upload_max_filesize_alert" = "'upload_max_filesize' doit être inférieur à 'post_max_size' et 'memory_limit'.";
"php_ini_timezone" = "Fuseau horaire";
"php_ini_sendmail_path" = "Sendmail";
"php_ini_allow_url_fopen" = "URL fopen";
"php_ini_allow_url_include" = "URL include";
"php_ini_default_socket_timeout" = "Délai d'attente du socket";
"php_opcache_memory_consumption" = "Conso. mémoire";
"php_opcache_interned_strings_buffer" = "Tampon chaînes";
"php_opcache_max_accelerated_files" = "Fichiers max acc.";
"php_opcache_revalidate_freq" = "Freq. révalid.";
"php_opcache_enable_cli" = "Activer CLI";
"php_opcache_enable_jit" = "Activer JIT";
"php_opcache_jit_crto" = "CRTO";
"php_opcache_jit_buffer_size" = "Taille tampon";
"php_scws_charset" = "Jeu de caractères";
"php_scws_fpath" = "Chemin de fichier par défaut";
"php_xdebug_mode" = "Mode Xdebug";
"php_xdebug_start_with_request" = "Démarr. avec req.";
"php_xdebug_client_port" = "Port client";
"php_extension_enabled_default" = "Certains modules d'extension PHP (tels que pgsql, sqlite, etc.) sont activés par défaut et n'ont pas besoin d'être activés manuellement. Les modules spécifiquement activés sont ceux indiqués par phpinfo().";

// SSL
"ssl_migrate_new_version_title" = "Mettre à niveau vers la nouvelle gestion SSL";
"ssl_migrate_new_version_text" = "De nouvelles fonctionnalités de gestion SSL ont été lancées, offrant une fonctionnalité et une sécurité renforcées. Veuillez appuyer sur le bouton OK pour migrer vos certificats SSL actuels vers la nouvelle plateforme.";
"ssl_common_name" = "Nom commun";
"ssl_san" = "Nom alternatif du sujet";
"ssl_serial_number" = "Numéro de série";
"ssl_usage_purpose" = "But d'utilisation";
"ssl_algorithm" = "Algorithme";
"ssl_key_lengh" = "Longueur de clé";
"ssl_algorithm_and_key_lenght" = "Algorithme";
"ssl_issuer" = "Émetteur";
"ssl_issued_at" = "Émis";
"ssl_expired_at" = "Expiré";
"ssl_request_method" = "Méthode de demande";
"ssl_buy_certificate_link" = "Acheter un certificat SSL";
"ssl_managed_by" = "Géré par";
"ssl_cert_status" = "Statut";
"ssl_action" = "Action";
"ssl_renew_alert_title" = "Renouveler le certificat SSL";
"ssl_renew_alert_text" = "Êtes-vous sûr de vouloir renouveler le certificat SSL ?";
"ssl_renew_successful_tips" = "Certificat SSL '%@' renouvelé avec succès";
"ssl_delete_alert_title" = "Supprimer le certificat SSL";
"ssl_delete_alert_text" = "Êtes-vous sûr de vouloir supprimer le certificat SSL '%@' ?";
"ssl_delete_successful_tips" = "Certificat SSL '%@' supprimé avec succès";
"ssl_new_certificate_button_tips" = "Demander un nouveau certificat SSL";
"ssl_tls_certificate_export_button_tips" = "Exporter le certificat '%@' et la clé privée au format zip.";
"ssl_tls_open_folder_button_tips" = "Ouvrir le dossier du certificat '%@'.";
"ssl_new_certificate_title" = "Demander un certificat";
"ssl_new_certificate_common_name_prompt" = "Ex. Mon site Web";
"ssl_new_certificate_san_domain_prompt" = "Domaines séparés par des virgules, ex servbay.host, *.servbay.host";
"ssl_new_certificate_san_email_prompt" = "Adresse e-mail, séparée par des virgules, ex test@servbay.host";
"ssl_new_certificate_san_wildcard_error_prompt" = "Ne peut pas commencer par un wildcard(*), placez le domaine wildcard à la fin de la liste, ex servbay.host,*.servbay.host";
"ssl_new_certificate_san_wildcard_upgrade_pro_prompt" = "Seul ServBay Pro prend en charge le domaine wildcard(*), veuillez passer à ServBay Pro.";
"ssl_new_certificate_san_domain_exists_prompt" = "Ne peut pas commencer par '%@', le certificat existe déjà.";
"ssl_new_certificate_san_email_error_prompt" = "E-mail invalide";
"ssl_new_certificate_san_email_exists_prompt" = "Ne peut pas commencer par '%@', le certificat existe déjà.";
"ssl_new_certificate_san_email_upgrade_pro_prompt" = "Seul ServBay Pro prend en charge plusieurs adresses e-mail, veuillez passer à ServBay Pro.";
"ssl_new_certificate_san_domain_title" = "Domaine";
"ssl_new_certificate_san_email_title" = "Adresse e-mail";
"ssl_issue_successful_tips" = "Certificat '%@' émis avec succès";
"ssl_common_name_invalid" = "Nom invalide ou certificat existant.";
"ssl_issuer_credentials_button" = "Afficher les informations d'identification de validation";
"ssl_eabkid_title" = "ID de clé EAB";
"ssl_eabkid_tips" = "xxxxxxxxxxxxxxxxx";
"ssl_eabhmackey_title" = "Clé HMAC EAB";
"ssl_eabhmackey_tips" = "xxxxxxxx_xxxxxxxxxxxxx";
"ssl_certificate_used_by_host_title" = "Certificat en cours d'utilisation";
"ssl_certificate_used_by_host_tips" = "Le certificat '%@' est utilisé par le site Web '%@' et ne peut pas être supprimé.";
"ssl_dnsapi_provider_title" = "Fournisseur d'API DNS";
"ssl_dnsapi_provider_token_button" = "Afficher les jetons d'API DNS";
"ssl_dnsapi_provider_token_title" = "Jetons d'API DNS";
"ssl_dnsapi_provider_token_example" = "Exemple :";
"ssl_acmesh_not_installed_title" = "acme.sh non installé";
"ssl_acmesh_not_installed_desc" = "Pour demander un certificat en utilisant la méthode ACME, vous devez installer le package \"acme.sh\". Veuillez l'installer dans le panneau \"Services\".";
"ssl_acmesh_enable_debug_button" = "Activer le débogage";
"ssl_acmesh_force_request_button" = "Demande forcée";
"ssl_acmesh_dnssleep_button" = "Ignorer l’auto-vérification DNS";
"ssl_acmesh_dnssleep_seconds" = "Secondes d’attente";
"ssl_acmesh_dnssleep_help" = "Temps d’attente de propagation DNS, ignore l’auto-vérification du DNS local, adapté aux cas où le DNS local est détourné (comme en mode fake-ip)";
"ssl_usage_purpose_tls" = "TLS/SSL";
"ssl_usage_purpose_smime" = "S/MIME (Signature d'e-mail)";
"ssl_usage_purpose_code" = "Signature de code";
"ssl_usage_purpose_document" = "Signature de document";
"ssl_certificate_request_method_servbay" = "ServBay CA";
"ssl_certificate_request_method_public" = "CA public (ACME)";
"ssl_certificate_request_method_import" = "Importer";

// mailpit
"mailpit_title" = "Configuration du service Mailpit";
"mailpit_nav_common" = "Commun";
"mailpit_nav_smtp" = "SMTP";
"mailpit_nav_pop3" = "POP3";
"mailpit_nav_relay" = "Relais";
"mailpit_max_messages" = "Messages Max";
"mailpit_max_age" = "Durée Max";
"mailpit_enable_spam_assassin" = "SpamAssassin";
"mailpit_spam_assassin_method" = "Méthode";
"mailpit_spam_assassin_server_ip" = "IP du Serveur";
"mailpit_spam_assassin_server_port" = "Port";
"mailpit_webhook_url" = "URL du Webhook";
"mailpit_webhook_limit" = "Limite du Webhook";
"mailpit_smtp_port" = "Port SMTP";
"mailpit_smtp_starttls" = "STARTTLS";
"mailpit_smtp_require_tls" = "SSL/TLS";
"mailpit_smtp_auth_username" = "Nom d'utilisateur";
"mailpit_smtp_auth_password" = "Mot de passe";
"mailpit_smtp_max_recipients" = "Max Destinataires";
"mailpit_smtp_allowed_recipients" = "Destinataires Autorisés";
"mailpit_enable_pop3" = "Activer le Serveur POP3";
"mailpit_pop3_port" = "Port du Serveur POP3";
"mailpit_pop3_username" = "Nom d'utilisateur";
"mailpit_pop3_password" = "Mot de passe";
"mailpit_pop3_enable_tls" = "SSL/TLS";
"mailpit_smtp_relay_host" = "Hôte";
"mailpit_smtp_relay_port" = "Port";
"mailpit_smtp_relay_starttls" = "STARTTLS";
"mailpit_smtp_relay_allow_insecure" = "Autoriser Insecure";
"mailpit_smtp_relay_auth" = "Auth";
"mailpit_smtp_relay_username" = "Nom d'utilisateur";
"mailpit_smtp_relay_password" = "Mot de passe";
"mailpit_smtp_relay_secret" = "Secret";
"mailpit_smtp_relay_return_path" = "Chemin de Retour";
"mailpit_smtp_relay_allowed_recipients" = "Destinataires Autorisés";
"mailpit_smtp_relay_blocked_recipients" = "Destinataires Bloqués";
"mailpit_smtp_relay_all" = "Relais Tout";
"mailpit_smtp_relay_matching" = "Relais Correspondant";
"mailpit_enable_smtp_relay" = "Activer le Relais SMTP";

// WebServer
"webserver_nav_apache" = "Apache";
"webserver_nav_nginx" = "NGINX";
"webserver_nav_caddy" = "Caddy";
"webserver_http_port" = "Port HTTP";
"webserver_https_port" = "Port HTTPS";
"webserver_bind_ip" = "Lier l’IP";
"webserver_modules" = "Module";
"webserver_ssl_protocals" = "Protocole SSL";

// MySQL/MariaDB/PostgreSQL
"db_reset_root_password_title" = "Réinitialiser le mot de passe de l'utilisateur root";
"db_reset_root_password_desc" = "Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur root ?";
"db_change_root_password_title" = "Changer le mot de passe de l'utilisateur root";
"db_change_root_password_desc" = "Êtes-vous sûr de vouloir changer le mot de passe de l'utilisateur root ?";
"db_reset_root_password_alert_desc" = "Réinitialisation du mot de passe de l'utilisateur root...";
"db_reset_root_password_success" = "Mot de passe de l'utilisateur root réinitialisé avec succès";
"db_reset_root_password_failed" = "Échec de la réinitialisation du mot de passe de l'utilisateur root";
"db_change_root_password_alert_desc" = "Changement du mot de passe de l'utilisateur root...";
"db_change_root_password_success" = "Mot de passe de l'utilisateur root changé avec succès";
"db_change_root_password_failed" = "Échec du changement du mot de passe de l'utilisateur root";
"web_server_migrating_tip" = "Migration de %@";
"web_server_migrating_tip_failed" = "Migration de %@ (configuration personnalisée %@ non prise en charge)";

// System Diagnostics
"system_diagnostics_yes" = "Oui";
"system_diagnostics_no" = "Non";
"system_diagnostics_correct" = "Correct";
"system_diagnostics_incorrect" = "Incorrect";
"system_diagnostics_user_info" = "Informations utilisateur";
"system_diagnostics_system_info" = "Informations système";
"system_diagnostics_servbay_info" = "Informations sur l'application ServBay";
"system_diagnostics_port_check" = "Vérification du port";
"system_diagnostics_root_certificate_check" = "Vérification du certificat racine et de la chaîne de certificats";
"system_diagnostics_software_package_check" = "Vérification du package logiciel";
"system_diagnostics_config_check" = "Vérification de la configuration";
"system_diagnostics_service_status_check" = "Vérification de l'état du service";
"system_diagnostics_ai_gateway_check" = "Vérification de la passerelle IA";
"system_diagnostics_mcp_server_check" = "Vérification du serveur MCP";
"system_diagnostics_website_check" = "Vérification du site web";
"system_diagnostics_dns_status_check" = "Diagnostic de l’état DNS";
"system_diagnostics_dns_checking_service" = "Vérifier le service dnsmasq";
"system_diagnostics_dns_service_running" = "En cours d’exécution";
"system_diagnostics_dns_service_stopped" = "Arrêté (activé mais non en cours d’exécution)";
"system_diagnostics_dns_service_disabled" = "Désactivé";
"system_diagnostics_dns_service_status" = "État du service dnsmasq";
"system_diagnostics_dns_checking_system_config" = "Vérifier la configuration DNS du système";
"system_diagnostics_system_dns" = "DNS système";
"system_diagnostics_dns_external" = "DNS externe";
"system_diagnostics_dns_rollback_file" = "Fichier de restauration DNS";
"system_diagnostics_dns_testing_local_server" = "Tester la réponse du serveur DNS local";
"system_diagnostics_dns_local_server_test" = "Test du serveur DNS local";
"system_diagnostics_dns_responding" = "Réponse normale";
"system_diagnostics_dns_not_responding" = "Sans réponse";
"system_diagnostics_dns_testing_public_domains" = "Tester la résolution du nom de domaine public";
"system_diagnostics_dns_analyzing" = "Analyser les résultats du diagnostic DNS";
"system_diagnostics_dns_diagnosis" = "Résultat du diagnostic";
"system_diagnostics_dns_config_error" = "Erreur de configuration DNS";
"system_diagnostics_dns_issue_detail" = "Détails du problème";
"system_diagnostics_dns_config_error_detail" = "Le service dnsmasq n'est pas en cours d'exécution, mais le DNS système est toujours configuré sur 127.0.0.1, ce qui empêche la résolution des noms de domaine.";
"system_diagnostics_dns_service_not_running" = "Le service dnsmasq devrait être en cours d’exécution mais ne l’est pas.";
"system_diagnostics_dns_suggestion" = "Suggestion";
"system_diagnostics_dns_suggest_start_service" = "Veuillez démarrer le service dnsmasq ou désactiver dnsmasq dans les paramètres.";
"system_diagnostics_dns_resolution_failed" = "Échec de la résolution de tous les noms de domaine";
"system_diagnostics_dns_possible_cause" = "Causes possibles";
"system_diagnostics_dns_upstream_issue" = "Le serveur DNS amont de dnsmasq pourrait être inaccessible, veuillez vérifier la connexion réseau.";
"system_diagnostics_dns_network_issue" = "Il se peut qu'il y ait un problème de connexion réseau ou que le serveur DNS soit indisponible.";
"system_diagnostics_dns_partial_failure" = "Échec partiel de la résolution de certains noms de domaine";
"system_diagnostics_dns_partial_failure_reason" = "Certains noms de domaine peuvent être bloqués ou la connexion réseau peut être instable";
"system_diagnostics_dns_all_normal" = "Le service DNS fonctionne normalement";
"system_diagnostics_dns_checking_upstream" = "Vérifier le serveur DNS en amont";
"system_diagnostics_dns_upstream_servers" = "Serveur DNS amont";
"system_diagnostics_dns_upstream_responding" = "Réponse normale";
"system_diagnostics_dns_upstream_not_responding" = "Sans réponse";
"system_diagnostics_dns_upstream_test" = "Test DNS en amont";
"system_diagnostics_dns_performance" = "Statistiques de performance DNS";
"system_diagnostics_dns_performance_stats" = "Moyenne %.0fms | Plus rapide %.0fms | Plus lent %.0fms";
"system_diagnostics_dns_performance_slow" = "La réponse DNS est très lente (>1 seconde). Il est recommandé de vérifier la connexion réseau ou de changer de serveur DNS.";
"system_diagnostics_dns_performance_warning" = "La réponse DNS est lente (>500 ms), ce qui peut affecter la vitesse d'accès au site web.";
"system_diagnostics_dns_manual_fix_suggestion" = "Conseil : veuillez désactiver manuellement dnsmasq dans les paramètres de ServBay, ou redémarrer le service dnsmasq.";
"system_diagnostics_login_status" = "État de connexion";
"system_diagnostics_logged_in" = "Connecté";
"system_diagnostics_not_logged_in" = "Non connecté";
"system_diagnostics_user_level" = "Niveau utilisateur";
"system_diagnostics_vip_user" = "Utilisateur VIP";
"system_diagnostics_free_user" = "Utilisateur gratuit";
"system_diagnostics_email" = "E-mail";
"system_diagnostics_subscribe_level" = "Niveau d'abonnement";
"system_diagnostics_trial" = "Essai";
"system_diagnostics_payment_cycle" = "Cycle de paiement";
"system_diagnostics_plan_status" = "État de l'abonnement";
"system_diagnostics_plan_start_date" = "Date de début de l'abonnement";
"system_diagnostics_plan_end_date" = "Date de fin de l'abonnement";
"system_diagnostics_trial_end_date" = "Date de fin de l'essai";
"system_diagnostics_current_time" = "Heure actuelle";
"system_diagnostics_cpu_architecture" = "Architecture CPU";
"system_diagnostics_servbay_runtime_architecture" = "Architecture d'exécution ServBay";
"system_diagnostics_os_version" = "Version du système d'exploitation";
"system_diagnostics_region_code" = "Code de région";
"system_diagnostics_language_code" = "Code de langue";
"system_diagnostics_servbay_language" = "Langue de ServBay";
"system_diagnostics_cpu_usage" = "Utilisation du CPU";
"system_diagnostics_memory" = "Mémoire";
"system_diagnostics_storage" = "Stockage";
"system_diagnostics_helper_running" = "En cours d'exécution";
"system_diagnostics_helper_not_installed" = "Non installé";
"system_diagnostics_helper_not_running" = "Non en cours d'exécution";
"system_diagnostics_helper_cannot_connect" = "Impossible de se connecter";
"system_diagnostics_helper_registered" = "Enregistré";
"system_diagnostics_helper_not_registered" = "Non enregistré";
"system_diagnostics_helper_allowed" = "Autorisé";
"system_diagnostics_helper_not_allowed" = "Non autorisé";
"system_diagnostics_helper_file" = "Fichier d'assistance";
"system_diagnostics_helper_registered_to_launchctl" = "Assistant enregistré dans launchctl";
"system_diagnostics_helper_allowed_on_login" = "Autoriser l'assistant à s'exécuter en arrière-plan";
"system_diagnostics_helper_version" = "Version de l'assistant";
"system_diagnostics_helper_running_status" = "État d'exécution de l'assistant";
"system_diagnostics_backup_task" = "Tâche de sauvegarde automatique";
"system_diagnostics_backup_task_installed_and_loaded" = "Installé et chargé";
"system_diagnostics_backup_script_not_found" = "Script de sauvegarde introuvable";
"system_diagnostics_backup_script_not_executable" = "Le script de sauvegarde n'est pas exécutable";
"system_diagnostics_backup_script_permission_error" = "Impossible de vérifier les autorisations du script";
"system_diagnostics_backup_plist_not_configured" = "Le plist source n'est pas configuré";
"system_diagnostics_backup_task_not_installed" = "La tâche de sauvegarde n’est pas installée";
"system_diagnostics_backup_task_not_loaded" = "La tâche de sauvegarde n'est pas chargée";
"system_diagnostics_backup_task_status_error" = "Impossible de vérifier l’état de la tâche";
"system_diagnostics_backup_task_fix_suggestion" = "Veuillez configurer et activer la sauvegarde automatique dans Réglages > Sauvegarde";
"system_diagnostics_latest_version" = "Dernière version : %@";
"system_diagnostics_required_version" = "Version actuelle %1$@, version minimale requise %2$@";
"system_diagnostics_shipped_version" = "%1$@ (Version d’usine : %2$@)";
"system_diagnostics_version" = "Version";
"system_diagnostics_runtime_version" = "Version d'exécution";
"system_diagnostics_script_version" = "Version de script";
"system_diagnostics_permission_file" = "Fichier de permission";
"system_diagnostics_port_occupied" = "Déjà utilisé - [%1$@] (pid:%2$@) (%3$@)";
"system_diagnostics_port_available" = "Disponible";
"system_diagnostics_servbay_in_use" = "ServBay est en cours d'utilisation";
"system_diagnostics_servbay_public_ca_status" = "ServBay Public CA";
"system_diagnostics_servbay_public_ca_installed_correctly" = "Installé correctement";
"system_diagnostics_servbay_public_ca_not_installed" = "Non installé";
"system_diagnostics_servbay_user_ca_status" = "ServBay User CA";
"system_diagnostics_servbay_user_ca_installed_correctly" = "Installé correctement";
"system_diagnostics_servbay_user_ca_not_installed" = "Non installé";
"system_diagnostics_servbay_user_ca_ecc_root" = "ServBay User CA - Certificat racine ECC";
"system_diagnostics_ssl_certificate_file_correct" = "Fichier de certificat SSL correct";
"system_diagnostics_ssl_certificate_file_incorrect" = "Fichier de certificat SSL incorrect";
"system_diagnostics_servbay_user_ca_ecc_intermediate" = "ServBay User CA - Certificat intermédiaire ECC";
"system_diagnostics_servbay_user_ca_certificate_chain" = "Chaîne de certificats ServBay User CA";
"system_diagnostics_certificate_chain_correct" = "Chaîne de certificats correcte";
"system_diagnostics_certificate_chain_incorrect" = "Chaîne de certificats incorrecte";
"system_diagnostics_certificate_configuration_error" = "Erreur de configuration du certificat";
"system_diagnostics_website_directory_not_found" = "Répertoire du site web introuvable ou incorrect";
"system_diagnostics_nginx_config_file_not_found" = "Fichier NGINX manquant ou erroné";
"system_diagnostics_website_directory_setting_error" = "Erreur de configuration du répertoire du site web";
"system_diagnostics_website_untitled" = "Site web sans titre";
"system_diagnostics_error_details" = "%@ Détails de l'erreur";
"system_diagnostics_not_running" = "%@ Ne fonctionne pas";
"system_diagnostics_not_initialized" = "Non initialisé";
"system_diagnostics_default_server" = "Serveur %@ par défaut";
"system_diagnostics_non_default_server" = "Serveur %@ non par défaut";
"system_diagnostics_domain_check" = "Vérification de domaine";
"system_diagnostics_tld_hijacked" = "Domaine/TLD [%@] détourné";
"system_diagnostics_tld_hijacked_hint" = "-> DNS: [%@]";
"system_diagnostics_demo_website_check" = "Vérification du site de démonstration";
"system_diagnostics_wait_hint" = "Veuillez patienter pour les résultats...";
"system_diagnostics_clash_running" = "❗️❗️Clash est en cours d'exécution, ce qui peut rendre les sites Web locaux inaccessibles ! Veuillez consulter le centre d'aide ServBay pour des solutions !";
"system_diagnostics_demo_website_deleted" = "Le site de démonstration a été supprimé";
"system_diagnostics_proxy" = "Serveur proxy";
"system_diagnostics_proxy_hint" = "Interface: %@\nServeur: %@";
"system_diagnostics_proxy_whitelist" = "Liste blanche de domaines";
"system_diagnostics_web_server" = "Serveur Web";
"system_diagnostics_access_via" = "Accès au port %2$@ via %1$@";
"system_diagnostics_php_connect_mysql" = "PHP se connecte à %@ [%@]";
"system_diagnostics_demo_website_disabled" = "Le site de démonstration a été désactivé";
"system_diagnostics_certificate_chain" = "Vérification de la chaîne de certificats [%@]";
"system_diagnostics_certificate_chain_detail" = "Émetteur [%1$@]\nDate d'émission [%2$@] Date d'expiration [%3$@]";

// configuration node.js
"nodejs_config_title" = "Configuration %@";
"nodejs_config_registry_default" = "Défaut %@";
"nodejs_config_registry_unset" = "(non défini)";
"nodejs_config_npm_registry_title" = "Registre npm/pnpm";
"nodejs_config_yarn_registry_title" = "Registre Yarn";
"nodejs_config_registry_url_prompt" = "Saisir l'URL du registre";
"nodejs_config_npm_cache_directory" = "Répertoire de cache NPM";
"nodejs_config_yarn_cache_directory" = "Répertoire de cache Yarn";

// python
"python_config_pip_mirror_title" = "Miroir de Pip";
"python_config_pip_mirror_url_prompt" = "Saisissez l'URL du miroir";

// AI
"ai_settings_title" = "Paramètres";
"ai_models_title" = "Modèles (%@)";
"ai_ollama_download_thread" = "Nombre de threads de téléchargement de modèle";
"ai_ollama_debug" = "Débogage";
"ai_ollama_flash_attention" = "Flash Attention";
"ai_ollama_no_history" = "Aucun historique";
"ai_ollama_no_prune" = "Pas d'élagage";
"ai_ollama_sched_spread" = "Schedule Spread";
"ai_ollama_multiuser_cache" = "Cache multi-utilisateur";
"ai_ollama_kv_cache_type" = "Type de cache K/V";
"ai_ollama_gpu_overhead" = "GPU Overhead";
"ai_ollama_keepalive" = "Maintenir en vie";
"ai_ollama_max_loaded_models" = "Nombre maximal de modèles chargés";
"ai_ollama_loadtimeout" = "Délai d'expiration du chargement";
"ai_ollama_maxqueue" = "File d'attente maximale";
"ai_ollama_num_parallel" = "Nombre parallèle";
"ai_ollama_llm_library" = "Bibliothèque LLM";
"ai_ollama_models" = "Dossier des modèles";
"ai_ollama_origins" = "Origins";
"ai_ollama_http_proxy" = "Proxy HTTP";
"ai_ollama_https_proxy" = "Proxy HTTPS";
"ai_ollama_no_proxy" = "Pas de proxy";
"ai_models_setting_name" = "Nom";
"ai_models_setting_model" = "Modèle";
"ai_models_setting_parameters" = "Paramètres";
"ai_models_setting_size" = "Taille du fichier";
"ai_models_setting_action" = "Action";
"ai_models_run" = "Exécuter le modèle %1$@:%2$@";
"ai_models_install_alert_title" = "Installer le modèle %1$@:%2$@";
"ai_models_delete_alert_title" = "Supprimer le modèle %1$@:%2$@";
"ai_models_delete_alert_text" = "Êtes-vous sûr de vouloir supprimer le modèle \"%1$@ (%2$@)\" ?";
"ai_models_delete_successful" = "Le modèle %1$@ %2$@ (%3$@) a été supprimé.";
"ai_models_delete_failed" = "La suppression du modèle %1$@ %2$@ (%3$@) a échoué.";
"ai_models_download_start" = "Début du téléchargement du modèle %1$@ (%2$@)...";
"ai_models_download_finish" = "Modèle %1$@ (%2$@) téléchargé.";
"ai_models_get_manifest_failed" = "Impossible d'obtenir les informations de téléchargement pour %1$@ (%2$@).";
"ai_models_downloading_title" = "Téléchargement en cours du modèle %1$@ %2$@ %3$@...";
"ai_models_downloading_model" = "Téléchargement de la couche du modèle : %1$@ (%2$@, %3$@), vitesse : %4$@...";
"ai_models_downloading_model_powered_by" = "Registre Officiel Ollama avec téléchargements optimisés par ServBay";

// welcome developer role
"welcome_developer_role_title" = "Veuillez sélectionner votre rôle";
"welcome_developer_role_web" = "Développeur Web";
"welcome_developer_role_fullstack" = "Développeur Full Stack";
"welcome_developer_role_php" = "Développeur PHP";
"welcome_developer_role_nodejs" = "Développeur Node.js";
"welcome_developer_role_python" = "Développeur Python";
"welcome_developer_role_java" = "Développeur Java";
"welcome_developer_role_go" = "Développeur Go";
"welcome_developer_role_dotnet" = "Développeur .NET";
"welcome_developer_role_ruby" = "Développeur Ruby";
"welcome_developer_role_rust" = "Développeur Rust";
"welcome_developer_role_llm" = "Développeur IA/LLM";
"welcome_developer_role_network_security" = "Ingénieur en sécurité";
"welcome_developer_role_custom" = "Personnalisé";

// Tunnel
"tunnel_custom_domain_empty" = "Domaine personnalisé vide";
"tunnel_server_addr" = "Adresse du serveur";
"tunnel_server_port" = "Port du serveur";
"tunnel_sub_domain_empty" = "Le sous-domaine ne peut pas être vide";
"tunnel_cf_missing_cert_file" = "Vous n'avez pas terminé l'autorisation de connexion";
"tunnel_cf_do_login" = "Autorisation de connexion";
"tunnel_cf_cancel_login" = "Annuler l'autorisation";
"tunnel_cf_config_missing" = "Le fichier de configuration Cloudflared n’existe pas. Veuillez d’abord enregistrer la configuration dans le panneau de configuration Cloudflared.";
"tunnel_cf_config_empty" = "La configuration de Cloudflared est vide. Veuillez d'abord configurer un nom de domaine dans le panneau de configuration Cloudflared, puis enregistrer.";
"tunnel_cf_tunnel_setup_failed" = "Échec de la création du tunnel Cloudflared. Veuillez vous assurer que l'autorisation de connexion est terminée et vérifier la connexion réseau.";
"tunnel_cf_cancel_login_stopping_service" = "Arrêt du service Cloudflared en cours...";
"tunnel_cf_cancel_login_deleting_tunnel" = "Suppression du tunnel distant en cours...";
"tunnel_cf_cancel_login_cleaning_local" = "Nettoyage des identifiants et des configurations locales en cours...";
"tunnel_cf_cancel_login_done" = "Autorisation annulée";
"tunnel_local_domain" = "Domaine local";
"tunnel_custom_domain" = "Domaine externe";
"tunnel_sub_domain" = "Sous-domaine";
"tunnel_leave_blank_if_free_user" = "Laissez vide si vous êtes un utilisateur gratuit";
"tunnel_frp_server_config" = "Configuration du serveur FRP (frps.toml)";

"tips_service_db_init_start" = "%@ Initialisation de la base de données en cours...";
"tips_service_db_init_completed" = "%@ a terminé l’initialisation de la base de données";

"package_install_failed" = "Échec de l’installation";
"package_uninstall_failed" = "Échec de la désinstallation";
"package_enable_failed" = "Échec de l’activation";
"package_disable_failed" = "Échec de la désactivation";
"package_error_unsupported_package" = "Paquet non pris en charge : %@";
"package_error_no_internet" = "Veuillez vérifier votre connexion réseau.";
"package_error_runtime_too_old" = "ServBay Runtime doit être mis à niveau vers la version %@ ou une version ultérieure.";
"package_error_login_required" = "Vous devez vous connecter avant d'utiliser cette fonctionnalité.";
"package_error_rosetta_required" = "L’exécution de cette ancienne version du logiciel sur un Mac à architecture ARM nécessite l’installation de Rosetta 2.";
"package_error_download_failed" = "Échec du téléchargement du paquet, veuillez vérifier votre connexion réseau ou la source du fichier.";
"package_error_hash_verification_failed" = "Échec de la vérification du fichier : %@. Le fichier a peut-être été corrompu lors du téléchargement, veuillez réessayer l'installation.";
"package_error_download_network_error" = "Échec de la connexion réseau : %@";
"package_error_unpack_failed" = "Échec de la décompression du paquet.";
"package_error_delete_failed" = "Échec de la suppression du fichier : %@.";
"package_error_hook_failed" = "Échec de l’exécution du hook de cycle de vie : %@.";


"subscription_expired_title" = "L’abonnement a expiré";
"subscription_expired_desc" = "Votre abonnement ServBay Pro/ServBay Team a expiré ou le jeton n'est plus valide. Veuillez vous reconnecter ou renouveler votre abonnement pour rétablir les fonctionnalités avancées.";

"package_vip_exclude" = "Cette fonctionnalité est réservée aux abonnements ServBay Pro/ServBay Team. Veuillez mettre à niveau votre abonnement.";
"minio_title" = "MinIO";
"minio_api_port" = "Port de l’API";
"minio_api_port_prompt" = "Par exemple : 9000";
"minio_root_user" = "Utilisateur root";
"minio_root_user_prompt" = "Nom d’utilisateur racine MinIO";
"minio_root_password" = "Mot de passe root";
"minio_root_password_prompt" = "Mot de passe de l'utilisateur root MinIO";
"minio_bind_ip_prompt" = "Par exemple : 127.0.0.1";
"minio_data_path" = "Chemin des données";
"minio_data_path_prompt" = "Chemin de stockage des données MinIO";
"meilisearch_title" = "Meilisearch";
"meilisearch_bind_ip_prompt" = "Par exemple : 127.0.0.1";
"meilisearch_port" = "Port";
"meilisearch_port_prompt" = "Par exemple : 7700";
"meilisearch_master_key" = "Clé principale";
"meilisearch_master_key_prompt" = "En environnement de production, une longueur d'au moins 16 octets est requise.";
"meilisearch_data_path" = "Chemin des données";
"meilisearch_data_path_prompt" = "Chemin de stockage des données Meilisearch";
"meilisearch_environment" = "Environnement d'exécution";
"meilisearch_log_level" = "Niveau de journal";
"typesense_title" = "Typesense";
"typesense_bind_ip_prompt" = "Par exemple : 127.0.0.1";
"typesense_port" = "Port";
"typesense_port_prompt" = "Par exemple : 8108";
"typesense_api_key" = "Clé API";
"typesense_api_key_prompt" = "Clé utilisée pour protéger l’API";
"typesense_data_path" = "Chemin des données";
"typesense_data_path_prompt" = "Chemin de stockage des données Typesense";

// Barre de menu
"menu_discord" = "Groupe Discord";
"menu_telegram" = "Groupe Telegram";
"button_show_less" = "Afficher moins";
"button_show_more" = "+ %d de plus...";
"no_services_enabled" = "Aucun service activé";
"filter_all" = "Tout";
"filter_by_certificate_type" = "Filtrer par type de certificat";
"filter_by_issuer" = "Filtrer par émetteur";
"ssl_certificate_type" = "Type de certificat";
"dashboard_websites" = "Liste des sites";
"host_column_name" = "Nom";
"host_column_hostnames" = "Nom de domaine";
"host_column_type" = "Type";
"host_column_status" = "Statut";
"host_column_actions" = "Opération";
"no_websites_found" = "Aucun site disponible";
"add_new_website" = "Ajouter un nouveau site";
"add_website" = "Ajouter un site web";
"enabled" = "Activé";
"disabled" = "Désactivé";
"custom_configuration" = "Configuration personnalisée";
"quick_access_website" = "Accès rapide au site Web";
"open_website_folder" = "Ouvrir le répertoire du site";
"disable_website" = "Désactiver le site web";
"enable_website" = "Activer le site web";
"edit_website" = "Modifier le site web";
"delete_website" = "Supprimer le site web";
"delete_website_title" = "Supprimer le site web";
"delete_website_message" = "Voulez-vous vraiment supprimer le site « %@ » ? Cette action est irréversible.";
"website_enabled_tips" = "Le site « %@ » est activé";
"website_disabled_tips" = "Le site « %@ » est désactivé";
"website_deleted_tips" = "Le site « %@ » a été supprimé";
"open_with_editor" = "Ouvrir avec l’éditeur";
"Apache Rewrite" = "Réécriture Apache";
"Nginx Rewrite" = "Réécriture Nginx";
"Caddy Rewrite" = "Réécriture Caddy";
"rewrite_builtin_rules" = "Règles intégrées";
"rewrite_custom_rules" = "Règles personnalisées";
"rewrite_no_custom_rules" = "Aucune règle personnalisée pour le moment";
"rewrite_new_rule" = "Nouvelle règle";
"rewrite_rule" = "Règles";
"rewrite_rule_name" = "Nom de la règle";
"rewrite_enter_rule_name" = "Saisissez le nom de la règle";
"rewrite_invalid_name_hint" = "Seules les lettres, les chiffres, les tirets bas et les traits d’union sont autorisés";
"rewrite_rule_content" = "Contenu de la règle";
"rewrite_highlight_editor" = "Éditeur en surbrillance";
"rewrite_syntax_reference" = "Référence de syntaxe";
"rewrite_usage" = "Utilisation";
"rewrite_create" = "Créer";
"rewrite_create_success" = "Règle créée avec succès";
"rewrite_create_success_message" = "La règle de réécriture a été créée avec succès.";
"rewrite_create_failed" = "Échec de la création de la règle";
"rewrite_save_success" = "Règle enregistrée avec succès";
"rewrite_save_failed" = "Échec de l’enregistrement de la règle";
"rewrite_cannot_delete" = "Impossible de supprimer la règle";
"rewrite_cannot_delete_tips" = "Cette règle est utilisée par des sites web et ne peut pas être supprimée. Veuillez d'abord retirer cette règle de tous les sites web.";
"rewrite_delete_success_message" = "Règle supprimée avec succès";
"rewrite_delete_failed" = "Échec de la suppression de la règle";
"rewrite_duplicate_as_custom" = "Copier comme règle personnalisée";
"rewrite_duplicate_rule" = "Copier la règle";
"rewrite_new_rule_name" = "Saisissez le nom de la nouvelle règle";
"rewrite_duplicate" = "Copier";
"rewrite_duplicate_success" = "Règle copiée avec succès";
"rewrite_duplicate_success_message" = "La règle a été copiée avec succès.";
"rewrite_duplicate_failed" = "Échec de la copie de la règle";
"rewrite_export" = "Exporter";
"rewrite_apache" = "Réécriture Apache";
"rewrite_nginx" = "Réécriture Nginx";
"rewrite_caddy" = "Réécriture Caddy";
"rewrite_click_add_rule" = "Cliquez sur + pour ajouter une règle";
"rewrite_error_invalid_name" = "Nom de règle invalide";
"rewrite_error_duplicate_name" = "Le nom de règle existe déjà";
"rewrite_error_rule_not_found" = "La règle n'existe pas";
"rewrite_error_cannot_modify_builtin" = "Impossible de modifier la règle intégrée";
"rewrite_error_cannot_delete_builtin" = "Impossible de supprimer la règle intégrée";
"rewrite_error_rule_in_use" = "La règle est utilisée par %d sites";
"preset_dns_providers" = "DNS prédéfini";
"preset_dns_114" = "114 DNS";
"preset_dns_dnspod" = "DNSPod";
"preset_dns_aliyun" = "DNS Ali";
"preset_dns_cloudflare" = "Cloudflare";
"preset_dns_google" = "DNS Google";
"preset_dns_opendns" = "OpenDNS";
"preset_dns_ibm" = "IBM Quad9";
"preset_dns_114_desc" = "DNS public de China Telecom, accès rapide depuis la Chine continentale";
"preset_dns_dnspod_desc" = "DNS public Tencent DNSPod";
"preset_dns_aliyun_desc" = "DNS public Aliyun";
"preset_dns_cloudflare_desc" = "Cloudflare DNS public, axé sur la protection de la vie privée";
"preset_dns_google_desc" = "DNS public Google";
"preset_dns_opendns_desc" = "Cisco OpenDNS, offre des fonctions de contrôle parental";
"preset_dns_ibm_desc" = "IBM Quad9, offre une protection de sécurité";
"validation_error_port_range" = "Le port doit être compris entre 1 et 65535";
"validation_error_cache_size_range" = "La taille du cache doit être comprise entre 0 et 10000";
"validation_error_invalid_ip" = "Adresse IP invalide";
"validation_error_invalid_server_address" = "Adresse du serveur invalide";
"validation_error_ttl_negative" = "Le TTL ne peut pas être négatif";
"validation_error_max_queries_range" = "Le nombre maximal de requêtes simultanées doit être compris entre 0 et 10 000.";
"current_system_dns" = "DNS système actuel";
"refresh_dhcp_dns" = "Actualiser le DNS DHCP";
"dns_refreshed_restarting" = "Le DNS a été actualisé, redémarrage du service dnsmasq en cours";
"dns_refreshed" = "DNS a été actualisé";
"no_dhcp_dns_found" = "DHCP DNS introuvable";
"dns_auto_switched_to_dhcp" = "Changement de réseau détecté, le DNS a été automatiquement basculé vers le DNS DHCP";

// Ollama 模型刷新
"gadget_last_refresh" = "Dernière actualisation de la liste des modèles : %@";
"gadget_never_refreshed" = "Jamais";
"gadget_processing_model" = "Traitement en cours : %@ (%d/%d)";
"help_tips_refresh" = "Actualiser la liste des modèles";
"tips_ollama_models_refresh_success" = "Actualisation terminée : %d nouveaux modèles ajoutés, %d modèles obsolètes supprimés";
"tips_ollama_models_refresh_no_change" = "La liste des modèles est déjà à jour";
"tips_ollama_models_refresh_failed" = "Échec du rafraîchissement : %@";
"tips_ollama_models_refresh_cancelled" = "Actualisation annulée";
"button_refresh_model_list" = "Rafraîchir la liste des modèles";


"minio_console_port" = "Web UI Port";
"minio_console_port_prompt" = "For example: 9001";
"navmenu_ai_gateway" = "Passerelle AI";
"navmenu_mcp" = "MCP";
"aigateway.title" = "Passerelle AI";
"aigateway.nav.overview" = "Aperçu";
"aigateway.nav.channels" = "Canal";
"aigateway.nav.keys" = "Clé virtuelle";
"aigateway.nav.routing_strategy" = "Stratégie de routage";
"aigateway.nav.endpoints" = "Point de terminaison";
"aigateway.nav.statistics" = "Statistiques";
"aigateway.nav.monitoring" = "Surveillance";
"aigateway.action.refresh" = "Rafraîchir";
"aigateway.action.copy" = "Copier";
"aigateway.channel.add" = "Ajouter un canal";
"aigateway.channel.edit" = "Modifier le canal";
"aigateway.channel.testAll" = "Tester la connectivité en lot";
"aigateway.channel.name" = "Nom";
"aigateway.channel.type" = "Type";
"aigateway.channel.priority" = "Priorité";
"aigateway.channel.weight" = "Poids";
"aigateway.channel.status" = "Statut";
"aigateway.channel.actions" = "Opération";
"aigateway.channel.enabled" = "Activer";
"aigateway.channel.disabled" = "Désactivé";
"aigateway.channel.empty" = "Aucun canal pour le moment, cliquez sur « + » en haut pour en ajouter";
"aigateway.channel.deleteConfirm" = "Confirmer la suppression de ce canal ?";
"aigateway.channel.test" = "Tester la connectivité";
"aigateway.channel.testing" = "En cours de test...";
"aigateway.channel.test.success" = "Connectivité normale";
"aigateway.channel.test.failed" = "Échec de connectivité";
"aigateway.channel.test.reachable" = "Point d'accès accessible";
"aigateway.channel.test.unreachable" = "Point d’accès inaccessible";
"aigateway.channel.test.keyValid" = "Clé valide";
"aigateway.channel.test.keyInvalid" = "Clé invalide";
"aigateway.channel.test.keyUntested" = "Clé non vérifiée";
"aigateway.channel.test.authFailed" = "Échec de la vérification de la clé";
"aigateway.channel.error.testTitle" = "Échec du test de connectivité";
"aigateway.channel.error.saveTitle" = "Impossible d’enregistrer le canal";
"aigateway.channel.error.unauthorized" = "Le fournisseur a refusé la demande. Veuillez vérifier si la clé API est correcte et s'assurer qu'elle a l'autorisation d'accéder à cet endpoint.";
"aigateway.channel.error.unauthorizedWithDetail" = "Le fournisseur a refusé la demande. Veuillez vérifier si la clé API est correcte et s'assurer qu'elle a l'autorisation d'accéder à cet endpoint.\n\nRéponse du fournisseur : %@";
"aigateway.channel.error.fixConnectionBeforeSave" = "Veuillez d'abord résoudre le problème d'échec du test de connectivité avant d'enregistrer ce canal.";
"aigateway.channel.error.duplicateName" = "Le nom du canal existe déjà, veuillez en choisir un autre.";

// Channel wizard
"aigateway.channel.wizard.title" = "Ajouter un canal";
"aigateway.channel.wizard.selectProvider" = "Sélectionner le fournisseur";
"aigateway.channel.wizard.configure" = "Configurer le canal";
"aigateway.channel.wizard.review" = "Informations de confirmation";
"aigateway.channel.wizard.name" = "Nom du canal";
"aigateway.channel.wizard.apiKey" = "Clé API";
"aigateway.channel.wizard.baseUrl" = "URL de base";
"aigateway.channel.wizard.baseUrlRequired" = "L’URL de base ne peut pas être vide";
"aigateway.channel.wizard.nameRequired" = "Le nom du canal ne peut pas être vide";
"aigateway.channel.wizard.models" = "Modèles pris en charge (séparés par des virgules)";
"aigateway.channel.wizard.region" = "Point de terminaison régional";
"aigateway.channel.wizard.saving" = "Enregistrement...";
"aigateway.channel.wizard.created" = "Création du canal réussie";

// Provider groups
"aigateway.provider.group.mainstream" = "Grand public";
"aigateway.provider.group.china" = "Chine";
"aigateway.provider.group.local" = "Local";
"aigateway.provider.group.custom" = "Personnaliser";
"aigateway.provider.group.codingPlan" = "Coding Plan";
"aigateway.provider.codingPlan.oauthJumpHint" = "Cette option nécessite une autorisation via le compte d'abonnement, cliquez pour accéder à la page « Compte d'abonnement » et finaliser la connexion.";

// v1.23 渠道能力探测摘要
"aigateway.channel.probe.row.protocols" = "Point de terminaison du protocole :";
"aigateway.channel.probe.row.models" = "Modèle :";
"aigateway.channel.probe.row.modelsCount" = "%d élément(s)";
"aigateway.channel.probe.row.plan" = "Type de forfait :";
"aigateway.channel.probe.row.claudeNames" = "Nom du modèle Claude :";
"aigateway.channel.probe.row.tierAware" = "Répartition par tranche :";
"aigateway.channel.probe.fact.yes" = "Prêt à l'emploi";
"aigateway.channel.probe.fact.no" = "Non pris en charge";
"aigateway.channel.probe.claudeNames.unsupported" = "Mappage de modèle requis";
"aigateway.channel.probe.tierAware.yes" = "L'amont renvoie différents modèles selon le niveau.";
"aigateway.channel.probe.tierAware.no" = "Le niveau 3 renvoie le même modèle, mappage des niveaux requis.";
"aigateway.channel.probe.fact.unknown" = "Impossible de confirmer";
"aigateway.channel.probe.protocols.none" = "Aucun protocole disponible détecté";
"aigateway.channel.probe.models.none" = "Le service en amont n'a pas renvoyé la liste des modèles.";
"aigateway.channel.probe.plan.codingPlan" = "Coding Plan (mensuel)";
"aigateway.channel.probe.plan.payAsYouGo" = "Paiement à l'usage";
"aigateway.channel.probe.plan.subscription" = "S'abonner";
"aigateway.channel.probe.partial" = "%d éléments non identifiés, développez pour voir la cause.";
"aigateway.channel.wizard.advanced" = "Réglages avancés";
"aigateway.channel.wizard.advanced.prefilled" = "Pré-rempli selon les résultats de la détection";
"aigateway.channel.oauth.unavailableNote" = "Ce fournisseur prend en charge l'authentification OAuth, mais la passerelle ne propose pas actuellement cette fonctionnalité. Veuillez utiliser une clé API à la place.";

// Region

// v1.23 渠道能力探测摘要

// Region
"aigateway.region.china" = "Chine";
"aigateway.region.international" = "Mondial";

// G5 OAuth
"aigateway.channel.oauth.supported" = "Ce fournisseur prend en charge l'autorisation via un compte OAuth au lieu d'une clé API";
"aigateway.channel.oauth.section" = "Autorisation OAuth (facultatif)";
"aigateway.channel.oauth.hint" = "Connectez-vous avec votre compte officiel au lieu d'utiliser une clé API. Une fois l'autorisation réussie, le canal sera automatiquement créé par le serveur.";
"aigateway.channel.oauth.startButton" = "Démarrer l’autorisation OAuth";
"aigateway.channel.oauth.reopenBrowser" = "Rouvrir la page d’autorisation";
"aigateway.channel.oauth.pasteCodeHint" = "Après avoir terminé l’autorisation dans le navigateur, collez le code d’autorisation ci-dessous :";
"aigateway.channel.oauth.codePlaceholder" = "Coller le code d’autorisation";
"aigateway.channel.oauth.completeButton" = "Autorisation terminée";
"aigateway.channel.oauth.success" = "Autorisation réussie, le canal a été créé";

// Key
"aigateway.key.add" = "Créer une nouvelle clé";
"aigateway.key.create" = "Créer une nouvelle clé virtuelle";
"aigateway.key.edit" = "Modifier la clé virtuelle";
"aigateway.key.prefixReadonly" = "Préfixe de clé : %@ (la version en clair n’est affichée qu’une seule fois lors de la création ; pour la modifier, veuillez utiliser « Faire pivoter » dans la liste)";
"aigateway.key.name" = "Nom";
"aigateway.key.prefix" = "Préfixe de clé";

// Key
"aigateway.key.allowedModels" = "Modèles autorisés";
"aigateway.channel.fetchModels" = "Récupérer les modèles";
"aigateway.channel.fetchModels.failed" = "Échec de la récupération des modèles";
"aigateway.channel.wizard.modelsManual" = "Ou saisissez manuellement (séparés par des virgules)";
"aigateway.channel.wizard.modelsChipSelectedHint" = "Un modèle a été sélectionné dans la liste ; pour saisir manuellement, veuillez d'abord désélectionner toutes les options.";
"aigateway.channel.models.all" = "Tous les modèles (sans restriction)";
"aigateway.channel.models.custom" = "Personnaliser";
"aigateway.channel.models.custom.inputHint" = "Saisie manuelle (pour les modèles non présents dans la liste, séparés par des virgules)";
"aigateway.channel.models.custom.empty" = "Veuillez sélectionner au moins un modèle, ou revenir à « Tous les modèles (sans restriction) »";
"aigateway.channel.models.custom.chipSelected" = "Un modèle a été sélectionné dans la liste ; pour saisir manuellement, veuillez d'abord désélectionner toutes les options";

// 编辑渠道高级配置 - Section 标题

// 编辑渠道高级配置 - Section 标题

// 编辑渠道高级配置 - Section 标题
"aigateway.channel.edit.section.basic" = "Configuration de base";
"aigateway.channel.edit.section.billing" = "Tarification et facturation";
"aigateway.channel.edit.section.balance" = "Source du solde";
"aigateway.channel.edit.section.quota" = "Limite de montant";
"aigateway.channel.edit.billingStructure" = "Mode de facturation";
"aigateway.channel.billing.payAsYouGo" = "Paiement à l'utilisation";
"aigateway.channel.billing.subscription" = "S'abonner";
"aigateway.channel.billing.package" = "Forfait";
"aigateway.channel.edit.rateMultiplier" = "Taux de multiplication";
"aigateway.channel.edit.subscriptionExpiresAt" = "Date d’expiration de l’abonnement";
"aigateway.channel.edit.balanceSource" = "Source du solde";
"aigateway.channel.balance.fixed" = "Solde fixe";
"aigateway.channel.balance.ossBilling" = "Synchronisation automatique";
"aigateway.channel.balance.manual" = "Réglage manuel";
"aigateway.channel.edit.ossBillingKind" = "Interface de synchronisation";
"aigateway.channel.edit.apiKeyKeepHint" = "Laisser vide pour ne pas modifier";
"aigateway.channel.ossBilling.auto" = "Reconnaissance automatique";
"aigateway.channel.ossBilling.dashboardBilling" = "Tableau de bord de facturation";
"aigateway.channel.ossBilling.newApi" = "Nouvelle API";
"aigateway.channel.ossBilling.litellm" = "LiteLLM";
"aigateway.channel.edit.cachedBalance" = "Cache du solde actuel";
"aigateway.channel.edit.balanceUpdatedAt" = "Heure de mise à jour du solde";
"aigateway.channel.edit.refreshBalance" = "Actualiser le solde";
"aigateway.channel.edit.quotaType" = "Type de limite";
"aigateway.channel.quota.unlimited" = "Illimité";
"aigateway.channel.quota.tokenLimit" = "Limite de jetons";
"aigateway.channel.quota.requestLimit" = "Limite du nombre de demandes";
"aigateway.channel.quota.amountLimit" = "Limite de montant (USD)";
"aigateway.channel.quota.subscription" = "Quota d’abonnement";
"aigateway.channel.edit.quotaLimitUsd" = "Plafond de crédit (USD)";
"aigateway.channel.edit.quotaLimit" = "Limite de montant";
"aigateway.channel.edit.quotaLimitInvalid" = "Veuillez saisir un nombre valide pour la limite de crédit";
"aigateway.channel.edit.quotaVipNotice" = "La limitation de quota est une fonctionnalité Pro, disponible après la mise à niveau.";
"aigateway.channel.edit.quotaPeriod" = "Réinitialiser le cycle";
"aigateway.channel.quota.daily" = "Quotidien";
"aigateway.channel.quota.weekly" = "Chaque semaine";
"aigateway.channel.quota.monthly" = "Mensuel";
"aigateway.channel.quota.custom" = "Personnalisé";
"aigateway.channel.edit.quotaDrift" = "Autoriser le défilement du plafond";

// 版本升级引导（gateway bin 版本 < GUI 契约要求时弹出）
"aigateway_upgrade_alert_title" = "Mise à niveau de ServBay AI Gateway requise";
"aigateway_upgrade_alert_text" = "Avant de continuer, vous devez d'abord mettre à niveau « ServBay AI Gateway » vers la version %1$@ ou une version ultérieure.\nVeuillez accéder à « %2$@ » - « %3$@ » et mettre à niveau « ServBay AI Gateway ».";
"aigateway.upgrade.banner.title" = "La version de l'AI Gateway est trop ancienne";
"aigateway.upgrade.banner.message" = "La version actuelle d'AI Gateway v%1$@ est obsolète, veuillez mettre à niveau vers v%2$@+ puis réessayer.";

// G1/G2/G3/G4/G5: 添加渠道向导后台探测 / 测试连通性面板 / upstream_kind badge / 概览周期轮询 / URL 规范化提示
"aigateway.channel.probe.detecting" = "Analyse en cours...";
"aigateway.channel.probe.detected" = "%@ détecté";
"aigateway.channel.probe.suggestNormalize" = "Il est recommandé d'utiliser %@";
"aigateway.channel.probe.useNormalize" = "Utiliser ceci";
"aigateway.channel.probe.error" = "Échec de la vérification de l'adresse : %@";
"aigateway.channel.test.endpoint" = "Point de terminaison";
"aigateway.channel.test.key" = "Clé";
"aigateway.channel.test.balance" = "Solde";
"aigateway.channel.test.modelsAvailable" = "Modèles disponibles : %d";
"aigateway.channel.test.upstreamKind" = "Type amont";
"aigateway.channel.upstreamKind.newApi" = "Transfert via new-api";
"aigateway.channel.upstreamKind.oneApi" = "Transfert via one-api";
"aigateway.channel.upstreamKind.openaiOfficial" = "OpenAI officiel";
"aigateway.channel.upstreamKind.anthropicNative" = "Anthropic officiel";
"aigateway.channel.upstreamKind.geminiNative" = "Gemini officiel";
"aigateway.channel.balanceSource.autoRefresh" = "Facturation à l'utilisation, rafraîchissement automatique";
"aigateway.channel.balanceSource.manual" = "Configuration manuelle, pas de rafraîchissement automatique";
"aigateway.channel.baseUrlHelpTooltip" = "OpenAI : https://api.openai.com/v1  |  Proxy/personnalisé : généralement aussi .../v1";
"aigateway.channel.save.urlMismatchTitle" = "L’URL de base diffère de la valeur recommandée";
"aigateway.channel.save.urlMismatchMessage" = "Votre URL de base est %1$@, il est recommandé d’utiliser %2$@. Voulez-vous continuer à utiliser l’adresse actuelle ?";
"aigateway.channel.save.urlMismatchKeep" = "Continuer à utiliser l’actuel";
"aigateway.channel.save.urlMismatchUseNormalized" = "Utiliser l’adresse suggérée";
"aigateway.channel.badge.relay" = "Transit";
"aigateway.channel.badge.official" = "Officiel";

// AI Gateway 1.16 首次成功统一向导
"aigateway.onboarding.status.unknown" = "État de configuration inconnu";
"aigateway.onboarding.error.conflict" = "Une connexion client existante ou une autre configuration de service a été détectée. Confirmez son remplacement ou supprimez d'abord l'ancienne connexion.";
"aigateway.onboarding.error.invalidConfig" = "Le fichier de configuration est corrompu, illisible ou en lecture seule ; pour protéger la configuration d'origine, ServBay n'a pas écrit.";
"aigateway.onboarding.error.backup" = "Impossible de créer une sauvegarde de la configuration, la nouvelle clé a été annulée.";
"aigateway.onboarding.error.verify" = "La demande de test a échoué, la configuration précédente a été restaurée et les nouveaux identifiants ont été annulés.";
"aigateway.onboarding.error.rollback" = "Échec de la connexion, et la restauration de la configuration ou la révocation de la clé n’a pas été entièrement terminée. Veuillez vérifier la sauvegarde.";
"aigateway.onboarding.error.receipt" = "Impossible d’enregistrer l’historique d’accès en toute sécurité ; la configuration a été restaurée et la nouvelle clé a été révoquée.";
"aigateway.onboarding.error.clientFailed" = "Échec de la configuration de %1$@ : %2$@. Les autres modifications terminées ont été restaurées.";
"aigateway.onboarding.error.noClients" = "Veuillez sélectionner au moins un client.";
"aigateway.onboarding.error.detail.network" = "Impossible de se connecter au service, veuillez vérifier le réseau et l'adresse du canal.";
"aigateway.onboarding.error.detail.auth" = "Les informations d'identification du compte n'ont pas été vérifiées, veuillez vérifier la clé du canal.";
"aigateway.onboarding.error.detail.model" = "Le modèle sélectionné n'est actuellement pas disponible, veuillez en choisir un autre.";
"aigateway.onboarding.error.detail.generation" = "Le service est connecté, mais la demande de test n’a pas abouti.";
"aigateway.onboarding.error.detail.limit" = "Votre forfait actuel ou les limites d’utilisation ne permettent pas de créer de nouveaux identifiants d’accès.";
"aigateway.onboarding.error.detail.conflict" = "Une configuration client ou un identifiant d'accès portant le même nom existe déjà.";
"aigateway.onboarding.error.detail.file" = "Impossible de mettre à jour le fichier de configuration du client en toute sécurité.";
"aigateway.onboarding.error.detail.unknown" = "L'opération n'a pas abouti, veuillez réessayer plus tard.";

// AI Gateway 用户可见错误与监控说明

// AI Gateway 用户可见错误与监控说明
"aigateway.userError.network" = "Impossible de se connecter à AI Gateway, veuillez vérifier que le service est en cours d'exécution.";
"aigateway.userError.authorization" = "Impossible de vérifier les droits d’administrateur. Veuillez redémarrer AI Gateway, puis réessayer.";
"aigateway.userError.response" = "La passerelle IA a renvoyé des données non reconnues. Veuillez mettre à jour puis réessayer.";
"aigateway.userError.generic" = "Impossible d’effectuer l’opération pour le moment, veuillez réessayer plus tard.";
"aigateway.channel.oauth.unavailableConfiguration" = "Ce mode de connexion n'est pas encore configuré.";
"aigateway.monitoring.detailUnavailable" = "Aucune description détaillée à afficher pour le moment.";
"aigateway.monitoring.detail.ruleApplied" = "La requête a été traitée selon les règles de routage.";
"aigateway.monitoring.detail.noChannel" = "Aucun canal de service d'IA disponible lors de la demande.";
"aigateway.monitoring.detail.failover" = "Le canal d'origine n'est pas disponible, la demande a été automatiquement basculée vers un autre canal.";
"aigateway.event.type.unknown" = "Autres événements";
"aigateway.channel.type.unknown" = "Autres canaux";
"aigateway.stat.requestType.unknown" = "Autres demandes";

// 网关能力的用户友好名称

// 网关能力的用户友好名称
"aigateway.capability.openaiChat" = "Demande de conversation";
"aigateway.capability.openaiResponses" = "Requêtes Responses";
"aigateway.capability.textCompletion" = "Complétion de texte";
"aigateway.capability.embeddings" = "Vecteur d'intégration";
"aigateway.capability.images" = "Génération d’image";
"aigateway.capability.speech" = "Génération vocale";
"aigateway.capability.transcription" = "Transcription vocale";
"aigateway.capability.audioTranslation" = "Traduction vocale";
"aigateway.capability.modelList" = "Liste des modèles";
"aigateway.capability.anthropicMessages" = "Dialogue Anthropic";
"aigateway.capability.tokenCount" = "Compte de jetons";
"aigateway.capability.geminiGeneration" = "Génération de contenu Gemini";
"aigateway.capability.streamingConversion" = "Conversion en streaming inter-services";
"aigateway.capability.accountAuthorization" = "Autorisation de connexion au compte";
"aigateway.capability.other" = "Autres fonctionnalités";
"aigateway.codingPlan.parallelLimit" = "Limite de concurrence";
"aigateway.allowance.source.official" = "Abonnement officiel";
"aigateway.allowance.source.upstream" = "Solde amont";
"aigateway.allowance.source.estimate" = "Estimation locale";
"aigateway.allowance.source.manual" = "Configuration manuelle";
"aigateway.allowance.freshness.fresh" = "Vient d'être mis à jour";
"aigateway.allowance.freshness.stale" = "Peut-être obsolète";
"aigateway.allowance.confidence.verified" = "Vérifié";
"aigateway.allowance.confidence.reported" = "Signalé";
"aigateway.allowance.confidence.estimated" = "Estimé";
"aigateway.allowance.observed" = "Dernière mise à jour";
"aigateway.allowance.expires" = "Expire";
"aigateway.allowance.resets" = "Réinitialiser l'heure";
"aigateway.allowance.remaining" = "Restant %@";
"aigateway.allowance.used" = "%@ utilisé";
"aigateway.allowance.exhausted" = "Quota épuisé";
"aigateway.allowance.automationEligible" = "Éligible à l'automatisation";
"aigateway.allowance.unknown" = "Inconnu";
"aigateway.allowance.provider_unavailable" = "Ce fournisseur ne propose pas encore de consultation de solde.";
"aigateway.allowance.trust" = "Solde fiable";
"aigateway.allowance.label" = "Allocation";
"aigateway.allowance.state.error" = "Échec du chargement du quota";
"aigateway.allowance.state.empty" = "Aucune donnée de quota";
"aigateway.key.chipHintRequired" = "Obligatoire, veuillez sélectionner au moins un élément.";
"aigateway.key.error.channelRequired" = "Veuillez sélectionner au moins un canal pour cette clé.";
"aigateway.key.chipHintEmptyDenies" = "Tout désélectionner désactivera tout";
"aigateway.chip.all" = "Tout (sans limite)";
"aigateway.key.allowedChannels" = "Canaux autorisés";
"aigateway.key.status" = "Statut";
"aigateway.key.active" = "Valide";
"aigateway.key.revoked" = "Révoqué";
"aigateway.key.revoke" = "Révoquer";
"aigateway.key.expired" = "Expiré";
"aigateway.key.revoke.confirm.title" = "Révoquer cette clé virtuelle ?";
"aigateway.key.revoke.confirm.message" = "Après la révocation, la clé sera immédiatement invalide et irrécupérable, mais restera dans la liste avec ses données d’utilisation et statistiques pour l’audit. Pour supprimer définitivement l’enregistrement, veuillez utiliser « Supprimer ».";
"aigateway.key.delete.message" = "Cette clé sera définitivement supprimée, ainsi que toutes ses données d’utilisation et statistiques, sans possibilité de récupération. Si vous souhaitez simplement désactiver la clé tout en conservant les enregistrements, veuillez utiliser « Révoquer ».";
"aigateway.key.rotate" = "Texte en clair rotatif";
"aigateway.key.rotate.button" = "Rotation";
"aigateway.key.rotate.confirm.title" = "Faire pivoter la clé en texte clair ?";
"aigateway.key.rotate.confirm.message" = "Un nouveau texte en clair sera généré pour cette clé, l'ancien texte en clair sera immédiatement invalidé. Le nom, les autorisations, les limites et les statistiques de la clé resteront inchangés. Après la rotation, veuillez mettre à jour tous les clients utilisant cette clé avec le nouveau texte en clair. Cette opération est irréversible.";
"aigateway.key.rotated.title" = "Nouveau texte en clair de la clé";
"aigateway.key.rotated.message" = "Veuillez copier et sauvegarder immédiatement, le nouveau texte en clair n’est affiché qu’une seule fois, l’ancien texte en clair n’est plus valide :\n\n%@";
"aigateway.key.plaintext.title" = "Clé en texte clair";
"aigateway.key.plaintext.view" = "Afficher la clé";
"aigateway.key.plaintext.copy" = "Copier la clé";
"aigateway.key.empty" = "Aucune clé virtuelle pour le moment, cliquez sur « + » pour en créer une nouvelle";
"aigateway.key.deleteConfirm" = "Confirmer la suppression de cette clé virtuelle ?";
"aigateway.key.copy" = "Copier la clé";
"aigateway.key.created.title" = "La clé a été créée";
"aigateway.key.created.message" = "Veuillez copier et sauvegarder immédiatement, cette clé n'est affichée qu'une seule fois :\n\n%@";
"aigateway.key.error.duplicateName" = "Le nom de clé existe déjà, veuillez en choisir un autre.";
"aigateway.key.expiresAt" = "Date d'expiration (facultatif, ex. 2027-01-01)";
"aigateway.key.expiresAt.hint" = "Par exemple : 2027-01-01T00:00:00Z. Laisser vide pour ne jamais expirer.";
"aigateway.key.rpmLimit" = "Limite de RPM (optionnel)";
"aigateway.key.tpmLimit" = "Restriction TPM (optionnel)";
"aigateway.key.rpdLimit" = "Limite RPD (facultatif)";
"aigateway.key.tpdLimit" = "Limite TPD (facultatif)";
"aigateway.key.section.basic" = "Informations de base";
"aigateway.key.section.permissions" = "Autorisation";
"aigateway.key.section.rateLimits" = "Limitation du débit";
"aigateway.key.section.cumulativeLimits" = "Limite cumulée";
"aigateway.key.field.maxRequests" = "Limite totale des demandes (fois)";
"aigateway.key.field.maxRequests.placeholder" = "Laisser vide = Illimité";
"aigateway.key.field.maxTokens" = "Limite totale de tokens";
"aigateway.key.field.maxTokens.placeholder" = "Laisser vide = Illimité";
"aigateway.key.field.maxCostUsd" = "Limite totale des dépenses (USD)";
"aigateway.key.field.maxCostUsd.placeholder" = "Par exemple 10,00, laisser vide = illimité";
"aigateway.key.wizard.name" = "Nom de la clé (obligatoire)";
"aigateway.key.wizard.description" = "Description (facultatif)";
"aigateway.key.wizard.allowedModels" = "Modèles autorisés (optionnel)";
"aigateway.key.wizard.allowedChannels" = "ID de canal autorisés (optionnel, séparés par des virgules)";

// Overview
"aigateway.overview.notice.glmMigration.title" = "Les préréglages en un clic GLM ont été migrés";
"aigateway.overview.notice.glmMigration.message" = "Depuis la version 1.22, la fonction « Préréglage GLM en un clic » sur la carte Claude Code a été retirée ; le mapping des modèles de ce type est désormais géré de manière centralisée sur la page Stratégie de routage via « Créer un mapping à partir d’un modèle », prenant en charge les combinaisons courantes telles que Claude Code / Codex / Gemini CLI + GLM / DeepSeek / Qwen, etc.";
"aigateway.overview.notice.glmMigration.action" = "Nettoyez l’ancienne configuration puis allez dans Stratégie de routage →";
"aigateway.overview.notice.glmMigration.dismiss" = "Fermer l’alerte";
"aigateway.overview.notice.glmMigration.confirmTitle" = "Voulez-vous nettoyer les anciennes variables d'environnement écrites par le préréglage GLM v1.21 en un clic ?";
"aigateway.overview.notice.glmMigration.confirmMessage" = "Les clés ANTHROPIC_DEFAULT_HAIKU_MODEL / ANTHROPIC_DEFAULT_SONNET_MODEL / ANTHROPIC_DEFAULT_OPUS_MODEL / CLAUDE_CODE_AUTO_COMPACT_WINDOW écrites par le préréglage en un clic GLM v1.21 seront supprimées de ~/.claude/settings.json. Cette opération n’est effectuée que si ANTHROPIC_BASE_URL pointe vers la passerelle ServBay ; les autres variables d’environnement modifiées manuellement par l’utilisateur seront conservées. Après le nettoyage, veuillez recréer le routage GLM sur la page « Stratégie de routage » en utilisant « Créer un mappage à partir d’un modèle ».";
"aigateway.overview.notice.glmMigration.confirmApply" = "Nettoyer et passer à";
"aigateway.overview.activeChannels" = "Canal actif";
"aigateway.overview.virtualKeys" = "Clé virtuelle";
"aigateway.overview.todayRequests" = "Requêtes du jour";
"aigateway.overview.todayCost" = "Coût du jour";
"aigateway.overview.totalRequests" = "Requêtes totales";
"aigateway.overview.totalCost" = "Coût total";
"aigateway.overview.channelHealth" = "Aperçu de la santé des canaux";
"aigateway.overview.recentEvents" = "Événements de routage récents";
"aigateway.overview.noChannels" = "Aucun canal disponible";
"aigateway.overview.noEvents" = "Aucun événement de routage pour le moment";
"aigateway.overview.toggleChannelHint" = "Cliquez pour activer/désactiver ce canal";
"aigateway.overview.disableChannel.confirmTitle" = "Désactiver le canal %@ ?";
"aigateway.overview.disableChannel.confirmMessage" = "Une fois désactivé, ce canal ne participera plus au routage des requêtes. Vous pouvez le réactiver à tout moment en cliquant.";

// Endpoints
"aigateway.endpoint.connection" = "Informations de connexion";
"aigateway.endpoint.quickCopy" = "Configuration rapide des fragments";
"aigateway.endpoint.list" = "Points de terminaison pris en charge";
"aigateway.endpoint.noKey" = "Veuillez d'abord créer une clé virtuelle";
"aigateway.endpoint.createKeyFirst" = "Veuillez d'abord créer une clé sur la page « Clé virtuelle ».";
"aigateway.endpoint.openai.chat" = "Chat compatible avec OpenAI";
"aigateway.endpoint.openai.completions" = "Complétion OpenAI";
"aigateway.endpoint.openai.models" = "Liste des modèles";
"aigateway.endpoint.anthropic.messages" = "Message Anthropic";
"aigateway.endpoint.gemini" = "Gemini natif";
"aigateway.endpoint.explicit.openai" = "Préfixe OpenAI explicite";
"aigateway.endpoint.explicit.anthropic" = "Préfixe Anthropic explicite";
"aigateway.endpoint.health" = "Vérification de santé (sans clé)";
"aigateway.endpoint.selectKey" = "Clé virtuelle";
"aigateway.endpoint.manageKeys" = "Gérer les clés";
"aigateway.endpoint.plaintextHint" = "La clé en clair n'est affichée qu'à la création ; vous pouvez la faire tourner sur la page des clés.";
"aigateway.endpoint.domainDisabled" = "Site non activé";
"aigateway.endpoint.conversion.title" = "Conversion automatique multi-protocoles";
"aigateway.endpoint.conversion.anyChannel" = "Tout protocole / canal";
"aigateway.endpoint.conversion.tag" = "Conversion de protocole";
"aigateway.endpoint.conversion.desc" = "Accédez via n'importe quel protocole et utilisez n'importe quel canal. La passerelle route automatiquement selon le nom du modèle et convertit en temps réel les requêtes et réponses entre les protocoles OpenAI, Anthropic et Gemini, tout en prenant en charge l'ensemble du processus de sortie en streaming et d'appel d'outils. Par exemple : Claude Code peut utiliser directement les modèles des canaux OpenAI ou Gemini.";
"aigateway.goto.clients" = "Aller configurer le client";


// Key 展开面板：消耗统计（K2/K3）
"aigateway.key.stats.totalRequests" = "Nombre total de requêtes";
"aigateway.key.stats.totalTokens" = "Nombre total de jetons";
"aigateway.key.stats.lastUsed" = "Récemment utilisé";
"aigateway.key.stats.neverUsed" = "Jamais utilisé";

// 渠道展开面板：使用统计（渠道行点击展开）
"aigateway.channel.stats.cost" = "Coût total";
"aigateway.channel.stats.quotaUsage" = "Utilisation du quota";
"aigateway.channel.stats.balance" = "Solde";
"aigateway.channel.stats.lastHealthCheck" = "Dernier contrôle de santé";

// 首次进入 AI Gateway 介绍 sheet（K7）

// 首次进入 AI Gateway 介绍 sheet（K7）
"aigateway.intro.feature1.title" = "Conversion automatique multi-protocole";
"aigateway.intro.feature1.desc" = "Accédez à n'importe quel canal via n'importe quel protocole, avec prise en charge complète de la sortie en flux et de l'appel d'outils.";
"aigateway.intro.feature2.title" = "Entrée unifiée et clé virtuelle";
"aigateway.intro.feature2.desc" = "Une seule clé pour gérer toutes les sources en amont : limitation de débit, quotas et statistiques d’utilisation, tout est inclus.";
"aigateway.intro.feature3.title" = "Prise en charge du client en un clic";
"aigateway.intro.feature3.desc" = "8 clients, dont Claude Code, Codex, Gemini CLI, peuvent être basculés vers la passerelle en un seul clic";
"aigateway.intro.start" = "Commencer à utiliser";
"aigateway.intro.goClients" = "Aller voir";

// Client takeover (Claude Code 一键接管)

// 首次进入 AI Gateway 介绍 sheet（K7）

// Client takeover (Claude Code 一键接管)
"aigateway.connect.title" = "Prise en charge du client";
"aigateway.connect.status.ours" = "Déjà connecté à cette passerelle";
"aigateway.connect.status.other" = "Pointer vers une autre adresse";
"aigateway.connect.status.notConnected" = "Non pris en charge";
"aigateway.connect.status.notFound" = "Claude Code non détecté";
"aigateway.connect.action.takeover" = "Prendre le contrôle";
"aigateway.connect.action.switchToOurs" = "Changer vers cette passerelle";
"aigateway.connect.action.remove" = "Supprimer la prise en charge";
"aigateway.connect.action.restore" = "Restaurer";

// 「客户端」子页（Q4 拆分）+ 设置/变更语义重构
"aigateway.subnav.clients" = "Client";
"aigateway.client.setup" = "Paramètres";
"aigateway.client.switchToServbay" = "Basculer vers ServBay";
"aigateway.client.setup.confirmTitle" = "Configurer %@ via le proxy ServBay";
"aigateway.client.setup.confirmMessage" = "ServBay va écrire la configuration suivante :\n\nFichier de configuration : %@\nBASE_URL = %@\nAUTH_TOKEN = %@…\nClé dédiée : %@\n%@\n\nAvant l’écriture, la configuration d’origine sera automatiquement sauvegardée en .bak.";
"aigateway.client.setup.confirmMessage2" = "ServBay va écrire la configuration suivante :\n\nFichier de configuration : %1$@\nBASE_URL = %2$@\nAUTH_TOKEN = %3$@…\nClé virtuelle : %4$@\n\nLa configuration d'origine sera automatiquement sauvegardée au format .bak avant l'écriture.";
"aigateway.client.setup.keyAction.create" = "La clé dédiée %@ sera créée automatiquement.";
"aigateway.client.setup.keyAction.reuse" = "Réutilisera la clé dédiée existante %@ et lira le texte en clair depuis la passerelle locale, sans effectuer de rotation ni invalider l'ancien texte en clair.";
"aigateway.client.setup.sheet.title" = "Configurer %@";
"aigateway.client.setup.summary" = "Configuration à écrire";
"aigateway.client.setup.channels.all" = "Utiliser tous les canaux (*)";
"aigateway.client.setup.routing.title" = "Routage du modèle Claude";
"aigateway.client.setup.routing.direct" = "Le canal sélectionné reconnaît les noms de modèles Claude et peut être utilisé directement.";
"aigateway.client.setup.routing.mapping" = "Le canal sélectionné ne reconnaît pas les noms de modèle Claude, un mappage de modèle est requis. ServBay créera un mappage pour cette clé virtuelle + client selon les paramètres « Avancé : Modèles par palier » ci-dessous.";
"aigateway.client.setup.routing.mixed" = "Certains des canaux sélectionnés reconnaissent le nom du modèle Claude, d'autres non. ServBay créera un mappage pour cette clé virtuelle + client en fonction des paramètres situés sous « Avancé : Modèles par niveau » ci-dessous.";
"aigateway.client.setup.routing.groups" = "Canaux utilisables directement : %d · Canaux nécessitant un mappage : %d";
"aigateway.client.setup.routing.unknown" = "La détection des capacités du canal sélectionné n'est pas encore terminée. Il est impossible de déterminer s'il prend en charge les noms de modèle Claude. Veuillez d'abord effectuer la détection, puis décidez si vous souhaitez créer un mappage de modèles.";
"aigateway.client.setup.routing.noCandidates" = "Aucun canal disponible : il n'y a aucun canal activé et sain dans la plage sélectionnée. Veuillez d'abord ajouter ou activer des canaux.";
"aigateway.client.setup.routing.groups.unknown" = "· Canaux pas encore détectés : %d";
"aigateway.client.setup.routing.probeButton" = "Détecter maintenant";
"aigateway.client.setup.routing.probeFailed" = "Échec de la détection de %d canaux, les résultats peuvent être incomplets. Réessayez plus tard.";
"aigateway.client.setup.tier.advanced" = "Avancé : Modèle de vitesse";
"aigateway.client.setup.tier.opus" = "Opus (tâches complexes)";
"aigateway.client.setup.tier.sonnet" = "Sonnet (par défaut)";
"aigateway.client.setup.tier.haiku" = "Haiku (léger et rapide)";
"aigateway.client.setup.tier.pick" = "Veuillez sélectionner un modèle";
"aigateway.client.setup.tier.noModels" = "Le canal sélectionné ne dispose pas encore de liste de modèles, impossible de sélectionner un modèle de niveau.";
"aigateway.client.setup.tier.discoverButton" = "Liste des modèles de détection";
"aigateway.client.setup.tier.discoverFailed" = "Échec de récupération de la liste des modèles pour %d canaux, veuillez réessayer plus tard.";
"aigateway.client.setup.tier.unknownHint" = "Impossible de déterminer si le service en amont renvoie des modèles différents selon le niveau (échec des critères de détection). ServBay applique un traitement prudent « non hiérarchisé » et crée des mappages distincts pour les trois niveaux.";
"aigateway.client.setup.tier.upstreamManaged" = "L'amont renvoie automatiquement différents modèles selon les niveaux Opus / Sonnet / Haiku ; ServBay ne crée pas de mappage de niveaux.";
"aigateway.client.setup.key.title" = "Clé virtuelle";
"aigateway.client.setup.key.useExisting" = "Sélectionner une clé virtuelle existante";
"aigateway.client.setup.key.createNew" = "Créer une nouvelle clé virtuelle";
"aigateway.client.setup.key.existing.placeholder" = "Veuillez sélectionner une clé virtuelle";
"aigateway.client.setup.key.existing.loading" = "Récupération du texte en clair de la clé…";
"aigateway.client.setup.key.existing.empty" = "Aucune clé virtuelle n’a encore été créée. Veuillez d’abord en créer une sur la page « Clé virtuelle » ou en créer une nouvelle.";
"aigateway.client.setup.key.existing.loadFailed" = "Impossible de récupérer la liste des clés, veuillez réessayer plus tard.";
"aigateway.client.setup.key.existing.plaintextUnavailable" = "Cette clé est dans un ancien format, la passerelle locale n'a pas enregistré le texte en clair. Veuillez choisir une autre clé ou en créer une nouvelle.";
"aigateway.client.setup.key.existing.allowedAll" = "Activer tous les canaux";
"aigateway.client.setup.key.existing.allowedCount" = "%d canaux";
"aigateway.client.setup.key.createNew.nameInvalid" = "Le nom de la clé ne peut contenir que des lettres, des chiffres, ainsi que les caractères . _ / - , et doit comporter entre 1 et 64 caractères.";
"aigateway.client.setup.channels.preview.title" = "② Portée du canal";
"aigateway.client.setup.channels.preview.all" = "Activer tous les canaux (*)";
"aigateway.client.setup.model.title" = "③ Modèle";
"aigateway.client.setup.model.primary" = "Modèle préféré";
"aigateway.client.setup.model.small" = "Petit modèle (optionnel)";
"aigateway.client.setup.model.list" = "Liste des modèles (séparés par des virgules)";
"aigateway.client.setup.model.placeholder" = "Saisissez le nom du modèle ou choisissez parmi les suggestions";
"aigateway.client.setup.model.hint" = "Vous pouvez sélectionner dans la liste des canaux ou saisir manuellement.";
"aigateway.client.setup.model.crushHint" = "Pendant l’exécution de Crush, utilisez Ctrl+M ou /models pour changer";
"aigateway.client.setup.model.claudeHint" = "Claude Code utilise le modèle spécifié par le protocole Anthropic, aucune configuration requise ici.";
"aigateway.client.setup.model.qwenHint" = "Écrire dans modelProviders.openai.models[], l'utilisateur peut choisir via /model dans le CLI";
"aigateway.client.setup.model.empty" = "Aucun modèle candidat (la liste des modèles de canal est vide), saisie manuelle possible";
"aigateway.key.description" = "Description (facultatif)";
"aigateway.client.reuse.title" = "Clé dédiée existante détectée";
"aigateway.client.reuse.reuse" = "Réutiliser une clé existante";
"aigateway.client.reuse.createNew" = "Nouvelle clé";
"aigateway.client.reuse.message" = "La réutilisation conservera la même clé (quota et historique préservés) ; la création générera une toute nouvelle clé.";
"aigateway.client.setup.confirmButton" = "Confirmer les paramètres";
"aigateway.client.change" = "Modification";
"aigateway.client.change.title" = "Modifier les canaux disponibles pour %@";
"aigateway.client.change.apply" = "Application";
"aigateway.client.change.noKey" = "Les informations de connexion de ce client n'ont pas été trouvées, veuillez les reconfigurer.";
"aigateway.connect.success.title" = "Claude Code a pris le contrôle";
"aigateway.connect.success.message" = "Claude Code est déjà connecté à la passerelle, veuillez redémarrer la session Claude pour que les modifications prennent effet.";
"aigateway.connect.error.unhealthy" = "La passerelle AI n'est pas en cours d'exécution ou n'est pas en bon état";
"aigateway.connect.error.createKey" = "Impossible de créer les identifiants de connexion du client";
"aigateway.connect.error.writeSettings" = "Échec de l’écriture du fichier settings.json de Claude Code";
"aigateway.connect.error.writeModelMapping" = "Échec de l'écriture du mappage du modèle de niveau de la passerelle, l'intégration n'est pas terminée, veuillez réessayer plus tard.";
"aigateway.connect.codex.status.notFound" = "Codex non détecté";
"aigateway.connect.codex.success.title" = "Codex a pris le contrôle";
"aigateway.connect.codex.success.message" = "Codex est désormais connecté à la passerelle ; il est nécessaire de redémarrer la session Codex pour que cela prenne effet.";
"aigateway.connect.gemini.status.notFound" = "Gemini CLI non détecté";
"aigateway.connect.gemini.success.title" = "Gemini CLI a pris le contrôle";
"aigateway.connect.gemini.success.message" = "Gemini CLI est désormais connecté à la passerelle, veuillez redémarrer Gemini CLI pour que les modifications prennent effet.";
"aigateway.connect.qwen.status.notFound" = "Qwen Code non détecté";
"aigateway.connect.qwen.success.title" = "Qwen Code a pris le contrôle";
"aigateway.connect.qwen.success.message" = "Qwen Code est déjà connecté à la passerelle, un redémarrage de Qwen Code est nécessaire pour que les modifications prennent effet.";
"aigateway.connect.kimi.status.notFound" = "Kimi CLI non détecté";
"aigateway.connect.kimi.success.title" = "Kimi CLI a pris le contrôle";
"aigateway.connect.kimi.success.message" = "Kimi CLI est déjà connecté à la passerelle. Veuillez redémarrer Kimi CLI pour que les modifications prennent effet.";
"aigateway.connect.codebuddy.status.notFound" = "CodeBuddy non détecté";
"aigateway.connect.codebuddy.success.title" = "CodeBuddy a pris le relais";
"aigateway.connect.codebuddy.success.message" = "CodeBuddy a été configuré pour utiliser la passerelle. Veuillez redémarrer CodeBuddy pour que les modifications prennent effet.";
"aigateway.connect.opencode.status.notFound" = "opencode non détecté";
"aigateway.connect.opencode.success.title" = "opencode a pris le contrôle";
"aigateway.connect.opencode.success.message" = "opencode pointe déjà vers la passerelle, un redémarrage d’opencode est nécessaire pour que les modifications prennent effet.";
"aigateway.connect.opencode.success.noChannels" = "opencode pointe déjà vers la passerelle. Aucun canal n'est configuré sur la passerelle. Veuillez d'abord ajouter un canal, puis sélectionner un modèle dans opencode, puis redémarrer opencode pour que les modifications prennent effet.";
"aigateway.connect.crush.status.notFound" = "Crush non détecté";
"aigateway.connect.crush.success.title" = "Crush a pris le contrôle";
"aigateway.connect.crush.success.message" = "Crush est déjà dirigé vers la passerelle, un redémarrage de Crush est nécessaire pour que les modifications prennent effet.";
"aigateway.connect.crush.success.noChannels" = "Crush est déjà associé à une passerelle. La passerelle n’a pas de canal configuré, veuillez d’abord ajouter un canal, puis sélectionner un modèle dans Crush, puis redémarrer Crush pour que cela prenne effet.";
"aigateway.statistics.totalRequests" = "Nombre total de requêtes";
"aigateway.statistics.summary" = "Résumé";
"aigateway.statistics.success" = "Réussi";
"aigateway.statistics.failed" = "Échoué";
"aigateway.statistics.inputTokens" = "Jetons d'entrée";
"aigateway.statistics.outputTokens" = "Jetons de sortie";
"aigateway.statistics.avgTokensPerRequest" = "Jetons moy. / requête";
"aigateway.statistics.eventDistribution" = "Distribution des événements";
"aigateway.statistics.routed" = "Routé";
"aigateway.statistics.failover" = "Bascule automatique";
"aigateway.statistics.noChannel" = "Aucun canal";
"aigateway.statistics.totalTokens" = "Total des jetons";
"aigateway.statistics.totalCost" = "Coût total";
"aigateway.statistics.avgLatency" = "Latence moyenne";
"aigateway.statistics.requestTrend" = "Demande de tendance";
"aigateway.statistics.breakdown" = "Détails d’utilisation";
"aigateway.statistics.groupBy" = "Grouper";
"aigateway.statistics.groupBy.model" = "Par modèle";
"aigateway.statistics.groupBy.key" = "Appuyer sur la clé";
"aigateway.statistics.groupBy.day" = "Par jour";
"aigateway.statistics.groupBy.requestType" = "Par type";
"aigateway.statistics.group" = "Grouper";
"aigateway.statistics.requests" = "Nombre de requêtes";
"aigateway.statistics.tokens" = "Jeton";
"aigateway.statistics.cost" = "Coût";
"aigateway.statistics.images" = "Image";
"aigateway.statistics.audioIn" = "Entrée audio";
"aigateway.statistics.audioOut" = "Sortie audio";
"aigateway.statistics.noData" = "Aucune donnée d'utilisation disponible";
"aigateway.statistics.noTrendData" = "Aucune donnée de tendance disponible";
"aigateway.statistics.export" = "Exporter CSV";
"aigateway.statistics.export.help" = "Exporter tous les enregistrements d’utilisation en CSV";
"aigateway.statistics.export.save.title" = "Enregistrer le fichier CSV";
"aigateway.statistics.export.failed" = "Échec de l’exportation";
"aigateway.statistics.budget" = "Utilisation du budget";
"aigateway.statistics.budgetVipRequired" = "La fonction de budget nécessite un abonnement VIP";
"aigateway.budget.manage" = "Gérer";
"aigateway.budget.manage.title" = "Gestion du budget";
"aigateway.budget.list.title" = "Budget existant";
"aigateway.budget.new" = "Créer un nouveau budget";
"aigateway.budget.new.title" = "Créer un nouveau budget";
"aigateway.budget.edit.title" = "Modifier le budget";
"aigateway.budget.reset" = "Réinitialiser le cycle";
"aigateway.budget.delete.confirm" = "Êtes-vous sûr de vouloir supprimer ce budget ?";
"aigateway.budget.field.name" = "Nom";
"aigateway.budget.field.description" = "Description (optionnel)";
"aigateway.budget.field.limitUsd" = "Plafond du montant (USD)";
"aigateway.budget.field.period" = "Cycle";
"aigateway.budget.field.threshold1" = "Seuil 1 (%)";
"aigateway.budget.field.threshold2" = "Seuil 2 (%)";
"aigateway.budget.field.threshold3" = "Seuil 3 (%)";
"aigateway.budget.section.thresholds" = "Seuil d’alerte (%)";
"aigateway.budget.period.daily" = "Quotidien";
"aigateway.budget.period.weekly" = "Chaque semaine";
"aigateway.budget.period.monthly" = "Mensuel";
"aigateway.budget.period.custom" = "Personnaliser";
"aigateway.statistics.noBudget" = "Aucune configuration de budget pour le moment";
"aigateway.monitoring.events" = "Événement de routage";
"aigateway.monitoring.limit" = "Nombre";
"aigateway.monitoring.noEvents" = "Aucun événement de routage pour le moment";
"aigateway.monitoring.selectEvent" = "Sélectionnez un événement à gauche pour voir les détails";
"aigateway.monitoring.eventDetail" = "Détails de l’événement";
"aigateway.monitoring.eventType" = "Type d’événement";
"aigateway.monitoring.model" = "Modèle";
"aigateway.monitoring.channelId" = "ID du canal";
"aigateway.monitoring.channelName" = "Nom du canal";
"aigateway.monitoring.requestId" = "ID de demande";
"aigateway.monitoring.detail" = "Détails";
"aigateway.monitoring.tokenId" = "ID de clé";
"aigateway.monitoring.tokenName" = "Nom de la clé";
"aigateway.monitoring.autoRefresh" = "Actualisation automatique (5 secondes)";
"aigateway.monitoring.filter.all" = "Tous les événements";
"aigateway.monitoring.filter.ruleHit" = "Règle uniquement correspondante";
"aigateway.monitoring.filter.noRuleHit" = "Aucun enregistrement de règle correspondant pour le moment";
"aigateway.event.type.routed" = "Routé";
"aigateway.event.type.failover" = "Changé";
"aigateway.event.type.failed" = "Échoué";
"aigateway.event.type.no_channel" = "Aucun canal";
"aigateway.channel.type.openai" = "OpenAI";
"aigateway.channel.type.anthropic" = "Anthropic";
"aigateway.channel.type.google" = "Google Gemini";
"aigateway.channel.type.azure" = "Azure OpenAI";
"aigateway.channel.type.bedrock" = "AWS Bedrock";
"aigateway.channel.type.openai_compatible" = "Compatible avec OpenAI";
"aigateway.channel.type.deepseek" = "DeepSeek";
"aigateway.channel.type.qwen" = "Qwen";
"aigateway.channel.type.zhipu" = "Zhipu GLM";
"aigateway.channel.type.moonshot" = "Kimi";
"aigateway.channel.type.baidu" = "ERNIE";
"aigateway.channel.type.hunyuan" = "Hunyuan";
"aigateway.channel.type.zero_one" = "01.AI";
"aigateway.channel.type.ollama" = "Ollama";
"aigateway.channel.type.lmstudio" = "LM Studio";
"aigateway.channel.type.custom" = "Personnaliser";
"aigateway.channel.health.healthy" = "Santé";
"aigateway.channel.health.degraded" = "Rétrograder";
"aigateway.channel.health.unhealthy" = "Exception";
"aigateway.channel.health.unknown" = "Inconnu";
"aigateway.overview.gateway.healthy" = "En cours d’exécution";
"aigateway.overview.gateway.offline" = "Hors ligne";
"aigateway.stat.requestType.chat" = "Dialogue";
"aigateway.stat.requestType.completion" = "Complétion de texte";
"aigateway.stat.requestType.embedding" = "Intégrer";
"aigateway.stat.requestType.image" = "Image";
"aigateway.stat.requestType.audio" = "Audio";
"aigateway.stat.requestType.tts" = "Synthèse vocale";
"aigateway.stat.requestType.stt" = "Reconnaissance vocale";
"aigateway.error.noToken" = "Veuillez d'abord démarrer AI Gateway";
"aigateway.error.gatewayNotRunning" = "Le service AI Gateway n'est pas démarré, veuillez d'abord lancer la passerelle.";
"aigateway.error.network" = "Connexion échouée";
"aigateway.error.vipRequired" = "Cette fonctionnalité nécessite un abonnement Pro";
"aigateway.error.channelLimitReached" = "Limite de canaux de votre forfait actuel atteinte";
"aigateway.error.keyLimitReached" = "Limite de clés de votre forfait actuel atteinte";
"aigateway.error.featureRequiresUpgrade" = "Cette fonctionnalité nécessite une mise à niveau du forfait";

// AI Gateway 1.15 运行事实与能力状态
"aigateway.operational.gatewayVersion" = "Version de la passerelle";
"aigateway.operational.guiVersion" = "Version ServBay";
"aigateway.operational.dbMigration" = "Version de la base de données";
"aigateway.operational.compatibility" = "Compatibilité de la version";
"aigateway.operational.license" = "Statut de la licence";
"aigateway.operational.usageIntegrity" = "Enregistrements d’utilisation";
"aigateway.operational.usageDropped" = "%@ enregistrements d’utilisation n’ont pas pu être sauvegardés ; les statistiques peuvent être incomplètes.";
"aigateway.operational.backgroundTasks" = "Tâches du service";
"aigateway.operational.capabilities" = "Fonctions de protocole prises en charge";
"aigateway.operational.noHeartbeat" = "Aucune exécution récente";
"aigateway.operational.task.balanceRefresh" = "Rafraîchir le solde";
"aigateway.operational.task.healthCheck" = "Vérification de l’état de santé";
"aigateway.operational.task.maintenance" = "Maintenance";
"aigateway.operational.task.budgetReset" = "Réinitialisation du budget";
"aigateway.capabilities.schemaUnsupported" = "La version actuelle de la passerelle ne peut pas fournir l’état complet des fonctionnalités.";
"aigateway.capabilities.unknown" = "Impossible d'obtenir temporairement l'état des fonctionnalités de la passerelle.";
"aigateway.capabilities.statusHelp" = "L’état des fonctions est vérifié automatiquement.";
"aigateway.operational.taskNeedsAttention" = "Une tâche du service a récemment échoué. Actualisez puis réessayez.";
"aigateway.compatibility.compatible" = "Compatible";
"aigateway.compatibility.legacy" = "Ancienne version de Gateway";
"aigateway.compatibility.incompatible" = "Incompatible";
"aigateway.compatibility.unknown" = "Inconnu";
"aigateway.status.unknown" = "Inconnu";
"aigateway.status.running" = "En cours d’exécution";
"aigateway.status.degraded" = "Rétrograder";
"aigateway.status.stopped" = "Arrêté";
"aigateway.status.verified" = "Vérifié";
"aigateway.status.complete" = "Complet";
"aigateway.status.disabled_development" = "Indisponible";
"aigateway.capability.status.verified" = "Vérifié";
"aigateway.capability.status.partial" = "Partiellement pris en charge";
"aigateway.capability.status.experimental" = "Expérimental";
"aigateway.capability.status.unsupported" = "Non pris en charge";
"aigateway.channel.oauth.unavailableUnknown" = "Impossible de vérifier la disponibilité d’OAuth, l’accès à la connexion a été désactivé.";
"aigateway.statistics.unavailable" = "Les données d’utilisation sont temporairement indisponibles.";
"aigateway.statistics.integrityUnknown" = "L’état des enregistrements d’utilisation est temporairement indisponible.";
"aigateway.monitoring.eventsUnknown" = "Impossible de charger les événements de routage, le nombre actuel est inconnu";
"aigateway.error.noUsableChannels" = "Aucun canal disponible. Vérifiez si des canaux sont désactivés ou sans modèle configuré";
"aigateway.error.noChannels" = "Ajoutez d'abord un canal";
"aigateway.channel.noModels" = "Aucun modèle configuré";
"aigateway.channel.noModels.hint" = "Ce canal est activé mais aucun modèle n’a été configuré, il ne peut donc pas participer au routage des requêtes. Veuillez éditer ce canal pour ajouter un modèle avant de l’utiliser.";
"aigateway.channel.allModelsAllowed" = "Tous les modèles";
"aigateway.channel.allModelsAllowed.hint" = "Aucune liste de modèles n’a été spécifiée pour ce canal, toutes les demandes de modèles seront donc acceptées. Vous pouvez modifier ce canal pour restreindre à des modèles spécifiques.";
"button_create" = "Créer";
"aigateway.key.noChannels" = "Aucun canal disponible";
"aigateway.key.noModels" = "Aucun modèle disponible";
"aigateway.key.neverExpires" = "N’expire jamais";
"aigateway.key.noDataHint" = "Démarrez AI Gateway et ajoutez d'abord des canaux";
"aigateway.key.chipHintOptional" = "Optionnel, laissez non sélectionné pour autoriser tout";

"aigateway.monitoring.latency" = "Latence";
"aigateway.nav.subscription_accounts" = "Subscription Accounts";
"aigateway.subscription.risk_title" = "Experimental Feature — Account Risk";
"aigateway.subscription.risk_detail" = "Using unofficial subscription-account compatibility may cause account restrictions, suspension, or unexpected billing. Do not use an important account.";
"aigateway.subscription.risk_ack" = "I understand and accept these risks";
"aigateway.subscription.pending_connect_hint" = "Veuillez d'abord cocher la confirmation des risques ci-dessus. L'autorisation de l'abonnement se poursuivra automatiquement.";
"aigateway.subscription.providers" = "Providers";
"aigateway.subscription.accounts" = "Connected Accounts";
"aigateway.subscription.ingress" = "Points de terminaison disponibles";
"aigateway.subscription.noOutputLimit" = "Cet abonnement ne permet pas de limiter la longueur de sortie : le max_tokens configuré par le client sera ignoré en amont.";
"aigateway.subscription.plan" = "Forfait";
"aigateway.allowance.window.hours" = "%@ heures";
"aigateway.allowance.window.days" = "%@ jours";
"aigateway.allowance.window.requests" = "Nombre d'appels";
"aigateway.subscription.reauth_banner" = "Les informations d'identification ne sont plus valides, vous devez réautoriser l'accès pour continuer.";
"aigateway.subscription.codingPlans" = "Forfait de codage (clé API)";
"aigateway.subscription.codingPlans.hint" = "Ces forfaits sont connectés via des clés API et sont en réalité des canaux. Les quotas sont affichés ici en lecture seule. Pour les modifier, rendez-vous sur la page « Canaux ».";
"aigateway.subscription.codingPlans.open" = "Accéder à la page du canal pour modifier";
"aigateway.subscription.connect" = "Connect";
"aigateway.subscription.continue" = "Continue";
"aigateway.subscription.feature_toggle" = "Activer la fonctionnalité";
"aigateway.subscription.disabled" = "La fonctionnalité des comptes d’abonnement est désactivée. Activez-la pour connecter un service.";
"aigateway.subscription.feature_update_failed" = "Impossible de mettre à jour le réglage des comptes d’abonnement.";
"aigateway.subscription.risk_required" = "Read and accept the risk notice before continuing.";
"aigateway.subscription.browser_opened" = "Your browser was opened. Complete authorization there, then return to ServBay.";
"aigateway.subscription.connected" = "Subscription account connected.";
"aigateway.subscription.empty" = "No subscription accounts connected.";
"aigateway.subscription.toggle" = "Enable / Disable";
"aigateway.subscription.disconnect" = "Disconnect";
"aigateway.subscription.disconnect_confirm" = "Disconnect this account and remove its local credentials?";
"aigateway.subscription.operation_failed" = "The subscription-account operation could not be completed. Check the Gateway status and try again.";
"aigateway.subscription.status.experimental" = "Experimental";
"aigateway.subscription.status.disabled" = "Disabled";
"aigateway.subscription.status.active" = "Active";
"aigateway.subscription.status.expiring" = "Expiring";
"aigateway.subscription.status.cooldown" = "Temporarily cooling down";
"aigateway.subscription.status.reauth_required" = "Authorization required";
"aigateway.subscription.status.unknown" = "Unknown";
"aigateway.subscription.safety.protected" = "La protection locale est activée";
"aigateway.subscription.safety.cooldown" = "Compte en cours de refroidissement";
"aigateway.subscription.safety.circuit_open" = "La protection du service a été activée";
"aigateway.subscription.safety.disabled" = "Le compte a été désactivé";
"aigateway.subscription.safety.unknown" = "Statut de protection inconnu";
"aigateway.subscription.safety.rate_remaining" = "Requêtes restantes : %d";
"aigateway.subscription.safety.rate_unknown" = "Requêtes disponibles restantes : Inconnu";
"aigateway.subscription.safety.rate_reset" = "Réinitialisation de la fenêtre de limitation de vitesse : %@";
"aigateway.subscription.safety.active_requests" = "Requêtes simultanées actives : %d";
"aigateway.subscription.safety.active_unknown" = "Requêtes simultanées actives : inconnu";
"aigateway.subscription.safety.cooldown_until" = "Récupération du refroidissement : %@";
"aigateway.subscription.safety.circuit_until" = "Protection de la restauration : %@";
"aigateway.subscription.safety.recovery_unknown" = "Heure de restauration inconnue";
"aigateway.subscription.safety.reason_rate_limited" = "Raison : la fréquence des requêtes en amont est limitée";
"aigateway.subscription.safety.reason_unknown" = "Cause inconnue";
"aigateway.subscription.safety.remote_revoke_supported" = "Prise en charge de l’annulation de l’autorisation à distance lors de la déconnexion";
"aigateway.subscription.safety.remote_revoke_unsupported" = "Vous ne pouvez supprimer que les identifiants locaux lors de la déconnexion";
"aigateway.subscription.safety.remote_revoke_unknown" = "Capacité d'annulation à distance inconnue";
"aigateway.subscription.disconnect_local_failed" = "Impossible de confirmer que les identifiants locaux ont été supprimés. Veuillez actualiser et réessayer.";
"aigateway.subscription.disconnect_revoked" = "Les identifiants locaux ont été supprimés et l'autorisation distante a été révoquée.";
"aigateway.subscription.disconnect_unsupported" = "Les informations d'identification locales ont été supprimées ; la révocation à distance n'est pas prise en charge par le service. Veuillez vérifier les paramètres de votre compte sur le service si nécessaire.";
"aigateway.subscription.disconnect_failed" = "Les informations d’identification locales ont été supprimées, mais la révocation de l’autorisation à distance a échoué ; veuillez vérifier les paramètres du compte du service.";
"aigateway.subscription.disconnect_unknown" = "Les identifiants locaux ont été supprimés, l’état de révocation de l’autorisation distante est inconnu ; veuillez vérifier dans les paramètres du compte du service.";

// AI Gateway 路由策略
"aigateway.routing.load_balance.title" = "Équilibrage de charge";
"aigateway.routing.load_balance.prefix" = "Par";
"aigateway.routing.load_balance.priority" = "Priorité";
"aigateway.routing.load_balance.round_robin" = "Poll";
"aigateway.routing.load_balance.weighted_round_robin" = "Poll pondéré";
"aigateway.routing.load_balance.priority_effective" = "Priorité effective";
"aigateway.routing.load_balance.weight_effective" = "Poids effectif";
"aigateway.routing.load_balance.loading" = "Chargement de la description de la stratégie";
"aigateway.routing.load_balance.description.priority_only_weight_ignored" = "Sélectionner selon la priorité du canal, ignorer le poids.";
"aigateway.routing.load_balance.description.round_robin_priority_and_weight_ignored" = "Interroger les canaux sains en alternance, en ignorant la priorité et le poids.";
"aigateway.routing.load_balance.description.wrr_priority_tier_then_weight" = "Sélectionnez d'abord le niveau de priorité de santé le plus élevé, puis effectuez un équilibrage selon le poids.";
"aigateway.routing.load_balance.weight_scope.highest_healthy_priority_tier" = "Champ d'application du poids : couche de priorité de santé la plus élevée";
"aigateway.routing.strategies.title" = "Stratégie";
"aigateway.routing.empty" = "Aucune stratégie de routage n’a encore été configurée.";
"aigateway.routing.mapping.add" = "Ajouter une correspondance de modèle";
"aigateway.routing.mapping.edit" = "Modifier la correspondance du modèle";
"aigateway.routing.mapping.delete.title" = "Supprimer la correspondance du modèle";
"aigateway.routing.mapping.delete.message" = "Voulez-vous supprimer « %@ » ?";
"aigateway.routing.matches_24h" = "%d fois en 24 heures";
"aigateway.routing.last_matched.never" = "Non encore associé";
"aigateway.routing.detail.kind" = "Type";
"aigateway.routing.detail.priority" = "Priorité";
"aigateway.routing.detail.matches" = "Correspondance cumulée";
"aigateway.routing.detail.scope" = "Portée";
"aigateway.routing.detail.source" = "Source";
"aigateway.routing.detail.target" = "Objectif";
"aigateway.routing.detail.token" = "Clé virtuelle";
"aigateway.routing.detail.client" = "Client";
"aigateway.routing.detail.condition" = "Condition";
"aigateway.routing.detail.action" = "Action";
"aigateway.routing.detail.channel" = "Canal";
"aigateway.routing.events.title" = "Événements correspondants récents";
"aigateway.routing.events.empty" = "Aucun événement correspondant pour le moment.";
"aigateway.routing.form.name" = "Nom (facultatif)";
"aigateway.routing.form.enabled" = "Activer";
"aigateway.routing.form.priority" = "Priorité : %d";
"aigateway.routing.form.scope" = "Plage";
"aigateway.routing.form.token" = "ID de clé virtuelle";
"aigateway.routing.form.client" = "Type de client";
"aigateway.routing.form.source_protocol" = "Protocole source";
"aigateway.routing.form.source_model" = "Modèle ou mode source";
"aigateway.routing.form.target_protocol" = "Protocole cible";
"aigateway.routing.form.target_model" = "Modèle cible";
"aigateway.routing.scope.global" = "Global";
"aigateway.routing.scope.client" = "Client";
"aigateway.routing.scope.token" = "Clé virtuelle";
"aigateway.routing.scope.token_client" = "Clé virtuelle et client";
"aigateway.routing.protocol.custom" = "Personnaliser";
"aigateway.routing.error.title" = "Stratégie de routage";
"aigateway.routing.error.load" = "Impossible de charger la stratégie de routage.";
"aigateway.routing.error.save" = "Impossible d’enregistrer la stratégie de routage.";
"aigateway.routing.error.events" = "Impossible de charger les événements correspondants.";
"aigateway.routing.error.delete" = "Impossible de supprimer la correspondance du modèle.";

"aigateway.routing.preview.title" = "Model Mapping Preview";
"aigateway.routing.preview.subtitle" = "Enter a client and model to check the mapping that would win.";
"aigateway.routing.preview.action" = "Preview model mapping";
"aigateway.routing.preview.token_id" = "Virtual key ID";
"aigateway.routing.preview.client_kind" = "Client kind";
"aigateway.routing.preview.source_model" = "Source model";
"aigateway.routing.preview.winner" = "Match";
"aigateway.routing.preview.no_match" = "No model mapping matched.";
"aigateway.routing.preview.error" = "Could not preview the model mapping.";
"aigateway.routing.preview.validation.source_model_required" = "Enter a source model.";
"aigateway.routing.detail.target_channel" = "Target Channel";
"aigateway.routing.none" = "None";

"aigateway.routing.template.add" = "À partir du modèle";
"aigateway.routing.template.title" = "Créer une correspondance à partir d’un modèle";
"aigateway.routing.template.sheet.title" = "Choisir un modèle";
"aigateway.routing.template.step.template" = "① Modèle";
"aigateway.routing.template.step.scope" = "② Portée";
"aigateway.routing.template.step.client" = "③ Client cible";
"aigateway.routing.template.step.token" = "④ Clé virtuelle cible";
"aigateway.routing.template.step.preview" = "⑤ Prévisualiser la correspondance générée";
"aigateway.routing.template.scope.global" = "Global (s'applique à toutes les requêtes)";
"aigateway.routing.template.scope.token" = "Jeton (vkey uniquement)";
"aigateway.routing.template.scope.client" = "Client (client uniquement)";
"aigateway.routing.template.scope.tokenClient" = "Token + Client (vkey et client correspondent tous les deux)";
"aigateway.routing.template.error.needClient" = "Veuillez sélectionner le client cible";
"aigateway.routing.template.error.needToken" = "Veuillez sélectionner la clé virtuelle cible";
"aigateway.routing.template.apply" = "Créer %d mappages";
"aigateway.routing.template.applying" = "Création du mappage…";
"aigateway.routing.template.success" = "%d mappages créées avec succès";
"aigateway.routing.template.partialFailure" = "%d créées, %d échecs";
"aigateway.routing.template.claude_glm" = "Claude Code → GLM (Zhipu)";
"aigateway.routing.template.claude_deepseek" = "Claude Code → DeepSeek";
"aigateway.routing.template.codex_qwen" = "Codex → Qwen Coder";
"aigateway.routing.template.codex_glm" = "Codex → GLM";
"aigateway.routing.template.gemini_glm" = "Gemini CLI → GLM";
"aigateway.routing.action.downgrade" = "Downgrade model";
"aigateway.routing.action.switch_to" = "Switch to channel";
"aigateway.routing.condition.cost_reaches" = "Cost reaches threshold";
"aigateway.routing.condition.quota_exhausted" = "Quota exhausted";
"aigateway.routing.detail.cost_threshold" = "Cost threshold USD";
"aigateway.routing.form.manual_input" = "Manual input";
"aigateway.routing.form.scope.client" = "Specific client only";
"aigateway.routing.form.scope.global" = "Global (all requests)";
"aigateway.routing.form.scope.token" = "Specific key only";
"aigateway.routing.form.scope.token_client" = "Client + key";
"aigateway.routing.form.scope_label" = "Scope";
"aigateway.routing.form.select_client" = "Select client";
"aigateway.routing.form.select_model" = "Select model";
"aigateway.routing.form.select_token" = "Select key";
"aigateway.routing.form.source_model_placeholder" = "e.g. claude-opus-* or gpt-5.5";
"aigateway.routing.form.source_protocol_auto" = "Auto-detect";
"aigateway.routing.form.target_model_placeholder" = "e.g. glm-5.2";
"aigateway.routing.kind.model_mapping" = "Model Mapping";
"aigateway.routing.kind.routing_rule" = "Routing Rule";
"aigateway.routing.load_balance.no_channels" = "No enabled channels to preview.";
"aigateway.routing.load_balance.tier_line" = "Tier %d: %@";
"aigateway.routing.load_balance.weight_ignored" = "(weight ignored)";
"aigateway.routing.mapping.hint" = "When the model name a client sends does not exist upstream, mapping converts it automatically. For example: Claude Code sends claude-opus-4-8, map it to Zhipu glm-5.2.";
"aigateway.routing.mapping.target_protocol_openai_only" = "Model mappings currently route through OpenAI-compatible upstreams only.";
"aigateway.routing.protocol.anthropic" = "Anthropic";
"aigateway.routing.protocol.gemini" = "Gemini";
"aigateway.routing.protocol.openai" = "OpenAI";
"aigateway.routing.rule.add" = "Add Routing Rule";
"aigateway.routing.rule.delete.message" = "Do you want to delete \"%@\"?";
"aigateway.routing.rule.delete.title" = "Delete Routing Rule";
"aigateway.routing.rule.edit" = "Edit Routing Rule";
"aigateway.routing.rule.hint" = "When a channel quota or budget is exhausted, automatically switch to a backup channel. For example: when OpenAI budget runs out, switch to Zhipu Coding.";
"aigateway.routing.rule.hint.cost_threshold_required" = "Cost threshold requires a number.";
"aigateway.routing.rule.hint.target_channel_disabled" = "Target channel is disabled.";
"aigateway.routing.rule.hint.target_model_not_listed" = "Target model is not listed by the source channel.";
"aigateway.routing.rule.preview_format" = "When %s %s, %s %s";
"aigateway.routing.section.load_balance" = "Load Balancing";
"aigateway.routing.section.load_balance.desc" = "How to choose when multiple channels are available";
"aigateway.routing.section.model_mapping" = "Model Mapping";
"aigateway.routing.section.model_mapping.desc" = "Automatically convert model names the client sends that don't exist upstream";
"aigateway.routing.section.model_mapping.hint" = "e.g. claude-opus-* then map to glm-5.2";
"aigateway.routing.section.routing_rule" = "Routing Rules";
"aigateway.routing.section.routing_rule.desc" = "Automatically switch to a backup channel when quota or budget is exhausted";
"aigateway.routing.section.routing_rule.hint" = "e.g. when OpenAI budget exhausted then switch to Zhipu Coding";
