diff --git a/messages/pt-PT.json b/messages/pt-PT.json
index 2f4b5e79..6dc7ca24 100644
--- a/messages/pt-PT.json
+++ b/messages/pt-PT.json
@@ -56,6 +56,9 @@
"sitesBannerTitle": "Conectar a Qualquer Rede",
"sitesBannerDescription": "Um site é uma conexão a uma rede remota que permite ao Pangolin fornecer acesso a recursos, sejam eles públicos ou privados, a usuários em qualquer lugar. Instale o conector de rede do site (Newt) em qualquer lugar onde você possa executar um binário ou contêiner para estabelecer a conexão.",
"sitesBannerButtonText": "Instalar Site",
+ "approvalsBannerTitle": "Aprovar ou negar acesso ao dispositivo",
+ "approvalsBannerDescription": "Revisar e aprovar ou negar solicitações de acesso ao dispositivo de usuários. Quando as aprovações do dispositivo são necessárias, os usuários devem obter a aprovação do administrador antes que seus dispositivos possam se conectar aos recursos da sua organização.",
+ "approvalsBannerButtonText": "Saiba mais",
"siteCreate": "Criar site",
"siteCreateDescription2": "Siga os passos abaixo para criar e conectar um novo site",
"siteCreateDescription": "Crie um novo site para começar a conectar os recursos",
@@ -257,6 +260,8 @@
"accessRolesSearch": "Pesquisar funções...",
"accessRolesAdd": "Adicionar função",
"accessRoleDelete": "Excluir Papel",
+ "accessApprovalsManage": "Gerenciar aprovações",
+ "accessApprovalsDescription": "Visualizar e gerenciar aprovações pendentes para acesso a esta organização",
"description": "Descrição:",
"inviteTitle": "Convites Abertos",
"inviteDescription": "Gerenciar convites para outros usuários participarem da organização",
@@ -450,6 +455,18 @@
"selectDuration": "Selecionar duração",
"selectResource": "Selecionar Recurso",
"filterByResource": "Filtrar por Recurso",
+ "selectApprovalState": "Selecionar Estado de Aprovação",
+ "filterByApprovalState": "Filtrar por estado de aprovação",
+ "approvalListEmpty": "Sem aprovações",
+ "approvalState": "Estado de aprovação",
+ "approve": "Aprovar",
+ "approved": "Aceito",
+ "denied": "Negado",
+ "deniedApproval": "Aprovação Negada",
+ "all": "Todos",
+ "deny": "Recusar",
+ "viewDetails": "Visualizar Detalhes",
+ "requestingNewDeviceApproval": "solicitou um novo dispositivo",
"resetFilters": "Redefinir filtros",
"totalBlocked": "Solicitações bloqueadas pelo Pangolin",
"totalRequests": "Total de pedidos",
@@ -729,16 +746,28 @@
"countries": "Países",
"accessRoleCreate": "Criar Função",
"accessRoleCreateDescription": "Crie uma nova função para agrupar utilizadores e gerir suas permissões.",
+ "accessRoleEdit": "Editar Permissão",
+ "accessRoleEditDescription": "Editar informações do papel.",
"accessRoleCreateSubmit": "Criar Função",
"accessRoleCreated": "Função criada",
"accessRoleCreatedDescription": "A função foi criada com sucesso.",
"accessRoleErrorCreate": "Falha ao criar função",
"accessRoleErrorCreateDescription": "Ocorreu um erro ao criar a função.",
+ "accessRoleUpdateSubmit": "Atualizar Função",
+ "accessRoleUpdated": "Função atualizada",
+ "accessRoleUpdatedDescription": "A função foi atualizada com sucesso.",
+ "accessApprovalUpdated": "Aprovação processada",
+ "accessApprovalApprovedDescription": "Definir decisão de solicitação de aprovação para aprovada.",
+ "accessApprovalDeniedDescription": "Definir decisão de solicitação de aprovação para negada.",
+ "accessRoleErrorUpdate": "Falha ao atualizar papel",
+ "accessRoleErrorUpdateDescription": "Ocorreu um erro ao atualizar a função.",
+ "accessApprovalErrorUpdate": "Não foi possível processar a aprovação",
+ "accessApprovalErrorUpdateDescription": "Ocorreu um erro ao processar a aprovação.",
"accessRoleErrorNewRequired": "Nova função é necessária",
"accessRoleErrorRemove": "Falha ao remover função",
"accessRoleErrorRemoveDescription": "Ocorreu um erro ao remover a função.",
"accessRoleName": "Nome da Função",
- "accessRoleQuestionRemove": "Você está prestes a apagar a função {name}. Você não pode desfazer esta ação.",
+ "accessRoleQuestionRemove": "Você está prestes a apagar o papel `{name}. Você não pode desfazer esta ação.",
"accessRoleRemove": "Remover Função",
"accessRoleRemoveDescription": "Remover uma função da organização",
"accessRoleRemoveSubmit": "Remover Função",
@@ -954,13 +983,13 @@
"passwordExpiryDescription": "Esta organização exige que você altere sua senha a cada {maxDays} dias.",
"changePasswordNow": "Alterar a senha agora",
"pincodeAuth": "Código do Autenticador",
- "pincodeSubmit2": "Submeter Código",
+ "pincodeSubmit2": "Enviar código",
"passwordResetSubmit": "Solicitar Redefinição",
"passwordResetAlreadyHaveCode": "Inserir Código",
"passwordResetSmtpRequired": "Por favor, contate o administrador",
"passwordResetSmtpRequiredDescription": "É necessário um código de redefinição de senha para redefinir sua senha. Por favor, contate o administrador para assistência.",
"passwordBack": "Voltar à Palavra-passe",
- "loginBack": "Voltar ao início de sessão",
+ "loginBack": "Voltar para a página principal de acesso",
"signup": "Registar",
"loginStart": "Inicie sessão para começar",
"idpOidcTokenValidating": "A validar token OIDC",
@@ -1118,6 +1147,10 @@
"actionUpdateIdpOrg": "Atualizar Organização IDP",
"actionCreateClient": "Criar Cliente",
"actionDeleteClient": "Excluir Cliente",
+ "actionArchiveClient": "Arquivar Cliente",
+ "actionUnarchiveClient": "Desarquivar Cliente",
+ "actionBlockClient": "Bloco do Cliente",
+ "actionUnblockClient": "Desbloquear Cliente",
"actionUpdateClient": "Atualizar Cliente",
"actionListClients": "Listar Clientes",
"actionGetClient": "Obter Cliente",
@@ -1134,14 +1167,14 @@
"searchProgress": "Pesquisar...",
"create": "Criar",
"orgs": "Organizações",
- "loginError": "Ocorreu um erro ao iniciar sessão",
- "loginRequiredForDevice": "É necessário entrar para autenticar seu dispositivo.",
+ "loginError": "Ocorreu um erro inesperado. Por favor, tente novamente.",
+ "loginRequiredForDevice": "O login é necessário para seu dispositivo.",
"passwordForgot": "Esqueceu a sua palavra-passe?",
"otpAuth": "Autenticação de Dois Fatores",
"otpAuthDescription": "Insira o código da sua aplicação de autenticação ou um dos seus códigos de backup de uso único.",
"otpAuthSubmit": "Submeter Código",
"idpContinue": "Ou continuar com",
- "otpAuthBack": "Voltar ao Início de Sessão",
+ "otpAuthBack": "Voltar à Palavra-passe",
"navbar": "Menu de Navegação",
"navbarDescription": "Menu de navegação principal da aplicação",
"navbarDocsLink": "Documentação",
@@ -1189,6 +1222,7 @@
"sidebarOverview": "Geral",
"sidebarHome": "Residencial",
"sidebarSites": "sites",
+ "sidebarApprovals": "Solicitações de aprovação",
"sidebarResources": "Recursos",
"sidebarProxyResources": "Público",
"sidebarClientResources": "Privado",
@@ -1205,7 +1239,7 @@
"sidebarIdentityProviders": "Provedores de identidade",
"sidebarLicense": "Tipo:",
"sidebarClients": "Clientes",
- "sidebarUserDevices": "Utilizadores",
+ "sidebarUserDevices": "Dispositivos do usuário",
"sidebarMachineClients": "Máquinas",
"sidebarDomains": "Domínios",
"sidebarGeneral": "Gerir",
@@ -1277,6 +1311,7 @@
"setupErrorCreateAdmin": "Ocorreu um erro ao criar a conta de administrador do servidor.",
"certificateStatus": "Status do Certificado",
"loading": "Carregando",
+ "loadingAnalytics": "Carregando Analytics",
"restart": "Reiniciar",
"domains": "Domínios",
"domainsDescription": "Criar e gerenciar domínios disponíveis na organização",
@@ -1304,6 +1339,7 @@
"refreshError": "Falha ao atualizar dados",
"verified": "Verificado",
"pending": "Pendente",
+ "pendingApproval": "Aprovação pendente",
"sidebarBilling": "Faturamento",
"billing": "Faturamento",
"orgBillingDescription": "Gerenciar informações e assinaturas de cobrança",
@@ -1420,7 +1456,7 @@
"securityKeyRemoveSuccess": "Chave de segurança removida com sucesso",
"securityKeyRemoveError": "Erro ao remover chave de segurança",
"securityKeyLoadError": "Erro ao carregar chaves de segurança",
- "securityKeyLogin": "Continuar com a chave de segurança",
+ "securityKeyLogin": "Usar chave de segurança",
"securityKeyAuthError": "Erro ao autenticar com chave de segurança",
"securityKeyRecommendation": "Considere registrar outra chave de segurança em um dispositivo diferente para garantir que você não fique bloqueado da sua conta.",
"registering": "Registrando...",
@@ -1547,6 +1583,8 @@
"IntervalSeconds": "Intervalo Saudável",
"timeoutSeconds": "Tempo limite (seg)",
"timeIsInSeconds": "O tempo está em segundos",
+ "requireDeviceApproval": "Exigir aprovação do dispositivo",
+ "requireDeviceApprovalDescription": "Usuários com esta função precisam de novos dispositivos aprovados por um administrador antes que eles possam se conectar e acessar recursos.",
"retryAttempts": "Tentativas de Repetição",
"expectedResponseCodes": "Códigos de Resposta Esperados",
"expectedResponseCodesDescription": "Código de status HTTP que indica estado saudável. Se deixado em branco, 200-300 é considerado saudável.",
@@ -1876,7 +1914,7 @@
"orgAuthChooseIdpDescription": "Escolha o seu provedor de identidade para continuar",
"orgAuthNoIdpConfigured": "Esta organização não tem nenhum provedor de identidade configurado. Você pode entrar com a identidade do seu Pangolin.",
"orgAuthSignInWithPangolin": "Entrar com o Pangolin",
- "orgAuthSignInToOrg": "Entrar em uma organização",
+ "orgAuthSignInToOrg": "Fazer login em uma organização",
"orgAuthSelectOrgTitle": "Entrada da Organização",
"orgAuthSelectOrgDescription": "Digite seu ID da organização para continuar",
"orgAuthOrgIdPlaceholder": "sua-organização",
@@ -2232,6 +2270,8 @@
"deviceCodeInvalidFormat": "O código deve ter 9 caracteres (ex.: A1AJ-N5JD)",
"deviceCodeInvalidOrExpired": "Código inválido ou expirado",
"deviceCodeVerifyFailed": "Falha ao verificar o código do dispositivo",
+ "deviceCodeValidating": "Validando código do dispositivo...",
+ "deviceCodeVerifying": "Verificando autorização do dispositivo...",
"signedInAs": "Sessão iniciada como",
"deviceCodeEnterPrompt": "Digite o código exibido no dispositivo",
"continue": "Continuar",
@@ -2244,7 +2284,7 @@
"deviceOrganizationsAccess": "Acesso a todas as organizações que sua conta tem acesso a",
"deviceAuthorize": "Autorizar {applicationName}",
"deviceConnected": "Dispositivo Conectado!",
- "deviceAuthorizedMessage": "O dispositivo está autorizado a acessar sua conta.",
+ "deviceAuthorizedMessage": "O dispositivo está autorizado a acessar sua conta. Por favor, retorne ao aplicativo cliente.",
"pangolinCloud": "Nuvem do Pangolin",
"viewDevices": "Ver Dispositivos",
"viewDevicesDescription": "Gerencie seus dispositivos conectados",
@@ -2306,6 +2346,7 @@
"identifier": "Identifier",
"deviceLoginUseDifferentAccount": "Não é você? Use uma conta diferente.",
"deviceLoginDeviceRequestingAccessToAccount": "Um dispositivo está solicitando acesso a essa conta.",
+ "loginSelectAuthenticationMethod": "Selecione um método de autenticação para continuar.",
"noData": "Nenhum dado encontrado",
"machineClients": "Clientes de máquina",
"install": "Instale",
@@ -2394,5 +2435,92 @@
"maintenanceScreenTitle": "Serviço Temporariamente Indisponível",
"maintenanceScreenMessage": "Estamos enfrentando dificuldades técnicas no momento. Por favor, volte em breve.",
"maintenanceScreenEstimatedCompletion": "Conclusão Estimada:",
- "createInternalResourceDialogDestinationRequired": "Destino é obrigatório"
+ "createInternalResourceDialogDestinationRequired": "Destino é obrigatório",
+ "available": "Disponível",
+ "archived": "Arquivado",
+ "noArchivedDevices": "Nenhum dispositivo arquivado encontrado",
+ "deviceArchived": "Dispositivo arquivado",
+ "deviceArchivedDescription": "O dispositivo foi arquivado com sucesso.",
+ "errorArchivingDevice": "Erro ao arquivar dispositivo",
+ "failedToArchiveDevice": "Falha ao arquivar dispositivo",
+ "deviceQuestionArchive": "Tem certeza que deseja arquivar este dispositivo?",
+ "deviceMessageArchive": "O dispositivo será arquivado e removido da sua lista de dispositivos ativos.",
+ "deviceArchiveConfirm": "Arquivar dispositivo",
+ "archiveDevice": "Arquivar dispositivo",
+ "archive": "Arquivo",
+ "deviceUnarchived": "Dispositivo desarquivado",
+ "deviceUnarchivedDescription": "O dispositivo foi desarquivado com sucesso.",
+ "errorUnarchivingDevice": "Erro ao desarquivar dispositivo",
+ "failedToUnarchiveDevice": "Falha ao desarquivar dispositivo",
+ "unarchive": "Desarquivar",
+ "archiveClient": "Arquivar Cliente",
+ "archiveClientQuestion": "Tem certeza que deseja arquivar este cliente?",
+ "archiveClientMessage": "O cliente será arquivado e removido da sua lista de clientes ativos.",
+ "archiveClientConfirm": "Arquivar Cliente",
+ "blockClient": "Bloco do Cliente",
+ "blockClientQuestion": "Tem certeza que deseja bloquear este cliente?",
+ "blockClientMessage": "O dispositivo será forçado a desconectar se estiver conectado. Você pode desbloquear o dispositivo mais tarde.",
+ "blockClientConfirm": "Bloco do Cliente",
+ "active": "ativo",
+ "usernameOrEmail": "Usuário ou Email",
+ "selectYourOrganization": "Selecione sua organização",
+ "signInTo": "Iniciar sessão em",
+ "signInWithPassword": "Continuar com a senha",
+ "noAuthMethodsAvailable": "Nenhum método de autenticação disponível para esta organização.",
+ "enterPassword": "Digite sua senha",
+ "enterMfaCode": "Insira o código do seu aplicativo autenticador",
+ "securityKeyRequired": "Por favor, utilize sua chave de segurança para entrar.",
+ "needToUseAnotherAccount": "Precisa usar uma conta diferente?",
+ "loginLegalDisclaimer": "Ao clicar nos botões abaixo, você reconhece que leu, entende e concorda com os Termos de Serviço e a Política de Privacidade.",
+ "termsOfService": "Termos de Serviço",
+ "privacyPolicy": "Política de Privacidade",
+ "userNotFoundWithUsername": "Nenhum usuário encontrado com este nome de usuário.",
+ "verify": "Verificar",
+ "signIn": "Iniciar sessão",
+ "forgotPassword": "Esqueceu a senha?",
+ "orgSignInTip": "Se você já fez login antes, você pode digitar seu nome de usuário ou e-mail acima para autenticar com o provedor de identidade da sua organização. É mais fácil!",
+ "continueAnyway": "Continuar mesmo assim",
+ "dontShowAgain": "Não mostrar novamente",
+ "orgSignInNotice": "Você sabia?",
+ "signupOrgNotice": "Tentando fazer login?",
+ "signupOrgTip": "Você está tentando entrar através do provedor de identidade da sua organização?",
+ "signupOrgLink": "Faça login ou inscreva-se com sua organização em vez disso",
+ "verifyEmailLogInWithDifferentAccount": "Use uma Conta Diferente",
+ "logIn": "Iniciar sessão",
+ "deviceInformation": "Informações do dispositivo",
+ "deviceInformationDescription": "Informações sobre o dispositivo e o agente",
+ "platform": "Plataforma",
+ "macosVersion": "Versão do macOS",
+ "windowsVersion": "Versão do Windows",
+ "iosVersion": "Versão para iOS",
+ "androidVersion": "Versão do Android",
+ "osVersion": "Versão do SO",
+ "kernelVersion": "Versão do Kernel",
+ "deviceModel": "Modelo do dispositivo",
+ "serialNumber": "Número de Série",
+ "hostname": "Hostname",
+ "firstSeen": "Visto primeiro",
+ "lastSeen": "Visto por último",
+ "deviceSettingsDescription": "Ver informações e configurações do dispositivo",
+ "devicePendingApprovalDescription": "Este dispositivo está aguardando aprovação",
+ "deviceBlockedDescription": "Este dispositivo está bloqueado no momento. Ele não será capaz de se conectar a qualquer recurso a menos que seja desbloqueado.",
+ "unblockClient": "Desbloquear Cliente",
+ "unblockClientDescription": "O dispositivo foi desbloqueado",
+ "unarchiveClient": "Desarquivar Cliente",
+ "unarchiveClientDescription": "O dispositivo foi desarquivado",
+ "block": "Bloquear",
+ "unblock": "Desbloquear",
+ "deviceActions": "Ações do dispositivo",
+ "deviceActionsDescription": "Gerenciar status e acesso do dispositivo",
+ "devicePendingApprovalBannerDescription": "Este dispositivo está pendente de aprovação. Não será possível conectar-se a recursos até ser aprovado.",
+ "connected": "Conectado",
+ "disconnected": "Desconectado",
+ "approvalsEmptyStateTitle": "Aprovações do dispositivo não habilitado",
+ "approvalsEmptyStateDescription": "Habilitar aprovações do dispositivo para cargos que exigem aprovação do administrador antes que os usuários possam conectar novos dispositivos.",
+ "approvalsEmptyStateStep1Title": "Ir para Funções",
+ "approvalsEmptyStateStep1Description": "Navegue até as configurações dos papéis da sua organização para configurar as aprovações de dispositivo.",
+ "approvalsEmptyStateStep2Title": "Habilitar Aprovações do Dispositivo",
+ "approvalsEmptyStateStep2Description": "Editar uma função e habilitar a opção 'Exigir aprovação de dispositivos'. Usuários com essa função precisarão de aprovação de administrador para novos dispositivos.",
+ "approvalsEmptyStatePreviewDescription": "Pré-visualização: Quando ativado, solicitações de dispositivo pendentes aparecerão aqui para revisão",
+ "approvalsEmptyStateButtonText": "Gerir Funções"
}