PSA/server/public/locales/pt/msp/integrations.json
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

2329 lines
120 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
}
}