{ "common": { "welcome": "Bem-vindo", "dashboard": "Painel", "clients": "Clientes", "analytics": "Análises", "settings": "Configurações", "logout": "Sair", "save": "Guardar", "cancel": "Cancelar", "loading": "Carregando...", "error": "Ocorreu um erro", "success": "Sucesso", "create": "Criar", "delete": "Excluir", "edit": "Editar", "search": "Pesquisar...", "actions": "Ações", "export": "Exportar", "sync": "Sincronizar", "send": "Enviar", "close": "Fechar", "confirm": "Confirmar", "back": "Voltar", "next": "Próximo", "yes": "Sim", "no": "Não", "status": "Estado", "date": "Data", "name": "Nome", "email": "Email", "phone": "Telefone", "day": "Dia", "none": "Nenhum", "select_org": "Por favor selecione uma organização", "clear_filter": "Remover filtro", "no_data": "Sem dados disponíveis", "retry": "Tentar novamente", "of": "de" }, "nav": { "home": "Início", "inbox": "Caixa de entrada", "campaigns": "Campanhas", "templates": "Modelos", "organizations": "Organizações", "users": "Utilizadores", "training": "Training Lab", "moderation": "Moderação", "b2b": "Clientes B2B", "kb": "Base de Conhecimento", "content": "Cursos", "conversations": "Conversas", "ai_setup": "Agente IA", "billing": "Faturação" }, "dashboard": { "title": "Painel", "subtitle": "Estado da sua plataforma em tempo real", "select_org": "Bem-vindo ao EdTech Admin", "select_org_hint": "Para começar, selecione uma organização no menu à esquerda.", "isolation_note": "O isolamento de dados garante que você veja apenas as estatísticas da organização ativa.", "loading": "Analisando dados...", "no_enrollments": "Sem inscrições", "recent_enrollments": "Inscrições recentes", "export_csv": "Exportar CSV", "stats": { "users": "Utilizadores", "active": "Ativos", "completed": "Concluídos", "tracks": "Cursos", "revenue": "Receita", "total_messages": "Mensagens Totais", "active_users": "Utilizadores Ativos", "completion_rate": "Taxa de Conclusão", "ai_cost": "Custo IA estimado" }, "table": { "phone": "Telefone", "track": "Curso", "status": "Estado", "day": "Dia", "date": "Data" } }, "analytics": { "title": "Análises e Desempenho", "export": "Exportar relatório", "explain": "Explicar", "messages": { "title": "Volume de Mensagens", "inbound": "Recebidas", "outbound": "Enviadas" }, "completion": { "title": "Taxa de Sucesso", "completed": "Concluídos", "in_progress": "Em progresso" }, "performance": { "title": "Desempenho", "avg_score": "Pontuação média dos exercícios" }, "engagement": { "title": "Envolvimento", "avg_days": "Dias de formação em média" }, "sql_error": "Erro ao executar a consulta", "sql_example_1": "Quantos usuários ativos esta semana?", "sql_example_2": "Quais são os 5 usuários com mais mensagens?", "sql_example_3": "Qual é a taxa média de conclusão?", "sql_example_4": "Quantos créditos de IA foram consumidos este mês?", "ai_cost_title": "Custo de IA por funcionalidade", "ai_cost_subtitle": "Dados reais — fonte: UsageEvent", "col_feature": "Funcionalidade", "col_calls": "Chamadas", "col_tokens_in": "Tokens in", "col_tokens_out": "Tokens out", "col_cost": "Custo (USD)", "total": "Total", "nl_search_title": "Pesquisa em linguagem natural", "nl_search_subtitle": "Faça uma pergunta sobre seus dados — a IA gera a consulta SQL", "nl_search_placeholder": "Ex.: Quais usuários ficaram inativos por 7 dias?", "search_btn": "Pesquisar", "view_sql": "Ver SQL", "no_results": "Nenhum resultado" }, "users": { "title": "Gestão de Utilizadores", "subtitle": "Todos os alunos inscritos", "no_users": "Nenhum utilizador encontrado", "invite": "Convidar", "columns": { "name": "Nome", "phone": "Telefone", "track": "Curso ativo", "day": "Dia", "status": "Estado", "joined": "Inscrição" }, "confirm_delete": "Excluir este usuário? Esta ação é reversível no banco de dados.", "delete_success": "Usuário excluído", "delete_error": "Falha ao excluir", "handoff_released": "Handoff liberado — IA retoma a conversa", "handoff_none": "Nenhum handoff ativo para este usuário", "handoff_error": "Falha", "load_error": "Erro ao carregar usuários", "language_column": "Idioma", "sector_column": "Setor", "conversation_btn": "Conversa", "delete_title": "Excluir usuário", "handoff_active": "Handoff ativo", "release_ai": "Liberar IA", "prev": "Anterior" }, "contacts": { "title": "Contactos", "subtitle": "Gestão da sua base de contactos CRM", "add": "Adicionar contacto", "import": "Importar", "no_contacts": "Sem contactos", "search_placeholder": "Procurar um contacto...", "tags_update_error": "Falha ao atualizar as tags", "import_success": "Importação bem-sucedida: {{created}} adicionados, {{updated}} atualizados, {{errors}} erros.", "upload_critical_error": "Ocorreu um erro crítico durante o upload.", "ai_generation_error": "Falha na geração IA.", "generation_error_fallback": "Erro de geração", "confirm_delete_one": "Tem a certeza que deseja eliminar este contacto?", "delete_error": "Erro ao eliminar.", "confirm_delete_many": "Tem a certeza que deseja eliminar {{count}} contactos?", "bulk_delete_success": "Contactos eliminados com sucesso.", "bulk_delete_error": "Erro ao eliminar em massa.", "csv_name": "Nome", "csv_phone": "Telefone", "csv_created": "Criado em", "message_copied": "Mensagem copiada!", "copied": "Copiado!", "generation_completed": "Geração concluída com sucesso" }, "settings": { "title": "Configurações", "profile": "Perfil da organização", "branding": "Marca e Cores", "ai_config": "Configuração IA", "whatsapp_config": "Configuração WhatsApp", "billing": "Faturação", "org_name": "Nome da organização", "primary_color": "Cor principal", "logo_url": "URL do logótipo", "save_success": "Configurações guardadas com sucesso.", "save_error": "Não foi possível guardar as configurações.", "no_org_selected": "Por favor selecione uma organização.", "advanced_config": "Configuração avançada", "developers_badge": "Desenvolvedores", "flow_config_desc": "Este campo contém a configuração JSON do fluxo pedagógico. Modifique-o apenas se souber o que está fazendo.", "wa_account": "Conta WhatsApp", "wa_token": "Token do sistema", "not_configured": "Não configurado", "token_absent": "Ausente", "token_expired": "Expirado", "token_valid": "Válido", "token_present": "Presente", "token_expired_alert": "O seu token do WhatsApp é inválido ou expirou. As mensagens já não podem ser enviadas. Vá a Meta Business Manager → Utilizadores do sistema para gerar um novo token e atualize a sua organização.", "api_keys_title": "Chaves API de IA", "api_keys_locked": "Disponível a partir do plano SCALE. Ao adicionar as suas próprias chaves OpenAI ou Google, usa a sua própria quota de IA — sem limite associado ao seu plano Xamlé.", "api_keys_unlocked": "As suas chaves estão encriptadas e armazenadas de forma segura. Elas substituem as chaves partilhadas da plataforma — o seu consumo de IA já não é descontado do seu saldo de créditos.", "wa_connect_success": "WhatsApp conectado com sucesso ✅", "wa_connect_error": "Falha na conexão com WhatsApp. Verifique o token e o WABA ID.", "mode_edtech": "EdTech", "mode_webhook": "Webhook", "mode_ai_agent": "Agente IA", "mode_pedagogy": "Pedagogia", "mode_customer_service": "Suporte ao Cliente", "mode_crm_marketing": "CRM & Campanhas", "wa_cancel": "Cancelar", "wa_reconfigure": "🔄 Reconfigurar", "wa_connect_btn": "🔗 Conectar", "wa_connecting": "Conectando...", "wa_connect_submit": "Conectar WhatsApp" }, "auth": { "org_id": "ID da Organização", "email": "Email", "password": "Senha", "login_subtitle_edtech": "Acesse seu espaço EdTech", "login_subtitle_admin": "Área administrativa — acesso restrito", "login_button": "Entrar", "login_loading": "Entrando...", "org_id_required": "O ID da organização é obrigatório.", "powered_by": "Desenvolvido por Xamlé Studio", "forgot_password": "Esqueceu a senha?", "reset_title": "Esqueceu a senha", "reset_sent_title": "Email enviado", "reset_sent_subtitle": "Verifique sua caixa de entrada e clique no link de redefinição.", "reset_new_title": "Nova senha", "reset_success_title": "Senha atualizada", "reset_success_subtitle": "Você pode fazer login com sua nova senha.", "reset_email_label": "Endereço de email", "reset_email_placeholder": "seu@email.com", "reset_send_button": "Enviar link", "reset_sending": "Enviando...", "reset_new_password": "Nova senha", "reset_confirm_password": "Confirmar", "reset_set_button": "Definir senha", "reset_setting": "Atualizando...", "reset_login_link": "Entrar", "reset_back": "Voltar ao login", "reset_network_error": "Erro de rede. Por favor, tente novamente.", "reset_password_mismatch": "As senhas não coincidem.", "reset_password_min_length": "A senha deve ter pelo menos 6 caracteres.", "reset_token_expired": "Token inválido ou expirado." }, "onboarding": { "title": "Bem-vindo ao Xamlé.Studio", "subtitle": "Vamos configurar a sua escola em segundos.", "step_welcome": "Boas-vindas", "step_legal": "Contrato", "step_whatsapp": "WhatsApp", "step_ai": "IA", "connect_fb": "Ligar ao Facebook", "fb_connected": "Conta Facebook ligada!", "setup_waba": "A configurar a sua conta WhatsApp Business...", "cta_launch": "Lançar a minha plataforma", "legal_text": "Ao aceitar, concorda com os nossos termos de parceiro e as políticas comerciais da Meta.", "whatsapp_help_title": "Onde encontrar estas informações?", "help_waba_id": "Inicie sessão no WhatsApp Manager → coluna \"Conta WhatsApp Business\" → número de 15 dígitos.", "help_business_id": "Definições Meta → Informações da empresa → \"ID Meta Business\".", "help_token": "Em Meta Business Manager → Utilizadores do sistema → o seu utilizador → Gerar token. Escolha \"Nunca expirar\" para evitar interrupções.", "help_new_to_meta": "Novo no Meta? Use o botão \"Ligar ao Facebook\" abaixo — mais simples, tudo é automático.", "already_configured": "Conta já configurada no Meta", "fb_account_connected": "Conta Facebook ligada", "new_account_via_fb": "Nova conta — Ligação via Facebook", "new_account_desc": "O cliente configura o seu número diretamente na janela Facebook.", "token_valid_msg": "Token válido — reconhecido pela Meta", "token_invalid_msg": "Token inválido ou expirado. Verifique em Meta Business Manager → Utilizadores do sistema.", "token_idle_hint": "Gere um token \"Nunca expirar\" em Meta Business Manager → Utilizadores do sistema.", "skip_whatsapp": "Configurar WhatsApp mais tarde", "create_org": "Criar organização", "creating": "A criar…", "step_org": "Organização", "step_admin": "Administrador", "org_title": "A organização", "org_subtitle": "Nome, identificador URL e tipo de uso.", "org_name_label": "Nome da organização", "slug_label": "Identificador URL (slug)", "slug_hint": "Gerado automaticamente a partir do nome. Editável — letras minúsculas, números e hífens apenas.", "mode_label": "Tipo de uso", "mode_edtech_label": "Formação & EdTech", "mode_edtech_desc": "Cursos educacionais, exercícios, acompanhamento de alunos via WhatsApp", "mode_crm_label": "CRM & Campanhas", "mode_crm_desc": "Gestão de contatos, campanhas broadcast, follow-ups de marketing", "mode_ai_label": "Agente IA", "mode_ai_desc": "Bot de IA conversacional para responder autonomamente 24h/dia", "mode_customer_service_label": "Suporte ao Cliente", "mode_customer_service_desc": "Gerenciar conversas recebidas e escalar para um agente humano", "admin_title": "O administrador", "admin_subtitle": "A primeira conta admin desta organização.", "admin_name_label": "Nome completo", "admin_email_label": "E-mail", "admin_pass_label": "Senha inicial", "admin_pass_optional": "opcional — gerada automaticamente se vazia", "admin_pass_placeholder": "Deixe vazio para gerar automaticamente", "admin_pass_hint": "Um e-mail com a senha temporária é enviado ao admin após a criação.", "wa_title": "Conexão WhatsApp", "wa_subtitle": "Opcional — pode ser configurado depois no perfil da organização.", "create_error": "Criação impossível", "fb_error": "Login no Facebook foi cancelado ou falhou." }, "crm": { "stats": { "total_contacts": "Total de Contactos", "messages_sent": "Mensagens Enviadas", "open_rate": "Taxa de abertura", "conversion": "Conversão" }, "inbox": { "title": "Conversas", "no_messages": "Nenhuma conversa encontrada.", "reply_placeholder": "A sua mensagem...", "send": "Enviar" }, "campaigns": { "title": "Histórico de Campanhas", "subtitle": "Acompanhe todas as suas transmissões e o seu desempenho.", "new_campaign": "Nova Campanha", "select_template": "Modelo WhatsApp (Opcional)", "choose_approved": "Selecione um modelo aprovado...", "no_approved_templates": "Sem modelos aprovados. Sincronize primeiro.", "use_ai_text": "Usar texto gerado por IA", "status_sent": "Enviado", "status_delivered": "Entregue", "status_read": "Lido", "status_failed": "Falhou", "fetch_failed": "Erro ao carregar modelos" }, "assistant": { "placeholder": "Digite o seu comando aqui...", "thinking": "A IA está a preparar uma resposta...", "contact_preview": "Pré-visualização de contactos", "campaign_summary": "Resumo da campanha", "messages_ready": "mensagens personalizadas prontas para enviar", "recipient": "DESTINATÁRIO", "more_contacts": "+ {{count}} contactos adicionais", "more_messages": "+ {{count}} mensagens adicionais", "send_all": "🚀 Enviar tudo via WhatsApp API", "powered_by": "Powered by Xamlé AI • CRM PaaS integrado", "btn_history": "📊 Histórico", "btn_import": "📤 Importar", "btn_campaign": "✨ Campanha", "error_mic": "Erro de acesso ao microfone.", "error_bulk": "Erro ao enviar em massa.", "import_first": "Por favor importe uma lista de contactos primeiro.", "campaign_queued": "🚀 A sua campanha foi colocada em fila para entrega progressiva!", "error_occurred": "Ocorreu um erro técnico.", "drop_file_note": "Por favor use o botão de importar por agora." } }, "whatsapp": { "templates": { "title": "Modelos de Mensagens WhatsApp", "subtitle": "Gerencie e sincronize os seus modelos aprovados pela Meta.", "sync_button": "Sincronizar com Meta", "create_button": "Criar modelo", "no_templates": "Sem modelos. Sincronize ou crie um.", "table": { "name": "Nome do modelo", "category": "Categoria", "language": "Idioma", "status": "Estado" }, "create_modal": { "title": "Criar novo modelo", "name_label": "Nome (minúsculas, sem espaços)", "category_label": "Categoria", "language_label": "Idioma", "body_label": "Texto do corpo", "submit": "Submeter para aprovação", "success": "Modelo submetido com sucesso!", "error": "Falha ao submeter o modelo.", "meta_approval": "Os modelos devem ser aprovados pela Meta antes de serem utilizados.", "ai_generate_label": "Gerar com IA", "ai_placeholder": "Ex: \"mensagem de boas-vindas para um novo aluno\"", "ai_generating": "A gerar…", "ai_generate": "Gerar", "ai_hint": "A IA preenche os campos abaixo — pode modificá-los antes de submeter.", "name_hint": "Apenas letras minúsculas, números e underscores. Ex: lembrete_pagamento", "policy_marketing": "Promocional — aprovação Meta 24–48h. Evite palavras demasiado comerciais.", "policy_utility": "Transacional — aprovação mais rápida (normalmente poucas horas). Confirmações, lembretes, alertas.", "preview_label": "Pré-visualização WhatsApp", "view_preview": "Ver pré-visualização completa" }, "status_approved": "Aprovado", "status_pending": "Pendente", "status_rejected": "Rejeitado", "status_paused": "Em pausa", "status_disabled": "Desativado", "waba_not_configured": "WhatsApp Business não configurado", "waba_not_configured_desc": "Esta organização ainda não tem uma conta WhatsApp Business (WABA) associada. Aceda a Configurações → Integração WhatsApp para configurar o seu número e WABA ID." } }, "knowledge": { "title": "Base de Conhecimento", "subtitle": "Gerencie os documentos da sua IA", "chunks": "fragmentos indexados", "reindex": "Re-indexar", "reindexing": "Indexando...", "search_placeholder": "Pesquisar fragmentos...", "no_documents": "Nenhum fragmento encontrado.", "import_hint": "Importe um documento no separador Agente IA para começar.", "confirm_delete": "Eliminar este fragmento da base de conhecimento?", "delete_error": "Falha ao eliminar", "reindex_success": "Re-indexação iniciada com sucesso", "no_kb_url": "Nenhuma URL de base de conhecimento configurada. Adicione uma URL nas Configurações.", "reindex_error": "Falha na re-indexação", "generate_error": "Falha na geração", "generate_from_desc": "Gerar a partir de descrição", "generate_placeholder": "Descreva sua atividade, produtos ou serviços… A IA gerará automaticamente uma FAQ e a indexará na base de conhecimento.", "generating_btn": "Gerando…", "generate_btn": "Gerar", "generate_success_count": "{{count}} Q&A geradas e indexadas", "generate_result_summary": "{{count}} Q&A geradas · {{chunks}} chunks indexados" }, "training": { "title": "Training Lab", "subtitle": "Teste e melhore a sua IA pedagógica", "rules_injected": "Sucesso! {{count}} regras foram injetadas no dicionário.", "inject_rules": "Injetar ({{count}}) Regras", "ground_truth_label": "Verdade de Campo (Ground Truth)", "training_saved": "Treino guardado!" }, "ai_setup": { "title": "Configuração do Agente IA", "subtitle": "Transforme os seus documentos em inteligência conversacional no WhatsApp.", "kb_title": "Base de Conhecimento", "kb_desc": "Carregue os seus catálogos, manuais ou FAQs. A IA usará estes documentos para responder com precisão.", "upload_idle": "Clique para carregar um documento", "upload_loading": "A carregar e indexar...", "upload_success": "Documento indexado com sucesso!", "upload_error": "Erro ao carregar", "personality_title": "Personalidade do Agente", "role_label": "Papel principal", "role_placeholder": "Ex: Consultor técnico para Agritech", "tone_label": "Tom e Estilo", "save": "Guardar personalidade", "saving": "A guardar...", "saved": "Guardado", "preview_title": "Pré-visualização WhatsApp", "stats_title": "Estatísticas do Agente", "stats_status": "Estado", "stats_active": "Ativo", "stats_chunks": "Fragmentos indexados", "stats_words": "Palavras estimadas", "no_kb": "Sem base de conhecimento indexada.", "notifications_title": "Notificações Automáticas", "notifications_desc": "Selecione o modelo Meta para os lembretes automáticos enviados pelo agente IA.", "kb_empty_title": "O seu agente ainda não está operacional", "kb_empty_desc": "Carregue pelo menos um documento (FAQ, catálogo, preços…) para que possa responder aos seus clientes. Sem base de conhecimento, o agente não saberá o que dizer.", "upload_success_detail": "Documento analisado — o seu agente foi atualizado!", "current_file": "Atual:", "indexing_title": "O que acontece agora?", "indexing_desc": "O seu documento está a ser analisado. Em 30 a 60 segundos, o seu agente poderá responder às perguntas que cobre. Teste-o no painel da direita.", "role_hint": "Descreva em uma ou duas frases o que o seu agente faz e para quem. Quanto mais preciso, melhores serão as respostas.", "tone_recommended": "— recomendado para o seu setor", "tone_desc_professional": "Formal e preciso — ideal para serviços B2B", "tone_desc_friendly": "Caloroso e acessível — ideal para o público em geral", "tone_desc_direct": "Curto e objetivo — ideal para o suporte", "tone_desc_pedagogical": "Paciente e explicativo — ideal para a formação", "test_live": "Teste ao vivo", "test_hint": "Faça uma pergunta real ao seu agente", "test_empty_with_kb": "Faça uma pergunta abaixo para testar o seu agente.", "test_empty_no_kb": "Carregue um documento primeiro, depois teste aqui.", "test_placeholder": "Ex: Quais são as suas tarifas?", "test_error": "Desculpe, o teste não está disponível de momento.", "kb_save_blocked": "Adicione primeiro um documento à base de conhecimento acima antes de ativar o seu agente.", "coverage_excellent": "Excelente", "coverage_good": "Boa", "coverage_poor": "Insuficiente", "coverage_label": "passagens analisadas — cobertura", "coverage_low_hint": "Adicione mais documentos para melhorar a precisão das respostas.", "no_kb_hint": "Adicione as suas FAQs, preços ou fichas de produto para ativar o agente.", "stats_status_label": "Estado", "stats_active_label": "Ativo", "words_covered": "Palavras cobertas", "bot_name_label": "Nome do agente", "bot_name_placeholder": "Ex: Kora, Awa, SupportBot...", "bot_name_hint": "O nome que seu agente usará para se apresentar no WhatsApp.", "tone_professional": "Profissional", "tone_friendly": "Amigável", "tone_direct": "Direto", "tone_pedagogical": "Pedagógico" }, "tracks": { "title": "Cursos", "new": "Novo curso", "no_tracks": "Sem cursos. Crie um!", "confirm_delete": "Eliminar este curso?", "days": "dias", "enrolled": "inscritos", "days_label": "Dias", "no_days": "Sem dias criados.", "edit_day": "Editar Dia", "new_day": "Novo dia", "day_number": "Número do dia", "day_title": "Título", "lesson_text": "Texto da lição", "lesson_placeholder": "Conteúdo pedagógico...", "audio_url": "URL de Áudio (opcional)", "exercise_type": "Tipo de exercício", "exercise_type_text": "Texto livre", "exercise_type_audio": "Áudio", "exercise_type_button": "Botões", "validation_keyword": "Palavra-chave de validação", "exercise_prompt": "Prompt do exercício", "exercise_prompt_placeholder": "Pergunta feita ao estudante...", "no_lesson_text": "Sem texto", "form_title_label": "Título", "form_description": "Descrição", "form_duration": "Duração (dias)", "form_language": "Idioma", "form_lang_fr": "Francês", "form_lang_wolof": "Wolof", "form_premium": "Formação Premium (paga)", "form_price": "Preço (XOF)", "ai_generate_btn": "Gerar com IA", "ai_generate_first": "Gere seu primeiro programa com IA", "ai_modal_badge": "Agente Criador de Conteúdo", "ai_modal_title": "Gerar um programa", "ai_modal_subtitle": "A IA cria todo o currículo em segundos", "ai_description_label": "Descrição do programa", "ai_description_placeholder": "Ex.: Formação de 5 dias sobre marketing digital para PMEs no Senegal...", "ai_num_days": "Número de dias", "ai_language": "Idioma", "ai_lang_fr": "Francês", "ai_lang_en": "Inglês", "ai_lang_wol": "Wolof", "ai_audience": "Público-alvo", "ai_audience_optional": "opcional", "ai_audience_placeholder": "Ex.: Empreendedores iniciantes, mulheres rurais, estudantes...", "ai_generating": "Gerando... (15-30s)", "ai_generate_submit": "Gerar programa", "ai_error": "Falha na geração por IA" }, "campaigns": { "title": "Histórico de Campanhas", "no_records": "Nenhuma campanha encontrada", "first_hint": "Envie a sua primeira campanha na secção Contactos.", "total": "mensagens enviadas no total", "clear_filter": "Remover filtro", "columns": { "contact": "Contacto", "message": "Mensagem", "status": "Estado", "sent": "Enviado" } }, "livefeed": { "title": "Live Feed", "subtitle": "Monitorização de conversas em tempo real", "no_messages": "Sem mensagens por agora.", "refresh": "Atualizar" }, "b2b": { "title": "Gestão Clientes B2B", "subtitle": "Gerencie as suas organizações parceiras" }, "billing": { "select_org": "Selecione uma organização para ver a faturação.", "error_prefix": "Erro:", "page_title": "Os meus créditos & consumo", "period_label": "Período:", "recharge_btn": "Recarregar", "alert_exhausted_title": "Serviço suspenso — os seus créditos estão esgotados", "alert_exhausted_desc": "Recarregue para restaurar as mensagens IA imediatamente.", "alert_low_title": "Créditos quase esgotados — {{count}} créditos restantes", "alert_low_desc": "Recarregue antes que o serviço seja interrompido.", "alert_recharge_btn": "Recarregar →", "wallet_label": "Créditos disponíveis", "wallet_unit": "créditos", "wallet_fcfa": "≈ {{amount}} FCFA", "wallet_recharge_btn": "Recarregar créditos", "wallet_rate": "1 crédito = 1 mensagem IA = 10 FCFA", "days_remaining": "A este ritmo: ainda ~{{days}} dia", "days_remaining_plural": "A este ritmo: ainda ~{{days}} dias", "ai_messages_title": "Mensagens IA este mês", "ai_cost_label": "≈ {{cost}} FCFA em custo IA", "ai_quota_warning": "Quota mensal quase atingida ({{pct}}%)", "wa_messages_title": "Mensagens WhatsApp este mês", "wa_free_note": "✅ Gratuito para si — a Meta fatura diretamente a sua conta WhatsApp Business", "activity_title": "Atividade nos últimos 30 dias", "activity_subtitle": "Cada barra = total de mensagens IA + WhatsApp nesse dia", "activity_empty": "Sem atividade neste período", "breakdown_title": "Para onde vão os seus créditos IA?", "breakdown_subtitle": "Distribuição do consumo por tipo de mensagem este mês", "transactions_title": "Últimos movimentos de créditos", "transactions_subtitle": "As 20 últimas operações no seu saldo", "balance_label": "Saldo:", "csv_btn": "CSV", "csv_col_date": "Data", "csv_col_type": "Tipo", "csv_col_desc": "Descrição", "csv_col_amount": "Montante (créditos)", "csv_col_balance": "Saldo após", "chat_title": "Faça uma pergunta sobre o seu consumo", "chat_subtitle": "Respostas baseadas nos seus dados reais", "chat_placeholder": "Ex: Quantos créditos usei esta semana?", "chat_empty": "Clique numa pergunta acima ou escreva a sua", "chat_error": "Desculpe, não consigo responder agora.", "quick_q1": "Quantos créditos me restam?", "quick_q2": "Daqui a quantos dias ficarei sem créditos?", "quick_q3": "Qual funcionalidade consome mais?", "quick_q4": "Quanto gastei esta semana?", "feature_LESSON": "📚 Lições enviadas", "feature_FEEDBACK": "✅ Feedback de exercícios", "feature_DEEPDIVE": "🔍 Aprofundamentos", "feature_TRANSCRIPTION": "🎤 Transcrições de áudio", "feature_IMAGE_ANALYSIS": "🖼️ Análises de imagem", "feature_CAMPAIGN": "📣 Campanhas", "feature_ONBOARDING": "👋 Onboarding de novos alunos", "feature_OTHER": "⚙️ Outros", "tx_TOP_UP_MANUAL": "➕ Recarga", "tx_TOP_UP_PAYMENT": "➕ Recarga", "tx_ADJUSTMENT": "🔧 Ajuste", "tx_DEBIT_AI": "🤖 Mensagem IA", "tx_DEBIT_WHATSAPP": "💬 Mensagem WhatsApp", "tx_DEBIT_BROADCAST": "📣 Campanha", "modal_title": "Recarregar créditos", "modal_rate": "1 crédito = 10 FCFA · usado por cada mensagem IA", "modal_popular": "O mais popular", "modal_ai_messages": "≈ {{count}} mensagens IA", "modal_footer": "Clique num pack → WhatsApp abre → a nossa equipa finaliza a recarga em menos de 2 horas.", "pack_500_label": "500 créditos", "pack_2000_label": "2 000 créditos", "pack_5000_label": "5 000 créditos", "pack_500_price": "5 000 FCFA", "pack_2000_price": "18 000 FCFA", "pack_5000_price": "40 000 FCFA" }, "clients": { "page_title": "Gestão de Clientes B2B", "page_subtitle": "Gira as organizações parceiras e os seus ativos WhatsApp.", "new_org_button": "Nova Organização", "loading": "A carregar clientes...", "no_clients_title": "Sem clientes", "no_clients_desc": "Comece por adicionar a sua primeira organização parceira.", "status": { "operational": "Operacional", "config_required": "Configuração necessária", "online": "Online", "suspended": "SUSPENSO" }, "actions": { "reconfigure_wa": "Reconfigurar WhatsApp", "connect_wa": "Ligar WhatsApp (Meta)", "direct_setup": "Configuração direta", "personality_studio": "Personality Studio", "ai_credits": "Créditos IA", "billing_details": "Detalhes & Faturação" }, "waba": { "checking": "A verificar…", "not_connected": "Não ligado", "approved": "Aprovado", "pending": "Em revisão", "rejected": "Rejeitado", "banned": "Suspenso", "unknown": "Desconhecido", "refresh_tooltip": "Atualizar", "what_to_do": "O que fazer? →", "verified": "Verificado", "not_verified": "Não verificado", "verify_link": "Verificar →" }, "tier": { "tier_50": "50 conv./dia", "tier_250": "250 conv./dia", "tier_1k": "1 000 conv./dia", "tier_10k": "10 000 conv./dia", "tier_100k": "100 000 conv./dia", "unlimited": "Ilimitado", "label": "Limite Diário", "meta_compliance": "Conformidade Meta Tech Provider" }, "quality": { "good_label": "Bom", "good_desc": "Taxa de denúncia baixa. Continue assim.", "medium_label": "Médio", "medium_desc": "Utilizadores denunciaram as suas mensagens. Evite envios não solicitados.", "risky_label": "Arriscado", "risky_desc": "Risco de bloqueio Meta. Reduza o volume e melhore o conteúdo.", "dot_title": "Qualidade: " }, "tier_modal": { "title": "Limite de Mensagens WhatsApp", "levels_heading": "Níveis de Capacidade Meta", "current_badge": "Atual", "tier_50_desc": "Conta restrita ou em processo de ativação.", "tier_250_desc": "Nível de partida para qualquer conta nova aprovada.", "tier_1k_desc": "Atingido automaticamente após 1 000 utilizadores únicos/mês.", "tier_10k_desc": "Atingido após 10 000 utilizadores únicos/mês.", "tier_100k_desc": "Volume elevado — desbloqueado pela Meta a pedido.", "unlimited_desc": "Sem limites aplicados pela Meta.", "quality_heading": "Pontuação de Qualidade do Número", "meta_auto_update": "A Meta atualiza estes dados automaticamente.", "levels_auto": "Os níveis progridem sem qualquer ação da sua parte." }, "cells": { "waba_header": "WABA", "business_header": "Empresa Meta", "daily_limit_header": "Limite Diário", "daily_limit_info_tooltip": "Saber mais sobre os limites Meta" }, "create_modal": { "title": "Nova Organização", "company_name_label": "Nome da empresa", "company_name_placeholder": "Ex: AgroBusiness Senegal", "slug_label": "Slug (URL)", "slug_placeholder": "agro-sn", "use_case_label": "Caso de uso", "use_case_education": "🎓 Plataforma Educativa (Módulos)", "use_case_crm": "💬 CRM & Mensagens WhatsApp (Excel)", "workstream_label": "Área de trabalho (Workstream)", "mode_crm": "CRM & Marketing", "mode_pedagogy": "Pedagogia & Formação", "mode_service": "Serviço de Cliente IA", "admin_section": "Administrador Principal", "admin_name_label": "Nome completo", "admin_name_placeholder": "João Silva", "admin_email_label": "Email", "admin_email_placeholder": "admin@empresa.com", "password_label": "Senha provisória", "password_placeholder": "Mín. 8 caracteres", "submit": "Criar organização & Admin", "submitting": "A criar...", "error_create": "Erro ao criar organização. Verifique se o slug é único." }, "validation": { "name_required": "Nome obrigatório", "slug_required": "Slug obrigatório", "slug_format": "Apenas letras minúsculas, números e hífenes", "admin_name_required": "Nome obrigatório", "email_required": "Email obrigatório", "email_invalid": "Email inválido", "password_min": "Mínimo 8 caracteres" }, "billing_modal": { "title": "Detalhes & Faturação", "mode_label": "Modo", "waba_status_label": "Estado WABA", "daily_limit_label": "Limite diário", "meta_business_label": "Empresa Meta", "waba_id_label": "WABA ID", "plan_label": "Plano de subscrição", "plan_starter": "Starter — 20 000 FCFA/mês", "plan_growth": "Crescimento — 60 000 FCFA/mês", "plan_scale": "Scale — 150 000 FCFA/mês", "plan_enterprise": "Enterprise — 500 000+ FCFA/mês", "apply_plan": "Aplicar plano", "plan_updated": "Plano atualizado!", "close": "Fechar" }, "credits_modal": { "title": "Créditos IA", "current_balance": "Saldo atual da carteira", "credits_unit": "créditos", "add_credits_label": "Créditos a adicionar", "add_credits_placeholder": "Ex: 500", "rate_hint": "1 crédito = 10 FCFA · Mínimo 1 crédito", "submit": "Creditar a carteira", "error": "Erro ao alocar créditos" }, "personality_modal": { "title": "Personality Studio", "subtitle": "Configurar Identidade IA para {{orgName}}", "bot_name_label": "Nome do Bot", "bot_name_placeholder": "ex. XAMLÉ, Coach Sara...", "mission_label": "Missão Principal", "mission_placeholder": "Qual é o objetivo principal desta IA? ex. Ajudar empreendedores a dominar finanças...", "tone_label": "Tom & Descrição da Personalidade", "tone_placeholder": "ex. Profissional mas encorajador, usa metáforas locais, rigoroso nos conceitos mas amigável...", "cancel": "Cancelar", "submit": "Implementar Personalidade", "success": "Personalidade atualizada!" }, "wa_setup_modal": { "title": "Configurar WhatsApp", "already_on_meta": "Conta já configurada na Meta", "waba_id_label": "WABA ID", "waba_id_placeholder": "ex: 102938475610293", "waba_id_hint_link": "Abrir WhatsApp Accounts", "business_id_label": "Business ID Meta", "business_id_optional": "(opcional — para mostrar a verificação)", "business_id_placeholder": "ex: 25855038707486178", "business_id_hint_link": "Abrir Business Info", "token_label": "Token do sistema", "token_optional": "(opcional — usa o token env por defeito)", "token_placeholder": "EAAxxxxxxx... — deixe em branco se já estiver em env var", "token_hint_link": "Gerar desde System Users", "phone_number_detected": "Phone Number ID detetado:", "save_config": "Guardar configuração", "success": "Configuração WhatsApp atualizada!", "new_account_heading": "Nova conta — Ligação via Facebook", "new_account_desc": "Para um cliente que ainda não configurou a sua conta WhatsApp Business na sua plataforma.", "connect_facebook": "Ligar com Facebook" }, "toast": { "wa_connected": "WhatsApp ligado com sucesso!", "error_prefix": "Erro: " } }, "admin_chat": { "aria_label": "Assistente IA", "choose_or_write": "Escolha uma pergunta ou escreva a sua", "input_placeholder": "A sua pergunta...", "error": "Desculpe, não consigo responder agora. Tente novamente num momento.", "billing_title": "Assistente de faturação", "billing_subtitle": "Respostas baseadas nos seus dados reais", "billing_q1": "Quantos créditos me restam?", "billing_q2": "Daqui a quantos dias ficarei sem créditos?", "billing_q3": "Qual funcionalidade consome mais?", "billing_q4": "Quanto gastei esta semana?", "settings_title": "Ajuda — Configuração", "settings_subtitle": "Explico cada parâmetro", "settings_q1": "Como conecto o meu WhatsApp?", "settings_q2": "Para que serve o modo Agente IA?", "settings_q3": "As minhas chaves API estão seguras?", "settings_q4": "Como mudo o modo da minha organização?", "templates_title": "Ajuda — Modelos", "templates_subtitle": "Ajudo-o a criar as suas mensagens", "templates_q1": "Como crio um bom modelo?", "templates_q2": "Para que servem as variáveis num modelo?", "templates_q3": "Por que pode um modelo ser rejeitado?", "templates_q4": "Qual é a diferença entre utilitário e marketing?", "agent_title": "Ajuda — Agente IA", "agent_subtitle": "Guio-o para configurar o seu agente", "agent_q1": "Que tipo de documento devo carregar?", "agent_q2": "Como escolho o tom certo para o meu agente?", "agent_q3": "Quantos documentos são suficientes?", "agent_q4": "Como melhoro as respostas do meu agente?", "onboarding_title": "Ajuda — Ligação WhatsApp", "onboarding_subtitle": "Guio-o passo a passo", "onboarding_q1": "Onde encontro o meu WABA ID?", "onboarding_q2": "Qual é a diferença entre as duas opções?", "onboarding_q3": "O meu token expirou, o que devo fazer?", "onboarding_q4": "Não tenho conta Meta, por onde começo?", "general_title": "Assistente Xamlé", "general_subtitle": "Faça-me as suas perguntas", "general_q1": "Como começo com o Xamlé?", "general_q2": "Qual é a diferença entre os modos?", "general_q3": "Como funciona a faturação?", "general_q4": "Onde posso ver as minhas estatísticas?" }, "super_admin": { "nav_dashboard": "Dashboard", "nav_organizations": "Organizações", "nav_users": "Utilizadores", "nav_whatsapp": "Números WA", "nav_templates": "Templates WA", "nav_profiles": "Perfis WA", "nav_monitoring": "Monitorização", "nav_billing": "Faturação", "nav_ai": "AI Insights", "nav_audit_logs": "Audit Logs", "exit_admin": "Sair do admin", "logout": "Terminar sessão", "system_active": "Sistema ativo", "platform_admin": "Platform Admin", "super_admin_label": "Super-admin", "dashboard_title": "Platform Dashboard", "dashboard_subtitle": "Vista global de todas as organizações", "kpi_organizations": "Organizações", "kpi_orgs_active": "{{count}} ativas", "kpi_users": "Utilizadores", "kpi_messages_24h": "Mensagens / 24h", "kpi_queue_depth": "Fila de espera", "kpi_queue_failed": "{{count}} falhados", "kpi_revenue": "Receita / mês", "kpi_alerts": "Alertas", "system_health": "Saúde do sistema", "health_db": "Base de dados", "health_redis": "Redis", "health_queue": "Fila", "active_alerts": "Alertas ativos ({{count}})", "alert_token": "Token a expirar — {{orgName}} ({{daysOld}}d)", "alert_balance": "Saldo baixo — {{orgName}}: {{balance}} créditos", "alert_queue_failed": "{{count}} jobs falhados na fila", "orgs_title": "Organizações", "orgs_total": "{{count}} organizações no total", "org_new": "Nova organização", "org_search_placeholder": "Pesquisar uma organização...", "org_search_btn": "Pesquisar", "org_loading": "A carregar...", "org_empty": "Nenhuma organização encontrada", "col_name": "Nome", "col_plan": "Plano", "col_status": "Estado", "col_users": "Utilizadores", "col_credits": "Créditos", "status_suspended": "Suspenso", "status_trial": "Trial", "status_active": "Ativo", "org_reactivated": "Organização reativada", "org_suspended": "Organização suspensa", "org_delete_confirm": "Eliminar definitivamente \"{{name}}\"? Esta ação não pode ser desfeita.", "org_deleted": "\"{{name}}\" eliminada", "org_updated": "Organização atualizada", "org_created": "Organização criada", "label_plan": "Plano", "label_ai_credits": "Limite de créditos AI", "label_crm_active": "CRM ativo", "label_edtech_active": "EdTech ativo", "saving": "A guardar...", "save": "Guardar", "modal_new_org": "Nova organização", "org_name_placeholder": "Nome da organização", "cancel": "Cancelar", "creating": "A criar...", "create": "Criar", "err_load_orgs": "Erro ao carregar organizações", "err_suspend": "Erro ao alterar estado", "err_delete": "Erro ao eliminar", "err_update": "Erro ao atualizar", "err_create": "Erro ao criar", "btn_edit": "Editar", "btn_reactivate": "Reativar", "btn_suspend": "Suspender", "btn_delete_forever": "Eliminar definitivamente", "pagination_info": "{{from}}–{{to}} de {{total}}", "prev": "Anterior", "next": "Seguinte", "users_title": "Utilizadores", "users_total": "{{count}} utilizadores no total", "user_search_placeholder": "Pesquisar por nome ou email...", "col_user": "Utilizador", "col_organization": "Organização", "col_role": "Função", "col_created_at": "Criado em", "user_empty": "Nenhum utilizador encontrado", "role_updated": "Função atualizada", "btn_reset_password": "Redefinir palavra-passe", "reset_no_email": "Este utilizador não tem endereço de email", "reset_confirm": "Enviar link de redefinição para {{email}}?", "reset_sent": "Link enviado para {{email}}", "err_load_users": "Erro ao carregar utilizadores", "err_role_change": "Erro ao alterar função", "err_reset_password": "Erro ao enviar email", "wa_numbers_title": "Números WhatsApp", "wa_numbers_total": "{{count}} números registados", "wa_refresh": "Atualizar", "wa_register_number": "Registar um número", "wa_no_numbers": "Nenhum número WhatsApp registado", "col_number": "Número", "col_id": "ID", "col_added_at": "Adicionado em", "wa_register_title": "Registar um número WhatsApp", "wa_step": "Passo {{step}}/2", "label_org": "Organização", "org_select_placeholder": "Selecionar uma organização...", "label_phone_number_id": "Phone Number ID", "phone_id_hint": "Encontre este ID no Meta Business Manager > WhatsApp Accounts", "label_pin": "PIN de segurança", "pin_hint": "PIN de 6 dígitos para proteger o número (deixe em branco = 000000)", "wa_select_org_error": "Por favor selecione uma organização.", "wa_phone_id_error": "O Phone Number ID deve ter entre 12 e 18 dígitos.", "wa_pin_error": "O PIN deve ter exatamente 6 dígitos.", "wa_sending": "A enviar...", "wa_send_otp": "Enviar código OTP", "wa_reg_error": "Erro durante o registo.", "wa_net_error": "Erro de rede.", "wa_otp_hint": "A Meta enviou-lhe um código OTP por SMS ou chamada de voz. Introduza-o abaixo.", "label_otp": "Código OTP", "wa_otp_error": "O código OTP deve ter entre 4 e 8 dígitos.", "wa_verifying": "A verificar...", "wa_verify": "Verificar", "wa_otp_invalid": "Código OTP inválido ou expirado.", "wa_number_registered": "Número registado com sucesso!", "wa_back": "Voltar", "err_load_numbers": "Erro ao carregar números", "tpl_title": "WhatsApp Templates", "tpl_orgs_count_one": "{{count}} organização com WhatsApp configurado", "tpl_orgs_count_other": "{{count}} organizações com WhatsApp configurado", "tpl_select_hint": "Selecione uma organização para gerir os seus modelos de mensagem WhatsApp.", "tpl_search_placeholder": "Pesquisar uma organização ou WABA ID...", "tpl_empty": "Nenhuma organização com WhatsApp configurado", "col_waba_id": "WABA ID", "col_actions": "Ações", "tpl_view": "Ver templates", "tpl_no_templates": "Nenhum modelo encontrado para esta organização.", "col_category": "Categoria", "col_language": "Língua", "tpl_create_btn": "Criar template", "tpl_create_title": "Novo template WhatsApp", "label_template_name": "Nome do template", "template_name_hint": "Minúsculas, dígitos, underscores apenas", "template_name_error": "Minúsculas, dígitos, underscores apenas", "label_category": "Categoria", "label_language": "Língua", "label_header_optional": "Cabeçalho (opcional)", "label_body": "Corpo da mensagem", "label_footer_optional": "Rodapé (opcional)", "label_preview": "Pré-visualização", "body_placeholder": "Corpo da mensagem...", "tpl_select_org_placeholder": "Selecionar uma organização…", "tpl_submitted": "Template submetido à Meta para aprovação", "tpl_create_required": "Organização, nome e corpo da mensagem são obrigatórios.", "tpl_name_invalid": "O nome do template é inválido.", "tpl_creating": "A criar…", "tpl_create_submit": "Criar template", "tpl_create_error": "Erro ao criar o template.", "profiles_title": "Perfis WhatsApp", "profiles_count_one": "{{count}} perfil", "profiles_count_other": "{{count}} perfis", "profile_empty": "Nenhum perfil WhatsApp encontrado", "label_org_name": "Nome da organização", "label_logo_url": "URL do logótipo", "label_primary_color": "Cor principal", "profile_updated": "Perfil atualizado", "err_load_profiles": "Erro ao carregar perfis", "err_save_profile": "Erro ao guardar", "btn_cancel_edit": "Cancelar", "btn_save": "Guardar", "saving_profile": "A guardar…", "btn_edit_profile": "Editar", "monitoring_title": "Monitorização & Alertas", "monitoring_subtitle": "Estado do sistema em tempo real", "system_health_title": "Saúde do sistema", "health_redis_cache": "Redis / Cache", "health_queue_jobs": "Fila de jobs", "queue_failed_detail": "{{count}} falhados", "queue_waiting_detail": "{{count}} em espera", "token_expiry_title": "Tokens WhatsApp a expirar", "token_no_risk": "Nenhum token em risco de expiração", "col_org": "Organização", "col_issued_ago": "Emitido", "col_days": "{{count}} dias", "low_balance_title": "Saldos baixos (< 100 créditos)", "low_balance_none": "Nenhuma organização com saldo baixo", "credits_label": "{{count}} créditos", "err_load_monitoring": "Erro ao carregar monitorização", "billing_title": "Faturação", "billing_transactions": "{{count}} transações", "billing_add_credits": "Adicionar créditos", "billing_no_transactions": "Nenhuma transação", "col_date": "Data", "col_type": "Tipo", "col_description": "Descrição", "col_amount": "Montante", "col_balance_after": "Saldo após", "credits_added": "{{amount}} créditos adicionados. Novo saldo: {{balance}}", "modal_add_credits": "Adicionar créditos", "label_org_id": "ID da organização", "org_id_placeholder": "org-uuid...", "label_credits_amount": "Montante (créditos)", "label_description_optional": "Descrição (opcional)", "credits_desc_placeholder": "Carregamento manual...", "adding": "A adicionar...", "add": "Adicionar", "err_load_transactions": "Erro ao carregar transações", "err_add_credits": "Erro ao adicionar créditos", "audit_title": "Audit Logs", "audit_total": "{{count}} entradas no total", "col_datetime": "Data / Hora", "col_action": "Ação", "col_actor": "Ator", "col_resource": "Recurso", "col_details": "Detalhes", "col_from": "De", "col_to": "Até", "audit_search": "Pesquisar", "audit_empty": "Nenhum log para estes critérios", "audit_show": "Ver", "audit_hide": "Ocultar", "ai_title": "AI Insights", "ai_subtitle": "Comandos em linguagem natural para gerir a plataforma", "ai_suggestion_1": "Mostra-me organizações com saldo baixo", "ai_suggestion_2": "Quais são as estatísticas da plataforma?", "ai_suggestion_3": "Lista os alertas ativos", "ai_suggestion_4": "Mostra as 10 últimas organizações", "ai_greeting": "Olá! Sou o seu assistente IA para a gestão da plataforma XAMLÉ. Faça-me uma pergunta ou dê-me uma instrução.", "ai_input_placeholder": "Digite um comando... ex: 'Adiciona 500 créditos à org XAMLÉ'", "ai_confirm": "Confirmar", "ai_cancelled": "Ação cancelada.", "ai_err": "Erro AI", "ai_err_exec": "Erro de execução", "ai_err_message": "Desculpe, ocorreu um erro.", "ai_err_exec_message": "Erro durante a execução.", "ai_done": "Ação concluída.", "ai_no_result": "Nenhum resultado encontrado.", "rel_today": "hoje", "rel_yesterday": "há 1 dia", "rel_days_ago": "há {{count}} dias", "tpl_cat_marketing_desc": "Promoções, ofertas, newsletters", "tpl_cat_utility_desc": "Confirmações, atualizações transacionais", "tpl_cat_authentication_desc": "Códigos OTP, verificação" } }