edtech / apps /admin /src /locales /en.json
CognxSafeTrack
fix(admin): replace vague Meta hints with direct clickable links in Direct Setup modal
295c327
{
"common": {
"welcome": "Welcome",
"dashboard": "Dashboard",
"clients": "Client Management",
"analytics": "Analytics",
"settings": "Settings",
"logout": "Logout",
"save": "Save Changes",
"cancel": "Cancel",
"loading": "Loading...",
"error": "An error occurred",
"success": "Action successful",
"create": "Create",
"delete": "Delete",
"edit": "Edit",
"search": "Search...",
"actions": "Actions",
"export": "Export",
"sync": "Sync",
"send": "Send",
"close": "Close",
"confirm": "Confirm",
"back": "Back",
"next": "Next",
"yes": "Yes",
"no": "No",
"status": "Status",
"date": "Date",
"name": "Name",
"email": "Email",
"phone": "Phone",
"day": "Day",
"none": "None",
"select_org": "Please select an organization",
"clear_filter": "Clear filter",
"no_data": "No data available",
"retry": "Retry",
"of": "of"
},
"nav": {
"home": "Home",
"inbox": "Conversations",
"campaigns": "Campaign History",
"templates": "WhatsApp Templates",
"organizations": "Organizations",
"users": "Users",
"training": "Training Lab",
"moderation": "Moderation",
"b2b": "B2B Clients",
"kb": "Knowledge Base",
"content": "Courses",
"conversations": "Conversations",
"ai_setup": "AI Agent",
"billing": "Billing"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Your platform status in real time",
"select_org": "Welcome to EdTech Admin",
"select_org_hint": "To get started, please select an organization from the dropdown on the left.",
"isolation_note": "Data isolation ensures you only see statistics for the active organization.",
"loading": "Analyzing data...",
"no_enrollments": "No enrollments",
"recent_enrollments": "Recent Enrollments",
"export_csv": "Export CSV",
"stats": {
"users": "Users",
"active": "Active",
"completed": "Completed",
"tracks": "Courses",
"revenue": "Revenue",
"total_messages": "Total Messages",
"active_users": "Active Users",
"completion_rate": "Completion Rate",
"ai_cost": "Estimated AI Cost"
},
"table": {
"phone": "Phone",
"track": "Course",
"status": "Status",
"day": "Day",
"date": "Date"
}
},
"analytics": {
"title": "Analytics & Performance",
"export": "Export report",
"explain": "Explain",
"messages": {
"title": "Message Volume",
"inbound": "Inbound",
"outbound": "Outbound"
},
"completion": {
"title": "Success Rate",
"completed": "Completed",
"in_progress": "In progress"
},
"performance": {
"title": "Performance",
"avg_score": "Average exercise score"
},
"engagement": {
"title": "Engagement",
"avg_days": "Average training days"
},
"sql_error": "Error executing query",
"sql_example_1": "How many active users this week?",
"sql_example_2": "What are the 5 users with the most messages?",
"sql_example_3": "What is the average completion rate?",
"sql_example_4": "How many AI credits were consumed this month?",
"ai_cost_title": "AI Cost by Feature",
"ai_cost_subtitle": "Real data — source: UsageEvent",
"col_feature": "Feature",
"col_calls": "Calls",
"col_tokens_in": "Tokens in",
"col_tokens_out": "Tokens out",
"col_cost": "Cost (USD)",
"total": "Total",
"nl_search_title": "Natural language search",
"nl_search_subtitle": "Ask a question about your data — AI generates the SQL query",
"nl_search_placeholder": "E.g.: What users have been inactive for 7 days?",
"search_btn": "Search",
"view_sql": "View SQL",
"no_results": "No results"
},
"tracks": {
"title": "Courses",
"new": "New course",
"no_tracks": "No courses yet. Create one!",
"confirm_delete": "Delete this course?",
"days": "days",
"enrolled": "enrolled",
"days_label": "Days",
"no_days": "No days created yet.",
"edit_day": "Edit Day",
"new_day": "New day",
"day_number": "Day number",
"day_title": "Title",
"lesson_text": "Lesson text",
"lesson_placeholder": "Pedagogical content...",
"audio_url": "Audio URL (optional)",
"exercise_type": "Exercise type",
"exercise_type_text": "Free text",
"exercise_type_audio": "Audio",
"exercise_type_button": "Buttons",
"validation_keyword": "Validation keyword",
"exercise_prompt": "Exercise prompt",
"exercise_prompt_placeholder": "Question asked to the student...",
"no_lesson_text": "No text",
"form_title_label": "Title",
"form_description": "Description",
"form_duration": "Duration (days)",
"form_language": "Language",
"form_lang_fr": "French",
"form_lang_wolof": "Wolof",
"form_premium": "Premium Training (paid)",
"form_price": "Price (XOF)",
"ai_generate_btn": "Generate with AI",
"ai_generate_first": "Generate your first program with AI",
"ai_modal_badge": "Content Creator Agent",
"ai_modal_title": "Generate a program",
"ai_modal_subtitle": "AI creates the entire curriculum in seconds",
"ai_description_label": "Program description",
"ai_description_placeholder": "E.g.: 5-day training on digital marketing basics for SMEs in Senegal...",
"ai_num_days": "Number of days",
"ai_language": "Language",
"ai_lang_fr": "French",
"ai_lang_en": "English",
"ai_lang_wol": "Wolof",
"ai_audience": "Target audience",
"ai_audience_optional": "optional",
"ai_audience_placeholder": "E.g.: Beginner entrepreneurs, rural women, students...",
"ai_generating": "Generating... (15-30s)",
"ai_generate_submit": "Generate program",
"ai_error": "AI generation failed"
},
"users": {
"title": "Users",
"subtitle": "All enrolled learners",
"no_users": "No users found",
"invite": "Invite",
"columns": {
"name": "Name",
"phone": "Phone",
"track": "Active course",
"day": "Day",
"status": "Status",
"joined": "Joined"
},
"confirm_delete": "Delete this user? This action is reversible in the database.",
"delete_success": "User deleted",
"delete_error": "Deletion failed",
"handoff_released": "Handoff released — AI resumes the conversation",
"handoff_none": "No active handoff for this user",
"handoff_error": "Failed",
"load_error": "Error loading users",
"language_column": "Language",
"sector_column": "Sector",
"conversation_btn": "Conversation",
"delete_title": "Delete user",
"handoff_active": "Handoff active",
"release_ai": "Release AI",
"prev": "Previous"
},
"contacts": {
"title": "Contacts",
"subtitle": "Manage your CRM contact base",
"add": "Add contact",
"import": "Import",
"no_contacts": "No contacts",
"search_placeholder": "Search a contact...",
"tags_update_error": "Failed to update tags",
"import_success": "Import successful: {{created}} added, {{updated}} updated, {{errors}} errors.",
"upload_critical_error": "A critical error occurred during the upload.",
"ai_generation_error": "AI generation failed.",
"generation_error_fallback": "Generation error",
"confirm_delete_one": "Are you sure you want to delete this contact?",
"delete_error": "Error during deletion.",
"confirm_delete_many": "Are you sure you want to delete {{count}} contacts?",
"bulk_delete_success": "Contacts successfully deleted.",
"bulk_delete_error": "Error during bulk deletion.",
"csv_name": "Name",
"csv_phone": "Phone",
"csv_created": "Created at",
"message_copied": "Message copied!",
"copied": "Copied!",
"generation_completed": "Generation completed successfully"
},
"campaigns": {
"title": "Campaign History",
"no_records": "No campaigns found",
"first_hint": "Send your first campaign from the Contacts section.",
"total": "messages sent in total",
"clear_filter": "Clear filter",
"columns": {
"contact": "Contact",
"message": "Message",
"status": "Status",
"sent": "Sent"
}
},
"knowledge": {
"title": "Knowledge Base",
"subtitle": "Manage your AI documents",
"chunks": "indexed chunks",
"reindex": "Re-index",
"reindexing": "Indexing...",
"search_placeholder": "Search chunks...",
"no_documents": "No chunks found.",
"import_hint": "Import a document in the AI Agent tab to get started.",
"confirm_delete": "Delete this chunk from the knowledge base?",
"delete_error": "Deletion failed",
"reindex_success": "Reindexing started successfully",
"no_kb_url": "No knowledge base URL configured. Add a URL in Settings.",
"reindex_error": "Reindexing failed",
"generate_error": "Generation failed",
"generate_from_desc": "Generate from description",
"generate_placeholder": "Describe your activity, products or services… AI will automatically generate a FAQ and index it in the knowledge base.",
"generating_btn": "Generating…",
"generate_btn": "Generate",
"generate_success_count": "{{count}} Q&A generated and indexed",
"generate_result_summary": "{{count}} Q&A generated · {{chunks}} chunks indexed"
},
"ai_setup": {
"title": "AI Agent Setup",
"subtitle": "Turn your documents into conversational intelligence on WhatsApp.",
"kb_title": "Knowledge Base",
"kb_desc": "Upload your catalogues, training manuals or FAQs. The AI will use these to answer your clients precisely.",
"upload_idle": "Click to upload a document",
"upload_loading": "Uploading and indexing...",
"upload_success": "Document indexed successfully!",
"upload_error": "Upload error",
"personality_title": "Agent Personality",
"role_label": "Main role",
"role_placeholder": "e.g. Technical advisor for Agritech",
"tone_label": "Tone & Style",
"save": "Save personality",
"saving": "Saving...",
"saved": "Saved",
"preview_title": "WhatsApp Preview",
"stats_title": "Agent Statistics",
"stats_status": "Status",
"stats_active": "Active",
"stats_chunks": "Indexed chunks",
"stats_words": "Estimated words",
"no_kb": "No knowledge base indexed.",
"notifications_title": "Automated Notifications",
"notifications_desc": "Select the Meta template to use for automated follow-ups sent by the AI.",
"kb_empty_title": "Your agent is not yet operational",
"kb_empty_desc": "Upload at least one document (FAQ, catalog, pricing…) so it can answer your clients. Without a knowledge base, the agent won't know what to say.",
"upload_success_detail": "Document analyzed — your agent has been updated!",
"current_file": "Current:",
"indexing_title": "What happens now?",
"indexing_desc": "Your document is being analyzed. Within 30 to 60 seconds, your agent will be able to answer questions it covers. Test it in the panel on the right.",
"role_hint": "Describe in one or two sentences what your agent does and for whom. The more precise, the better the responses.",
"tone_recommended": "— recommended for your sector",
"tone_desc_professional": "Formal and precise — ideal for B2B services",
"tone_desc_friendly": "Warm and accessible — ideal for the general public",
"tone_desc_direct": "Short and factual — ideal for support",
"tone_desc_pedagogical": "Patient and explanatory — ideal for training",
"test_live": "Live test",
"test_hint": "Ask your agent a real question",
"test_empty_with_kb": "Ask a question below to test your agent.",
"test_empty_no_kb": "Upload a document first, then test here.",
"test_placeholder": "e.g. What are your rates?",
"test_error": "Sorry, the test is unavailable at the moment.",
"kb_save_blocked": "Add a document to the knowledge base above before activating your agent.",
"coverage_excellent": "Excellent",
"coverage_good": "Good",
"coverage_poor": "Insufficient",
"coverage_label": "passages analyzed — coverage",
"coverage_low_hint": "Add more documents to improve response accuracy.",
"no_kb_hint": "Add your FAQs, pricing, or product sheets to activate the agent.",
"stats_status_label": "Status",
"stats_active_label": "Active",
"words_covered": "Words covered",
"bot_name_label": "Agent name",
"bot_name_placeholder": "E.g. Kora, Awa, SupportBot...",
"bot_name_hint": "The name your agent will use to introduce itself on WhatsApp.",
"tone_professional": "Professional",
"tone_friendly": "Friendly",
"tone_direct": "Direct",
"tone_pedagogical": "Pedagogical"
},
"livefeed": {
"title": "Live Feed",
"subtitle": "Real-time conversation monitoring",
"no_messages": "No messages yet.",
"refresh": "Refresh"
},
"training": {
"title": "Training Lab",
"subtitle": "Test and refine your pedagogical AI",
"rules_injected": "Success! {{count}} rules have been injected into the dictionary.",
"inject_rules": "Inject ({{count}}) Rules",
"ground_truth_label": "Ground Truth",
"training_saved": "Training saved!"
},
"b2b": {
"title": "B2B Client Management",
"subtitle": "Manage your partner organizations"
},
"settings": {
"title": "Settings",
"profile": "Organization Profile",
"branding": "Branding & Colors",
"ai_config": "AI Configuration",
"whatsapp_config": "WhatsApp Technical State",
"billing": "Billing & Subscription",
"org_name": "Organization name",
"primary_color": "Primary color",
"logo_url": "Logo URL",
"save_success": "Settings saved successfully.",
"save_error": "Failed to save settings.",
"no_org_selected": "Please select an organization.",
"advanced_config": "Advanced configuration",
"developers_badge": "Developers",
"flow_config_desc": "This field contains the JSON configuration for the educational flow. Only modify it if you know what you're doing.",
"wa_account": "WhatsApp account",
"wa_token": "System token",
"not_configured": "Not configured",
"token_absent": "Absent",
"token_expired": "Expired",
"token_valid": "Valid",
"token_present": "Present",
"token_expired_alert": "Your WhatsApp token is invalid or expired. Messages can no longer be sent. Go to Meta Business Manager → System Users to generate a new token, then update your organization.",
"api_keys_title": "AI API Keys",
"api_keys_locked": "Available from the SCALE plan. By adding your own OpenAI or Google keys, you use your own AI quota — with no limit tied to your Xamlé plan.",
"api_keys_unlocked": "Your keys are encrypted and stored securely. They replace the platform's shared keys — your AI consumption is no longer deducted from your credit balance.",
"wa_connect_success": "WhatsApp connected successfully ✅",
"wa_connect_error": "WhatsApp connection failed. Check the token and WABA ID.",
"mode_edtech": "EdTech",
"mode_webhook": "Webhook",
"mode_ai_agent": "AI Agent",
"mode_pedagogy": "Pedagogy",
"mode_customer_service": "Customer Service",
"mode_crm_marketing": "CRM & Campaigns",
"wa_cancel": "Cancel",
"wa_reconfigure": "🔄 Reconfigure",
"wa_connect_btn": "🔗 Connect",
"wa_connecting": "Connecting...",
"wa_connect_submit": "Connect WhatsApp"
},
"auth": {
"org_id": "Organisation ID",
"email": "Email",
"password": "Password",
"login_subtitle_edtech": "Sign in to your EdTech workspace",
"login_subtitle_admin": "Admin workspace — restricted access",
"login_button": "Sign in",
"login_loading": "Signing in...",
"org_id_required": "Organisation ID is required.",
"powered_by": "Powered by Xamlé Studio",
"forgot_password": "Forgot password?",
"reset_title": "Forgot password",
"reset_sent_title": "Email sent",
"reset_sent_subtitle": "Check your inbox and click the reset link.",
"reset_new_title": "New password",
"reset_success_title": "Password updated",
"reset_success_subtitle": "You can now sign in with your new password.",
"reset_email_label": "Email address",
"reset_email_placeholder": "your@email.com",
"reset_send_button": "Send link",
"reset_sending": "Sending...",
"reset_new_password": "New password",
"reset_confirm_password": "Confirm",
"reset_set_button": "Set password",
"reset_setting": "Updating...",
"reset_login_link": "Sign in",
"reset_back": "Back to sign in",
"reset_network_error": "Network error. Please try again.",
"reset_password_mismatch": "Passwords do not match.",
"reset_password_min_length": "Password must be at least 6 characters.",
"reset_token_expired": "Invalid or expired token."
},
"onboarding": {
"title": "Welcome to Xamlé.Studio",
"subtitle": "Set up your WhatsApp school in a few minutes.",
"step_welcome": "Welcome",
"step_legal": "Contract",
"step_whatsapp": "WhatsApp",
"step_ai": "AI Brain",
"connect_fb": "Connect with Facebook",
"fb_connected": "Facebook Account Connected!",
"setup_waba": "Setting up your WhatsApp Business Account...",
"cta_launch": "Launch my platform",
"legal_text": "By accepting, you agree to our Platform Solution Provider terms and Meta's Business Policies.",
"whatsapp_help_title": "Where to find this information?",
"help_waba_id": "Log in to WhatsApp Manager → \"WhatsApp Business Account\" column → 15-digit number.",
"help_business_id": "Meta Settings → Business Info → \"Meta Business ID\".",
"help_token": "In Meta Business Manager → System Users → your user → Generate token. Choose \"Never expire\" to avoid interruptions.",
"help_new_to_meta": "New to Meta? Use the \"Connect with Facebook\" button below — simpler, everything is automatic.",
"already_configured": "Account already configured on Meta",
"fb_account_connected": "Facebook account connected",
"new_account_via_fb": "New account — Connect via Facebook",
"new_account_desc": "The client configures their number directly in the Facebook popup.",
"token_valid_msg": "Valid token — recognized by Meta",
"token_invalid_msg": "Invalid or expired token. Check in Meta Business Manager → System Users.",
"token_idle_hint": "Generate a \"Never expire\" token in Meta Business Manager → System Users.",
"skip_whatsapp": "Configure WhatsApp later",
"create_org": "Create organization",
"creating": "Creating…",
"step_org": "Organization",
"step_admin": "Administrator",
"org_title": "The organization",
"org_subtitle": "Name, URL identifier and use case.",
"org_name_label": "Organization name",
"slug_label": "URL identifier (slug)",
"slug_hint": "Auto-generated from name. Editable — lowercase letters, numbers and hyphens only.",
"mode_label": "Use case",
"mode_edtech_label": "Training & EdTech",
"mode_edtech_desc": "Educational courses, exercises, learner tracking via WhatsApp",
"mode_crm_label": "CRM & Campaigns",
"mode_crm_desc": "Contact management, broadcast campaigns, marketing follow-ups",
"mode_ai_label": "AI Agent",
"mode_ai_desc": "Conversational AI bot to respond autonomously 24/7",
"mode_customer_service_label": "Customer Service",
"mode_customer_service_desc": "Manage incoming conversations and escalate to a human agent",
"admin_title": "The administrator",
"admin_subtitle": "The first admin account for this organization.",
"admin_name_label": "Full name",
"admin_email_label": "Email",
"admin_pass_label": "Initial password",
"admin_pass_optional": "optional — auto-generated if empty",
"admin_pass_placeholder": "Leave empty to auto-generate",
"admin_pass_hint": "An email with the temporary password is sent to the admin after creation.",
"wa_title": "WhatsApp Connection",
"wa_subtitle": "Optional — can be configured later from the organization profile.",
"create_error": "Creation failed",
"fb_error": "Facebook login was cancelled or failed."
},
"crm": {
"stats": {
"total_contacts": "Total Contacts",
"messages_sent": "Messages Sent",
"open_rate": "Open Rate",
"conversion": "Conversion"
},
"assistant": {
"placeholder": "Type your command here...",
"thinking": "AI is preparing a response...",
"contact_preview": "Contact Preview",
"campaign_summary": "Campaign Summary",
"messages_ready": "personalized messages ready to send",
"recipient": "RECIPIENT",
"more_contacts": "+ {{count}} more contacts",
"more_messages": "+ {{count}} more messages",
"send_all": "🚀 Send all via WhatsApp API",
"powered_by": "Powered by Xamlé AI • Integrated CRM PaaS",
"btn_history": "📊 History",
"btn_import": "📤 Import",
"btn_campaign": "✨ Campaign",
"error_mic": "Microphone access error.",
"error_bulk": "Error sending in bulk.",
"import_first": "Please import a contact list first.",
"campaign_queued": "🚀 Your campaign has been queued for progressive delivery!",
"error_occurred": "A technical error occurred.",
"drop_file_note": "Please use the import button for now."
},
"inbox": {
"title": "Conversations",
"no_messages": "No conversations found.",
"reply_placeholder": "Type your message here...",
"send": "Send Reply"
},
"campaigns": {
"title": "Campaign History",
"subtitle": "Track all your outgoing broadcasts and their performance.",
"new_campaign": "New Campaign",
"select_template": "WhatsApp Template (Optional)",
"choose_approved": "Select an approved template...",
"no_approved_templates": "No approved templates found. Sync them first.",
"use_ai_text": "Use AI Generated Text",
"status_sent": "Sent",
"status_delivered": "Delivered",
"status_read": "Read",
"status_failed": "Failed",
"fetch_failed": "Failed to load templates"
}
},
"whatsapp": {
"templates": {
"title": "WhatsApp Message Templates",
"subtitle": "Manage and synchronize your pre-approved Meta templates.",
"sync_button": "Sync with Meta",
"create_button": "Create Template",
"no_templates": "No templates found. Synchronize or create your first one.",
"table": {
"name": "Template Name",
"category": "Category",
"language": "Language",
"status": "Status"
},
"create_modal": {
"title": "Create New Template",
"name_label": "Template Name (lowercase, no spaces)",
"category_label": "Category",
"language_label": "Language",
"body_label": "Body Text",
"submit": "Submit for Approval",
"success": "Template submitted successfully!",
"error": "Failed to submit template.",
"meta_approval": "Templates must be approved by Meta before use.",
"ai_generate_label": "Generate with AI",
"ai_placeholder": "e.g. \"welcome message for a new learner\"",
"ai_generating": "Generating…",
"ai_generate": "Generate",
"ai_hint": "The AI fills in the fields below — you can edit them before submitting.",
"name_hint": "Lowercase letters, numbers and underscores only. e.g. payment_reminder",
"policy_marketing": "Promotional — Meta approval 24–48h. Avoid overly commercial wording.",
"policy_utility": "Transactional — faster approval (often a few hours). Confirmations, reminders, alerts.",
"preview_label": "WhatsApp Preview",
"view_preview": "View Full Preview"
},
"status_approved": "Approved",
"status_pending": "Pending",
"status_rejected": "Rejected",
"status_paused": "Paused",
"status_disabled": "Disabled",
"waba_not_configured": "WhatsApp Business not configured",
"waba_not_configured_desc": "This organization does not yet have a WhatsApp Business account (WABA) associated. Go to Settings → WhatsApp Integration to configure your number and WABA ID."
}
},
"billing": {
"select_org": "Select an organization to view billing.",
"error_prefix": "Error:",
"page_title": "My credits & usage",
"period_label": "Period:",
"recharge_btn": "Top up",
"alert_exhausted_title": "Service suspended — your credits are exhausted",
"alert_exhausted_desc": "Top up to restore AI messages immediately.",
"alert_low_title": "Credits almost exhausted — {{count}} credits remaining",
"alert_low_desc": "Top up before service is interrupted.",
"alert_recharge_btn": "Top up →",
"wallet_label": "Available credits",
"wallet_unit": "credits",
"wallet_fcfa": "≈ {{amount}} FCFA",
"wallet_recharge_btn": "Top up credits",
"wallet_rate": "1 credit = 1 AI message = 10 FCFA",
"days_remaining": "At this rate: ~{{days}} day left",
"days_remaining_plural": "At this rate: ~{{days}} days left",
"ai_messages_title": "AI messages this month",
"ai_cost_label": "≈ {{cost}} FCFA in AI cost",
"ai_quota_warning": "Monthly quota almost reached ({{pct}}%)",
"wa_messages_title": "WhatsApp messages this month",
"wa_free_note": "✅ Free for you — Meta bills your WhatsApp Business account directly",
"activity_title": "Activity over the last 30 days",
"activity_subtitle": "Each bar = total AI + WhatsApp messages on that day",
"activity_empty": "No activity during this period",
"breakdown_title": "Where do your AI credits go?",
"breakdown_subtitle": "Usage breakdown by message type this month",
"transactions_title": "Recent credit movements",
"transactions_subtitle": "The last 20 operations on your balance",
"balance_label": "Balance:",
"csv_btn": "CSV",
"csv_col_date": "Date",
"csv_col_type": "Type",
"csv_col_desc": "Description",
"csv_col_amount": "Amount (credits)",
"csv_col_balance": "Balance after",
"chat_title": "Ask a question about your usage",
"chat_subtitle": "Answers based on your real data",
"chat_placeholder": "e.g. How many credits have I used this week?",
"chat_empty": "Click a question above or type your own",
"chat_error": "Sorry, I can't respond right now.",
"quick_q1": "How many credits do I have left?",
"quick_q2": "How many days until I run out?",
"quick_q3": "Which feature consumes the most?",
"quick_q4": "How much have I spent this week?",
"feature_LESSON": "📚 Lessons sent",
"feature_FEEDBACK": "✅ Exercise feedback",
"feature_DEEPDIVE": "🔍 Deep dives",
"feature_TRANSCRIPTION": "🎤 Audio transcriptions",
"feature_IMAGE_ANALYSIS": "🖼️ Image analyses",
"feature_CAMPAIGN": "📣 Campaigns",
"feature_ONBOARDING": "👋 Learner onboarding",
"feature_OTHER": "⚙️ Other",
"tx_TOP_UP_MANUAL": "➕ Top-up",
"tx_TOP_UP_PAYMENT": "➕ Top-up",
"tx_ADJUSTMENT": "🔧 Adjustment",
"tx_DEBIT_AI": "🤖 AI message",
"tx_DEBIT_WHATSAPP": "💬 WhatsApp message",
"tx_DEBIT_BROADCAST": "📣 Campaign",
"modal_title": "Top up credits",
"modal_rate": "1 credit = 10 FCFA · used for each AI message",
"modal_popular": "Most popular",
"modal_ai_messages": "≈ {{count}} AI messages",
"modal_footer": "Click a pack → WhatsApp opens → our team completes the top-up in under 2 hours.",
"pack_500_label": "500 credits",
"pack_2000_label": "2,000 credits",
"pack_5000_label": "5,000 credits",
"pack_500_price": "5,000 FCFA",
"pack_2000_price": "18,000 FCFA",
"pack_5000_price": "40,000 FCFA"
},
"clients": {
"page_title": "B2B Client Management",
"page_subtitle": "Manage partner organizations and their WhatsApp assets.",
"new_org_button": "New Organization",
"loading": "Loading clients...",
"no_clients_title": "No clients",
"no_clients_desc": "Start by adding your first partner organization.",
"status": {
"operational": "Operational",
"config_required": "Setup required",
"online": "Online",
"suspended": "SUSPENDED"
},
"actions": {
"reconfigure_wa": "Reconfigure WhatsApp",
"connect_wa": "Connect WhatsApp (Meta)",
"direct_setup": "Direct Setup",
"personality_studio": "Personality Studio",
"ai_credits": "AI Credits",
"billing_details": "Details & Billing"
},
"waba": {
"checking": "Checking…",
"not_connected": "Not connected",
"approved": "Approved",
"pending": "Under review",
"rejected": "Rejected",
"banned": "Suspended",
"unknown": "Unknown",
"refresh_tooltip": "Refresh",
"what_to_do": "What to do? →",
"verified": "Verified",
"not_verified": "Not verified",
"verify_link": "Verify →"
},
"tier": {
"tier_50": "50 conv./day",
"tier_250": "250 conv./day",
"tier_1k": "1,000 conv./day",
"tier_10k": "10,000 conv./day",
"tier_100k": "100,000 conv./day",
"unlimited": "Unlimited",
"label": "Daily Limit",
"meta_compliance": "Meta Tech Provider Compliance"
},
"quality": {
"good_label": "Good",
"good_desc": "Low report rate. Keep it up.",
"medium_label": "Medium",
"medium_desc": "Users have reported your messages. Avoid unsolicited sends.",
"risky_label": "Risky",
"risky_desc": "Risk of Meta block. Reduce volume and improve content.",
"dot_title": "Quality: "
},
"tier_modal": {
"title": "WhatsApp Messaging Limit",
"levels_heading": "Meta Capacity Levels",
"current_badge": "Current",
"tier_50_desc": "Restricted account or activation in progress.",
"tier_250_desc": "Starting level for any newly approved account.",
"tier_1k_desc": "Reached automatically after 1,000 unique users/month.",
"tier_10k_desc": "Reached after 10,000 unique users/month.",
"tier_100k_desc": "High volume — unlocked by Meta on request.",
"unlimited_desc": "No limit enforced by Meta.",
"quality_heading": "Phone Number Quality Score",
"meta_auto_update": "Meta updates this data automatically.",
"levels_auto": "Levels progress without any action on your part."
},
"cells": {
"waba_header": "WABA",
"business_header": "Meta Business",
"daily_limit_header": "Daily Limit",
"daily_limit_info_tooltip": "Learn more about Meta limits"
},
"create_modal": {
"title": "New Organization",
"company_name_label": "Company name",
"company_name_placeholder": "E.g. AgroBusiness Senegal",
"slug_label": "Slug (URL)",
"slug_placeholder": "agro-sn",
"use_case_label": "Use case",
"use_case_education": "🎓 Education Platform (Modules)",
"use_case_crm": "💬 CRM & WhatsApp Messages (Excel)",
"workstream_label": "Workstream",
"mode_crm": "CRM & Marketing",
"mode_pedagogy": "Pedagogy & Training",
"mode_service": "AI Customer Service",
"admin_section": "Primary Administrator",
"admin_name_label": "Full name",
"admin_name_placeholder": "John Smith",
"admin_email_label": "Email",
"admin_email_placeholder": "admin@company.com",
"password_label": "Temporary password",
"password_placeholder": "Min. 8 characters",
"submit": "Create organization & Admin",
"submitting": "Creating...",
"error_create": "Error creating organization. Make sure the slug is unique."
},
"validation": {
"name_required": "Name required",
"slug_required": "Slug required",
"slug_format": "Lowercase letters, numbers and dashes only",
"admin_name_required": "Name required",
"email_required": "Email required",
"email_invalid": "Invalid email",
"password_min": "Minimum 8 characters"
},
"billing_modal": {
"title": "Details & Billing",
"mode_label": "Mode",
"waba_status_label": "WABA Status",
"daily_limit_label": "Daily limit",
"meta_business_label": "Meta Business",
"waba_id_label": "WABA ID",
"plan_label": "Subscription plan",
"plan_starter": "Starter — 20,000 FCFA/month",
"plan_growth": "Growth — 60,000 FCFA/month",
"plan_scale": "Scale — 150,000 FCFA/month",
"plan_enterprise": "Enterprise — 500,000+ FCFA/month",
"apply_plan": "Apply plan",
"plan_updated": "Plan updated!",
"close": "Close"
},
"credits_modal": {
"title": "AI Credits",
"current_balance": "Current wallet balance",
"credits_unit": "credits",
"add_credits_label": "Credits to add",
"add_credits_placeholder": "E.g. 500",
"rate_hint": "1 credit = 10 FCFA · Minimum 1 credit",
"submit": "Credit the wallet",
"error": "Error allocating credits"
},
"personality_modal": {
"title": "Personality Studio",
"subtitle": "Configuring AI Identity for {{orgName}}",
"bot_name_label": "Bot Name",
"bot_name_placeholder": "e.g. XAMLÉ, Coach Sarah...",
"mission_label": "Core Mission",
"mission_placeholder": "What is the main goal of this AI? e.g. Help entrepreneurs master financial literacy...",
"tone_label": "Tone & Personality Description",
"tone_placeholder": "e.g. Professional yet encouraging, uses local metaphors, strict on concepts but friendly...",
"cancel": "Cancel",
"submit": "Deploy Personality",
"success": "Personality updated!"
},
"wa_setup_modal": {
"title": "Configure WhatsApp",
"already_on_meta": "Account already configured on Meta",
"waba_id_label": "WABA ID",
"waba_id_placeholder": "e.g. 102938475610293",
"waba_id_hint_link": "Open WhatsApp Accounts",
"business_id_label": "Meta Business ID",
"business_id_optional": "(optional — to display verification)",
"business_id_placeholder": "e.g. 25855038707486178",
"business_id_hint_link": "Open Business Info",
"token_label": "System token",
"token_optional": "(optional — uses env token by default)",
"token_placeholder": "EAAxxxxxxx... — leave blank if already in env var",
"token_hint_link": "Generate from System Users",
"phone_number_detected": "Phone Number ID detected:",
"save_config": "Save configuration",
"success": "WhatsApp configuration updated!",
"new_account_heading": "New account — Connect via Facebook",
"new_account_desc": "For a client who hasn't yet set up their WhatsApp Business account on your platform.",
"connect_facebook": "Connect with Facebook"
},
"toast": {
"wa_connected": "WhatsApp connected successfully!",
"error_prefix": "Error: "
}
},
"admin_chat": {
"aria_label": "AI Assistant",
"choose_or_write": "Choose a question or write your own",
"input_placeholder": "Your question...",
"error": "Sorry, I can't respond right now. Try again in a moment.",
"billing_title": "Billing assistant",
"billing_subtitle": "Answers based on your real data",
"billing_q1": "How many credits do I have left?",
"billing_q2": "How many days until I run out?",
"billing_q3": "Which feature consumes the most?",
"billing_q4": "How much have I spent this week?",
"settings_title": "Help — Settings",
"settings_subtitle": "I explain each parameter",
"settings_q1": "How do I connect my WhatsApp?",
"settings_q2": "What is the AI Agent mode for?",
"settings_q3": "Are my API keys secure?",
"settings_q4": "How do I change my organization's mode?",
"templates_title": "Help — Templates",
"templates_subtitle": "I help you create your messages",
"templates_q1": "How do I create a good template?",
"templates_q2": "What are template variables for?",
"templates_q3": "Why can a template be rejected?",
"templates_q4": "What's the difference between utility and marketing?",
"agent_title": "Help — AI Agent",
"agent_subtitle": "I guide you to configure your agent",
"agent_q1": "What type of document should I upload?",
"agent_q2": "How do I choose the right tone for my agent?",
"agent_q3": "How many documents are enough?",
"agent_q4": "How do I improve my agent's responses?",
"onboarding_title": "Help — WhatsApp Connection",
"onboarding_subtitle": "I guide you step by step",
"onboarding_q1": "Where do I find my WABA ID?",
"onboarding_q2": "What's the difference between the two options?",
"onboarding_q3": "My token expired, what should I do?",
"onboarding_q4": "I don't have a Meta account, where do I start?",
"general_title": "Xamlé Assistant",
"general_subtitle": "Ask me your questions",
"general_q1": "How do I get started with Xamlé?",
"general_q2": "What's the difference between the modes?",
"general_q3": "How does billing work?",
"general_q4": "Where can I see my statistics?"
},
"super_admin": {
"nav_dashboard": "Dashboard",
"nav_organizations": "Organizations",
"nav_users": "Users",
"nav_whatsapp": "WA Numbers",
"nav_templates": "WA Templates",
"nav_profiles": "WA Profiles",
"nav_monitoring": "Monitoring",
"nav_billing": "Billing",
"nav_ai": "AI Insights",
"nav_audit_logs": "Audit Logs",
"exit_admin": "Exit admin",
"logout": "Log out",
"system_active": "System active",
"platform_admin": "Platform Admin",
"super_admin_label": "Super-admin",
"dashboard_title": "Platform Dashboard",
"dashboard_subtitle": "Global overview of all organizations",
"kpi_organizations": "Organizations",
"kpi_orgs_active": "{{count}} active",
"kpi_users": "Users",
"kpi_messages_24h": "Messages / 24h",
"kpi_queue_depth": "Queue depth",
"kpi_queue_failed": "{{count}} failed",
"kpi_revenue": "Revenue / month",
"kpi_alerts": "Alerts",
"system_health": "System health",
"health_db": "Database",
"health_redis": "Redis",
"health_queue": "Queue",
"active_alerts": "Active alerts ({{count}})",
"alert_token": "Expiring token — {{orgName}} ({{daysOld}}d)",
"alert_balance": "Low balance — {{orgName}}: {{balance}} credits",
"alert_queue_failed": "{{count}} failed jobs in queue",
"orgs_title": "Organizations",
"orgs_total": "{{count}} organizations total",
"org_new": "New organization",
"org_search_placeholder": "Search an organization...",
"org_search_btn": "Search",
"org_loading": "Loading...",
"org_empty": "No organization found",
"col_name": "Name",
"col_plan": "Plan",
"col_status": "Status",
"col_users": "Users",
"col_credits": "Credits",
"status_suspended": "Suspended",
"status_trial": "Trial",
"status_active": "Active",
"org_reactivated": "Organization reactivated",
"org_suspended": "Organization suspended",
"org_delete_confirm": "Permanently delete \"{{name}}\"? This action cannot be undone.",
"org_deleted": "\"{{name}}\" deleted",
"org_updated": "Organization updated",
"org_created": "Organization created",
"label_plan": "Plan",
"label_ai_credits": "AI credits limit",
"label_crm_active": "CRM active",
"label_edtech_active": "EdTech active",
"saving": "Saving...",
"save": "Save",
"modal_new_org": "New organization",
"org_name_placeholder": "Organization name",
"cancel": "Cancel",
"creating": "Creating...",
"create": "Create",
"err_load_orgs": "Error loading organizations",
"err_suspend": "Error changing status",
"err_delete": "Error deleting",
"err_update": "Error updating",
"err_create": "Error creating",
"btn_edit": "Edit",
"btn_reactivate": "Reactivate",
"btn_suspend": "Suspend",
"btn_delete_forever": "Delete permanently",
"pagination_info": "{{from}}–{{to}} of {{total}}",
"prev": "Previous",
"next": "Next",
"users_title": "Users",
"users_total": "{{count}} users total",
"user_search_placeholder": "Search by name or email...",
"col_user": "User",
"col_organization": "Organization",
"col_role": "Role",
"col_created_at": "Created on",
"user_empty": "No user found",
"role_updated": "Role updated",
"btn_reset_password": "Reset password",
"reset_no_email": "This user has no email address",
"reset_confirm": "Send a reset link to {{email}}?",
"reset_sent": "Link sent to {{email}}",
"err_load_users": "Error loading users",
"err_role_change": "Error changing role",
"err_reset_password": "Error sending email",
"wa_numbers_title": "WhatsApp Numbers",
"wa_numbers_total": "{{count}} numbers registered",
"wa_refresh": "Refresh",
"wa_register_number": "Register a number",
"wa_no_numbers": "No WhatsApp number registered",
"col_number": "Number",
"col_id": "ID",
"col_added_at": "Added on",
"wa_register_title": "Register a WhatsApp number",
"wa_step": "Step {{step}}/2",
"label_org": "Organization",
"org_select_placeholder": "Select an organization...",
"label_phone_number_id": "Phone Number ID",
"phone_id_hint": "Find this ID in Meta Business Manager > WhatsApp Accounts",
"label_pin": "Security PIN",
"pin_hint": "6-digit PIN to secure the number (leave blank = 000000)",
"wa_select_org_error": "Please select an organization.",
"wa_phone_id_error": "Phone Number ID must be between 12 and 18 digits.",
"wa_pin_error": "PIN must be exactly 6 digits.",
"wa_sending": "Sending...",
"wa_send_otp": "Send OTP code",
"wa_reg_error": "Error during registration.",
"wa_net_error": "Network error.",
"wa_otp_hint": "Meta sent you an OTP code by SMS or voice call. Enter it below.",
"label_otp": "OTP code",
"wa_otp_error": "OTP code must be between 4 and 8 digits.",
"wa_verifying": "Verifying...",
"wa_verify": "Verify",
"wa_otp_invalid": "Invalid or expired OTP code.",
"wa_number_registered": "Number registered successfully!",
"wa_back": "Back",
"err_load_numbers": "Error loading numbers",
"tpl_title": "WhatsApp Templates",
"tpl_orgs_count_one": "{{count}} organization with WhatsApp configured",
"tpl_orgs_count_other": "{{count}} organizations with WhatsApp configured",
"tpl_select_hint": "Select an organization to manage its WhatsApp message templates.",
"tpl_search_placeholder": "Search an organization or WABA ID...",
"tpl_empty": "No organization with WhatsApp configured",
"col_waba_id": "WABA ID",
"col_actions": "Actions",
"tpl_view": "View templates",
"tpl_no_templates": "No templates found for this organization.",
"col_category": "Category",
"col_language": "Language",
"tpl_create_btn": "Create template",
"tpl_create_title": "New WhatsApp template",
"label_template_name": "Template name",
"template_name_hint": "Lowercase, digits, underscores only",
"template_name_error": "Lowercase, digits, underscores only",
"label_category": "Category",
"label_language": "Language",
"label_header_optional": "Header (optional)",
"label_body": "Message body",
"label_footer_optional": "Footer (optional)",
"label_preview": "Preview",
"body_placeholder": "Message body...",
"tpl_select_org_placeholder": "Select an organization…",
"tpl_submitted": "Template submitted to Meta for approval",
"tpl_create_required": "Organization, name and message body are required.",
"tpl_name_invalid": "Template name is invalid.",
"tpl_creating": "Creating…",
"tpl_create_submit": "Create template",
"tpl_create_error": "Error creating the template.",
"profiles_title": "WhatsApp Profiles",
"profiles_count_one": "{{count}} profile",
"profiles_count_other": "{{count}} profiles",
"profile_empty": "No WhatsApp profile found",
"label_org_name": "Organization name",
"label_logo_url": "Logo URL",
"label_primary_color": "Primary color",
"profile_updated": "Profile updated",
"err_load_profiles": "Error loading profiles",
"err_save_profile": "Error saving",
"btn_cancel_edit": "Cancel",
"btn_save": "Save",
"saving_profile": "Saving…",
"btn_edit_profile": "Edit",
"monitoring_title": "Monitoring & Alerts",
"monitoring_subtitle": "Real-time system status",
"system_health_title": "System health",
"health_redis_cache": "Redis / Cache",
"health_queue_jobs": "Queue jobs",
"queue_failed_detail": "{{count}} failed",
"queue_waiting_detail": "{{count}} waiting",
"token_expiry_title": "Expiring WhatsApp tokens",
"token_no_risk": "No token at risk of expiration",
"col_org": "Organization",
"col_issued_ago": "Issued",
"col_days": "{{count}} days",
"low_balance_title": "Low balances (< 100 credits)",
"low_balance_none": "No organization with low balance",
"credits_label": "{{count}} credits",
"err_load_monitoring": "Error loading monitoring",
"billing_title": "Billing",
"billing_transactions": "{{count}} transactions",
"billing_add_credits": "Add credits",
"billing_no_transactions": "No transactions",
"col_date": "Date",
"col_type": "Type",
"col_description": "Description",
"col_amount": "Amount",
"col_balance_after": "Balance after",
"credits_added": "{{amount}} credits added. New balance: {{balance}}",
"modal_add_credits": "Add credits",
"label_org_id": "Organization ID",
"org_id_placeholder": "org-uuid...",
"label_credits_amount": "Amount (credits)",
"label_description_optional": "Description (optional)",
"credits_desc_placeholder": "Manual top-up...",
"adding": "Adding...",
"add": "Add",
"err_load_transactions": "Error loading transactions",
"err_add_credits": "Error adding credits",
"audit_title": "Audit Logs",
"audit_total": "{{count}} entries total",
"col_datetime": "Date / Time",
"col_action": "Action",
"col_actor": "Actor",
"col_resource": "Resource",
"col_details": "Details",
"col_from": "From",
"col_to": "To",
"audit_search": "Search",
"audit_empty": "No logs for these criteria",
"audit_show": "View",
"audit_hide": "Hide",
"ai_title": "AI Insights",
"ai_subtitle": "Natural language commands to manage the platform",
"ai_suggestion_1": "Show me organizations with a low balance",
"ai_suggestion_2": "What are the platform statistics?",
"ai_suggestion_3": "List the active alerts",
"ai_suggestion_4": "Show the 10 latest organizations",
"ai_greeting": "Hello! I am your AI assistant for managing the XAMLÉ platform. Ask me a question or give me an instruction.",
"ai_input_placeholder": "Type a command... e.g. 'Add 500 credits to org XAMLÉ'",
"ai_confirm": "Confirm",
"ai_cancelled": "Action cancelled.",
"ai_err": "AI error",
"ai_err_exec": "Execution error",
"ai_err_message": "Sorry, an error occurred.",
"ai_err_exec_message": "Error during execution.",
"ai_done": "Action completed.",
"ai_no_result": "No results found.",
"rel_today": "today",
"rel_yesterday": "1 day ago",
"rel_days_ago": "{{count}} days ago",
"tpl_cat_marketing_desc": "Promotions, offers, newsletters",
"tpl_cat_utility_desc": "Confirmations, transactional updates",
"tpl_cat_authentication_desc": "OTP codes, verification"
}
}