CognxSafeTrack
fix(admin): replace vague Meta hints with direct clickable links in Direct Setup modal
295c327 | { | |
| "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" | |
| } | |
| } | |