{ "common": { "welcome": "Bienvenue", "dashboard": "Tableau de Bord", "clients": "Gestion des Clients", "analytics": "Analyses", "settings": "Paramètres", "logout": "Déconnexion", "save": "Enregistrer", "cancel": "Annuler", "loading": "Chargement...", "error": "Une erreur est survenue", "success": "Succès", "create": "Créer", "delete": "Supprimer", "edit": "Modifier", "search": "Rechercher...", "actions": "Actions", "export": "Exporter", "sync": "Synchroniser", "send": "Envoyer", "close": "Fermer", "confirm": "Confirmer", "back": "Retour", "next": "Suivant", "yes": "Oui", "no": "Non", "status": "Statut", "date": "Date", "name": "Nom", "email": "Email", "phone": "Téléphone", "day": "Jour", "none": "Aucun", "select_org": "Veuillez sélectionner une organisation", "clear_filter": "Effacer le filtre", "no_data": "Aucune donnée disponible", "retry": "Réessayer", "of": "sur" }, "nav": { "home": "Accueil", "inbox": "Messagerie", "campaigns": "Campagnes", "templates": "Modèles", "organizations": "Organisations", "users": "Utilisateurs", "training": "Training Lab", "moderation": "Modération", "b2b": "Clients B2B", "kb": "Base de Connaissances", "content": "Formations", "conversations": "Conversations", "ai_setup": "Agent IA", "billing": "Facturation" }, "dashboard": { "title": "Tableau de Bord", "subtitle": "Statut de votre plateforme en temps réel", "select_org": "Bienvenue sur EdTech Admin", "select_org_hint": "Pour commencer, veuillez sélectionner une organisation dans le menu déroulant à gauche.", "isolation_note": "L'isolation des données garantit que vous ne voyez que les statistiques de l'organisation active.", "loading": "Analyse des données en cours...", "no_enrollments": "Aucune inscription", "recent_enrollments": "Inscriptions récentes", "export_csv": "Exporter CSV", "stats": { "users": "Utilisateurs", "active": "Actifs", "completed": "Complétés", "tracks": "Parcours", "revenue": "Revenus", "total_messages": "Messages Totaux", "active_users": "Utilisateurs Actifs", "completion_rate": "Taux de Complétion", "ai_cost": "Estimation Coût IA" }, "table": { "phone": "Téléphone", "track": "Parcours", "status": "Statut", "day": "Jour", "date": "Date" } }, "analytics": { "title": "Analyses & Performance", "export": "Exporter le rapport", "explain": "Expliquer", "messages": { "title": "Volume des Messages", "inbound": "Entrants", "outbound": "Sortants" }, "completion": { "title": "Taux de Réussite", "completed": "Complétés", "in_progress": "En cours" }, "performance": { "title": "Performance", "avg_score": "Score moyen des exercices" }, "engagement": { "title": "Engagement", "avg_days": "Jours de formation en moyenne" }, "sql_error": "Erreur lors de l'exécution de la requête", "sql_example_1": "Combien d'utilisateurs actifs cette semaine ?", "sql_example_2": "Quels sont les 5 utilisateurs avec le plus de messages ?", "sql_example_3": "Quel est le taux de complétion moyen ?", "sql_example_4": "Combien de crédits IA ont été consommés ce mois ?", "ai_cost_title": "Coût IA par fonctionnalité", "ai_cost_subtitle": "Données réelles — source : UsageEvent", "col_feature": "Fonctionnalité", "col_calls": "Appels", "col_tokens_in": "Tokens in", "col_tokens_out": "Tokens out", "col_cost": "Coût (USD)", "total": "Total", "nl_search_title": "Recherche en langage naturel", "nl_search_subtitle": "Posez une question sur vos données — l'IA génère la requête SQL", "nl_search_placeholder": "Ex : Quels sont les utilisateurs inactifs depuis 7 jours ?", "search_btn": "Rechercher", "view_sql": "Voir SQL", "no_results": "Aucun résultat" }, "users": { "title": "Gestion des Utilisateurs", "subtitle": "Tous les apprenants inscrits", "no_users": "Aucun utilisateur trouvé", "invite": "Inviter", "columns": { "name": "Nom", "phone": "Téléphone", "track": "Parcours actif", "day": "Jour", "status": "Statut", "joined": "Inscription" }, "confirm_delete": "Supprimer cet utilisateur ? Cette action est réversible côté base de données.", "delete_success": "Utilisateur supprimé", "delete_error": "Échec de la suppression", "handoff_released": "Handoff libéré — l'IA reprend la conversation", "handoff_none": "Aucun handoff actif pour cet utilisateur", "handoff_error": "Échec", "load_error": "Erreur chargement utilisateurs", "language_column": "Langue", "sector_column": "Secteur", "conversation_btn": "Conversation", "delete_title": "Supprimer l'utilisateur", "handoff_active": "Handoff actif", "release_ai": "Libérer l'IA", "prev": "Précédent" }, "contacts": { "title": "Contacts", "subtitle": "Gestion de votre base de contacts CRM", "add": "Ajouter un contact", "import": "Importer", "no_contacts": "Aucun contact", "search_placeholder": "Rechercher un contact...", "tags_update_error": "Échec de la mise à jour des tags", "import_success": "Import réussi : {{created}} ajoutés, {{updated}} mis à jour, {{errors}} erreurs.", "upload_critical_error": "Une erreur critique est survenue lors de l'upload.", "ai_generation_error": "Échec de la génération IA.", "generation_error_fallback": "Erreur de génération", "confirm_delete_one": "Voulez-vous vraiment supprimer ce contact ?", "delete_error": "Erreur lors de la suppression.", "confirm_delete_many": "Voulez-vous vraiment supprimer {{count}} contacts ?", "bulk_delete_success": "Contacts supprimés avec succès.", "bulk_delete_error": "Erreur lors de la suppression groupée.", "csv_name": "Nom", "csv_phone": "Téléphone", "csv_created": "Créé le", "message_copied": "Message copié !", "copied": "Copié !", "generation_completed": "Génération terminée avec succès" }, "settings": { "title": "Paramètres", "profile": "Profil de l'organisation", "branding": "Marque & Couleurs", "ai_config": "Configuration IA", "whatsapp_config": "Configuration WhatsApp", "billing": "Facturation", "org_name": "Nom de l'organisation", "primary_color": "Couleur principale", "logo_url": "URL du logo", "save_success": "Paramètres enregistrés avec succès.", "save_error": "Impossible d'enregistrer les paramètres.", "no_org_selected": "Veuillez sélectionner une organisation.", "advanced_config": "Configuration avancée", "developers_badge": "Développeurs", "flow_config_desc": "Ce champ contient la configuration JSON du flux pédagogique. Ne le modifiez que si vous savez ce que vous faites.", "wa_account": "Compte WhatsApp", "wa_token": "Token système", "not_configured": "Non configuré", "token_absent": "Absent", "token_expired": "Expiré", "token_valid": "Valide", "token_present": "Présent", "token_expired_alert": "Votre token WhatsApp est invalide ou expiré. Les messages ne peuvent plus être envoyés. Rendez-vous dans Meta Business Manager → Utilisateurs système pour générer un nouveau token, puis mettez à jour votre organisation.", "api_keys_title": "Clés API Intelligence", "api_keys_locked": "Disponible à partir du plan SCALE. En ajoutant vos propres clés OpenAI ou Google, vous utilisez votre propre quota IA — sans limite liée à votre plan Xamlé.", "api_keys_unlocked": "Vos clés sont chiffrées et stockées de façon sécurisée. Elles remplacent les clés partagées de la plateforme — votre consommation IA n'est alors plus décomptée de votre solde de crédits.", "wa_connect_success": "WhatsApp connecté avec succès ✅", "wa_connect_error": "Échec de la connexion WhatsApp. Vérifie le token et le WABA ID.", "mode_edtech": "EdTech", "mode_webhook": "Webhook", "mode_ai_agent": "Agent IA", "mode_pedagogy": "Pédagogie", "mode_customer_service": "Support Client", "mode_crm_marketing": "CRM & Campagnes", "wa_cancel": "Annuler", "wa_reconfigure": "🔄 Reconfigurer", "wa_connect_btn": "🔗 Connecter", "wa_connecting": "Connexion...", "wa_connect_submit": "Connecter WhatsApp" }, "auth": { "org_id": "ID Organisation", "email": "Email", "password": "Mot de passe", "login_subtitle_edtech": "Connectez-vous à votre espace EdTech", "login_subtitle_admin": "Espace administrateur — accès restreint", "login_button": "Se connecter", "login_loading": "Connexion...", "org_id_required": "L'identifiant d'organisation est requis.", "powered_by": "Propulsé par Xamlé Studio", "forgot_password": "Mot de passe oublié ?", "reset_title": "Mot de passe oublié", "reset_sent_title": "Email envoyé", "reset_sent_subtitle": "Vérifiez votre boîte mail et cliquez sur le lien de réinitialisation.", "reset_new_title": "Nouveau mot de passe", "reset_success_title": "Mot de passe mis à jour", "reset_success_subtitle": "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.", "reset_email_label": "Adresse email", "reset_email_placeholder": "votre@email.com", "reset_send_button": "Envoyer le lien", "reset_sending": "Envoi...", "reset_new_password": "Nouveau mot de passe", "reset_confirm_password": "Confirmer", "reset_set_button": "Définir le mot de passe", "reset_setting": "Mise à jour...", "reset_login_link": "Se connecter", "reset_back": "Retour à la connexion", "reset_network_error": "Erreur réseau. Veuillez réessayer.", "reset_password_mismatch": "Les mots de passe ne correspondent pas.", "reset_password_min_length": "Le mot de passe doit contenir au moins 6 caractères.", "reset_token_expired": "Token invalide ou expiré." }, "onboarding": { "title": "Bienvenue sur Xamlé.Studio", "subtitle": "Configurons votre école en quelques secondes.", "step_welcome": "Bienvenue", "step_legal": "Contrat", "step_whatsapp": "WhatsApp", "step_ai": "IA", "connect_fb": "Se connecter avec Facebook", "fb_connected": "Compte Facebook connecté !", "setup_waba": "Configuration de votre compte WhatsApp Business...", "cta_launch": "Lancer ma plateforme", "legal_text": "En acceptant, vous acceptez nos conditions de partenaire et les politiques commerciales de Meta.", "whatsapp_help_title": "Où trouver ces informations ?", "help_waba_id": "Connectez-vous sur WhatsApp Manager → colonne \"Compte WhatsApp Business\" → numéro à 15 chiffres.", "help_business_id": "Paramètres Meta → Informations de l'entreprise → \"ID Meta Business\".", "help_token": "Dans Meta Business Manager → Utilisateurs système → votre utilisateur → Générer un token. Choisissez \"Ne jamais expirer\" pour éviter les interruptions.", "help_new_to_meta": "Nouveau sur Meta ? Utilisez le bouton \"Se connecter avec Facebook\" ci-dessous — plus simple, tout est automatique.", "already_configured": "Compte déjà configuré sur Meta", "fb_account_connected": "Compte Facebook connecté", "new_account_via_fb": "Nouveau compte — Connexion via Facebook", "new_account_desc": "Le client configure son numéro directement dans la popup Facebook.", "token_valid_msg": "Token valide — Meta l'a reconnu", "token_invalid_msg": "Token invalide ou expiré. Vérifiez dans Meta Business Manager → Utilisateurs système.", "token_idle_hint": "Générez un token \"Ne jamais expirer\" dans Meta Business Manager → Utilisateurs système.", "skip_whatsapp": "Configurer WhatsApp plus tard", "create_org": "Créer l'organisation", "creating": "Création…", "step_org": "Organisation", "step_admin": "Administrateur", "org_title": "L'organisation", "org_subtitle": "Nom, identifiant URL et type d'usage.", "org_name_label": "Nom de l'organisation", "slug_label": "Identifiant URL (slug)", "slug_hint": "Auto-généré depuis le nom. Modifiable — lettres minuscules, chiffres et tirets uniquement.", "mode_label": "Type d'usage", "mode_edtech_label": "Formation & EdTech", "mode_edtech_desc": "Parcours éducatifs, exercices, suivi des apprenants via WhatsApp", "mode_crm_label": "CRM & Campagnes", "mode_crm_desc": "Gestion de contacts, campagnes broadcast, relances marketing", "mode_ai_label": "Agent IA", "mode_ai_desc": "Bot conversationnel IA pour répondre en autonomie 24h/24", "mode_customer_service_label": "Support Client", "mode_customer_service_desc": "Gestion des conversations entrantes et escalade vers un agent humain", "admin_title": "L'administrateur", "admin_subtitle": "Le premier compte admin de cette organisation.", "admin_name_label": "Nom complet", "admin_email_label": "Email", "admin_pass_label": "Mot de passe initial", "admin_pass_optional": "optionnel — généré automatiquement si vide", "admin_pass_placeholder": "Laissez vide pour auto-générer", "admin_pass_hint": "Un email avec le mot de passe temporaire est envoyé à l'admin après création.", "wa_title": "Connexion WhatsApp", "wa_subtitle": "Optionnel — peut être configuré plus tard depuis la fiche organisation.", "create_error": "Création impossible", "fb_error": "La connexion Facebook a été annulée ou a échoué." }, "crm": { "stats": { "total_contacts": "Contacts Totaux", "messages_sent": "Messages Envoyés", "open_rate": "Taux d'ouverture", "conversion": "Conversion" }, "assistant": { "placeholder": "Écrivez votre commande ici...", "thinking": "L'IA prépare une réponse...", "contact_preview": "Aperçu de la base", "campaign_summary": "Résumé de Campagne", "messages_ready": "messages personnalisés prêts à être envoyés", "recipient": "DESTINATAIRE", "more_contacts": "+ {{count}} autres contacts", "more_messages": "+ {{count}} autres messages", "send_all": "🚀 Tout envoyer via WhatsApp API", "powered_by": "Propulsé par Xamlé AI • CRM PaaS Intégré", "btn_history": "📊 Historique", "btn_import": "📤 Importer", "btn_campaign": "✨ Campagne", "error_mic": "Erreur d'accès au micro.", "error_bulk": "Erreur lors de l'envoi en masse.", "import_first": "Veuillez d'abord importer une liste de contacts.", "campaign_queued": "🚀 Votre campagne a été mise en file d'attente pour une diffusion progressive !", "error_occurred": "Une erreur technique est survenue.", "drop_file_note": "Veuillez utiliser le bouton d'importation pour l'instant." }, "inbox": { "title": "Conversations", "no_messages": "Aucune conversation trouvée.", "reply_placeholder": "Votre message...", "send": "Envoyer" }, "campaigns": { "title": "Historique des Campagnes", "subtitle": "Suivez toutes vos diffusions et leurs performances.", "new_campaign": "Nouvelle Campagne", "select_template": "Modèle WhatsApp (Optionnel)", "choose_approved": "Sélectionner un modèle approuvé...", "no_approved_templates": "Aucun modèle approuvé. Synchronisez d'abord.", "use_ai_text": "Utiliser le texte généré par IA", "status_sent": "Envoyé", "status_delivered": "Livré", "status_read": "Lu", "status_failed": "Échec", "fetch_failed": "Erreur de chargement des modèles" } }, "whatsapp": { "templates": { "title": "Modèles de Messages WhatsApp", "subtitle": "Gérez et synchronisez vos modèles approuvés par Meta.", "sync_button": "Synchroniser avec Meta", "create_button": "Créer un modèle", "no_templates": "Aucun modèle. Synchronisez ou créez-en un.", "table": { "name": "Nom du modèle", "category": "Catégorie", "language": "Langue", "status": "Statut" }, "create_modal": { "title": "Créer un nouveau modèle", "name_label": "Nom du modèle (minuscules, sans espaces)", "category_label": "Catégorie", "language_label": "Langue", "body_label": "Texte du corps", "submit": "Soumettre pour approbation", "success": "Modèle soumis avec succès !", "error": "Échec de la soumission.", "meta_approval": "Les templates doivent être approuvés par Meta avant utilisation.", "ai_generate_label": "Générer avec l'IA", "ai_placeholder": "Ex: \"message de bienvenue pour un nouvel apprenant\"", "ai_generating": "Génération…", "ai_generate": "Générer", "ai_hint": "L'IA remplit les champs ci-dessous — vous pouvez les modifier avant de soumettre.", "name_hint": "Lettres minuscules, chiffres et underscores uniquement. Ex : relance_paiement", "policy_marketing": "Promotionnel — approbation Meta 24–48h. Évitez les mots trop commerciaux.", "policy_utility": "Transactionnel — approbation plus rapide (quelques heures). Confirmations, rappels, alertes.", "preview_label": "Aperçu WhatsApp", "view_preview": "Voir l'aperçu complet" }, "status_approved": "Approuvé", "status_pending": "En attente", "status_rejected": "Rejeté", "status_paused": "En pause", "status_disabled": "Désactivé", "waba_not_configured": "WhatsApp Business non configuré", "waba_not_configured_desc": "Cette organisation n'a pas encore de compte WhatsApp Business (WABA) associé. Rendez-vous dans Paramètres → Intégration WhatsApp pour configurer votre numéro et votre WABA ID." } }, "knowledge": { "title": "Base de Connaissances", "subtitle": "Gérez les documents de votre IA", "chunks": "chunks indexés", "reindex": "Re-indexer", "reindexing": "Indexation...", "search_placeholder": "Rechercher dans les chunks...", "no_documents": "Aucun chunk trouvé.", "import_hint": "Importez un document dans l'onglet Agent IA pour commencer.", "confirm_delete": "Supprimer ce chunk de la base de connaissances ?", "delete_error": "Échec de la suppression", "reindex_success": "Réindexation lancée avec succès", "no_kb_url": "Aucune URL de base de connaissances configurée. Ajoutez une URL dans Paramètres.", "reindex_error": "Échec de la réindexation", "generate_error": "Échec de la génération", "generate_from_desc": "Générer depuis une description", "generate_placeholder": "Décrivez votre activité, vos produits ou services… L'IA génèrera automatiquement une FAQ et l'indexera dans la base de connaissances.", "generating_btn": "Génération en cours…", "generate_btn": "Générer", "generate_success_count": "{{count}} Q&A générées et indexées", "generate_result_summary": "{{count}} Q&R générées · {{chunks}} chunks indexés" }, "training": { "title": "Training Lab", "subtitle": "Testez et affinez votre IA pédagogique", "rules_injected": "Succès ! {{count}} règles ont été injectées dans le dictionnaire.", "inject_rules": "Injecter ({{count}}) Règles", "ground_truth_label": "Vérité Terrain (Ground Truth)", "training_saved": "Entraînement enregistré !" }, "ai_setup": { "title": "Configuration de l'Agent IA", "subtitle": "Transformez vos documents en intelligence conversationnelle sur WhatsApp.", "kb_title": "Base de Connaissances", "kb_desc": "Téléchargez vos catalogues, manuels ou FAQ. L'IA utilisera ces documents pour répondre précisément.", "upload_idle": "Cliquez pour uploader un document", "upload_loading": "Upload et indexation en cours...", "upload_success": "Document indexé avec succès !", "upload_error": "Erreur lors de l'upload", "personality_title": "Personnalité de l'Agent", "role_label": "Rôle principal", "role_placeholder": "Ex: Conseiller technique pour Agritech", "tone_label": "Ton et Style", "save": "Sauvegarder la personnalité", "saving": "Sauvegarde...", "saved": "Sauvegardé", "preview_title": "Preview WhatsApp", "stats_title": "Statistiques Agent", "stats_status": "Statut", "stats_active": "Actif", "stats_chunks": "Chunks indexés", "stats_words": "Mots estimés", "no_kb": "Aucune base de connaissances indexée.", "notifications_title": "Notifications Automatisées", "notifications_desc": "Sélectionnez le modèle Meta à utiliser pour les relances automatiques envoyées par l'IA.", "kb_empty_title": "Votre agent n'est pas encore opérationnel", "kb_empty_desc": "Uploadez au moins un document (FAQ, catalogue, tarifs…) pour qu'il puisse répondre à vos clients. Sans base de connaissance, l'agent ne saura pas quoi dire.", "upload_success_detail": "Document analysé — votre agent a été mis à jour !", "current_file": "Actuel :", "indexing_title": "Que se passe-t-il maintenant ?", "indexing_desc": "Votre document est en cours d'analyse. Dans 30 à 60 secondes, votre agent pourra répondre aux questions qu'il couvre. Testez-le dans le panneau à droite.", "role_hint": "Décrivez en une ou deux phrases ce que fait votre agent et pour qui. Plus c'est précis, meilleures sont les réponses.", "tone_recommended": "— recommandé pour votre secteur", "tone_desc_professional": "Formel et précis — idéal pour les services B2B", "tone_desc_friendly": "Chaleureux et accessible — idéal pour le grand public", "tone_desc_direct": "Court et factuel — idéal pour le support", "tone_desc_pedagogical": "Patient et explicatif — idéal pour la formation", "test_live": "Test en direct", "test_hint": "Posez une vraie question à votre agent", "test_empty_with_kb": "Posez une question ci-dessous pour tester votre agent.", "test_empty_no_kb": "Uploadez un document d'abord, puis testez ici.", "test_placeholder": "Ex: Quels sont vos tarifs ?", "test_error": "Désolé, le test est indisponible pour le moment.", "kb_save_blocked": "Ajoutez d'abord un document à la base de connaissance ci-dessus avant d'activer votre agent.", "coverage_excellent": "Excellente", "coverage_good": "Bonne", "coverage_poor": "Insuffisante", "coverage_label": "passages analysés — couverture", "coverage_low_hint": "Ajoutez plus de documents pour améliorer la précision des réponses.", "no_kb_hint": "Ajoutez vos FAQ, tarifs ou fiches produit pour activer l'agent.", "stats_status_label": "Statut", "stats_active_label": "Actif", "words_covered": "Mots couverts", "bot_name_label": "Nom de l'agent", "bot_name_placeholder": "Ex: Kora, Awa, SupportBot...", "bot_name_hint": "Le prénom que votre agent utilisera pour se présenter sur WhatsApp.", "tone_professional": "Professionnel", "tone_friendly": "Amical", "tone_direct": "Direct", "tone_pedagogical": "Pédagogue" }, "tracks": { "title": "Parcours", "new": "Nouveau parcours", "no_tracks": "Aucun parcours. Créez-en un !", "confirm_delete": "Supprimer ce parcours ?", "days": "jours", "enrolled": "inscrits", "days_label": "Jours", "no_days": "Aucun jour créé.", "edit_day": "Modifier Jour", "new_day": "Nouveau jour", "day_number": "Numéro du jour", "day_title": "Titre", "lesson_text": "Texte de la leçon", "lesson_placeholder": "Contenu pédagogique...", "audio_url": "URL Audio (optionnel)", "exercise_type": "Type exercice", "exercise_type_text": "Texte libre", "exercise_type_audio": "Audio", "exercise_type_button": "Boutons", "validation_keyword": "Mot-clé validation", "exercise_prompt": "Prompt exercice", "exercise_prompt_placeholder": "Question posée à l'étudiant...", "no_lesson_text": "Pas de texte", "form_title_label": "Titre", "form_description": "Description", "form_duration": "Durée (jours)", "form_language": "Langue", "form_lang_fr": "Français", "form_lang_wolof": "Wolof", "form_premium": "Formation Premium (payante)", "form_price": "Prix (XOF)", "ai_generate_btn": "Générer avec IA", "ai_generate_first": "Générer votre premier programme avec IA", "ai_modal_badge": "Agent Créateur de Contenu", "ai_modal_title": "Générer un programme", "ai_modal_subtitle": "L'IA crée tout le curriculum en quelques secondes", "ai_description_label": "Description du programme", "ai_description_placeholder": "Ex: Formation de 5 jours sur les bases du marketing digital pour les PME au Sénégal...", "ai_num_days": "Nombre de jours", "ai_language": "Langue", "ai_lang_fr": "Français", "ai_lang_en": "Anglais", "ai_lang_wol": "Wolof", "ai_audience": "Public cible", "ai_audience_optional": "optionnel", "ai_audience_placeholder": "Ex: Entrepreneurs débutants, femmes rurales, lycéens...", "ai_generating": "Génération en cours... (15-30s)", "ai_generate_submit": "Générer le programme", "ai_error": "Échec de la génération IA" }, "campaigns": { "title": "Historique des Campagnes", "no_records": "Aucune campagne trouvée", "first_hint": "Envoyez votre première campagne depuis la section Contacts.", "total": "messages envoyés au total", "clear_filter": "Effacer filtre", "columns": { "contact": "Contact", "message": "Message", "status": "Statut", "sent": "Envoyé" } }, "livefeed": { "title": "Live Feed", "subtitle": "Surveillance des conversations en temps réel", "no_messages": "Aucun message pour l'instant.", "refresh": "Actualiser" }, "b2b": { "title": "Gestion Clients B2B", "subtitle": "Gérez vos organisations partenaires" }, "billing": { "select_org": "Sélectionnez une organisation pour voir la facturation.", "error_prefix": "Erreur :", "page_title": "Mes crédits & consommation", "period_label": "Période :", "recharge_btn": "Recharger", "alert_exhausted_title": "Service suspendu — vos crédits sont épuisés", "alert_exhausted_desc": "Rechargez pour rétablir les messages IA immédiatement.", "alert_low_title": "Crédits presque épuisés — {{count}} crédits restants", "alert_low_desc": "Rechargez avant interruption du service.", "alert_recharge_btn": "Recharger →", "wallet_label": "Crédits disponibles", "wallet_unit": "crédits", "wallet_fcfa": "≈ {{amount}} FCFA", "wallet_recharge_btn": "Recharger les crédits", "wallet_rate": "1 crédit = 1 message IA = 10 FCFA", "days_remaining": "À ce rythme : encore ~{{days}} jour", "days_remaining_plural": "À ce rythme : encore ~{{days}} jours", "ai_messages_title": "Messages IA ce mois", "ai_cost_label": "≈ {{cost}} FCFA de coût IA", "ai_quota_warning": "Quota mensuel bientôt atteint ({{pct}}%)", "wa_messages_title": "Messages WhatsApp ce mois", "wa_free_note": "✅ Gratuit pour vous — Meta facture directement votre compte WhatsApp Business", "activity_title": "Activité des 30 derniers jours", "activity_subtitle": "Chaque barre = nombre de messages IA + WhatsApp ce jour-là", "activity_empty": "Aucune activité sur cette période", "breakdown_title": "Où vont vos crédits IA ?", "breakdown_subtitle": "Répartition de l'utilisation par type de message ce mois", "transactions_title": "Derniers mouvements de crédits", "transactions_subtitle": "Les 20 dernières opérations sur votre solde", "balance_label": "Solde :", "csv_btn": "CSV", "csv_col_date": "Date", "csv_col_type": "Type", "csv_col_desc": "Description", "csv_col_amount": "Montant (crédits)", "csv_col_balance": "Solde après", "chat_title": "Posez une question sur votre consommation", "chat_subtitle": "Réponses basées sur vos vraies données · en français", "chat_placeholder": "Ex: Combien de crédits ai-je utilisé cette semaine ?", "chat_empty": "Cliquez sur une question ci-dessus ou écrivez la vôtre", "chat_error": "Désolé, je ne peux pas répondre pour le moment.", "quick_q1": "Combien de crédits me reste-t-il ?", "quick_q2": "Dans combien de jours serai-je à court ?", "quick_q3": "Quelle fonctionnalité consomme le plus ?", "quick_q4": "Combien j'ai dépensé cette semaine ?", "feature_LESSON": "📚 Leçons envoyées", "feature_FEEDBACK": "✅ Feedbacks exercices", "feature_DEEPDIVE": "🔍 Approfondissements", "feature_TRANSCRIPTION": "🎤 Transcriptions audio", "feature_IMAGE_ANALYSIS": "🖼️ Analyses image", "feature_CAMPAIGN": "📣 Campagnes", "feature_ONBOARDING": "👋 Accueil nouveaux apprenants", "feature_OTHER": "⚙️ Autres", "tx_TOP_UP_MANUAL": "➕ Recharge", "tx_TOP_UP_PAYMENT": "➕ Recharge", "tx_ADJUSTMENT": "🔧 Ajustement", "tx_DEBIT_AI": "🤖 Message IA", "tx_DEBIT_WHATSAPP": "💬 Message WhatsApp", "tx_DEBIT_BROADCAST": "📣 Campagne", "modal_title": "Recharger les crédits", "modal_rate": "1 crédit = 10 FCFA · utilisé pour chaque message IA", "modal_popular": "Le plus populaire", "modal_ai_messages": "≈ {{count}} messages IA", "modal_footer": "Cliquez sur un pack → WhatsApp s'ouvre → notre équipe finalise la recharge en moins de 2 heures.", "pack_500_label": "500 crédits", "pack_2000_label": "2 000 crédits", "pack_5000_label": "5 000 crédits", "pack_500_price": "5 000 FCFA", "pack_2000_price": "18 000 FCFA", "pack_5000_price": "40 000 FCFA" }, "clients": { "page_title": "Gestion des Clients B2B", "page_subtitle": "Gérez les organisations partenaires et leurs actifs WhatsApp.", "new_org_button": "Nouvelle Organisation", "loading": "Chargement des clients...", "no_clients_title": "Aucun client", "no_clients_desc": "Commencez par ajouter votre première organisation partenaire.", "status": { "operational": "Opérationnel", "config_required": "Configuration requise", "online": "En ligne", "suspended": "SUSPENDU" }, "actions": { "reconfigure_wa": "Reconfigurer WhatsApp", "connect_wa": "Connecter WhatsApp (Meta)", "direct_setup": "Configuration directe", "personality_studio": "Personality Studio", "ai_credits": "Crédits IA", "billing_details": "Détails & Facturation" }, "waba": { "checking": "Vérification…", "not_connected": "Non connecté", "approved": "Approuvé", "pending": "En révision", "rejected": "Rejeté", "banned": "Suspendu", "unknown": "Inconnu", "refresh_tooltip": "Rafraîchir", "what_to_do": "Que faire ? →", "verified": "Vérifiée", "not_verified": "Non vérifiée", "verify_link": "Vérifier →" }, "tier": { "tier_50": "50 conv./j", "tier_250": "250 conv./j", "tier_1k": "1 000 conv./j", "tier_10k": "10 000 conv./j", "tier_100k": "100 000 conv./j", "unlimited": "Illimité", "label": "Limite Quotidienne", "meta_compliance": "Meta Tech Provider Compliance" }, "quality": { "good_label": "Bon", "good_desc": "Taux de signalement faible. Continue ainsi.", "medium_label": "Moyen", "medium_desc": "Des utilisateurs ont signalé vos messages. Évitez les envois non sollicités.", "risky_label": "Risqué", "risky_desc": "Risque de blocage Meta. Réduisez le volume et améliorez le contenu.", "dot_title": "Qualité : " }, "tier_modal": { "title": "Limite de messagerie WhatsApp", "levels_heading": "Niveaux de capacité Meta", "current_badge": "Actuel", "tier_50_desc": "Compte restreint ou en cours d'activation.", "tier_250_desc": "Niveau de départ pour tout nouveau compte approuvé.", "tier_1k_desc": "Atteint automatiquement après 1 000 utilisateurs uniques/mois.", "tier_10k_desc": "Atteint après 10 000 utilisateurs uniques/mois.", "tier_100k_desc": "Volume élevé — débloqué par Meta sur demande.", "unlimited_desc": "Aucune limite appliquée par Meta.", "quality_heading": "Score Qualité du numéro", "meta_auto_update": "Meta met à jour ces données automatiquement.", "levels_auto": "Les niveaux progressent sans action de votre part." }, "cells": { "waba_header": "WABA", "business_header": "Entreprise Meta", "daily_limit_header": "Limite Quotidienne", "daily_limit_info_tooltip": "En savoir plus sur les limites Meta" }, "create_modal": { "title": "Nouvelle Organisation", "company_name_label": "Nom de l'entreprise", "company_name_placeholder": "Ex: AgroBusiness Senegal", "slug_label": "Slug (URL)", "slug_placeholder": "agro-sn", "use_case_label": "Cas d'usage", "use_case_education": "🎓 Plateforme Éducative (Modules)", "use_case_crm": "💬 CRM & Messages WhatsApp (Excel)", "workstream_label": "Espace de travail (Workstream)", "mode_crm": "CRM & Marketing", "mode_pedagogy": "Pédagogie & Formation", "mode_service": "Service Client IA", "admin_section": "Administrateur Principal", "admin_name_label": "Nom complet", "admin_name_placeholder": "Jean Dupont", "admin_email_label": "Email", "admin_email_placeholder": "admin@entreprise.com", "password_label": "Mot de passe provisoire", "password_placeholder": "Min. 8 caractères", "submit": "Créer l'organisation & Admin", "submitting": "Création...", "error_create": "Erreur lors de la création de l'organisation. Vérifiez que le slug est unique." }, "validation": { "name_required": "Nom requis", "slug_required": "Slug requis", "slug_format": "Lettres minuscules, chiffres et tirets uniquement", "admin_name_required": "Nom requis", "email_required": "Email requis", "email_invalid": "Email invalide", "password_min": "Minimum 8 caractères" }, "billing_modal": { "title": "Détails & Facturation", "mode_label": "Mode", "waba_status_label": "WABA Status", "daily_limit_label": "Limite quotidienne", "meta_business_label": "Entreprise Meta", "waba_id_label": "WABA ID", "plan_label": "Plan d'abonnement", "plan_starter": "Starter — 20 000 FCFA/mois", "plan_growth": "Croissance — 60 000 FCFA/mois", "plan_scale": "Scale — 150 000 FCFA/mois", "plan_enterprise": "Enterprise — 500 000+ FCFA/mois", "apply_plan": "Appliquer le plan", "plan_updated": "Plan mis à jour !", "close": "Fermer" }, "credits_modal": { "title": "Crédits IA", "current_balance": "Solde wallet actuel", "credits_unit": "crédits", "add_credits_label": "Crédits à ajouter", "add_credits_placeholder": "Ex: 500", "rate_hint": "1 crédit = 10 FCFA · Minimum 1 crédit", "submit": "Créditer le wallet", "error": "Erreur lors de l'allocation des crédits" }, "personality_modal": { "title": "Personality Studio", "subtitle": "Configuration de l'identité IA pour {{orgName}}", "bot_name_label": "Nom du bot", "bot_name_placeholder": "ex. XAMLÉ, Coach Sarah...", "mission_label": "Mission principale", "mission_placeholder": "Quel est l'objectif principal de cette IA ? ex. Aider les entrepreneurs à maîtriser la finance...", "tone_label": "Ton & Description de la personnalité", "tone_placeholder": "ex. Professionnel et encourageant, utilise des métaphores locales, strict sur les concepts mais amical...", "cancel": "Annuler", "submit": "Déployer la personnalité", "success": "Personnalité mise à jour !" }, "wa_setup_modal": { "title": "Configurer WhatsApp", "already_on_meta": "Compte déjà configuré sur Meta", "waba_id_label": "WABA ID", "waba_id_placeholder": "ex: 102938475610293", "waba_id_hint_link": "Ouvrir WhatsApp Accounts", "business_id_label": "Business ID Meta", "business_id_optional": "(optionnel — pour afficher la vérification)", "business_id_placeholder": "ex: 25855038707486178", "business_id_hint_link": "Ouvrir Business Info", "token_label": "Token système", "token_optional": "(optionnel — utilise le token env par défaut)", "token_placeholder": "EAAxxxxxxx... — laissez vide si déjà en env var", "token_hint_link": "Générer depuis System Users", "phone_number_detected": "Phone Number ID détecté :", "save_config": "Enregistrer la configuration", "success": "Configuration WhatsApp mise à jour !", "new_account_heading": "Nouveau compte — Connexion via Facebook", "new_account_desc": "Pour un client qui n'a pas encore configuré son compte WhatsApp Business sur votre plateforme.", "connect_facebook": "Se connecter avec Facebook" }, "toast": { "wa_connected": "WhatsApp connecté avec succès !", "error_prefix": "Erreur : " } }, "admin_chat": { "aria_label": "Assistant IA", "choose_or_write": "Choisissez une question ou écrivez la vôtre", "input_placeholder": "Votre question...", "error": "Désolé, je ne peux pas répondre pour le moment. Réessayez dans un instant.", "billing_title": "Assistant facturation", "billing_subtitle": "Réponses basées sur vos vraies données", "billing_q1": "Combien de crédits me reste-t-il ?", "billing_q2": "Dans combien de jours serai-je à court ?", "billing_q3": "Quelle fonctionnalité consomme le plus ?", "billing_q4": "Combien j'ai dépensé cette semaine ?", "settings_title": "Aide — Configuration", "settings_subtitle": "J'explique chaque paramètre", "settings_q1": "Comment connecter mon WhatsApp ?", "settings_q2": "À quoi sert le mode Agent IA ?", "settings_q3": "Mes clés API sont-elles sécurisées ?", "settings_q4": "Comment changer le mode de mon organisation ?", "templates_title": "Aide — Templates", "templates_subtitle": "Je vous aide à créer vos messages", "templates_q1": "Comment créer un bon template ?", "templates_q2": "À quoi servent les variables dans un template ?", "templates_q3": "Pourquoi un template peut être refusé ?", "templates_q4": "Quelle est la différence entre utilitaire et marketing ?", "agent_title": "Aide — Agent IA", "agent_subtitle": "Je vous guide pour configurer votre agent", "agent_q1": "Quel type de document dois-je uploader ?", "agent_q2": "Comment choisir le bon ton pour mon agent ?", "agent_q3": "Combien de documents sont suffisants ?", "agent_q4": "Comment améliorer les réponses de mon agent ?", "onboarding_title": "Aide — Connexion WhatsApp", "onboarding_subtitle": "Je vous guide étape par étape", "onboarding_q1": "Où est-ce que je trouve mon WABA ID ?", "onboarding_q2": "Quelle est la différence entre les deux options ?", "onboarding_q3": "Mon token a expiré, que faire ?", "onboarding_q4": "Je n'ai pas de compte Meta, par où commencer ?", "general_title": "Assistant Xamlé", "general_subtitle": "Posez-moi vos questions", "general_q1": "Comment bien débuter avec Xamlé ?", "general_q2": "Quelle est la différence entre les modes ?", "general_q3": "Comment fonctionne la facturation ?", "general_q4": "Où voir mes statistiques ?" }, "super_admin": { "nav_dashboard": "Dashboard", "nav_organizations": "Organisations", "nav_users": "Utilisateurs", "nav_whatsapp": "Numéros WA", "nav_templates": "Templates WA", "nav_profiles": "Profils WA", "nav_monitoring": "Monitoring", "nav_billing": "Billing", "nav_ai": "AI Insights", "nav_audit_logs": "Audit Logs", "exit_admin": "Quitter l'admin", "logout": "Déconnexion", "system_active": "Système actif", "platform_admin": "Platform Admin", "super_admin_label": "Super-admin", "dashboard_title": "Platform Dashboard", "dashboard_subtitle": "Vue globale de toutes les organisations", "kpi_organizations": "Organisations", "kpi_orgs_active": "{{count}} actives", "kpi_users": "Utilisateurs", "kpi_messages_24h": "Messages / 24h", "kpi_queue_depth": "Queue depth", "kpi_queue_failed": "{{count}} échoués", "kpi_revenue": "Revenus / mois", "kpi_alerts": "Alertes", "system_health": "Santé système", "health_db": "Base de données", "health_redis": "Redis", "health_queue": "Queue", "active_alerts": "Alertes actives ({{count}})", "alert_token": "Token expirant — {{orgName}} ({{daysOld}}j)", "alert_balance": "Solde faible — {{orgName}}: {{balance}} crédits", "alert_queue_failed": "{{count}} jobs échoués en queue", "orgs_title": "Organisations", "orgs_total": "{{count}} organisations au total", "org_new": "Nouvelle organisation", "org_search_placeholder": "Rechercher une organisation...", "org_search_btn": "Rechercher", "org_loading": "Chargement...", "org_empty": "Aucune organisation trouvée", "col_name": "Nom", "col_plan": "Plan", "col_status": "Statut", "col_users": "Utilisateurs", "col_credits": "Crédits", "status_suspended": "Suspendu", "status_trial": "Trial", "status_active": "Actif", "org_reactivated": "Organisation réactivée", "org_suspended": "Organisation suspendue", "org_delete_confirm": "Supprimer définitivement \"{{name}}\" ? Cette action ne peut pas être annulée.", "org_deleted": "\"{{name}}\" supprimée", "org_updated": "Organisation mise à jour", "org_created": "Organisation créée", "label_plan": "Plan", "label_ai_credits": "Limite crédits AI", "label_crm_active": "CRM actif", "label_edtech_active": "EdTech actif", "saving": "Sauvegarde...", "save": "Sauvegarder", "modal_new_org": "Nouvelle organisation", "org_name_placeholder": "Nom de l'organisation", "cancel": "Annuler", "creating": "Création...", "create": "Créer", "err_load_orgs": "Erreur chargement organisations", "err_suspend": "Erreur modification statut", "err_delete": "Erreur suppression", "err_update": "Erreur mise à jour", "err_create": "Erreur création", "btn_edit": "Modifier", "btn_reactivate": "Réactiver", "btn_suspend": "Suspendre", "btn_delete_forever": "Supprimer définitivement", "pagination_info": "{{from}}–{{to}} sur {{total}}", "prev": "Précédent", "next": "Suivant", "users_title": "Utilisateurs", "users_total": "{{count}} utilisateurs au total", "user_search_placeholder": "Rechercher par nom ou email...", "col_user": "Utilisateur", "col_organization": "Organisation", "col_role": "Rôle", "col_created_at": "Créé le", "user_empty": "Aucun utilisateur trouvé", "role_updated": "Rôle mis à jour", "btn_reset_password": "Réinitialiser le mot de passe", "reset_no_email": "Cet utilisateur n'a pas d'adresse email", "reset_confirm": "Envoyer un lien de réinitialisation à {{email}} ?", "reset_sent": "Lien envoyé à {{email}}", "err_load_users": "Erreur chargement utilisateurs", "err_role_change": "Erreur changement de rôle", "err_reset_password": "Erreur envoi email", "wa_numbers_title": "Numéros WhatsApp", "wa_numbers_total": "{{count}} numéros enregistrés", "wa_refresh": "Actualiser", "wa_register_number": "Enregistrer un numéro", "wa_no_numbers": "Aucun numéro WhatsApp enregistré", "col_number": "Numéro", "col_id": "ID", "col_added_at": "Ajouté le", "wa_register_title": "Enregistrer un numéro WhatsApp", "wa_step": "Étape {{step}}/2", "label_org": "Organisation", "org_select_placeholder": "Sélectionner une organisation...", "label_phone_number_id": "Phone Number ID", "phone_id_hint": "Trouvez cet ID dans Meta Business Manager > WhatsApp Accounts", "label_pin": "PIN de sécurité", "pin_hint": "PIN à 6 chiffres pour sécuriser le numéro (laisser vide = 000000)", "wa_select_org_error": "Veuillez sélectionner une organisation.", "wa_phone_id_error": "Le Phone Number ID doit contenir entre 12 et 18 chiffres.", "wa_pin_error": "Le PIN doit contenir exactement 6 chiffres.", "wa_sending": "Envoi en cours...", "wa_send_otp": "Envoyer le code OTP", "wa_reg_error": "Erreur lors de l'enregistrement.", "wa_net_error": "Erreur réseau.", "wa_otp_hint": "Meta vous a envoyé un code OTP par SMS ou appel vocal sur le numéro. Saisissez-le ci-dessous.", "label_otp": "Code OTP", "wa_otp_error": "Le code OTP doit contenir entre 4 et 8 chiffres.", "wa_verifying": "Vérification...", "wa_verify": "Vérifier", "wa_otp_invalid": "Code OTP invalide ou expiré.", "wa_number_registered": "Numéro enregistré avec succès !", "wa_back": "Retour", "err_load_numbers": "Erreur chargement numéros", "tpl_title": "WhatsApp Templates", "tpl_orgs_count_one": "{{count}} organisation avec WhatsApp configuré", "tpl_orgs_count_other": "{{count}} organisations avec WhatsApp configuré", "tpl_select_hint": "Sélectionnez une organisation pour gérer ses modèles de message WhatsApp.", "tpl_search_placeholder": "Rechercher une organisation ou un WABA ID...", "tpl_empty": "Aucune organisation avec WhatsApp configuré", "col_waba_id": "WABA ID", "col_actions": "Actions", "tpl_view": "Voir templates", "tpl_no_templates": "Aucun modèle trouvé pour cette organisation.", "col_category": "Catégorie", "col_language": "Langue", "tpl_create_btn": "Créer un template", "tpl_create_title": "Nouveau template WhatsApp", "label_template_name": "Nom du template", "template_name_hint": "Minuscules, chiffres, underscores uniquement", "template_name_error": "Minuscules, chiffres, underscores uniquement", "label_category": "Catégorie", "label_language": "Langue", "label_header_optional": "En-tête (optionnel)", "label_body": "Corps du message", "label_footer_optional": "Pied de page (optionnel)", "label_preview": "Prévisualisation", "body_placeholder": "Corps du message...", "tpl_select_org_placeholder": "Sélectionner une organisation…", "tpl_submitted": "Template soumis à Meta pour approbation", "tpl_create_required": "Organisation, nom et corps du message sont obligatoires.", "tpl_name_invalid": "Le nom du template est invalide.", "tpl_creating": "Création…", "tpl_create_submit": "Créer le template", "tpl_create_error": "Erreur lors de la création du template.", "profiles_title": "Profils WhatsApp", "profiles_count_one": "{{count}} profil", "profiles_count_other": "{{count}} profils", "profile_empty": "Aucun profil WhatsApp trouvé", "label_org_name": "Nom de l'organisation", "label_logo_url": "URL du logo", "label_primary_color": "Couleur principale", "profile_updated": "Profil mis à jour", "err_load_profiles": "Erreur chargement des profils", "err_save_profile": "Erreur lors de la sauvegarde", "btn_cancel_edit": "Annuler", "btn_save": "Enregistrer", "saving_profile": "Enregistrement…", "btn_edit_profile": "Modifier", "monitoring_title": "Monitoring & Alertes", "monitoring_subtitle": "État en temps réel du système", "system_health_title": "Santé système", "health_redis_cache": "Redis / Cache", "health_queue_jobs": "Queue jobs", "queue_failed_detail": "{{count}} échoués", "queue_waiting_detail": "{{count}} en attente", "token_expiry_title": "Tokens WhatsApp expirants", "token_no_risk": "Aucun token en risque d'expiration", "col_org": "Organisation", "col_issued_ago": "Émis il y a", "col_days": "{{count}} jours", "low_balance_title": "Soldes faibles (< 100 crédits)", "low_balance_none": "Aucune organisation avec solde faible", "credits_label": "{{count}} crédits", "err_load_monitoring": "Erreur chargement monitoring", "billing_title": "Billing", "billing_transactions": "{{count}} transactions", "billing_add_credits": "Ajouter crédits", "billing_no_transactions": "Aucune transaction", "col_date": "Date", "col_type": "Type", "col_description": "Description", "col_amount": "Montant", "col_balance_after": "Solde après", "credits_added": "{{amount}} crédits ajoutés. Nouveau solde: {{balance}}", "modal_add_credits": "Ajouter des crédits", "label_org_id": "ID de l'organisation", "org_id_placeholder": "org-uuid...", "label_credits_amount": "Montant (crédits)", "label_description_optional": "Description (optionnel)", "credits_desc_placeholder": "Rechargement manuel...", "adding": "Ajout...", "add": "Ajouter", "err_load_transactions": "Erreur chargement transactions", "err_add_credits": "Erreur ajout de crédits", "audit_title": "Audit Logs", "audit_total": "{{count}} entrées au total", "col_datetime": "Date / Heure", "col_action": "Action", "col_actor": "Acteur", "col_resource": "Ressource", "col_details": "Détails", "col_from": "Du", "col_to": "Au", "audit_search": "Rechercher", "audit_empty": "Aucun log pour ces critères", "audit_show": "Voir", "audit_hide": "Masquer", "ai_title": "AI Insights", "ai_subtitle": "Commandes en langage naturel pour gérer la plateforme", "ai_suggestion_1": "Montre moi les organisations avec un solde faible", "ai_suggestion_2": "Quelles sont les statistiques de la plateforme ?", "ai_suggestion_3": "Liste les alertes actives", "ai_suggestion_4": "Affiche les 10 dernières organisations", "ai_greeting": "Bonjour ! Je suis votre assistant IA pour la gestion de la plateforme XAMLÉ. Posez-moi une question ou donnez-moi une instruction.", "ai_input_placeholder": "Tapez une commande... ex: 'Ajoute 500 crédits à l'org XAMLÉ'", "ai_confirm": "Confirmer", "ai_cancelled": "Action annulée.", "ai_err": "Erreur AI", "ai_err_exec": "Erreur exécution", "ai_err_message": "Désolé, une erreur est survenue.", "ai_err_exec_message": "Erreur lors de l'exécution.", "ai_done": "Action effectuée.", "ai_no_result": "Aucun résultat trouvé.", "rel_today": "aujourd'hui", "rel_yesterday": "il y a 1 jour", "rel_days_ago": "il y a {{count}} jours", "tpl_cat_marketing_desc": "Promotions, offres, newsletters", "tpl_cat_utility_desc": "Confirmations, mises à jour transactionnelles", "tpl_cat_authentication_desc": "Codes OTP, vérification" } }