diff --git a/e2e-tests/lemonldap-ng-ldap.ini b/e2e-tests/lemonldap-ng-ldap.ini index 787a4d499..936fc941f 100644 --- a/e2e-tests/lemonldap-ng-ldap.ini +++ b/e2e-tests/lemonldap-ng-ldap.ini @@ -16,7 +16,7 @@ ldapBindPassword = admin checkXSS = 0 portalSkin = bootstrap staticPrefix = /static -languages = fr, en, vi, it, ar, tr +languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro, tr, zh_TW, pt_BR templateDir = __pwd__/lemonldap-ng-portal/site/templates portalStatus = 1 ;totp2fActivation = 1 diff --git a/e2e-tests/lemonldap-ng-sql.ini b/e2e-tests/lemonldap-ng-sql.ini index 60f6587b9..a53dade9b 100644 --- a/e2e-tests/lemonldap-ng-sql.ini +++ b/e2e-tests/lemonldap-ng-sql.ini @@ -13,7 +13,7 @@ dbiChain = dbi:SQLite:dbname=__pwd__/e2e-tests/conf/config.db checkXSS = 0 portalSkin = bootstrap staticPrefix = /static -languages = fr, en, vi, it, ar, tr +languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro, tr, zh_TW, pt_BR templateDir = __pwd__/lemonldap-ng-portal/site/templates portalStatus = 1 ;totp2fActivation = 1 diff --git a/e2e-tests/lemonldap-ng.ini b/e2e-tests/lemonldap-ng.ini index eee392b88..a7bb6bb97 100644 --- a/e2e-tests/lemonldap-ng.ini +++ b/e2e-tests/lemonldap-ng.ini @@ -22,7 +22,7 @@ dirName=__pwd__/e2e-tests/conf checkXSS = 1 portalSkin = bootstrap staticPrefix = /static -languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro, tr, zh_TW +languages = fr, en, vi, it, ar, de, zh, nl, es, pt, ro, tr, zh_TW, pt_BR templateDir = __pwd__/lemonldap-ng-portal/site/templates portalStatus = 1 totp2fActivation = 1 diff --git a/lemonldap-ng-common/lemonldap-ng.ini b/lemonldap-ng-common/lemonldap-ng.ini index abad54bb9..c6acf3ff4 100644 --- a/lemonldap-ng-common/lemonldap-ng.ini +++ b/lemonldap-ng-common/lemonldap-ng.ini @@ -196,7 +196,7 @@ staticPrefix = __PORTALSTATICDIR__ templateDir = __PORTALTEMPLATESDIR__ ; languages: available languages for portal interface -languages = en, fr, vi, it, ar, de, fi, tr, pl, zh_TW, es +languages = en, fr, vi, it, ar, de, fi, tr, pl, zh_TW, es, pt_BR ; II - Optional parameters (overwrite configuration) diff --git a/lemonldap-ng-portal/site/htdocs/static/languages/pt_BR.json b/lemonldap-ng-portal/site/htdocs/static/languages/pt_BR.json new file mode 100644 index 000000000..812d31f74 --- /dev/null +++ b/lemonldap-ng-portal/site/htdocs/static/languages/pt_BR.json @@ -0,0 +1,338 @@ +{ +"2FDeviceNotFound":"Dispositivo 2F não encontrado", +"2fRegRequired":"Este serviço requer uma autenticação de fator duplo. Registre um dispositivo agora e volte para o portal.", +"PE0":"Usuário autenticado", +"PE1":"Sua conexão expirou. Você deve se autenticar novamente", +"PE10":"Certificado inválido", +"PE100":"A senha contém um caractere não permitido", +"PE101":"A senha contém caracteres não permitidos", +"PE102":"A sessão deve ser melhorada", +"PE103":"Nenhum segundo fator disponível para sua conta", +"PE104":"Arquivo gerenciador do DevOps inválido", +"PE105":"Arquivo não encontrado", +"PE106":"Erro durante a autenticação com o provedor OpenID", +"PE2":"Os campos de usuário e senha devem ser preenchidos", +"PE20":"Não há backend de senhas definido", +"PE21":"A sua conta está bloqueada", +"PE22":"A sua senha expirou", +"PE23":"Certificado requerido", +"PE24":"Erro", +"PE25":"A senha foi redefinida e agora precisa ser alterada", +"PE26":"A senha não pode ser modificada", +"PE27":"A senha antiga também deve ser fornecida ao definir uma nova senha", +"PE28":"Qualidade de senha insuficiente", +"PE29":"Senha muito curta", +"PE3":"Conta ou senha incorreta do gerenciador de diretório", +"PE30":"Senha muito nova", +"PE31":"Senha usada muito recentemente", +"PE32":"autenticações restantes, altere sua senha!", +"PE33":"%d dias, %d horas, %d minutos e %d segundos antes da expiração da senha. Altere-a!", +"PE34":"Senhas diferentes", +"PE35":"Senha alterada com sucesso", +"PE36":"Você tem uma nova mensagem", +"PE37":"URL inválida", +"PE38":"Nenhum esquema disponível", +"PE39":"Senha antiga inválida", +"PE4":"Usuário não encontrado no diretório", +"PE40":"Nome de usuário inválido", +"PE41":"Abertura de sessão não permitida", +"PE42":"Confirmação requerida", +"PE43":"Seu endereço de e-mail é mandatório", +"PE44":"A chave de confirmação é inválida ou muito antiga", +"PE45":"Ocorreu um erro ao enviar o email", +"PE46":"Um e-mail foi enviado", +"PE47":"Você foi desconectado", +"PE48":"Erro de SAML não definido", +"PE49":"Não é possível carregar o serviço SAML", +"PE5":"Credenciais incorretas", +"PE50":"Problema ao carregar um provedor de identidade", +"PE51":"Ocorreu um erro durante o logon único SAML", +"PE52":"Entidade SAML não é conhecida", +"PE53":"O destino da mensagem SAML não está correto", +"PE54":"As condições da mensagem SAML não estão respeitadas", +"PE55":"O logon único iniciado pelo provedor de identidade não está autorizado", +"PE56":"Ocorreu um erro durante o logout único SAML", +"PE57":"Erro no gerenciamento de assinatura de mensagem SAML", +"PE58":"Ocorreu um erro durante o uso do artefato SAML", +"PE59":"Erro de comunicação com sessões SAML", +"PE6":"Não foi possível conectar ao servidor LDAP", +"PE60":"Problema ao carregar um provedor de serviços", +"PE61":"Ocorreu um erro durante a troca de atributos SAML", +"PE62":"Esta é uma página de dispositivo OpenID", +"PE63":"Você tentou usar uma identidade de OpenID que não é sua", +"PE64":"Um atributo requerido não está disponível", +"PE65":"Federação proibida pela política de segurança", +"PE66":"O e-mail de confirmação já foi enviado", +"PE67":"O campo senha deve ser preenchido", +"PE68":"Acesso negado no serviço CAS", +"PE69":"Forneça seu endereço de e-mail por favor", +"PE7":"Erro anormal do servidor LDAP", +"PE70":"Nenhum usuário correspondente", +"PE71":"Forneça sua nova senha por favor", +"PE72":"Um e-mail de confirmação foi enviado", +"PE73":"A conexão Radius falhou", +"PE74":"A senha antiga é necessária", +"PE75":"Você veio de um endereço IP que não merece confiança", +"PE76":"Você falhou ao digitar o captcha", +"PE77":"Você deve digitar o captcha", +"PE78":"Por favor insira suas informações", +"PE79":"Falta uma informação", +"PE8":"Módulo Apache::Session falhou", +"PE80":"Este endereço já é usado", +"PE81":"Tentativa de autenticação inválida", +"PE82":"Tempo limite de autenticação excedido", +"PE83":"A verificação U2F falhou. Tente novamente ou entre em contato com seu administrador", +"PE84":"Você não está autorizado a acessar este host", +"PE85":"O site remoto pede uma sessão mais nova (e o plugin UpgradeSession não está carregado). Saia e tente novamente", +"PE86":"Sua conta está bloqueada. Você tem que esperar", +"PE87":"Você deve se autenticar novamente para acessar o Portal", +"PE88":"Sua conta deve ter um endereço de e-mail para usar a autenticação de fator duplo", +"PE89":"Acesso não concedido no serviço SAML", +"PE9":"Autentificação requerida", +"PE90":"Acesso não concedido no serviço OIDC", +"PE91":"Acesso não concedido no serviço OID", +"PE92":"Acesso não concedido no serviço GET", +"PE93":"Acesso não concedido no serviço IMPERSONATION", +"PE94":"Um atributo obrigatório não está disponível", +"PE95":"Acesso não concedido no serviço DECRYPT", +"PE96":"Código de verificação inválido", +"PE97":"Seu certificado é inválido ou expira em breve", +"PE98":"Selecione o seu novo certificado por favor", +"PE99":"Selecione o seu novo certificado por favor", +"SSOSessionInactive":"Sessão SSO inativa", +"UA":"Agente de usuário", +"VHnotFound":"Host Virtual não encontrado", +"accept":"Aceitar", +"accessDenied":"Você não tem autorização de acesso para este aplicativo", +"accountCreated":"Sua conta foi criada e sua senha temporária foi enviada para seu endereço de e-mail.", +"accountCreationSuccess":"Sua conta foi criada com sucesso.", +"action":"Ação", +"activeSessions":"Sessões SSO ativas", +"all":"Tudo", +"allowed":"Acesso PERMITIDO", +"anotherInformation":"Outra informação:", +"areYouSure":"Tem certeza?", +"askToRenew":"Este aplicativo precisa de uma autenticação mais recente. Você deseja reautenticar?", +"askToUpgrade":"Este aplicativo precisa de um nível de autenticação mais alto. Você deseja reautenticar?", +"attributes":"ATRIBUTOS", +"authLevel":"Nível de autenticação", +"authPortal":"Portal de autenticação", +"authRemaining":"%sautenticações restantes, altere sua senha!", +"autoAccept":"Aceitar automaticamente em 30 segundos", +"autoGlobalLogout":"Logout global automático em 30 segundos", +"back2CasUrl":"O aplicativo do qual você acabou de sair forneceu um link que gostaria que você seguisse", +"back2Portal":"Retorne para o portal", +"badCode":"Código inválido", +"badName":"Nome inválido", +"cancel":"Cancelar", +"captcha":"Captcha", +"certificateReset":"Redefinir meu certificado", +"changePwd":"Altere sua senha", +"checkDevOps":"Verifique o arquivo manipulador DevOps", +"checkLastLogins":"Verifique meus últimos logins", +"checkUser":"Verifique o perfil de SSO do usuário", +"checkUserComputedSession":"Nenhuma sessão SSO encontrada. Dados computados!", +"checkUserMerged":"Verifique o perfil de SSO do usuário. Alguns grupos SSO reais e falsos são mesclados!", +"checkUserNoSessionFound":"Nenhuma sessão SSO encontrada", +"choose2f":"Escolha o seu segundo fator", +"chooseApp":"Escolha um aplicativo ao qual você tem permissão para acessar", +"cipheredValue":"Valor cifrado", +"click2Reset":"Clique aqui para renovar a sua senha", +"clickHere":"Por favor, clique aqui", +"clickOnYubikey":"Clique no seu Yubikey", +"close":"Fechar", +"closeSSO":"Feche sua sessão SSO", +"code":"Código", +"confirmLinkSent":"Um link de confirmação foi enviado. Este link é válido até", +"confirmPwd":"Confirme a senha", +"confirmation":"Confirmação", +"connect":"Conecte", +"connectedAs":"Conecte como", +"contextSwitching_OFF":"Pare a personificação", +"contextSwitching_ON":"Personifique outro usuário", +"continue":"Continue", +"createAccount":"Criar uma conta", +"current":"Atual", +"currentPwd":"Senha atual", +"date":"Data", +"decryptCipheredValue":"Descriptografar um valor cifrado", +"enterCred":"Por favor insira suas credenciais", +"enterExt2fCode":"Um código foi enviado para você. Por favor o insira", +"enterMail2fCode":"Um código foi enviado para o seu endereço de e-mail. Por favor o insira", +"enterOpenIDLogin":"Por favor, entre com seu login OpenID", +"enterRadius2fCode":"Por favor, entre com seu código OTP", +"enterRest2fCode":"Por favor, entre com seu código OTP", +"enterTotpCode":"Entre com o código TOTP", +"enterYubikey":"Por favor, use seu Yubikey", +"errorMsg":"Mensagem de erro", +"expired2Fremoved":"%s dispositivos 2F expirados foram removidos (%s)!", +"explorer":"Explorador", +"ext2f":"Código de verificação", +"firstName":"Primeiro nome", +"forbidden":"Acesso PROIBIDO", +"forgotPwd":"Esqueceu sua senha?", +"generatePwd":"Gere a senha automaticamente", +"globalLogout":"Logout global", +"goToPortal":"Ir para o Portal", +"gotNewMessages":"Você tem algumas mensagens novas", +"gplSoft":"software livre coberto pela licença GPL", +"groups_sso":"GRUPOS SSO", +"headers":"CABEÇALHOS", +"hello":"Olá", +"hide":"Esconder", +"id":"Id", +"imSure":"Tenho certeza", +"info":"Informação", +"ipAddr":"Endereço IP", +"key":"Chave", +"lastFailedLogins":"Últimos logins com falha", +"lastFailedLoginsCaptionLabel":"Últimos logins com falha", +"lastLogins":"Últimos logins", +"lastLoginsCaptionLabel":"Últimos logins", +"lastName":"Último nome", +"linkValidUntil":"Esta mensagem contém um link para redefinir sua senha. Este link é válido até", +"linkValidUntilCertif":"Esta mensagem contém um link para redefinir seu certificado. Este link é válido até", +"login":"Login", +"loginHistory":"Histórico de login", +"logout":"Sair", +"logoutConfirm":"Você quer sair?", +"logoutFromOtherApp":"Sair de outros aplicativos ...", +"logoutFromSP":"Sair dos provedores de serviço ...", +"macros":"MACROS", +"mail":"Correio", +"mail2f":"Código do email", +"mailSent2":"Uma mensagem foi enviada para o seu endereço de e-mail.", +"maintenanceMode":"Este aplicativo está em manutenção. Por favor, tente conectar mais tarde", +"maxNumberof2FDevicesReached":"Número máximo de dispositivos 2F atingido!", +"missingCode":"Falta o código", +"myNotification":"Minha notificação aceita", +"myNotifications":"Minhas notificações aceitas", +"name":"Nome", +"newMessages":"Nova(s) mensagem(ns)", +"newPassword":"Nova senha", +"newPwdSentTo":"Uma confirmação foi enviada para o seu endereço de e-mail.", +"noHistory":"Esta é sua primeira conexão. Bem-vindo!", +"noNotification":"Nenhuma notificação aceita encontrada", +"noTOTPFound":"nenhum TOTP encontrado", +"noU2FKeyFound":"Nenhuma chave U2F encontrada", +"notAnEncryptedValue":"Não é um valor criptografado", +"notAuthorized":"Você não está autorizado a fazer isso", +"notAuthorizedAuthLevel":"Esta ação requer um nível de autenticação mais alto", +"notFound":"Não encontrado: você tentou acessar uma página indisponível", +"notificationNotFound":"Notificação não encontrada no banco de dados", +"notificationRetrieveFailed":"Não é possível recuperar notificação", +"notificationsExplorer":"Explorador de notificações", +"oidcConsent":"A aplicação %s gostaria de:", +"oidcConsents":"Consentimentos OIDC", +"oidcConsentsFull":"Consentimentos OpenID Connect", +"oneExpired2Fremoved":"Um dispositivo 2F expirado foi removido (%s)!", +"openIdExample":"Por exemplo:http://myopenid.org/toto", +"openSSOSession":"Abra sua sessão SSO", +"openSessionSpace":"Este espaço permite que você abra uma sessão SSO. Isso o ajudará a acessar com segurança todos os aplicativos autorizados pelo seu perfil.", +"openidAp":"Você concorda em fornecer os seguintes parâmetros?", +"openidExchange":"Você quer se autenticar em %s ?", +"openidPA":"A política de uso de dados está disponível em", +"openidRpns":"Parâmetro %s solicitado para federação não está disponível", +"otherSessions":"Outras sessões ativas", +"password":"Senha", +"passwordPolicy":"Por favor, respeite a seguinte política:", +"passwordPolicyMinDigit":"Mínimo de caracteres de dígitos:", +"passwordPolicyMinLower":"Mínimo de caracteres minúsculos:", +"passwordPolicyMinSize":"Tamanho mínimo:", +"passwordPolicyMinSpeChar":"Mínimo de caracteres especiais:", +"passwordPolicyMinUpper":"Mínimo de caracteres maiúsculos:", +"passwordPolicyNone":"Você é livre para escolher sua senha!", +"passwordPolicySpecialChar":"Caracteres especiais permitidos:", +"pasteHere":"Cole seu arquivo aqui…", +"ppGrace":"autenticações restantes. Altere sua senha!", +"proxyError":"Gateway inválido: não é possível ingressar no servidor remoto", +"pwd":"Senha", +"pwdChange":"Troca de senha", +"pwdChanged":"Sua senha foi alterada com sucesso!", +"pwdResetAlreadyIssued":"Uma solicitação de redefinição de senha já foi emitida em", +"pwdWillExpire":"%d dias, %d horas, %d minutos e %d segundos antes da expiração da senha. Altere-a!", +"radius2f":"Radius", +"redirectedFrom":"Você foi redirecionado de", +"redirectedIn":"Você será redirecionado em 30 segundos", +"redirectionInProgress":"Redirecionamento em progresso...", +"redirectionToIdp":"Redirecionamento para seu Provedor de Identidade", +"reference":"Referência", +"refreshrights":"Atualizar meus direitos", +"refuse":"Recusar", +"register":"Registrar", +"registerRequestAlreadyIssued":"Um pedido de registro para esta conta já foi emitido em", +"rememberChoice":"Lembre-se da minha escolha", +"remove2fWarning":"Esta operação não pode ser desfeita", +"removeOtherSessions":"Remover outras sessões", +"renewSession":"Renovar sessão", +"resendConfirmMail":"Reenviar e-mail de confirmação?", +"resentConfirm":"Você deseja que o e-mail de confirmação seja reenviado?", +"resetPwd":"Redefinir minha senha", +"rest2f":"Código de verificação", +"rightsReloadNeedsLogout":"Recarregamentos de direitos precisam que saia e faça login novamente", +"rules":"REGRAS", +"scope":"Escopo", +"search":"Pesquisa", +"searchAccount":"Pesquisar por conta", +"searchingForm":"Formulário de pesquisa", +"seconds":"segundos", +"selectIdP":"Selecione seu Provedor de Identidade", +"sendPwd":"Me envie um link", +"serverError":"O erro ocorre no servidor", +"service":"Serviço", +"serviceProvidedBy":"Serviço prestado por", +"sessionsDeleted":"As seguintes sessões foram encerradas", +"sfaManager":"Gerenciador 2ndFA", +"showhidePasswords":"Mostrar/Ocultar senhas", +"spoofId":"Id falsificado", +"startTime":"Data de criação", +"stayConnected":"Permanecer conectado neste dispositivo", +"submit":"Enviar", +"switchContext":"Trocar de contexto", +"totp2f":" App OTP", +"totpExistingKey":"Um dispositivo TOTP já está registrado. Você deve removê-lo antes de adicionar um novo dispositivo TOTP", +"totpMissingCode":"Insira o código fornecido pelo seu aplicativo TOTP", +"totpQrCode":"Leia este código QR em seu aplicativo TOTP", +"totpRegisterCode":"Insira o código fornecido pelo seu aplicativo", +"totpRegisterName":"Escolha um nome para este dispositivo TOTP", +"totpSecretKey":"Se o seu aplicativo TOTP não for compatível com códigos QR, digite a chave a seguir:", +"touchU2fDevice":"Por favor, toque no dispositivo U2F piscando agora.", +"touchU2fDeviceOrEnterTotp":"Por favor, toque no dispositivo U2F piscando ou insira o código TOTP.", +"type":"Tipo", +"u2f":"Chave U2F", +"u2fFailed":"A verificação U2F falhou. Tente novamente ou entre em contato com seu administrador", +"u2fPermission":"Você pode ser solicitado a permitir que o site acesse suas chaves de segurança. Após conceder permissão, o dispositivo começará a piscar.", +"u2fWelcome":"Gerenciamento de dispositivo U2F", +"unableToGetKey":"Não foi possível acessar sua chave. Tente novamente ou entre em contato com seu administrador", +"unknownAction":"Ação desconhecida", +"unregister":"Cancelar registro", +"updateCdc":"Atualizar Cookie de Domínio Comum", +"updateTime":"Data de atualização", +"upgradeSession":"Upgrade da sessão", +"useYubikey":"use seu Yubikey", +"user":"Usuário", +"utotp2f":"TOTP-ou-U2F", +"validationDate":"Data de validação", +"value":"Valor", +"verify":"Verificar", +"wait":"Espere", +"waitingmessage":"Autenticação em progresso. Por favor, aguarde", +"warning":"Aviso", +"welcomeOnPortal":"Bem-vindo ao seu portal de autenticação seguro.", +"yesResendMail":"Sim, reenvie o e-mail", +"yourAddress":"Saiba o seu endereço", +"yourApps":"Suas aplicações", +"yourEmail":"Saiba seu e-mail", +"yourIdentity":"Saiba sua identidade", +"yourIdentityIs":"Sua identidade é", +"yourKeyIsAlreadyRegistered":"Sua chave JÁ está registrada!", +"yourKeyIsRegistered":"Sua chave está registrada", +"yourKeyIsUnregistered":"Sua chave foi removida", +"yourKeyIsVerified":"Sua chave foi verificada", +"yourNewTotpKey":"Sua nova chave TOTP. Por favor, teste-a e digite o código", +"yourOffline":"Acesse sua conta enquanto estiver offline", +"yourPhone":"Saiba seu número de telefone", +"yourProfile":"Saiba o seu perfil", +"yourTotpKey":"Sua chave TOTP", +"yubikey2f":"Yubikey" +} \ No newline at end of file diff --git a/lemonldap-ng-portal/site/templates/common/mail/pt_BR.json b/lemonldap-ng-portal/site/templates/common/mail/pt_BR.json new file mode 100644 index 000000000..4c8a44203 --- /dev/null +++ b/lemonldap-ng-portal/site/templates/common/mail/pt_BR.json @@ -0,0 +1,27 @@ +{ +"resetCertificat":"Seu certificado foi redefinido", +"accountCreated":"Sua conta foi criada, e sua senha temporária foi enviada para o seu endereço de e-mail.", +"autoMail":"Este e-mail foi enviado automaticamente", +"click2Register":"Clique aqui para confirmar o cadastro da sua conta", +"click2Reset":"Clique aqui para renovar a sua senha", +"click2ResetCertificate":"Clique aqui para renovar o seu certificado", +"goToPortal":"Ir para o portal", +"hello":"Olá", +"host":"Anfitrião", +"location":"Localização", +"mail2fSubject":"[LemonLDAP::NG] Seu código de login", +"mailConfirmSubject":"[LemonLDAP::NG] Confirmação de troca de senha", +"mailSubject":"[LemonLDAP::NG] Sua nova senha", +"newLocationWarningMailBody":"Sua conta foi conectada de um novo local.", +"newLocationWarningMailSubject":"[LemonLDAP::NG] Login em um novo local", +"newPwdIs":"Sua nova senha é", +"pwdChanged":"Sua senha foi alterada.", +"pwdIs":"Sua senha é", +"registerConfirmSubject":"[LemonLDAP::NG] Confirmação de registro de conta", +"registerDoneSubject":"[LemonLDAP::NG] Sua nova conta", +"requestIssuedFromIP":"A solicitação foi emitida do IP", +"resetCertificateOK":"Seu certificado foi renovado com sucesso!", +"date":"Data", +"yourLoginCodeIs":"Seu código de login é", +"yourLoginIs":"Seu login é" +} \ No newline at end of file