{ "integrations": { "accounting": { "dialog": { "cancel": "Cancelar", "enterPlaceholder": "Inserir {{field}}...", "errors": { "enterExternal": "Insira {{field}}.", "invalidJson": "Formato JSON inválido para os metadados.", "saveFailed": "Falha ao salvar o mapeamento.", "selectAlga": "Selecione {{field}}.", "selectExternal": "Selecione {{field}}." }, "manualEntryHelp": "Insira o identificador exatamente como aparece em seu sistema contábil.", "metadataLabel": "Metadados (JSON)", "metadataPlaceholder": "Metadados opcionais em formato JSON", "realmIdLabel": "ID do Realm", "saveMapping": "Salvar mapeamento", "saving": "Salvando…", "selectPlaceholder": "Selecionar {{field}}..." }, "manager": { "noModules": "Nenhum módulo de mapeamento configurado." }, "moduleView": { "actionsColumn": "Ações", "delete": "Excluir", "edit": "Editar", "errors": { "deleteFailed": "Falha ao excluir o mapeamento.", "loadFailed": "Falha ao carregar os mapeamentos." }, "loading": "Carregando mapeamentos…", "noMappings": "Nenhum mapeamento encontrado.", "notAvailable": "N/D", "openMenu": "Abrir menu" }, "setup": { "activeConfiguration": "Configuração ativa", "badges": { "enterprise": "Enterprise" }, "comingSoon": "Em breve", "configure": "Configurar integração", "highlightValues": { "csv": "CSV", "instant": "Instantâneo", "live": "Ao vivo", "manual": "Manual", "twoWay": "Bidirecional" }, "highlights": { "delivery": "Entrega", "export": "Exportação", "format": "Formato", "sync": "Sincronização" }, "options": { "qbo": { "description": "Conecte seu realm para sincronizar faturas e gerenciar mapeamentos." }, "qboCsv": { "description": "Exporte faturas para CSV para importação manual no QuickBooks e importe dados fiscais a partir dos relatórios." }, "xero": { "description": "Conecte sua organização com credenciais OAuth de propriedade do tenant para exportações contábeis ao vivo e mapeamentos." }, "xeroCsv": { "description": "Exporte faturas para CSV para importação manual no Xero e importe dados fiscais a partir dos relatórios do Xero." } }, "selected": "{{title}} selecionado", "unavailable": { "description": "Esta integração ainda não está disponível. Selecione QuickBooks CSV ou Xero CSV para configurar exportações manuais.", "title": "Configuração indisponível" } }, "modules": { "tabs": { "clients": "Clientes", "itemsServices": "Itens / Serviços", "taxCodes": "Códigos fiscais", "paymentTerms": "Condições de pagamento" } } }, "calendar": { "enterprise": { "loading": "Carregando as configurações do calendário..." } }, "csv": { "export": { "actions": { "exportCsv": "Exportar CSV", "generating": "Gerando..." }, "description": "Exporte faturas como arquivo CSV para importação manual no QuickBooks.", "errors": { "configureMissingMappings": "Configure os mapeamentos ausentes acima e tente exportar novamente.", "failed": "Falha na exportação", "missingItemMapping": "Mapeamento de item ausente", "missingItemMappingId": "Mapeamento de item ausente ({{serviceId}})", "missingItemMappingNamed": "Mapeamento de item ausente: {{serviceName}}" }, "fields": { "dateRange": "Intervalo de datas (opcional)", "invoiceStatuses": "Status de fatura" }, "lockReset": { "actions": { "reset": "Redefinir bloqueio de exportação" }, "description": "Limpar bloqueios de exportação para permitir reexportar faturas via CSV.", "dialog": { "cancel": "Cancelar", "confirm": "Redefinir bloqueio", "confirmBatch": "Isto permitirá que o Alga PSA exporte novamente as faturas do lote {{batchId}}. Se alguma dessas faturas ainda existir no QuickBooks, importar o CSV pode criar duplicatas.", "confirmInvoice": "Isto permitirá que o Alga PSA exporte novamente a fatura {{invoiceNumber}}. Se esta fatura ainda existir no QuickBooks, importar o CSV pode criar duplicatas.", "resetting": "Redefinindo…", "title": "Redefinir bloqueio de exportação?", "warning": "Prossiga apenas se tiver certeza de que a fatura não foi importada ou se você a excluiu/cancelou no QuickBooks." }, "errors": { "unable": "Não foi possível redefinir o bloqueio de exportação" }, "fields": { "batchId": "ID do lote de exportação", "batchIdPlaceholder": "ex. e793a514-34bd-4d7b-b266-9bb15f7087c4", "invoiceNumber": "Número da fatura", "invoiceNumberPlaceholder": "ex. INV-1001" }, "modes": { "ariaLabel": "Modo de redefinição de bloqueio de exportação", "batch": "Lote", "invoice": "Fatura" }, "success": { "batchCleared": "Bloqueios de exportação limpos para este lote. Você pode exportar novamente essas faturas.", "invoiceCleared": "Bloqueio de exportação limpo. Você pode exportar novamente esta fatura.", "noBatchLocks": "Nenhum bloqueio de exportação foi encontrado para esse lote.", "noInvoiceLock": "Nenhum bloqueio de exportação encontrado para essa fatura." }, "title": "Reexportar uma fatura", "warnings": { "duplicates": "Isso pode causar duplicatas no QuickBooks se a fatura ainda existir lá." } }, "success": { "one": "{{count}} fatura exportada para {{filename}}", "other": "{{count}} faturas exportadas para {{filename}}" }, "title": "Exportação CSV para QuickBooks" }, "preview": { "duplicates": { "description": "As faturas a seguir aparecem várias vezes. Seus valores fiscais serão somados:", "title": "Faturas duplicadas ({{count}})" }, "errors": { "more": "... e mais {{count}} erros", "title": "Erros ({{count}})" }, "importResults": "Resultados da importação", "importSummary": { "difference": "Diferença:", "failedUpdates": "Atualizações com falha:", "importedTax": "Imposto importado:", "originalTax": "Imposto original:", "successfulUpdates": "Atualizações bem-sucedidas:", "title": "Resumo da importação" }, "rowLabel": "Linha {{row}}:", "stats": { "matchedInvoices": "Faturas correspondidas", "totalRows": "Total de linhas", "uniqueInvoices": "Faturas únicas", "validRows": "Linhas válidas" }, "status": { "databaseMatch": "Correspondência no banco", "rowData": "Dados da linha", "structure": "Estrutura" }, "validationPassed": { "one": "Validação aprovada. Pronto para importar dados fiscais para {{count}} fatura.", "other": "Validação aprovada. Pronto para importar dados fiscais para {{count}} faturas." }, "validationResults": "Resultados da validação", "warnings": { "more": "... e mais {{count}} avisos", "title": "Avisos ({{count}})" } }, "settings": { "exports": { "description": "Crie lotes de exportação, baixe arquivos CSV, importe relatórios fiscais e revise o histórico de exportação.", "managedTitle": "Gerenciado pelo Faturamento", "openButton": "Abrir exportações contábeis", "path": "Faturamento → Exportações contábeis", "title": "Exportações contábeis" }, "qbo": { "bullets": { "exportLabel": "Exportação", "exportText": "Gere arquivos CSV compatíveis com o recurso de importação de faturas do QuickBooks", "taxImportLabel": "Importação de impostos", "taxImportText": "Ao usar cálculo fiscal externo, importe valores fiscais dos relatórios fiscais do QuickBooks" }, "description": "Exporte faturas para CSV para importação manual no QuickBooks e importe dados fiscais dos relatórios do QuickBooks.", "exports": { "managedPrefix": "Acesse", "managedSuffix": "para selecionar faturas, gerar exportações CSV do QuickBooks, importar relatórios fiscais e gerenciar lotes." }, "intro": "Esta integração fornece uma alternativa à conectividade com o QuickBooks baseada em OAuth:", "mappings": { "description": "Mapeie clientes, serviços, códigos fiscais e condições de pagamento do Alga para os identificadores usados em sua empresa QuickBooks. Estes valores são usados ao gerar a exportação CSV.", "title": "Mapeamentos CSV do QuickBooks" }, "note": "Nota: Configure os mapeamentos abaixo antes de exportar. As exportações CSV e as importações de impostos são gerenciadas em Faturamento → Exportações contábeis.", "title": "Integração CSV do QuickBooks" } }, "taxImport": { "actions": { "importTaxData": "Importar dados fiscais", "importing": "Importando...", "validate": "Validar", "validating": "Validando..." }, "errors": { "importFailed": "Falha na importação", "readFile": "Falha ao ler o arquivo", "selectFile": "Selecione um arquivo CSV", "selectFileAndRange": "Selecione um arquivo e um intervalo de datas", "templateDownloadFailed": "Falha ao baixar o modelo", "validationFailed": "Falha na validação" }, "fields": { "csvFile": "Arquivo CSV", "dateRangeHelp": "Apenas faturas dentro deste intervalo de datas serão processadas.", "dateRangeRequired": "Intervalo de datas (obrigatório)", "dropZone": "Arraste e solte um arquivo CSV aqui, ou clique para navegar", "fileSize": "({{size}} KB)" }, "preview": { "alreadyImported": "{{count}} fatura(s) já possuem impostos importados.", "alreadyImportedSkip": "{{count}} fatura(s) já possuem impostos importados e serão ignoradas.", "badges": { "databaseMatch": "Correspondência no banco", "rowData": "Dados da linha", "structure": "Estrutura" }, "columns": { "algaInvoice": "Fatura Alga", "contact": "Contato", "status": "Status", "taxAmount": "Valor fiscal", "xeroInvoice": "Fatura Xero" }, "errorsTitle": "Erros ({{count}})", "matched": "Correspondida", "matchedInvoices": "Faturas correspondidas", "notPendingDescription": "Estas faturas foram criadas com cálculo fiscal interno. Para importar impostos do Xero, as faturas devem ser configuradas com a origem fiscal \"Pending External\" ao exportar.", "notPendingSkip": "{{count}} fatura(s) não têm imposto externo pendente e serão ignoradas.", "notPendingTitle": "{{count}} fatura(s) não usam cálculo fiscal externo.", "showingFirst20": "Mostrando as primeiras 20 de {{count}} linhas", "taxToImport": "Imposto a importar", "title": "Resultados da validação", "totalRows": "Total de linhas", "uniqueInvoices": "Faturas únicas", "unmatched": "Não correspondida", "validRows": "Linhas válidas", "warningsTitle": "Avisos ({{count}})" }, "qbo": { "description": "Importe valores fiscais de um arquivo CSV de relatório fiscal do QuickBooks.", "help": { "csvRequirement": "O CSV deve incluir as colunas Número da fatura, Data da fatura e Valor fiscal.", "downloadTemplate": "Baixar modelo CSV", "steps": { "s1": "No QuickBooks, acesse Reports > All Reports", "s2": "Selecione Sales Tax Liability ou Transaction Detail by Account", "s3": "Defina o intervalo de datas para corresponder às suas faturas exportadas", "s4": "Clique em Export e escolha Export to Excel ou Export to CSV", "s5": "Salve o arquivo e faça upload aqui" }, "title": "Como exportar dados fiscais do QuickBooks" }, "success": { "one": "Imposto importado com sucesso para {{count}} fatura. Imposto total importado: ${{amount}}", "other": "Imposto importado com sucesso para {{count}} faturas. Imposto total importado: ${{amount}}" }, "title": "Importar impostos do CSV do QuickBooks" }, "result": { "failed": "{{count}} com falha.", "one": "Imposto importado para {{count}} fatura. Imposto total importado: {{amount}}.", "other": "Imposto importado para {{count}} faturas. Imposto total importado: {{amount}}.", "skipped": "{{count}} ignoradas." }, "unified": { "description": "Importe valores fiscais da exportação CSV do seu sistema contábil.", "qbResult": { "one": "Imposto importado com sucesso para {{count}} fatura. Imposto total importado: {{amount}}", "other": "Imposto importado com sucesso para {{count}} faturas. Imposto total importado: {{amount}}" }, "source": { "ariaLabel": "Origem da importação CSV", "quickbooks": "QuickBooks", "xero": "Xero" }, "title": "Importar impostos de CSV", "xeroCsvDescription": "O CSV exportado inclui Número da fatura, Nome do contato, Valor da linha, Valor fiscal e categorias de rastreamento.", "xeroHelp": { "note": "Nota: Apenas faturas originalmente exportadas do Alga PSA (com o rastreamento Source System = AlgaPSA) serão correspondidas.", "s1": "No Xero, acesse Sales > Invoices", "s2": "Selecione a aba de fatura da qual deseja exportar (ex. Paid, Awaiting Payment)", "s3": "(Opcional) Clique em Search para filtrar por data de início, data de fim ou tipo de data", "s4": "Clique em Export", "s5": "O Xero baixa um arquivo CSV para seu computador", "s6": "Faça upload desse arquivo CSV aqui" }, "xeroResult": { "one": "Imposto importado para {{count}} fatura. Total: {{amount}}.", "other": "Imposto importado para {{count}} faturas. Total: {{amount}}." } }, "xero": { "description": "Importe valores fiscais de um arquivo CSV de Xero Invoice Details Report.", "dropZone": "Arraste e solte um CSV de Xero Invoice Details Report aqui, ou clique para navegar", "help": { "csvRequirement": "O relatório deve incluir colunas para Número da fatura, Nome do contato, Valor da linha e Valor fiscal. As faturas são correspondidas usando o campo Reference ou as categorias de rastreamento definidas durante a exportação.", "steps": { "s1": "No Xero, acesse Reports > All Reports", "s2": "Selecione Sales (Invoices and Revenue)", "s3": "Execute o relatório Invoice Details", "s4": "Defina o intervalo de datas para corresponder às suas faturas exportadas", "s5": "Clique em Export e escolha CSV", "s6": "Faça upload do arquivo exportado aqui" }, "title": "Como exportar dados fiscais do Xero" }, "title": "Importar impostos do CSV do Xero" } } }, "entra": { "settings": { "actions": { "disconnect": "Desconectar", "reconnect": "Reconectar", "reconnecting": "Reconectando…", "refresh": "Atualizar", "resetFieldSync": "Redefinir", "reviewMappings": "Revisar mapeamentos", "reviewRemap": "Revisar / remapear", "hideReviewRemap": "Ocultar Revisar / remapear", "runDiscovery": "Executar descoberta", "runDiscoveryAgain": "Executar descoberta novamente", "runDiscoveryRunning": "Executando descoberta…", "runInitialSync": "Executar sincronização inicial", "runInitialSyncRunning": "Iniciando sincronização inicial…", "saveFieldSync": "Salvar controles de sincronização de campo", "savingFieldSync": "Salvando…", "syncAll": "Sincronizar todos os tenants agora", "syncAllStarting": "Iniciando…" }, "badges": { "enterprise": "Enterprise", "reviewBeforeInitialSync": "Revisar antes da sincronização inicial" }, "connection": { "connectingSuffix": " (Conectando...)", "details": "Detalhes da conexão", "directCredentialSourceLabel": "Origem das credenciais:", "directTenantDefault": "common (multi-tenant)", "directTenantLabel": "Tenant Microsoft:", "cippServerLabel": "Servidor CIPP:", "notAvailable": "Indisponível", "notConfigured": "Não configurado", "notConnectedStatus": "not_connected", "optionsTitle": "Opções de conexão", "promptDetails": "Conecte o Entra para preencher os detalhes do provedor." }, "currentStep": { "connect": { "guidance": "Selecione uma opção de conexão para continuar a integração.", "title": "Passo 1: Conectar" }, "connectionsBelow": "As opções de conexão aparecem abaixo.", "discover": { "guidance": "Execute a descoberta para carregar tenants Entra gerenciados antes do mapeamento.", "title": "Passo 2: Descobrir" }, "label": "Passo atual", "map": { "guidance": "Confirme ou ajuste os mapeamentos de tenant para desbloquear a sincronização inicial.", "title": "Passo 3: Mapear" }, "sync": { "guidance": "Inicie a primeira execução de sincronização para os mapeamentos confirmados.", "title": "Passo 4: Sincronização inicial" } }, "description": "Configure o acesso Entra em nível de parceiro, descubra tenants gerenciados, mapeie-os para clientes e execute fluxos de sincronização.", "disabled": { "description": "A interface de integração Entra está atualmente desabilitada para este tenant.", "title": "Integração Microsoft Entra" }, "discovery": { "completed": "Descoberta concluída. {{count}} tenants descobertos.", "completedOne": "Descoberta concluída. {{count}} tenant descoberto.", "failed": "Falha ao executar a descoberta de tenants." }, "errors": { "loadStatus": "Falha ao carregar o status de conexão do Entra.", "unknown": "Erro desconhecido" }, "fieldSync": { "description": "Escolha quais campos de perfil do Entra podem sobrescrever os campos de contato local durante a sincronização.", "feedback": { "saveFailed": "Falha ao salvar os controles de sincronização de campo.", "saved": "Controles de sincronização de campo salvos." }, "options": { "displayName": { "description": "Permitir que o nome de exibição do Entra sobrescreva o nome completo do contato nos contatos vinculados.", "label": "Nome de exibição" }, "email": { "description": "Permitir que o e-mail/UPN do Entra sobrescreva o e-mail do contato nos contatos vinculados.", "label": "E-mail" }, "phone": { "description": "Permitir que os valores de telefone do Entra sobrescrevam o número de telefone do contato nos contatos vinculados.", "label": "Telefone" }, "role": { "description": "Permitir que o cargo do Entra sobrescreva a função do contato nos contatos vinculados.", "label": "Função" }, "upn": { "description": "Permitir que o UPN do Entra sobrescreva o nome principal Entra armazenado nos contatos vinculados.", "label": "UPN" } }, "title": "Controles de sincronização de campo" }, "guidedStep": { "current": "atual", "complete": "concluído", "locked": "bloqueado", "stepLabel": "Passo {{number}}", "thisIsCurrent": "Este é seu passo atual de integração." }, "initialSync": { "failed": "Falha ao iniciar a sincronização inicial do Entra.", "started": "Sincronização inicial iniciada. ID da execução: {{runId}}", "startedNoId": "Solicitação de início da sincronização inicial aceita." }, "maintenance": { "description": "A configuração inicial está concluída. Foque aqui em operações de sincronização, verificações de integridade e revisões de manutenção.", "healthDescription": "Revise a integridade da conexão, execute operações de manutenção e monitore a atividade de sincronização.", "healthTitle": "Resumo de integridade", "title": "Modo de operações contínuas" }, "mapping": { "description": "Revise sugestões de correspondência, escolha o cliente correto para cada tenant e confirme os mapeamentos antes da sincronização inicial.", "needsReviewLabel": "Requer revisão:", "savedLabel": "Salvos:", "selectedLabel": "Selecionados:", "skippedLabel": "Ignorados:", "stepLabel": "Passo 3", "title": "Mapear tenants para clientes" }, "onboarding": { "description": "Conclua cada passo da integração em ordem: conectar, descobrir, mapear e, em seguida, executar sua primeira sincronização.", "title": "Modo de configuração" }, "ongoing": { "description": "Use estes controles para operações de sincronização manuais após a conclusão dos passos de integração.", "title": "Operações contínuas" }, "overview": { "connectionLabel": "Conexão:", "connectionTypeLabel": "Tipo de conexão:", "label": "Visão geral", "mappedTenantsLabel": "Tenants mapeados:", "nextSyncIntervalEvery": "A cada {{minutes}} minutos", "nextSyncIntervalLabel": "Próximo intervalo de sincronização:" }, "skipped": { "empty": "Nenhum tenant está atualmente marcado como ignorado.", "noPrimaryDomain": "Sem domínio primário", "remap": "Remapear", "title": "Tenants ignorados" }, "status": { "connectionHealth": "Integridade da conexão", "label": "Status" }, "syncAll": { "failed": "Falha ao iniciar a sincronização completa do Entra.", "started": "Sincronização iniciada. ID da execução: {{runId}}", "startedNoId": "Solicitação de início da sincronização aceita." }, "title": "Integração Microsoft Entra", "validation": { "label": "Validação e descoberta", "lastDiscoveryLabel": "Última descoberta:", "lastValidatedLabel": "Última validação:", "neverFormatted": "Nunca", "noneValidationError": "Nenhum", "validationErrorLabel": "Erro de validação:" }, "wizard": { "connect": { "description": "Autorize a autenticação direta de parceiro Microsoft para vincular este tenant Entra.", "title": "Conectar" }, "discover": { "description": "Carregue e persista tenants Entra gerenciados para este tenant MSP.", "title": "Descobrir tenants" }, "map": { "description": "Revise as sugestões de correspondência automática e confirme os mapeamentos.", "title": "Mapear tenants para clientes" }, "sync": { "description": "Inicie a primeira execução de sincronização para os mapeamentos confirmados.", "title": "Sincronização inicial" } } }, "tenantMapping": { "actions": { "confirmSelected": "Confirmar mapeamentos selecionados", "confirming": "Confirmando…", "import": "Importar como novo cliente", "importing": "Importando…", "preselectExact": "Pré-selecionar correspondências exatas", "refresh": "Atualizar prévia", "skip": "Ignorar", "skipped": "Ignorado" }, "columns": { "actions": "Ações", "confidence": "Confiança", "entraTenant": "Tenant Entra", "primaryDomain": "Domínio primário", "selectClient": "Selecionar cliente", "status": "Status", "suggestedClient": "Cliente sugerido" }, "empty": "Nenhum tenant descoberto disponível para a prévia de mapeamento.", "errors": { "confirmFailed": "Falha ao confirmar os mapeamentos selecionados.", "importFailed": "Falha ao importar o tenant como cliente.", "loadFailed": "Falha ao carregar a prévia de mapeamento de tenant.", "selectAtLeastOne": "Selecione pelo menos um cliente para confirmar um mapeamento.", "skipFailed": "Falha ao ignorar este mapeamento de tenant." }, "feedback": { "confirmed": "{{count}} mapeamentos confirmados.", "confirmedOne": "{{count}} mapeamento confirmado." }, "noSuggestion": "Sem sugestão", "picker": { "placeholder": "Selecionar cliente...", "unknownClient": "Cliente desconhecido" }, "reasons": { "exactDomain": "Domínio exato", "fuzzyName": "Nome aproximado", "secondaryDomain": "Domínio secundário" }, "states": { "autoMatched": "Correspondido automaticamente", "imported": "Importado", "needsReview": "Requer revisão", "skipped": "Ignorado", "unmatched": "Sem correspondência" }, "title": "Prévia de mapeamento de tenant" }, "cippDialog": { "actions": { "cancel": "Cancelar", "connect": "Conectar", "connecting": "Conectando..." }, "description": "Insira o URL da sua instância CIPP e um token de API para permitir que o Alga descubra e sincronize dados do Entra.", "errors": { "missingFields": "URL base e token de API são obrigatórios.", "unknown": "Ocorreu um erro desconhecido." }, "fields": { "apiToken": "Token de API", "apiTokenPlaceholder": "Inserir token...", "baseUrl": "URL base do CIPP", "baseUrlPlaceholder": "https://cipp.seudominio.com" }, "title": "Conectar CIPP" }, "reconciliation": { "actions": { "refresh": "Atualizar", "resolveExisting": "Resolver para existente", "resolveNew": "Resolver para novo" }, "candidate": { "fallback": "candidato", "label": "Contatos candidatos: {{count}}" }, "contactPicker": { "label": "Contato existente", "placeholder": "Selecionar contato existente..." }, "errors": { "enterContactId": "Insira um ID de contato para resolver para um contato existente.", "loadQueue": "Falha ao carregar a fila de reconciliação.", "resolveFailed": "Falha ao resolver o item da fila." }, "empty": "Nenhuma correspondência ambígua aguardando revisão.", "loading": "Carregando fila…", "noEmailIdentity": "Sem identidade de e-mail", "queuedAt": "{{identity}} · enfileirado {{time}}", "scopedToMappedClient": "As opções de contato existente estão limitadas a este cliente mapeado.", "success": { "resolvedExisting": "Item da fila {{queueItemId}} resolvido para o contato existente {{contactNameId}}.", "resolvedNew": "Item da fila {{queueItemId}} resolvido criando o contato {{contactNameId}}." }, "title": "Fila de correspondências ambíguas" }, "syncHistory": { "actions": { "hideDetails": "Ocultar detalhes", "refresh": "Atualizar", "viewDetails": "Ver detalhes" }, "details": { "noResults": "Nenhum resultado de tenant registrado.", "stats": "criados {{created}}, vinculados {{linked}}, atualizados {{updated}}, ambíguos {{ambiguous}}, inativados {{inactivated}}", "tenantHeader": "Tenant {{tenant}} · {{status}}", "unknownTenant": "desconhecido" }, "empty": "Nenhuma execução de sincronização encontrada ainda.", "errors": { "loadDetailFailed": "Falha ao carregar o detalhe da execução.", "loadFailed": "Falha ao carregar o histórico de sincronização.", "loadRunFailed": "Falha ao carregar a execução {{runId}}." }, "loading": "Carregando histórico de sincronização…", "run": { "header": "{{runType}} · {{status}}", "inProgress": "Em andamento", "tenants": "Tenants: {{processed}}/{{total}} · Sucesso: {{success}} · Falharam: {{failed}}", "timing": "Iniciado {{started}} · Concluído {{completed}}" }, "title": "Execuções recentes de sincronização" } }, "google": { "settings": { "actions": { "refresh": "Atualizar", "resetProviders": "Redefinir provedores do Google", "resetting": "Redefinindo…", "save": "Salvar", "saving": "Salvando…" }, "afterSaveNotice": "Após salvar, vá até as integrações de E-mail recebido e Calendário e reautorize os provedores. Provedores Google existentes não são migrados.", "consoleLink": "Google Cloud Console", "description": "Configure credenciais do Google Cloud de propriedade do tenant para Gmail (entrada) e Google Calendar.", "errors": { "loadFailed": "Falha ao carregar as configurações do Google", "resetFailed": "Falha ao redefinir os provedores do Google", "saveFailed": "Falha ao salvar as configurações do Google" }, "fields": { "projectIdHelp": "Usado para provisionamento do Pub/Sub do Gmail (conta de serviço de propriedade do tenant).", "projectIdLabel": "ID do projeto Google Cloud", "projectIdPlaceholder": "my-project-id" }, "loading": "Carregando…", "oauth": { "calendarClientId": "Calendar OAuth Client ID", "calendarClientSecret": "Calendar OAuth Client Secret", "enterSecret": "Inserir client secret", "gmailClientId": "Gmail OAuth Client ID", "gmailClientSecret": "Gmail OAuth Client Secret", "sectionTitle": "Aplicativo OAuth", "shareApp": "Usar o mesmo aplicativo OAuth para Gmail e Calendar", "shareAppHelp": "Recomendado. Você ainda pode autorizar contas Google separadas por integração.", "storedSecret": "Secret armazenado: {{secret}}" }, "redirectUrisLabel": "Redirect URIs (copiar para o client OAuth do Google)", "scopes": "Escopos", "scopesCalendar": "Calendar: {{scopes}}", "scopesGmail": "Gmail: {{scopes}}", "serviceAccount": { "alreadyStored": "Uma chave de conta de serviço já está armazenada (não exibida).", "description": "Cole o JSON da chave da conta de serviço de propriedade do tenant usada para provisionar o Pub/Sub.", "title": "Conta de serviço do Pub/Sub (obrigatória para o Gmail)" }, "setupGuide": "Guia de configuração", "title": "Google", "toasts": { "resetDescription": "Todos os provedores do Google estão agora desconectados e requerem nova autorização.", "resetFailedTitle": "Falha ao redefinir", "resetTitle": "Provedores do Google redefinidos", "saveFailedTitle": "Não foi possível salvar as configurações do Google", "savedDescription": "A configuração do Google do tenant foi atualizada com sucesso.", "savedTitle": "Configurações do Google salvas", "unknownError": "Erro desconhecido" } } }, "hudu": { "clientTab": { "source": "Origem: Hudu", "openInHudu": "Abrir no Hudu", "refresh": "Atualizar", "loading": "Carregando dados do Hudu...", "notConnected": "O Hudu não está conectado. Um administrador pode conectá-lo em Configurações → Integrações.", "unmapped": "Este cliente ainda não está mapeado para uma empresa do Hudu. Mapeie-o em Configurações → Integrações → Hudu.", "unreachable": "Não foi possível acessar o Hudu. Tente novamente mais tarde.", "assetsTitle": "Ativos", "assetsEmpty": "Nenhum ativo do Hudu para esta empresa.", "articlesTitle": "Artigos", "articlesEmpty": "Nenhum artigo do Hudu para esta empresa.", "serial": "Número de série", "folder": "Pasta" }, "passwordsTab": { "source": "Origem: Hudu", "openInHudu": "Abrir no Hudu", "refresh": "Atualizar", "loading": "Carregando senhas do Hudu...", "notConnected": "O Hudu não está conectado. Um administrador pode conectá-lo em Configurações → Integrações.", "unmapped": "Este cliente ainda não está mapeado para uma empresa do Hudu. Mapeie-o em Configurações → Integrações → Hudu.", "unreachable": "Não foi possível acessar o Hudu. Tente novamente mais tarde.", "noPasswordAccess": "A chave de API do Hudu não tem acesso a senhas habilitado, portanto as senhas não podem ser listadas. Gere uma chave com acesso a senhas na administração do Hudu.", "title": "Senhas", "empty": "Nenhuma senha do Hudu para esta empresa.", "reveal": "Revelar", "hide": "Ocultar", "copy": "Copiar", "revealNoAccess": "A chave de API do Hudu não tem acesso a senhas habilitado.", "revealNotFound": "Esta senha não foi encontrada no Hudu.", "revealFailed": "Não foi possível revelar a senha. Tente novamente mais tarde." }, "assets": { "title": "Ativos", "description": "Mapeie ativos do Hudu para ativos do AlgaPSA, importe os sem correspondência e obtenha atualizações do Hudu.", "loading": "Carregando mapeamentos de ativos...", "empty": "Nenhum ativo do Hudu para esta empresa.", "selectAsset": "Selecionar ativo", "serial": "Número de série", "archivedLabel": "Arquivado", "excludedHint": "Não importado (layout excluído)", "buttons": { "importAll": "Importar todos sem correspondência", "importingAll": "Importando...", "sync": "Sincronizar do Hudu", "syncing": "Sincronizando...", "import": "Importar", "importing": "Importando...", "save": "Salvar mapeamentos", "saving": "Salvando...", "discard": "Descartar" }, "counters": { "mapped": "mapeados", "suggested": "sugeridos", "unmapped": "não mapeados", "total": "total" }, "table": { "huduAsset": "Ativo Hudu", "algaAsset": "Ativo AlgaPSA", "status": "Status", "actions": "Ações" }, "status": { "mapped": "Mapeado", "suggested": "Sugerido", "unmapped": "Não mapeado", "pending": "Pendente", "stale": "Desatualizado" }, "suggestion": { "label": "Sugerido", "source": { "serial": "Correspondência de número de série", "exactName": "Nome exato", "fuzzyName": "Nome aproximado" } }, "rowActions": { "unmap": "Remover mapeamento", "revert": "Reverter alteração", "dismiss": "Descartar sugestão" }, "pendingSummary": "Alterações não salvas: {{total}}", "sync": { "summary": "Sincronização concluída: {{updated}} atualizados · {{unchanged}} inalterados · {{stale}} desatualizados.", "rmmSkipped": "{{rmmSkipped}} geridos por RMM ignorados.", "lastSynced": "Última sincronização: {{timestamp}}" }, "import": { "summary": "Importação concluída: {{created}} criados · {{skipped}} ignorados · {{failed}} com falha." }, "success": { "saved": "Mapeamentos de ativos salvos: {{total}}", "imported": "\"{{name}}\" importado do Hudu." }, "errors": { "load": "Falha ao carregar os mapeamentos de ativos do Hudu.", "save": "Falha ao atualizar o mapeamento do ativo.", "import": "Falha ao importar o ativo do Hudu.", "importAll": "Falha na importação em massa.", "serialConflict": "O número de série já está em uso por \"{{name}}\".", "sync": "Falha ao sincronizar do Hudu.", "rateLimited": "Limite de requisições do Hudu atingido. Tente novamente mais tarde.", "unmapped": "Este cliente não está mapeado para uma empresa do Hudu.", "assetAlreadyMapped": "Esse ativo já está mapeado para outro ativo do Hudu. Limpe o mapeamento existente primeiro.", "huduAssetAlreadyMapped": "Este ativo do Hudu já está mapeado para um ativo. Limpe o mapeamento existente primeiro.", "mappingConflict": "Este mapeamento conflita com um mapeamento existente. Atualize e tente novamente.", "notFound": "Mapeamento não encontrado. Atualize e tente novamente." }, "toasts": { "errorTitle": "Erro de mapeamento de ativos do Hudu" } }, "documents": { "sectionTitle": "Documentação do Hudu", "loading": "Carregando artigos do Hudu...", "empty": "Nenhum artigo do Hudu", "unreachable": "Não foi possível acessar o Hudu. Tente novamente mais tarde." }, "documentsTab": { "title": "Artigos do Hudu", "source": "Origem: Hudu", "searchPlaceholder": "Pesquisar artigos do Hudu...", "loading": "Carregando artigos do Hudu...", "empty": "Nenhum artigo do Hudu encontrado.", "notConnected": "O Hudu não está conectado. Um administrador pode conectá-lo em Configurações → Integrações.", "unreachable": "Não foi possível acessar o Hudu. Tente novamente mais tarde.", "articleColumn": "Artigo", "clientColumn": "Cliente", "companyColumn": "Empresa Hudu", "updatedColumn": "Atualizado", "unmapped": "Não mapeado", "previous": "Anterior", "next": "Próxima", "pageLabel": "Página" }, "mapping": { "title": "Mapeamentos de empresas", "description": "Mapeie empresas do Hudu para clientes do AlgaPSA para exibir sua documentação.", "loading": "Carregando mapeamentos de empresas...", "companyId": "ID", "idInIntegration": "ID do PSA", "selectClient": "Selecionar cliente", "buttons": { "refresh": "Atualizar empresas", "refreshing": "Atualizando...", "save": "Salvar mapeamentos", "saving": "Salvando...", "discard": "Descartar" }, "counters": { "mapped": "mapeadas", "suggested": "sugeridas", "unmapped": "não mapeadas", "total": "total" }, "table": { "huduCompany": "Empresa Hudu", "algaClient": "Cliente AlgaPSA", "status": "Status" }, "status": { "mapped": "Mapeada", "suggested": "Sugerida", "unmapped": "Não mapeada", "pending": "Pendente" }, "suggestion": { "label": "Sugerida", "source": { "integrationId": "ID de integração PSA", "exactName": "Nome exato", "fuzzyName": "Nome aproximado" } }, "empty": { "title": "Nenhuma empresa do Hudu carregada ainda.", "hint": "Clique em \"Atualizar empresas\" para buscar as empresas do Hudu." }, "unmappedHint": "A documentação só é exibida para clientes mapeados. Mapeie cada empresa do Hudu para um cliente do AlgaPSA para habilitá-la.", "success": { "refreshed": "Empresas do Hudu atualizadas.", "saved": "Mapeamentos salvos: {{total}}" }, "errors": { "load": "Falha ao carregar os mapeamentos de empresas do Hudu.", "refresh": "Falha ao atualizar as empresas do Hudu.", "save": "Falha ao atualizar o mapeamento.", "clientAlreadyMapped": "Esse cliente já está mapeado para outra empresa do Hudu. Limpe o mapeamento existente primeiro.", "companyAlreadyMapped": "Esta empresa do Hudu já está mapeada para outro cliente. Limpe o mapeamento existente primeiro.", "mappingConflict": "Este mapeamento conflita com um mapeamento existente. Atualize e tente novamente.", "notFound": "Mapeamento não encontrado. Atualize e tente novamente." }, "toasts": { "errorTitle": "Erro de mapeamento do Hudu" }, "pendingSummary": "Alterações não salvas: {{total}}", "rowActions": { "unmap": "Remover mapeamento", "revert": "Reverter alteração", "dismiss": "Descartar sugestão" } }, "layoutMap": { "title": "Layouts de ativos", "description": "Escolha como qual tipo de ativo do AlgaPSA cada layout de ativo do Hudu é importado. Layouts não configurados são importados como Desconhecido.", "loading": "Carregando layouts de ativos...", "empty": "Nenhum layout de ativo encontrado no Hudu.", "suggested": "Sugerido", "table": { "huduLayout": "Layout Hudu", "algaAssetType": "Tipo de ativo do AlgaPSA" }, "types": { "workstation": "Estação de trabalho", "networkDevice": "Dispositivo de rede", "server": "Servidor", "mobileDevice": "Dispositivo móvel", "printer": "Impressora", "unknown": "Desconhecido" }, "excludeOption": "Não importar", "buttons": { "save": "Salvar mapeamento de layouts", "saving": "Salvando..." }, "success": { "saved": "Mapeamento de layouts de ativos salvo." }, "errors": { "load": "Falha ao carregar os layouts de ativos do Hudu.", "save": "Falha ao salvar o mapeamento de layouts de ativos." }, "createType": { "button": "Criar tipo a partir do layout", "creating": "Criando...", "success": "Tipo de ativo criado e atribuído a este layout.", "errors": { "create": "Falha ao criar um tipo de ativo a partir deste layout.", "slugConflict": "Já existe um tipo de ativo com este nome. Selecione-o na lista." } } }, "settings": { "title": "Hudu", "description": "Conecte sua instância Hudu para exibir a documentação e as credenciais dos clientes no AlgaPSA.", "loading": "Carregando o status de conexão do Hudu...", "detectedInstance": "Instância Hudu", "status": { "connected": "Conectado", "notConnected": "Não conectado", "error": "Erro" }, "passwordAccess": { "enabled": "Acesso a senhas habilitado", "disabled": "Acesso a senhas não habilitado para esta chave" }, "fields": { "baseUrl": { "label": "URL base", "placeholder": "https://sua-instancia.huducloud.com" }, "apiKey": { "label": "Chave de API", "placeholder": "Insira sua chave de API do Hudu", "keepExisting": "Deixe em branco para manter a chave de API atual", "writeOnlyHint": "A chave de API armazenada nunca é exibida. Deixe em branco para continuar a usá-la." } }, "buttons": { "test": "Testar conexão", "testing": "Testando...", "connect": "Conectar", "connecting": "Conectando...", "disconnect": "Desconectar", "disconnecting": "Desconectando..." }, "success": { "connected": "Conectado ao Hudu.", "testPassedWithPasswords": "Teste de conexão com o Hudu bem-sucedido. O acesso a senhas está habilitado para esta chave.", "testPassedNoPasswords": "Teste de conexão com o Hudu bem-sucedido. O acesso a senhas não está habilitado para esta chave.", "disconnected": "Conexão Hudu desconectada." }, "errors": { "loadStatus": "Falha ao carregar o status de conexão do Hudu.", "baseUrlRequired": "A URL base é obrigatória.", "baseUrlFormat": "Insira uma URL válida, ex. https://sua-instancia.huducloud.com", "invalidBaseUrl": "Nenhuma API do Hudu foi encontrada nesta URL base (404). Verifique a URL base.", "unreachable": "Não foi possível acessar o Hudu nesta URL base. Verifique a URL e sua rede.", "invalidKey": "O Hudu rejeitou a chave de API (401). Insira uma chave de API válida.", "testFailed": "Falha no teste de conexão com o Hudu.", "connectFailed": "Falha ao conectar ao Hudu.", "disconnectFailed": "Falha ao desconectar o Hudu." }, "toasts": { "errorTitle": "Erro de conexão do Hudu" } } }, "microsoft": { "settings": { "actions": { "entraLink": "Microsoft Entra", "newProfile": "Novo perfil", "openTeamsSetup": "Abrir configuração do Teams", "refresh": "Atualizar", "resetProviders": "Redefinir provedores Microsoft", "resetting": "Redefinindo…" }, "archiveDialog": { "archiving": "Arquivando…", "cancel": "Manter perfil", "confirm": "Arquivar perfil", "message": "Arquivar {{name}}? Referências históricas existentes permanecem intactas, mas o perfil não estará mais disponível para novas vinculações.", "title": "Arquivar perfil Microsoft?" }, "binding": { "bound": "Vinculado", "boundProfileLabel": "Perfil vinculado", "createFirst": "Crie primeiro um perfil", "needsAttention": "Requer atenção", "saving": "Salvando…", "selectProfile": "Selecionar um perfil", "unbound": "Não vinculado" }, "bindings": { "summaryBound": "{{consumer}} está vinculado a {{profile}}.", "summaryNone": "Nenhum perfil Microsoft está atualmente vinculado a {{consumer}}.", "summaryUnavailable": "{{consumer}} está vinculado a um perfil indisponível.", "warningArchived": "{{consumer}} ainda está vinculado a um perfil arquivado. Revincule-o a um perfil ativo.", "warningNoBinding": "Nenhuma vinculação de {{consumer}} está configurada ainda.", "warningNotReady": "{{consumer}} está vinculado a {{profile}}, mas esse perfil ainda precisa de configuração.", "warningProfileMissing": "{{consumer}} está vinculado a um perfil que não está mais disponível. Revincule-o a um perfil ativo." }, "bindingsAlertCe": "Vinculações explícitas são a fonte da verdade para a seleção de perfil MSP SSO. Configure os domínios de login separadamente após escolher o perfil vinculado.", "bindingsAlertEe": "Vinculações explícitas são a fonte da verdade para a seleção de perfis MSP SSO, e-mail, calendário e Teams.", "consumerBindings": { "descriptionCe": "Vincule um perfil Microsoft ao MSP SSO para login e uso de domínio de login.", "descriptionEe": "Vincule um perfil Microsoft por consumidor compatível. Reatribuir um consumidor não altera os demais.", "title": "Vinculações explícitas de consumidor" }, "consumers": { "calendar": { "description": "Escolha qual perfil Microsoft a sincronização do calendário do Outlook deve usar.", "label": "Calendário", "reconnect": "Conexões existentes do calendário Microsoft podem precisar de nova autorização após a alteração do perfil vinculado." }, "email": { "description": "Escolha qual perfil Microsoft o e-mail recebido do Outlook deve usar.", "label": "E-mail", "reconnect": "Conexões existentes de e-mail do Outlook podem precisar de nova autorização após a alteração do perfil vinculado." }, "mspSso": { "description": "Escolha qual perfil Microsoft sustenta os domínios de login MSP SSO, o login da Microsoft e a descoberta de tenant.", "label": "MSP SSO" }, "teams": { "description": "Escolha qual perfil Microsoft a instalação do Microsoft Teams e os fluxos de autenticação devem usar.", "label": "Teams" } }, "descriptionCe": "Gerencie perfis Microsoft de propriedade do tenant para MSP SSO, login da Microsoft e descoberta de domínios de login.", "descriptionEe": "Gerencie perfis Microsoft de propriedade do tenant para MSP SSO, e-mail do Outlook, sincronização de calendário e Microsoft Teams.", "dialog": { "cancel": "Cancelar", "clientId": "Client ID", "clientSecret": "Client secret", "clientSecretPlaceholder": "Inserir client secret", "clientSecretPlaceholderEdit": "Deixe em branco para manter o secret atual", "createProfile": "Criar perfil", "createTitle": "Criar perfil Microsoft", "descriptionCreate": "Crie um perfil Microsoft de propriedade do tenant e, em seguida, vincule-o explicitamente aos consumidores Microsoft que você deseja usar.", "descriptionEdit": "Atualize o perfil Microsoft selecionado. Deixe o secret em branco para manter o valor existente.", "displayName": "Nome de exibição", "displayNamePlaceholder": "Tenant de produção da Acme", "editTitle": "Editar perfil Microsoft", "saveChanges": "Salvar alterações", "saving": "Salvando…", "setDefault": "Definir este perfil como perfil Microsoft padrão", "setDefaultHelp": "Perfis padrão permanecem disponíveis para fluxos de gerenciamento de perfil e metadados seguros para migração, não para roteamento de consumidores.", "storedSecretHint": "Secret armazenado: {{secret}}. Deixe este campo vazio para mantê-lo inalterado.", "tenantId": "Tenant ID" }, "empty": { "createButton": "Criar perfil Microsoft", "descriptionCe": "Crie primeiro um perfil nomeado e, em seguida, vincule-o explicitamente aos fluxos de MSP SSO e login por domínio.", "descriptionEe": "Crie primeiro um perfil nomeado e, em seguida, vincule-o explicitamente a MSP SSO, e-mail do Outlook, sincronização de calendário e Teams.", "title": "Ainda não há perfis Microsoft" }, "errors": { "archive": "Falha ao arquivar o perfil Microsoft", "loadBindings": "Falha ao carregar as vinculações Microsoft", "loadStatus": "Falha ao carregar as configurações Microsoft", "resetProviders": "Falha ao redefinir os provedores Microsoft", "saveProfile": "Falha ao salvar o perfil Microsoft", "setDefault": "Falha ao definir o perfil Microsoft padrão", "updateBinding": "Falha ao atualizar a vinculação Microsoft" }, "guidance": { "applicationIdUri": "Application ID URI", "calendarRedirect": "Redirect URI de sincronização do calendário", "calendarTitle": "Guia do calendário", "clientId": "Client ID", "currentProfileTitle": "Valores do perfil atual", "emailRedirect": "Redirect URI de e-mail recebido", "emailTitle": "Guia de e-mail", "mspSsoTitle": "Guia do MSP SSO", "notConfigured": "Não configurado", "redirectUri": "Redirect URI", "requiresBaseUrl": "Requer URL base e Client ID", "scopes": "Escopos", "teamsBotRedirect": "Redirect URI de bot pessoal", "teamsMessageRedirect": "Redirect URI de message extension", "teamsScopes": "Escopos do Teams", "teamsTabRedirect": "Redirect URI de aba pessoal", "teamsTitle": "Guia do Teams", "tenantId": "Tenant ID", "unavailable": "Indisponível" }, "profileCard": { "activeBindings": "Vinculações ativas", "archive": "Arquivar", "clientId": "Client ID", "defaultBadge": "Padrão", "edit": "Editar", "guidanceSummary": "Guia de registro de aplicativo Microsoft", "noVisibleBindings": "Nenhuma vinculação de consumidor visível", "readinessTitle": "Prontidão do perfil", "readyCe": "Este perfil está pronto para a vinculação MSP SSO e os fluxos de login por domínio.", "readyEe": "Este perfil está pronto para as vinculações MSP SSO, e-mail do Outlook e calendário.", "readyEeTeams": "Este perfil está pronto para as vinculações MSP SSO, e-mail do Outlook, sincronização de calendário e Teams.", "setDefault": "Definir como padrão", "storedSecret": "Secret armazenado", "teamsAppIdUri": "Application ID URI do Teams", "tenantIdLabel": "Tenant ID:", "updating": "Atualizando…" }, "providerReconnect": { "description": "Use isto se você rotacionar credenciais ou intencionalmente revincular o e-mail do Outlook ou o calendário a um perfil Microsoft diferente.", "title": "Reconexão do provedor" }, "readiness": { "archived": "Perfis arquivados não podem ser usados para novas vinculações Microsoft.", "clientIdMissing": "Client ID ausente.", "clientSecretMissing": "O client secret não foi configurado.", "tenantIdMissing": "Tenant ID ausente." }, "statusBadges": { "archived": "Arquivado", "needsAttention": "Requer atenção", "ready": "Pronto" }, "title": "Microsoft", "toasts": { "archiveFailedTitle": "Não foi possível arquivar o perfil Microsoft", "archivedDescription": "{{name}} foi arquivado com sucesso.", "archivedTitle": "Perfil Microsoft arquivado", "bindingFailedTitle": "Não foi possível atualizar a vinculação de {{consumer}}", "bindingUpdatedDescription": "{{consumer}} agora usa {{profile}}.", "bindingUpdatedTitle": "Vinculação de {{consumer}} atualizada", "defaultUpdatedDescription": "{{name}} agora é o registro padrão do perfil Microsoft.", "defaultUpdatedTitle": "Perfil Microsoft padrão atualizado", "profileCreated": "Perfil Microsoft criado", "profileCreatedDescription": "O perfil Microsoft está pronto para ser vinculado a consumidores Microsoft visíveis.", "profileUpdated": "Perfil Microsoft atualizado", "profileUpdatedDescription": "As alterações do perfil Microsoft foram salvas com sucesso.", "resetDescription": "As conexões existentes de e-mail do Outlook e calendário agora requerem nova autorização.", "resetFailedTitle": "Falha ao redefinir", "resetTitle": "Provedores Microsoft redefinidos", "saveFailedTitle": "Não foi possível salvar o perfil Microsoft", "selectedProfile": "o perfil selecionado", "setDefaultFailedTitle": "Não foi possível definir o perfil padrão" }, "validation": { "clientIdRequired": "O Microsoft OAuth Client ID é obrigatório", "clientSecretRequired": "O Microsoft OAuth Client Secret é obrigatório", "displayNameRequired": "O nome de exibição do perfil Microsoft é obrigatório", "tenantIdRequired": "O Microsoft Tenant ID é obrigatório" } } }, "qbo": { "live": { "defaultCompany": "Empresa QuickBooks conectada" }, "settings": { "actions": { "connect": "Conectar QuickBooks", "disconnect": "Desconectar QuickBooks", "disconnecting": "Desconectando…", "reconnect": "Reconectar QuickBooks", "refresh": "Atualizar", "saveCredentials": "Salvar credenciais QuickBooks", "saving": "Salvando…" }, "badges": { "connectionExpired": "Conexão requer atenção", "credentialsReady": "Credenciais prontas", "credentialsRequired": "Credenciais obrigatórias", "defaultConnected": "Empresa conectada", "noCompany": "Nenhuma empresa conectada" }, "callback": { "accessDenied": "O acesso ao QuickBooks foi negado antes da conclusão da conexão.", "configMissing": "Não foi possível iniciar o QuickBooks OAuth porque o client ID e o client secret não estavam totalmente configurados.", "generic": "O QuickBooks retornou um erro OAuth: {{code}}", "invalidState": "O estado OAuth do QuickBooks era inválido ou expirou. Inicie o fluxo de conexão novamente.", "missingParams": "Parâmetros obrigatórios estavam ausentes no callback do QuickBooks. Inicie o fluxo de conexão novamente.", "oauthFailed": "O callback OAuth do QuickBooks falhou. Tente se conectar novamente. Se o problema persistir, revise seu redirect URI e escopos.", "tokenExchangeFailed": "O Intuit não retornou os tokens esperados. Tente se conectar novamente." }, "clientIdLabel": "QuickBooks Client ID", "clientIdPlaceholder": "Cole o client ID do seu aplicativo Intuit", "clientSecretLabel": "QuickBooks Client Secret", "clientSecretPlaceholder": "Cole o client secret do seu aplicativo Intuit", "connectSuccess": "QuickBooks conectado com sucesso. A empresa conectada agora é o contexto padrão do QuickBooks ao vivo.", "connection": { "defaultCompany": "Empresa conectada", "description": "Inicie o OAuth somente após configurar as credenciais do aplicativo QuickBooks. Desconectar remove os tokens de acesso QuickBooks armazenados, mas mantém as credenciais do aplicativo de propriedade do tenant.", "notConnected": "Nenhuma empresa QuickBooks está conectada ainda. Salve as credenciais e clique em Conectar QuickBooks.", "realmId": "Realm ID: {{id}}", "title": "Conexão QuickBooks ao vivo", "unknown": "desconhecido" }, "credentialsSaved": "Credenciais QuickBooks salvas. Agora você pode iniciar o fluxo OAuth do QuickBooks.", "csvAvailableMiddle": "nesta mesma seção Contabilidade e gerencie exportações em", "csvAvailablePrefix": "Se você prefere um fluxo manual, continue usando", "csvAvailableTitle": "QuickBooks CSV permanece disponível", "description": "Configure credenciais OAuth QuickBooks, conecte sua empresa QuickBooks e mantenha o QuickBooks ao vivo ao lado do fluxo manual QuickBooks CSV.", "disconnectSuccess": "A conexão QuickBooks armazenada foi removida. As credenciais do aplicativo QuickBooks de propriedade do tenant foram preservadas.", "environment": "Ambiente Intuit", "environmentProduction": "Produção", "environmentSandbox": "Sandbox", "errors": { "disconnect": "Falha ao desconectar o QuickBooks.", "load": "Falha ao carregar as configurações do QuickBooks.", "saveCredentials": "Falha ao salvar as credenciais do QuickBooks." }, "howItWorksDescription": "Salve aqui as credenciais do aplicativo QuickBooks, conclua o fluxo OAuth do Intuit, e o Alga PSA usará a empresa QuickBooks conectada como contexto padrão ao vivo para exportações e mapeamentos.", "howItWorksTitle": "Como o QuickBooks ao vivo funciona nesta versão", "loading": "Carregando configurações do QuickBooks…", "mapping": { "alert": "Itens, códigos fiscais e condições do QuickBooks são carregados da empresa conectada para que exportações ao vivo possam continuar usando a primeira conexão QuickBooks armazenada na v1.", "descriptionPrefix": "Configure os mapeamentos QuickBooks ao vivo para a empresa conectada. Estes mapeamentos estão limitados a", "placeholderAlert": "O gerenciador de mapeamentos fica disponível após a primeira empresa QuickBooks ser conectada e definida como contexto padrão do QuickBooks ao vivo.", "placeholderDescription": "Conecte uma empresa QuickBooks antes de configurar os mapeamentos de itens e impostos do QuickBooks ao vivo.", "title": "Mapeamento e configuração do QuickBooks ao vivo" }, "noClientId": "Nenhum client ID está armazenado para este tenant ainda.", "noClientSecret": "Nenhum client secret está armazenado para este tenant ainda.", "quickbooksCsv": "QuickBooks CSV", "redirectUri": "Redirect URI", "requiredScopes": "Escopos obrigatórios", "storedClientId": "Client ID armazenado: {{value}}", "storedClientSecret": "Client secret armazenado: {{value}}", "tenantOauthDescription": "Cole as credenciais do aplicativo Intuit registradas para este tenant ou deixe em branco para usar o aplicativo QuickBooks no nível do aplicativo, se configurado. Valores de secret nunca são retornados ao navegador após serem salvos.", "tenantOauthTitle": "Aplicativo OAuth de propriedade do tenant", "title": "QuickBooks Online" }, "sync": { "healthCardTitle": "Estado da sincronização", "healthCardDescription": "Estado e controlos da sincronização contabilística do QuickBooks. Executada a cada 15 minutos.", "lastCycleTitle": "Último ciclo de sincronização", "lastCycleStatus": "Estado", "lastCycleFinishedAt": "Concluído", "lastCycleStats": "Resultados", "statOpsProcessed": "{{count}} operações processadas", "statDriftFound": "{{count}} divergências", "statPaymentsApplied": "{{count}} pagamentos aplicados", "noLastCycle": "Ainda não foi executado nenhum ciclo de sincronização.", "nextRunHint": "Executada automaticamente a cada 15 minutos quando a sincronização automática está ativada.", "pendingOps": "Operações pendentes", "erroredOps": "Operações com erro", "driftCount": "Divergências", "openExceptions": "Exceções abertas", "refreshTokenExpiry": "O token do QuickBooks expira em {{date}}", "refreshTokenExpired": "Token do QuickBooks expirado — volte a ligar para retomar a sincronização.", "autoSyncLabel": "Sincronização automática ativada", "syncNowButton": "Sincronizar agora", "syncNowRunning": "A sincronizar…", "syncNowSuccess": "Sincronização concluída com êxito.", "syncNowSkipped": "Sincronização ignorada: {{reason}}", "syncNowError": "Falha na sincronização: {{error}}", "viewExceptionsLink": "Ver exceções", "autoApplyCreditsWarning": "QuickBooks is set to automatically apply credits, which conflicts with credit applications driven from Alga: QuickBooks may apply exported credit memos to a different invoice before the sync does. In QuickBooks, go to Account and Settings → Advanced → Automation and turn off \"Automatically apply credits\".", "configTitle": "Sync Configuration", "connectedCompanies": "Connected Companies", "defaultClass": "Default Class", "defaultDepartment": "Default Department", "defaultRealm": "Default", "depositAccount": "Deposit Account", "makeDefault": "Make default", "noDefault": "No default", "saving": "Saving…", "undepositedFunds": "Undeposited Funds (default)" } }, "rmm": { "ninjaOne": { "loading": "Carregando configurações de integração NinjaOne...", "card": { "title": "Integração NinjaOne RMM", "description": "Conecte sua conta NinjaOne para sincronizar dispositivos, receber alertas e habilitar recursos de acesso remoto.", "skeletonDescription": "Carregando integração NinjaOne..." }, "status": { "checking": "Verificando conexão NinjaOne...", "notConnected": { "title": "Não conectado ao NinjaOne", "description": "Conecte sua conta NinjaOne para sincronizar dispositivos, receber alertas e habilitar acesso remoto." }, "connected": "Conectado ao NinjaOne", "connectedWithErrors": "NinjaOne conectado com erros de sincronização", "instanceLabel": "Instância:", "organizations": "{{count}} organizações", "devices": "{{count}} dispositivos", "activeAlerts": "{{count}} alertas ativos", "lastSynced": "Última sincronização: {{time}}" }, "setup": { "title": "Instruções de configuração", "steps": { "login": "Faça login no painel do NinjaOne", "navigate": "Navegue até Administration → Apps → API", "addClient": "Clique em \"+ Add client app\" para criar uma nova aplicação de API", "platform": "Defina Application Platform como \"Web (PHP, Java, .Net Core, etc.)\"", "name": "Insira um Name (ex. \"Alga PSA\")", "redirectUri": "Adicione o redirect URI:", "scopes": "Em \"Scopes\", marque \"Monitoring\" e \"Management\"", "grantTypes": "Em \"Allowed grant types\", marque \"Authorization code\", \"Client credentials\" e \"Refresh token\"", "addAndCopy": "Clique em \"Add\" e copie o Client ID e o Client Secret abaixo" }, "docsPrefix": "Para instruções detalhadas de configuração, consulte", "docsSection": "Seção 10.15", "docsSuffix": "na documentação.", "openApiSettings": "Abrir configurações da API do NinjaOne" }, "credentials": { "title": "Credenciais da API", "saved": "Credenciais salvas", "clientIdLabel": "Client ID", "clientIdPlaceholder": "Insira seu Client ID do NinjaOne", "clientSecretLabel": "Client Secret", "clientSecretPlaceholder": "Insira seu Client Secret do NinjaOne", "clientSecretUpdatePlaceholder": "Insira um novo secret para atualizar", "secretMaskedLabel": "Secret", "saving": "Salvando...", "save": "Salvar credenciais" }, "region": { "hint": "Selecione sua região NinjaOne e, em seguida, clique em ‘Conectar ao NinjaOne’ para autorizar o acesso.", "label": "Região:" }, "actions": { "refreshing": "Atualizando...", "refreshStatus": "Atualizar status", "syncing": "Sincronizando...", "syncOrganizations": "Sincronizar organizações", "syncingDevices": "Sincronizando dispositivos...", "syncDevices": "Sincronizar dispositivos", "disconnecting": "Desconectando...", "disconnect": "Desconectar", "connect": "Conectar ao NinjaOne" }, "disconnectModal": { "title": "Desconectar NinjaOne", "description": "Tem certeza de que deseja desconectar o NinjaOne? Isso interromperá a sincronização de dispositivos e as notificações de alerta, e removerá suas credenciais de API armazenadas. Os mapeamentos de organização serão preservados.", "cancel": "Cancelar", "confirm": "Desconectar" }, "toasts": { "connectSuccess": "Conectado com sucesso ao NinjaOne.", "connectFailed": "Falha na conexão com o NinjaOne.", "connectFailedWithDetail": "Falha na conexão com o NinjaOne: {{detail}}", "disconnectSuccess": "Conexão NinjaOne desconectada com sucesso.", "credentialsSaved": "Credenciais de API do NinjaOne salvas com sucesso.", "orgSyncSuccess": "Sincronização de organizações concluída. Processadas: {{processed}}, Criadas: {{created}}, Atualizadas: {{updated}}", "deviceSyncSuccess": "Sincronização de dispositivos concluída. Processados: {{processed}}, Criados: {{created}}, Atualizados: {{updated}}" }, "errors": { "loadStatus": "Falha ao carregar o status de conexão do NinjaOne.", "saveCredentials": "Falha ao salvar as credenciais.", "connect": "Falha ao iniciar a conexão com o NinjaOne.", "disconnect": "Falha ao desconectar o NinjaOne.", "disconnectUnexpected": "Ocorreu um erro inesperado ao desconectar.", "orgSyncFailed": "Falha na sincronização de organizações.", "deviceSyncFailed": "Falha na sincronização de dispositivos." }, "compliance": { "actions": { "retry": "Tentar novamente", "syncing": "Sincronizando...", "syncPatches": "Sincronizar patches", "syncSoftware": "Sincronizar software" }, "description": "Visão geral da integridade dos dispositivos gerenciados por RMM", "loading": "Carregando dados de conformidade...", "metrics": { "devicesOffline": "Dispositivos offline", "devicesOnline": "Dispositivos online", "devicesWithAlerts": "Dispositivos com alertas", "patchesFailed": "Patches com falha", "patchesPending": "Patches pendentes" }, "noData": "Nenhum dado de conformidade disponível", "summaryError": "Falha ao carregar o resumo de conformidade", "title": "Conformidade da frota" } }, "setup": { "activeConfiguration": "Configuração ativa", "comingSoon": "Integração RMM em breve", "configure": "Configurar integração", "selected": "{{title}} selecionado", "title": "Integrações RMM", "backToList": "Todas as integrações RMM", "loadingProvider": "Carregando configurações da integração {{title}}...", "status": { "connected": "Conectado", "connectedOneDevice": "Conectado · 1 dispositivo", "connectedWithDevices": "Conectado · {{count}} dispositivos", "notConnected": "Não conectado", "syncError": "Erro de sincronização" } }, "tactical": { "actions": { "disconnect": "Desconectar", "disconnecting": "Desconectando...", "ingestSoftware": "Ingerir software", "ingesting": "Ingerindo...", "refresh": "Atualizar", "save": "Salvar", "saving": "Salvando...", "syncAlerts": "Sincronizar alertas", "syncClients": "Sincronizar clientes", "syncDevices": "Sincronizar dispositivos", "syncing": "Sincronizando...", "testConnection": "Testar conexão", "testing": "Testando..." }, "auth": { "apiKey": "Chave de API", "enterApiKey": "Inserir chave de API", "enterPassword": "Inserir senha", "enterUsername": "Inserir nome de usuário", "knox": "Knox", "knoxOption": "Nome de usuário/senha (token Knox)", "knoxTokenSaved": "Token Knox salvo: {{value}}", "mode": "Autenticação", "password": "Senha", "saved": "Salvo: {{value}}", "savedEnterToUpdate": "Salvo (inserir para atualizar)", "totp": "Código TOTP", "username": "Nome de usuário" }, "autoSync": "Sincronização automática", "client": { "loading": "Carregando clientes…", "select": "Selecionar cliente" }, "counts": { "activeAlerts": "Alertas ativos", "lastSync": "Última sincronização", "mappedOrgs": "Organizações mapeadas", "never": "Nunca", "syncedDevices": "Dispositivos sincronizados" }, "description": "Conecte o Tactical RMM para sincronizar ativos e ingerir alertas.", "errors": { "backfillAlerts": "Falha no backfill de alertas", "connectionTest": "Falha no teste de conexão", "disconnect": "Falha ao desconectar", "ingestSoftware": "Falha na ingestão de software", "loadOrgMappings": "Falha ao carregar os mapeamentos de organização", "loadSettings": "Falha ao carregar as configurações do Tactical RMM", "saveConfig": "Falha ao salvar a configuração do Tactical RMM", "someAlertsFailed": "Alguns alertas não puderam ser atualizados: {{errors}}", "someDevicesFailed": "Alguns dispositivos não puderam ser sincronizados: {{errors}}", "someOrgsFailed": "Algumas organizações não puderam ser sincronizadas: {{errors}}", "someSoftwareFailed": "Algumas linhas de software não puderam ser ingeridas: {{errors}}", "syncDevices": "Falha na sincronização de dispositivos", "syncOrgs": "Falha na sincronização de organizações", "totpRequired": "TOTP é obrigatório. Insira seu código atual e teste novamente.", "updateMapping": "Falha ao atualizar o mapeamento" }, "fields": { "instanceUrl": "URL da instância", "instanceUrlHelp": "Use o host da API do Tactical — o subdomínio api., por ex. https://api.example.com. Não a URL do painel (rmm.) e sem /api no final.", "betaApiNote": "Requer que a API Beta do Tactical esteja ativada no servidor: defina BETA_API_ENABLED = True no Tactical e reinicie-o. Sem a API Beta, o teste de conexão e a sincronização falharão." }, "lastError": "Último erro: {{error}}", "loadingSettings": "Carregando configurações do Tactical RMM...", "sections": { "alerts": "Alertas", "alertsDescription": "Opcional: realizar backfill de alertas históricos ou ativos do Tactical para o Alga.", "devices": "Dispositivos", "devicesDescription": "Sincronize agentes do Tactical como ativos do Alga para organizações mapeadas.", "orgMapping": "Mapeamento de organizações", "orgMappingDescription": "Atribua cada cliente do Tactical a um cliente do Alga e controle a sincronização automática por organização.", "orgMappingEmpty": "Nenhuma organização encontrada. Execute primeiro \"Sincronizar clientes\".", "organizations": "Organizações", "organizationsDescription": "Sincronize clientes do Tactical para mapeamentos de organização do Alga e, em seguida, atribua-os a clientes do Alga.", "softwareInventory": "Inventário de software", "softwareInventoryDescription": "Opcional: ingerir inventário de software em cache via Tactical /api/software/ (sem chamadas de atualização por agente).", "webhooks": "Webhooks (alertas)", "webhooksDescription": "Configure um webhook de ação de alerta do Tactical usando o cabeçalho de secret compartilhado abaixo." }, "status": { "authPrefix": "Autenticação:", "connected": "Conectado", "disconnected": "Desconectado", "instanceUrlNotSet": "URL da instância não definida" }, "statusLine": { "configured": "Status: Configurado", "notConfigured": "Status: Não configurado" }, "success": { "alertBackfillCompleted": "Backfill de alertas concluído. Processados: {{processed}}, Criados: {{created}}, Atualizados: {{updated}}, Falharam: {{failed}}", "connection": "Conexão bem-sucedida.", "deviceSyncCompleted": "Sincronização de dispositivos concluída. Processados: {{processed}}, Criados: {{created}}, Atualizados: {{updated}}, Excluídos: {{deleted}}, Falharam: {{failed}}", "disconnected": "Desconectado.", "orgSyncCompleted": "Sincronização de organizações concluída. Processadas: {{processed}}, Criadas: {{created}}, Atualizadas: {{updated}}, Falharam: {{failed}}", "saved": "Configuração do Tactical RMM salva.", "softwareIngestionCompleted": "Ingestão de software concluída. Processadas: {{processed}}, Instaladas/Atualizadas: {{created}}, Ativos atualizados: {{updated}}, Falharam: {{failed}}" }, "tacticalIdLabel": "ID do Tactical: {{id}}", "title": "Tactical RMM", "toasts": { "alertsSyncedDescription": "Os alertas do Tactical foram preenchidos.", "alertsSyncedTitle": "Alertas sincronizados", "backfillFailedTitle": "Falha no backfill", "connectedDescription": "Conexão do Tactical RMM verificada.", "connectedTitle": "Conectado", "connectionFailedTitle": "Falha na conexão", "devicesSyncedDescription": "Os agentes do Tactical foram sincronizados como ativos.", "devicesSyncedTitle": "Dispositivos sincronizados", "disconnectFailedTitle": "Falha ao desconectar", "disconnectedDescription": "Credenciais do Tactical RMM limpas.", "disconnectedTitle": "Desconectado", "ingestionFailedTitle": "Falha na ingestão", "orgsSyncedDescription": "Os clientes do Tactical foram sincronizados em mapeamentos de organização.", "orgsSyncedTitle": "Organizações sincronizadas", "saveFailedTitle": "Falha ao salvar", "savedDescription": "Configuração do Tactical RMM atualizada.", "savedTitle": "Salvo", "softwareIngestedDescription": "Inventário de software do Tactical em cache foi ingerido.", "softwareIngestedTitle": "Software ingerido", "syncFailedTitle": "Falha na sincronização", "unknownError": "Erro desconhecido", "updateFailedTitle": "Falha na atualização" }, "webhook": { "copiedTitle": "Copiado", "copy": "Copiar", "headerName": "Nome do cabeçalho", "payloadTemplate": "Modelo de payload", "secret": "Secret do cabeçalho", "secretCopied": "Secret do webhook copiado para a área de transferência.", "unavailable": "Informações do webhook indisponíveis. (Requer permissão de leitura das configurações.)", "url": "URL do webhook", "urlCopied": "URL do webhook copiada para a área de transferência." } }, "tanium": { "loading": "Carregando configurações da integração Tanium...", "actions": { "discoverScopes": "Descobrir escopos", "disconnect": "Desconectar", "runInventorySync": "Executar sincronização de inventário", "saveConfiguration": "Salvar configuração", "testConnection": "Testar conexão" }, "connection": { "connectedAt": "Conectado em: {{time}}", "description": "Configure as credenciais do Tanium Gateway e verifique o acesso com escopo de tenant.", "never": "Nunca", "syncLabel": "Sincronização: {{status}}", "syncLabelWithError": "Sincronização: {{status}} ({{error}})", "title": "Conexão Tanium" }, "errors": { "loadMappings": "Falha ao carregar os mapeamentos Tanium.", "loadSettings": "Falha ao carregar as configurações do Tanium.", "loadState": "Falha ao carregar o estado de integração do Tanium.", "saveConfiguration": "Falha ao salvar a configuração do Tanium.", "testConnectionFailed": "Falha no teste de conexão do Tanium.", "disconnectFailed": "Falha ao desconectar a integração Tanium.", "scopeDiscoveryFailed": "Falha na descoberta de escopos.", "inventorySyncFailed": "Falha na sincronização de inventário.", "updateMappingFailed": "Falha ao atualizar o mapeamento." }, "fields": { "apiToken": "Token de API {{state}}", "apiTokenPlaceholderExisting": "Deixe em branco para manter o token existente", "apiTokenPlaceholderNew": "Cole o token de API Tanium", "apiTokenStateRequired": "(obrigatório)", "apiTokenStateSaved": "(salvo)", "assetApiUrl": "URL da Asset API (opcional)", "assetApiUrlPlaceholder": "https://example.cloud.tanium.com/plugin/products/asset", "assetFallbackLabel": "Habilitar fallback da Asset API para cobertura de endpoints expirados", "gatewayUrl": "URL do Gateway", "gatewayUrlPlaceholder": "https://example.cloud.tanium.com" }, "mappings": { "autoSync": "Sincronização automática", "autoSyncDisabled": "Desabilitada", "autoSyncEnabled": "Habilitada", "externalScope": "Escopo externo", "loading": "Carregando mapeamentos...", "mappedClient": "Cliente mapeado", "noScopes": "Nenhum escopo Tanium descoberto ainda.", "scopeIdLabel": "ID: {{id}}", "unmapped": "Não mapeado" }, "status": { "connected": "Conectado", "disconnected": "Desconectado", "label": "Status: " }, "success": { "configurationSaved": "Configuração do Tanium salva.", "connectionTestSucceeded": "Teste de conexão Tanium bem-sucedido.", "disconnected": "Integração Tanium desconectada.", "inventorySyncCompleted": "Sincronização de inventário concluída. Processados: {{processed}}, Criados: {{created}}, Atualizados: {{updated}}", "scopeDiscoveryCompleted": "Descoberta de escopos concluída. Processados: {{processed}}, Criados: {{created}}, Atualizados: {{updated}}" }, "sync": { "description": "Descubra escopos a partir de grupos de computadores do Tanium, mapeie-os para clientes e execute a sincronização de inventário.", "title": "Sincronização Tanium" } }, "levelio": { "actions": { "backfillAlerts": "Backfill de alertas", "disconnect": "Desconectar", "discoverGroups": "Descobrir grupos", "runDeviceSync": "Executar sincronização de dispositivos", "saveConfiguration": "Salvar configuração", "testConnection": "Testar conexão" }, "connection": { "connectedAt": "Conectado: {{time}}", "description": "Conecte-se ao Level (level.io) com uma chave de API. As chaves são criadas no Level em Settings > API.", "never": "nunca", "syncLabel": "Sincronização: {{status}}", "syncLabelWithError": "Sincronização: {{status}} ({{error}})", "title": "Conexão Level" }, "errors": { "alertBackfillFailed": "Falha no backfill de alertas", "deviceSyncFailed": "Falha na sincronização de dispositivos", "disconnectFailed": "Falha ao desconectar a integração Level", "groupSyncFailed": "Falha na descoberta de grupos", "loadMappings": "Falha ao carregar os mapeamentos de grupos do Level", "loadSettings": "Falha ao carregar as configurações do Level", "loadState": "Falha ao carregar o estado da integração Level", "loadSummary": "Falha ao carregar o resumo da conexão Level", "loadWebhook": "Falha ao carregar os detalhes do webhook do Level", "saveConfiguration": "Falha ao salvar a configuração do Level", "testConnectionFailed": "Falha no teste de conexão", "updateMappingFailed": "Falha ao atualizar o mapeamento" }, "fields": { "apiKey": "Chave de API ({{state}})", "apiKeyPlaceholderExisting": "Insira uma nova chave para substituir a salva", "apiKeyPlaceholderNew": "Cole sua chave de API do Level", "apiKeyStateRequired": "obrigatória", "apiKeyStateSaved": "salva" }, "mappings": { "autoSync": "Sincronização automática", "autoSyncDisabled": "Desativada", "autoSyncEnabled": "Ativada", "group": "Grupo Level", "groupIdLabel": "ID: {{id}}", "loading": "Carregando…", "mappedClient": "Cliente mapeado", "noGroups": "Ainda não há grupos descobertos. Execute Descobrir grupos primeiro.", "unmapped": "Não mapeado" }, "status": { "connected": "Conectado", "disconnected": "Não conectado", "label": "Status: " }, "success": { "alertBackfillCompleted": "Backfill de alertas concluído: {{processed}} alertas processados", "configurationSaved": "Configuração do Level salva", "connectionTestSucceeded": "Conexão com o Level bem-sucedida", "deviceSyncCompleted": "Sincronização de dispositivos concluída: {{processed}} processados, {{created}} criados, {{updated}} atualizados", "disconnected": "Integração Level desconectada", "groupSyncCompleted": "Descoberta de grupos concluída: {{processed}} processados, {{created}} criados, {{updated}} atualizados" }, "sync": { "description": "Descubra grupos do Level, mapeie-os para clientes e sincronize dispositivos. Dispositivos em grupos não mapeados são ignorados; subgrupos herdam o ancestral mapeado mais próximo.", "summary": "{{mappedGroups}} grupos mapeados · {{devices}} dispositivos · {{activeAlerts}} alertas ativos", "title": "Sincronização e mapeamentos de grupos" }, "webhook": { "copied": "Copiado", "copy": "Copiar", "description": "O Level não pode registrar webhooks pela API. No Level, crie uma automação com uma ação HTTP POST usando o URL, o cabeçalho e o payload abaixo para enviar alertas ao Alga em tempo real.", "header": "Cabeçalho: {{name}}", "hideSecret": "Ocultar segredo", "loading": "Os detalhes do webhook são carregados depois que a integração for configurada.", "payload": "Modelo de payload", "showSecret": "Mostrar segredo", "title": "Webhook de alertas", "url": "URL do webhook" } } }, "sso": { "msp": { "actions": { "add": "Adicionar", "refresh": "Atualizar", "request": "Solicitar", "resetChallenge": "Redefinir desafio", "revoke": "Revogar", "saveDomains": "Salvar domínios", "saving": "Salvando…", "verify": "Verificar" }, "addDomainLabel": "Adicionar domínio de login", "advisoryNotice": "Modo consultivo: o registro do domínio ajuda no roteamento da descoberta de MSP SSO, mas não requer verificação de propriedade na Community Edition.", "claimStatus": { "advisory": "Consultivo", "pending": "Pendente", "rejected": "Rejeitado", "revoked": "Revogado", "verified": "Verificado", "verifiedLegacy": "Verificado (Legacy)" }, "descriptionCe": "Registre domínios consultivos para a descoberta do SSO de login MSP. A verificação de propriedade não é imposta na Community Edition, e domínios não gerenciados usam como fallback os provedores de nível de aplicativo da Nine Minds.", "descriptionEe": "Gerencie o ciclo de vida das reivindicações de domínio para a descoberta de provedores SSO de login MSP. Domínios não reivindicados ou não elegíveis usam como fallback os provedores de nível de aplicativo da Nine Minds.", "dnsHost": "Host:", "dnsInstructions": "Adicione o registro DNS TXT e, em seguida, clique em Verificar:", "dnsValue": "Valor:", "emptyClaims": "Nenhuma reivindicação de domínio configurada ainda.", "emptyDomains": "Nenhum domínio configurado. Domínios desconhecidos usarão o fallback do provedor de nível de aplicativo.", "errors": { "conflicts": "Conflitos: {{conflicts}}.", "loadClaims": "Não foi possível carregar as reivindicações de domínio MSP SSO.", "loadDomains": "Não foi possível carregar os domínios de login MSP SSO.", "refreshChallenge": "Não foi possível atualizar o desafio.", "requestClaim": "Não foi possível solicitar a reivindicação de domínio.", "revokeClaim": "Não foi possível revogar a reivindicação de domínio.", "saveDomains": "Não foi possível salvar os domínios de login MSP SSO.", "verifyClaim": "Não foi possível verificar a reivindicação de domínio." }, "fallbackInfo": "Domínios sem uma reivindicação de tenant elegível usam a configuração do provedor SSO de nível de aplicativo da Nine Minds.", "loading": "Carregando…", "removeDomainAria": "Remover domínio {{number}}", "requestClaim": "Solicitar reivindicação", "requestClaimLabel": "Solicitar reivindicação de domínio", "title": "Domínios de login MSP SSO", "toasts": { "claimRequestedDescription": "Reivindicação de domínio pendente criada e desafio de verificação gerado.", "claimRequestedTitle": "Reivindicação de domínio solicitada", "claimUnchangedDescription": "A reivindicação pendente e o desafio existentes já estão ativos.", "claimUnchangedTitle": "Reivindicação de domínio inalterada", "refreshFailedTitle": "Não foi possível atualizar o desafio", "refreshedDescription": "Um novo desafio de verificação está ativo para esta reivindicação.", "refreshedTitle": "Desafio atualizado", "requestClaimFailedTitle": "Não foi possível solicitar a reivindicação de domínio", "revokeFailedTitle": "Não foi possível revogar a reivindicação", "revokedDescription": "A tomada de posse do tenant para este domínio está desabilitada.", "revokedTitle": "Reivindicação de domínio revogada", "saveDomainsFailedTitle": "Não foi possível salvar os domínios de login MSP SSO", "savedDescription": "As configurações de descoberta SSO baseadas em domínio foram atualizadas.", "savedTitle": "Domínios de login MSP SSO salvos", "verifiedDescription": "A tomada de posse do domínio agora é elegível para o roteamento de provedor no escopo do tenant.", "verifiedTitle": "Reivindicação de domínio verificada", "verifyFailedTitle": "Falha na verificação do domínio" } } }, "teams": { "settings": { "actions": { "activate": "Ativar Teams", "addNote": { "description": "Permitir ações rápidas de nota interna.", "label": "Adicionar nota" }, "approvalResponse": { "description": "Permitir ações rápidas de aprovação e rejeição.", "label": "Resposta de aprovação" }, "assignTicket": { "description": "Permitir ações rápidas de atribuição de ticket.", "label": "Atribuir ticket" }, "deactivate": "Desativar", "logTime": { "description": "Permitir ações rápidas de registro de tempo.", "label": "Registrar tempo" }, "reload": "Recarregar", "replyToContact": { "description": "Permitir ações rápidas de resposta visíveis para o cliente.", "label": "Responder ao contato" }, "saveChanges": "Salvar alterações", "saveDraft": "Salvar rascunho", "saving": "Salvando...", "teamsActive": "Teams ativo" }, "capabilities": { "activityNotifications": { "description": "Entregar notificações pessoais no feed de atividades do Teams.", "label": "Notificações de atividade" }, "groupChatBot": { "description": "Permitir que o bot responda em chats de grupo do Teams. Respostas do bot (incluindo detalhes de ticket) são visíveis para todos os membros do chat.", "label": "Bot em chat de grupo" }, "messageExtension": { "description": "Habilitar consultas e ações PSA orientadas por mensagens.", "label": "Message extension" }, "personalBot": { "description": "Habilitar comandos de bot em escopo pessoal para técnicos.", "label": "Bot pessoal" }, "personalTab": { "description": "Iniciar o ponto de entrada da aba pessoal PSA.", "label": "Aba pessoal" } }, "checklist": { "installState": { "active": "O Teams está ativo para este tenant.", "error": "A configuração do Teams tem um erro que precisa ser corrigido.", "label": "Estado de instalação do Teams", "notConfigured": "Salve um rascunho ou ative o Teams quando a configuração estiver pronta.", "pending": "O rascunho da configuração foi salvo e está pronto para instalação ou consentimento." }, "needsAction": "Requer ação", "profileReady": { "completed": "O perfil selecionado possui Client ID, Tenant ID e material de secret armazenado.", "label": "Perfil pronto para instalação do Teams", "pending": "Nenhum perfil Teams selecionado está pronto ainda." }, "profileSelected": { "completed": "{{name}} está vinculado para o Teams.", "label": "Perfil Microsoft selecionado", "pending": "Selecione um perfil Microsoft elegível antes de salvar ou ativar o Teams." }, "ready": "Pronto" }, "description": "Vincule o Teams a um perfil Microsoft, habilite capacidades e gere o pacote do tenant.", "errors": { "downloadPackage": "Falha ao baixar o pacote do aplicativo Teams", "generatePackage": "Falha ao gerar o pacote do aplicativo Teams", "loadGuidance": "Falha ao carregar o guia de configuração do Teams", "saveSettings": "Falha ao salvar as configurações do Teams" }, "guidance": { "applicationIdUri": "Application ID URI", "messageExtension": "Message extension", "personalBot": "Bot pessoal", "personalTab": "Aba pessoal", "redirectUris": "Redirect URIs", "requiredScopes": "Escopos obrigatórios", "teamsAppIdUri": "Teams App ID URI", "unavailable": "Indisponível" }, "installStatus": { "active": "Ativo", "error": "Erro", "installPending": "Instalação pendente", "notConfigured": "Não configurado" }, "noEligibleProfiles": "Nenhum perfil Microsoft está pronto para o Teams. Conclua primeiro a configuração Microsoft.", "notifications": { "approvalRequest": { "description": "Notificar aprovadores sobre decisões pendentes.", "label": "Solicitações de aprovação" }, "assignment": { "description": "Notificar técnicos quando trabalho for atribuído.", "label": "Eventos de atribuição" }, "customerReply": { "description": "Notificar técnicos quando os clientes responderem.", "label": "Respostas de clientes" }, "escalation": { "description": "Notificar responsáveis quando o trabalho for escalonado.", "label": "Escalonamentos" }, "slaRisk": { "description": "Notificar técnicos quando os limites de risco de SLA forem atingidos.", "label": "Risco de SLA" } }, "package": { "appId": "App ID", "appIds": "App IDs", "botId": "Bot ID", "deepLinks": "Deep links", "description": "Gere o manifesto do aplicativo e os links de instalação para o perfil Microsoft selecionado.", "downloadManifest": "Baixar manifesto JSON", "downloadZip": "Baixar pacote do aplicativo (.zip)", "downloading": "Baixando...", "fileName": "Nome do arquivo", "generate": "Gerar pacote", "generating": "Gerando...", "manifestVersion": "Versão do manifesto", "myWork": "Meu trabalho", "openBaseUrl": "Abrir URL base do PSA", "openDeeplink": "Abrir deep link do Teams", "packageVersion": "Versão do pacote", "projectTaskTemplate": "Modelo de tarefa de projeto", "section": "Pacote", "ticketTemplate": "Modelo de ticket", "title": "Pacote Teams", "validDomains": "Domínios válidos", "webResource": "Recurso de aplicação web" }, "profileLabel": "Perfil Microsoft", "profileSummary": { "needsRepair": "Perfil selecionado precisa de reparo", "none": "Nenhum perfil selecionado" }, "section": { "allowedActions": "Ações permitidas", "capabilities": "Capacidades", "notifications": "Notificações" }, "selectProfile": "Selecionar perfil", "statusMessage": { "activated": "Configuração do Teams ativada.", "deactivated": "Configuração do Teams desativada.", "packageDownloaded": "Pacote do aplicativo Teams baixado.", "packageGenerated": "Pacote do aplicativo Teams gerado.", "saved": "Configuração do Teams salva." }, "title": "Microsoft Teams", "diagnostics": { "title": "Diagnóstico e mensagem de teste", "description": "Verifique a configuração do Teams e envie uma mensagem de teste proativa para a sua conversa de bot do Teams.", "run": "Executar diagnóstico", "running": "Executando...", "sendTest": "Enviar mensagem de teste", "sending": "Enviando...", "disabled": "O diagnóstico e as mensagens de teste ficam disponíveis após a integração do Teams estar ativa.", "completedAt": "Concluído {{time}}", "lastSuccess": "Último sucesso", "lastFailure": "Última falha", "noneRecorded": "Nenhum registrado", "recommendations": "Recomendações", "status": { "pass": "Aprovado", "warn": "Aviso", "fail": "Falha", "skip": "Ignorado" }, "errors": { "run": "Falha ao executar o diagnóstico do Teams", "testMessage": "Falha ao enviar a mensagem de teste do Teams" }, "test": { "sent": "Mensagem de teste do Teams enviada.", "failed": "Falha na mensagem de teste do Teams.", "addonInactive": "O complemento do Teams não está ativo para este locatário.", "integrationInactive": "Ative a integração do Teams antes de enviar uma mensagem de teste.", "capabilityDisabled": "Habilite o recurso de bot pessoal antes de enviar uma mensagem de teste.", "botNotConfigured": "Configure as credenciais do bot do Teams antes de enviar uma mensagem de teste.", "missingUserLinkage": "Vincule sua conta da Microsoft antes de enviar uma mensagem de teste do Teams.", "missingConversationReference": "Abra o bot do Alga PSA no Teams e envie qualquer mensagem para ele primeiro e tente novamente.", "skipped": "A mensagem de teste do Teams foi ignorada." }, "steps": { "addonEntitlement": "Direito ao complemento do Teams", "integrationStatus": "Status da integração do Teams", "capabilities": "Recursos do Teams", "microsoftProfile": "Prontidão do perfil da Microsoft", "recordingPermissions": "Permissões de gravação e transcrição do Teams", "packageMetadata": "Metadados do pacote do Teams", "botConnector": "Credenciais do conector de bot", "userLinkage": "Vínculo da conta da Microsoft do administrador", "conversationReference": "Referência de conversa do Teams do administrador", "recentDeliveryHealth": "Integridade recente da entrega do Teams" }, "recommendation": { "addon": "Habilite o complemento do Microsoft Teams para este locatário.", "activate": "Ative a integração do Teams nas configurações.", "capabilities": "Habilite o bot pessoal e as notificações de atividade para o Teams.", "profile": "Selecione um perfil da Microsoft pronto para o Teams.", "activeProfile": "Selecione um perfil da Microsoft ativo para o Teams.", "profileCredentials": "Conclua as credenciais do perfil da Microsoft antes de ativar o Teams.", "meetingOrganizer": "Configure o organizador de reunião padrão do Teams nas configurações do Teams.", "meetingOrganizerObjectId": "Salve novamente o organizador de reunião padrão do Teams para que o Alga PSA possa resolver seu ID de objeto do Microsoft Entra.", "package": "Gere o pacote do aplicativo do Teams antes de executar a validação de ponta a ponta.", "baseUrl": "Gere novamente o pacote do Teams com uma URL base acessível.", "botEnv": "Configure TEAMS_BOT_APP_ID, TEAMS_BOT_APP_TENANT_ID e TEAMS_BOT_APP_PASSWORD.", "userLinkage": "Vincule sua conta da Microsoft nas configurações do seu perfil.", "conversationReference": "Abra o bot do Alga PSA no Teams e envie qualquer mensagem para ele primeiro e tente novamente.", "deliveryFailure": "Revise a falha de entrega do Teams mais recente e tente novamente após corrigir a causa." } }, "meetings": { "title": "Reuniões online e gravações", "description": "Use uma única conta de serviço da Microsoft para organizar reuniões do Teams e controlar como as gravações são retidas.", "organizer": { "label": "UPN do organizador de reunião padrão", "placeholder": "scheduler@acme.com", "help": "Salvar resolve e armazena o ID de objeto do Microsoft Entra usado nas chamadas de reunião do Graph.", "resolved": "ID de objeto resolvido: {{objectId}}" }, "downloadRecordings": { "label": "Baixar gravações para o armazenamento interno", "description": "Quando ativado, os blobs de gravação são copiados para o armazenamento do locatário, além do proxy autenticado do Graph." }, "exposeRecordingsInPortal": { "label": "Mostrar gravações e transcrições no portal do cliente", "description": "Desativado por padrão; os usuários de MSP ainda podem ver os artefatos nos detalhes de interação e de compromisso." } } } }, "xero": { "csv": { "clientSync": { "cancel": "Cancelar", "createNew": "Criar novos clientes", "description": "Exporte clientes para CSV Xero Contacts ou importe contatos do Xero.", "errorRow": "Linha {{row}}: {{name}} - {{error}}", "errors": { "export": "Falha ao exportar clientes", "import": "Falha ao importar clientes", "processCsv": "Falha ao processar o arquivo CSV" }, "errorsTitle": "Erros ({{count}})", "exportButton": "Exportar clientes para CSV", "exportClients": "Exportar clientes", "exportDescription": "Exporte seus clientes Alga para um arquivo CSV que pode ser importado no Xero como Contacts.", "exportSuccess": "{{count}} clientes exportados para {{filename}}", "importCompleteDescription": "{{count}} contatos processados com sucesso.", "importCompleteTitle": "Importação concluída", "importContacts": "Importar contatos", "importContactsButton": "Importar {{count}} contatos", "importDescription": "Importe contatos de uma exportação CSV Xero Contacts. Clientes existentes podem ser correspondidos e atualizados.", "importing": "Importando contatos...", "matchBy": { "algaClientId": "ID do cliente Alga (da categoria de rastreamento)", "contactName": "Nome do contato", "emailAddress": "Endereço de e-mail" }, "matchByLabel": "Corresponder contatos por:", "moreErrors": "...e mais {{count}} erros", "preview": { "columns": { "action": "Ação", "contactName": "Nome do contato", "email": "E-mail", "matchedClient": "Cliente correspondido" }, "moreWarnings": "...e mais {{count}}", "showing20of": "Mostrando 20 de {{count}} linhas", "toCreate": "Para criar", "toSkip": "Para ignorar", "toUpdate": "Para atualizar", "warnings": "Avisos" }, "processing": "Processando {{filename}}...", "result": { "created": "Criados", "mappings": "Mapeamentos", "skipped": "Ignorados", "updated": "Atualizados" }, "selectCsvFile": "Selecionar arquivo CSV", "startNewImport": "Iniciar nova importação", "title": "Sincronização de clientes", "updateExisting": "Atualizar clientes existentes", "workflow": { "s1": "Exportar clientes do Alga para CSV Xero Contacts", "s2": "Importar o CSV no Xero (Contacts → Import)", "s3": "Após alterações no Xero, exportar contatos do Xero", "s4": "Importar o CSV de contatos do Xero de volta para o Alga para sincronizar atualizações" }, "workflowTitle": "Fluxo de sincronização de clientes" }, "settings": { "dateFormat": "Formato de data", "dateFormatHelp": "Ajuste isto às configurações regionais do seu Xero.", "dateFormatOptions": { "dmy": "DD/MM/AAAA (Dia/Mês/Ano)", "mdy": "MM/DD/AAAA (Mês/Dia/Ano)" }, "defaultCurrency": "Moeda padrão", "defaultCurrencyHelp": "Deixe em branco para usar a moeda da fatura.", "errors": { "load": "Falha ao carregar as configurações", "save": "Falha ao salvar as configurações" }, "exportSettings": { "description": "Configure como as faturas são exportadas no formato CSV para o Xero.", "title": "Configurações de exportação CSV" }, "loading": "Carregando configurações CSV do Xero...", "managedPrefix": "Acesse", "managedSuffix": "para selecionar faturas, gerar exportações CSV do Xero, importar relatórios fiscais e gerenciar lotes.", "mappings": { "description": "Mapeie clientes, serviços e códigos fiscais do Alga para os identificadores usados em sua organização Xero. Estes valores são usados ao gerar a exportação CSV.", "title": "Mapeamentos CSV do Xero" }, "overview": { "description": "Exporte faturas para CSV para importação manual no Xero e importe dados fiscais dos relatórios do Xero.", "exportLabel": "Exportação", "exportText": "Gere arquivos CSV compatíveis com o recurso de importação de faturas do Xero", "intro": "Esta integração fornece uma alternativa à conectividade com o Xero baseada em OAuth:", "note": "Nota: Configure os mapeamentos abaixo antes de exportar. As exportações CSV e as importações de impostos são gerenciadas em Faturamento → Exportações contábeis.", "taxImportLabel": "Importação de impostos", "taxImportText": "Ao usar cálculo fiscal externo, importe valores fiscais do Xero Invoice Details Report", "title": "Integração CSV do Xero" }, "savedMessage": "Configurações salvas com sucesso", "selectCurrency": "Selecionar moeda", "setup": { "acknowledge": "Concluí a configuração", "description": "Conclua estes passos no Xero antes de usar a importação/exportação CSV.", "externalInvoiceId": "ID externo da fatura", "externalInvoiceIdHelp": "As opções serão criadas automaticamente ao importar", "sourceSystem": "Sistema de origem", "sourceSystemHelp": "Adicione uma opção chamada", "step1Description": "No Xero, acesse Settings → Tracking Categories e crie estas duas categorias:", "step1Title": "Passo 1: Criar categorias de rastreamento", "step2Description": "Certifique-se de que sua organização Xero tenha as alíquotas fiscais necessárias configuradas em Settings → Tax Rates.", "step2Title": "Passo 2: Configurar alíquotas fiscais", "step3Description": "Use a seção de mapeamento abaixo para vincular seus serviços Alga aos códigos de item do Xero e suas regiões fiscais às alíquotas fiscais do Xero.", "step3Title": "Passo 3: Mapear serviços e regiões fiscais", "title": "Configuração do Xero necessária" }, "useInvoiceCurrency": "Usar moeda da fatura", "workflow": { "description": "Como exportar faturas e importar cálculos fiscais.", "export": { "s1": "Acesse Faturamento → Exportações contábeis", "s2": "Selecione faturas e escolha \"Xero CSV\" como adaptador", "s3": "Baixe o arquivo CSV gerado", "s4": "No Xero: Business → Invoices → Import", "s5": "Faça upload do CSV e importe como faturas de rascunho", "s6": "O Xero calculará o imposto com base nas suas configurações fiscais" }, "exportInvoices": "Exportar faturas", "import": { "s1": "No Xero: Reports → All Reports → Invoice Details", "s2": "Defina o intervalo de datas e exporte como CSV", "s3": "No Alga: Faturamento → Exportações contábeis → Importar impostos", "s4": "Faça upload do CSV do relatório Xero", "s5": "Revise as faturas correspondidas e confirme a importação" }, "importTax": "Importar cálculos fiscais", "title": "Fluxo CSV", "trackingDescription": "A exportação CSV inclui colunas de categorias de rastreamento que vinculam cada fatura Xero à sua origem Alga. Ao importar impostos do Xero, estas categorias de rastreamento são usadas para corresponder faturas automaticamente — sem reconciliação manual.", "trackingTitle": "Categorias de rastreamento para reconciliação" } } }, "live": { "defaultOrganisation": "Organização Xero padrão" }, "settings": { "actions": { "connect": "Conectar Xero", "disconnect": "Desconectar Xero", "disconnecting": "Desconectando…", "reconnect": "Reconectar Xero", "refresh": "Atualizar", "saveCredentials": "Salvar credenciais Xero", "saving": "Salvando…" }, "badges": { "connectionExpired": "Conexão expirada", "credentialsReady": "Credenciais prontas", "credentialsRequired": "Credenciais obrigatórias", "defaultConnected": "Organização padrão conectada", "noOrganisation": "Nenhuma organização conectada" }, "callback": { "accessDenied": "O acesso ao Xero foi negado antes da conclusão da conexão.", "configMissing": "Não foi possível iniciar o Xero OAuth porque o client ID e o client secret do tenant não estavam totalmente configurados.", "connectionsUnmapped": "O Xero retornou organizações, mas nenhuma incluiu os identificadores necessários para salvar uma conexão.", "generic": "O Xero retornou um erro OAuth: {{code}}", "invalidState": "O estado OAuth do Xero era inválido ou expirou. Inicie o fluxo de conexão novamente.", "missingParams": "Parâmetros obrigatórios estavam ausentes no callback do Xero. Inicie o fluxo de conexão novamente.", "noConnections": "O Xero não retornou nenhuma organização para este login. Verifique seu aplicativo Xero e o acesso à organização e tente novamente.", "oauthFailed": "O callback OAuth do Xero falhou. Tente se conectar novamente. Se o problema persistir, revise seu redirect URI e escopos." }, "clientIdLabel": "Xero Client ID", "clientIdPlaceholder": "Cole seu Xero Client ID de propriedade do tenant", "clientSecretLabel": "Xero Client Secret", "clientSecretPlaceholder": "Cole seu Xero Client Secret de propriedade do tenant", "connectSuccess": "Xero conectado com sucesso. A primeira organização conectada agora é o contexto padrão do Xero ao vivo.", "connection": { "connectionId": "ID da conexão: {{id}}", "defaultOrganisation": "Organização padrão", "description": "Inicie o OAuth somente após configurar o aplicativo Xero de propriedade do tenant. Desconectar remove os tokens de acesso Xero armazenados, mas mantém as credenciais do aplicativo de propriedade do tenant.", "notConnected": "Nenhuma organização Xero ao vivo está conectada ainda. Salve as credenciais e clique em Conectar Xero.", "title": "Conexão Xero ao vivo", "unknown": "desconhecido" }, "credentialsSaved": "Credenciais Xero salvas. Agora você pode iniciar o fluxo OAuth do Xero ao vivo.", "csvAvailableMiddle": "nesta mesma seção Contabilidade e gerencie exportações em", "csvAvailablePrefix": "Se você prefere um fluxo manual, continue usando", "csvAvailableTitle": "Xero CSV permanece disponível", "description": "Configure credenciais OAuth Xero de propriedade do tenant, conecte sua organização padrão e mantenha o Xero ao vivo ao lado do fluxo manual Xero CSV.", "disconnectSuccess": "A conexão Xero armazenada foi removida. As credenciais do aplicativo Xero de propriedade do tenant foram preservadas.", "errors": { "disconnect": "Falha ao desconectar o Xero.", "load": "Falha ao carregar as configurações do Xero.", "saveCredentials": "Falha ao salvar as credenciais do Xero." }, "howItWorksDescription": "Salve aqui um Xero Client ID e Client Secret de propriedade do tenant, conclua o fluxo OAuth do Xero, e o Alga PSA usará a primeira organização Xero conectada como contexto padrão ao vivo.", "howItWorksTitle": "Como o Xero ao vivo funciona nesta versão", "loading": "Carregando configurações do Xero…", "mapping": { "alert": "Itens, contas de receita, alíquotas fiscais e categorias de rastreamento do Xero são carregados da organização conectada padrão para que exportações ao vivo possam continuar usando a primeira conexão Xero armazenada na v1.", "descriptionPrefix": "Configure os mapeamentos Xero ao vivo para a organização conectada padrão. Estes mapeamentos estão limitados a", "placeholderAlert": "O gerenciador de mapeamentos fica disponível após a primeira organização Xero ser conectada e definida como contexto padrão do Xero ao vivo.", "placeholderDescription": "Conecte uma organização Xero ao vivo antes de configurar os mapeamentos de itens e impostos Xero ao vivo.", "title": "Mapeamento e configuração do Xero ao vivo" }, "noClientId": "Nenhum client ID está armazenado para este tenant ainda.", "noClientSecret": "Nenhum client secret está armazenado para este tenant ainda.", "redirectUri": "Redirect URI", "requiredScopes": "Escopos obrigatórios", "storedClientId": "Client ID armazenado: {{value}}", "storedClientSecret": "Client secret armazenado: {{value}}", "tenantOauthDescription": "Cole as credenciais do aplicativo Xero registradas para este tenant. Valores de secret nunca são retornados ao navegador após serem salvos.", "tenantOauthTitle": "Aplicativo OAuth de propriedade do tenant", "title": "Xero", "xeroCsv": "Xero CSV" } }, "stripe": { "title": "Pagamentos Stripe", "description": "Aceite pagamentos com cartão de crédito para suas faturas", "connected": { "title": "Stripe conectado", "publishableKey": "Publishable key: {{key}}..." }, "empty": { "description": "Conecte sua conta Stripe para aceitar pagamentos online de faturas" }, "actions": { "testConnection": "Testar conexão", "disconnect": "Desconectar", "connect": "Conectar Stripe", "connecting": "Conectando...", "cancel": "Cancelar" }, "form": { "secretKeyLabel": "Secret Key", "secretKeyPlaceholder": "sk_live_... ou sk_test_...", "publishableKeyLabel": "Publishable Key", "publishableKeyPlaceholder": "pk_live_... ou pk_test_...", "findKeyPrefix": "Encontre isto em seu", "dashboardLink": "Stripe Dashboard → API Keys" }, "webhook": { "heading": "Configuração de webhook", "configuredAutomatically": "Webhooks configurados automaticamente", "receiveNotifications": "O Alga PSA receberá notificações de pagamento para:", "failedTitle": "Falha na configuração do webhook", "failedBody": "A configuração automática do webhook falhou. Clique em tentar novamente para tentar a configuração outra vez.", "configuring": "Configurando...", "retry": "Tentar configurar novamente" }, "disconnectDialog": { "title": "Desconectar Stripe", "message": "Tem certeza de que deseja desconectar o Stripe? Os links de pagamento deixarão de funcionar.", "confirm": "Desconectar", "cancel": "Cancelar" }, "toasts": { "connectedWithWebhook": "Stripe conectado e webhooks configurados automaticamente!", "connectedWebhookFailed": "Stripe conectado! Observação: a configuração automática do webhook falhou — pode ser necessário configurar webhooks manualmente no Stripe Dashboard.", "disconnected": "Stripe desconectado", "connectionSuccess": "Conexão bem-sucedida!", "webhookConfigured": "Webhook configurado com sucesso!" }, "errors": { "loadConfig": "Falha ao carregar a configuração do Stripe", "connect": "Falha ao conectar o Stripe", "disconnect": "Falha ao desconectar o Stripe", "testConnection": "Falha no teste de conexão", "configureWebhook": "Falha ao configurar o webhook", "bothKeysRequired": "Insira a secret key e a publishable key", "secretKeyFormat": "A secret key deve começar com sk_", "publishableKeyFormat": "A publishable key deve começar com pk_" } } }, "ninjaone": { "selectCompany": "Selecionar empresa" } }