diff --git a/frontend/src/i18n/translations/pt-BR.ts b/frontend/src/i18n/translations/pt-BR.ts
index 93d67cb..543eef0 100644
--- a/frontend/src/i18n/translations/pt-BR.ts
+++ b/frontend/src/i18n/translations/pt-BR.ts
@@ -11,19 +11,14 @@ export default {
"navbar.avatar.signout": "Terminar sessão",
// END navbar
// /
- "home.title":
- "Uma plataforma de compartilhamento de arquivos auto-hospedada.",
- "home.description":
- "Deseja realmente dar os seus arquivos pessoais na mão de terceiros como o WeTransfer?",
+ "home.title": "Uma plataforma de compartilhamento de arquivos auto-hospedada.",
+ "home.description": "Deseja realmente dar os seus arquivos pessoais na mão de terceiros como o WeTransfer?",
"home.bullet.a.name": "Auto-Hospedado",
- "home.bullet.a.description":
- "Hospede o Pingvin Share em sua própria máquina.",
+ "home.bullet.a.description": "Hospede o Pingvin Share em sua própria máquina.",
"home.bullet.b.name": "Privacidade",
- "home.bullet.b.description":
- "Seus arquivos são seus arquivos e nunca devem cair nas mãos de terceiros.",
+ "home.bullet.b.description": "Seus arquivos são seus arquivos e nunca devem cair nas mãos de terceiros.",
"home.bullet.c.name": "Sem limite de tamanho de arquivo irritante",
- "home.bullet.c.description":
- "Carregue os arquivos grandes que desejar. Apenas o seu disco rígido será o seu limite.",
+ "home.bullet.c.description": "Carregue os arquivos grandes que desejar. Apenas o seu disco rígido será o seu limite.",
"home.button.start": "Começar",
"home.button.source": "Código-fonte",
// END /
@@ -36,10 +31,8 @@ export default {
"signin.input.password": "Senha",
"signin.input.password.placeholder": "A sua senha",
"signin.button.submit": "Iniciar sessão",
- "signIn.notify.totp-required.title":
- "Autenticação de dois fatores necessária",
- "signIn.notify.totp-required.description":
- "Insira seu código de autenticação de dois fatores",
+ "signIn.notify.totp-required.title": "Autenticação de dois fatores necessária",
+ "signIn.notify.totp-required.description": "Insira seu código de autenticação de dois fatores",
// END /auth/signin
// /auth/signup
"signup.title": "Criar uma conta",
@@ -53,16 +46,13 @@ export default {
// END /auth/signup
// /auth/reset-password
"resetPassword.title": "Esqueceu a sua senha?",
- "resetPassword.description":
- "Insira o seu e-mail para redefinir a sua senha.",
- "resetPassword.notify.success":
- "Um e-mail foi enviado com um link para redefinir a sua senha.",
+ "resetPassword.description": "Insira o seu e-mail para redefinir a sua senha.",
+ "resetPassword.notify.success": "Um e-mail foi enviado com um link para redefinir a sua senha.",
"resetPassword.button.back": "Voltar para a página inicial",
"resetPassword.text.resetPassword": "Redefinir senha",
"resetPassword.text.enterNewPassword": "Digite uma nova senha",
"resetPassword.input.password": "Nova senha",
- "resetPassword.notify.passwordReset":
- "A sua senha foi redefinida com sucesso.",
+ "resetPassword.notify.passwordReset": "A sua senha foi redefinida com sucesso.",
// /account
"account.title": "A minha conta",
"account.card.info.title": "Informação sobre a conta",
@@ -74,10 +64,8 @@ export default {
"account.card.password.new": "Nova senha",
"account.notify.password.success": "Senha alterada com sucesso",
"account.card.security.title": "Segurança",
- "account.card.security.totp.enable.description":
- "Digite a sua senha atual para começar a habilitar o TOTP",
- "account.card.security.totp.disable.description":
- "Digite a sua senha atual para desabilitar o TOTP",
+ "account.card.security.totp.enable.description": "Digite a sua senha atual para começar a habilitar o TOTP",
+ "account.card.security.totp.disable.description": "Digite a sua senha atual para desabilitar o TOTP",
"account.card.security.totp.button.start": "Iniciar",
"account.modal.totp.title": "Habilitar TOTP",
"account.modal.totp.step1": "Passo 1: Adicionar o seu autenticador",
@@ -89,8 +77,7 @@ export default {
"account.notify.totp.disable": "TOTP desabilitado com sucesso",
"account.notify.totp.enable": "TOTP habilitado com sucesso",
"account.card.language.title": "Idioma",
- "account.card.language.description":
- "O projeto é traduzido pela comunidade. Alguns idiomas podem estar incompletos.",
+ "account.card.language.description": "O projeto é traduzido pela comunidade. Alguns idiomas podem estar incompletos.",
"account.card.color.title": "Esquema de cores",
// ThemeSwitcher.tsx
"account.theme.dark": "Escuro",
@@ -98,8 +85,7 @@ export default {
"account.theme.system": "Sistema",
"account.button.delete": "Excluir conta",
"account.modal.delete.title": "Excluir conta",
- "account.modal.delete.description":
- "Você realmente deseja excluir a sua conta, incluindo todos os seus compartilhamentos ativos?",
+ "account.modal.delete.description": "Você realmente deseja excluir a sua conta, incluindo todos os seus compartilhamentos ativos?",
// END /account
// /account/shares
"account.shares.title": "Meus compartilhamentos",
@@ -117,16 +103,13 @@ export default {
"account.shares.modal.share-informations": "Informações do compartilhamento",
"account.shares.modal.share-link": "Link do compartilhamento",
"account.shares.modal.delete.title": "Excluir o compartilhamento {share}",
- "account.shares.modal.delete.description":
- "Tem certeza que deseja excluir este compartilhamento?",
+ "account.shares.modal.delete.description": "Tem certeza que deseja excluir este compartilhamento?",
// END /account/shares
// /account/reverseShares
"account.reverseShares.title": "Compartilhamentos reversos",
- "account.reverseShares.description":
- "Um compartilhamento reverso permite gerar uma URL única que autoriza usuários externos criarem um compartilhamento.",
+ "account.reverseShares.description": "Um compartilhamento reverso permite gerar uma URL única que autoriza usuários externos criarem um compartilhamento.",
"account.reverseShares.title.empty": "Está vazio aqui 👀",
- "account.reverseShares.description.empty":
- "Você não tem nenhum compartilhamento reverso.",
+ "account.reverseShares.description.empty": "Você não tem nenhum compartilhamento reverso.",
// showCreateReverseShareModal.tsx
"account.reverseShares.modal.expiration.label": "Expiração",
"account.reverseShares.modal.expiration.minute-singular": "Minuto",
@@ -141,32 +124,23 @@ export default {
"account.reverseShares.modal.expiration.month-plural": "Meses",
"account.reverseShares.modal.expiration.year-singular": "Ano",
"account.reverseShares.modal.expiration.year-plural": "Anos",
- "account.reverseShares.modal.max-size.label":
- "Tamanho máximo do compartilhamento",
+ "account.reverseShares.modal.max-size.label": "Tamanho máximo do compartilhamento",
"account.reverseShares.modal.send-email": "Enviar notificação por e-mail",
- "account.reverseShares.modal.send-email.description":
- "Enviar uma notificação por e-mail quando um compartilhamento for criado com este link reverso.",
+ "account.reverseShares.modal.send-email.description": "Enviar uma notificação por e-mail quando um compartilhamento for criado com este link reverso.",
"account.reverseShares.modal.max-use.label": "Limite de uso",
- "account.reverseShares.modal.max-use.description":
- "A quantidade máxima de vezes que esta URL pode ser usada para criar um compartilhamento.",
- "account.reverseShare.never-expires":
- "Este compartilhamento reverso nunca irá expirar.",
- "account.reverseShare.expires-on":
- "Este compartilhamento reverso irá expirar em {expiration}.",
- "account.reverseShares.table.no-shares":
- "Nenhum compartilhamento criado ainda",
+ "account.reverseShares.modal.max-use.description": "A quantidade máxima de vezes que esta URL pode ser usada para criar um compartilhamento.",
+ "account.reverseShare.never-expires": "Este compartilhamento reverso nunca irá expirar.",
+ "account.reverseShare.expires-on": "Este compartilhamento reverso irá expirar em {expiration}.",
+ "account.reverseShares.table.no-shares": "Nenhum compartilhamento criado ainda",
"account.reverseShares.table.count.singular": "compartilhar",
"account.reverseShares.table.count.plural": "compartilhamentos",
"account.reverseShares.table.shares": "Compartilhamentos",
"account.reverseShares.table.remaining": "Usos restantes",
"account.reverseShares.table.max-size": "Tamanho máximo do compartilhamento",
"account.reverseShares.table.expires": "Expira em",
- "account.reverseShares.modal.reverse-share-link":
- "Link do compartilhamento reverso",
- "account.reverseShares.modal.delete.title":
- "Excluir o compartilhamento reverso",
- "account.reverseShares.modal.delete.description":
- "Você realmente deseja excluir este compartilhamento reverso? Se você o fizer, os compartilhamentos associados também serão excluídos.",
+ "account.reverseShares.modal.reverse-share-link": "Link do compartilhamento reverso",
+ "account.reverseShares.modal.delete.title": "Excluir o compartilhamento reverso",
+ "account.reverseShares.modal.delete.description": "Você realmente deseja excluir este compartilhamento reverso? Se você o fizer, os compartilhamentos associados também serão excluídos.",
// END /account/reverseShares
// /admin
"admin.title": "Administração",
@@ -184,46 +158,36 @@ export default {
"admin.users.edit.update.change-password.title": "Alterar senha",
"admin.users.edit.update.change-password.field": "Nova senha",
"admin.users.edit.update.change-password.button": "Salvar nova senha",
- "admin.users.edit.update.notify.password.success":
- "Senha alterada com sucesso",
+ "admin.users.edit.update.notify.password.success": "Senha alterada com sucesso",
"admin.users.edit.delete.title": "Excluir usuário {username}",
- "admin.users.edit.delete.description":
- "Você realmente quer excluir este usuário e todos os seus compartilhamentos?",
+ "admin.users.edit.delete.description": "Você realmente quer excluir este usuário e todos os seus compartilhamentos?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Criar usuário",
"admin.users.modal.create.username": "Nome do usuário",
"admin.users.modal.create.email": "E-mail",
"admin.users.modal.create.password": "Senha",
"admin.users.modal.create.manual-password": "Definir senha manualmente",
- "admin.users.modal.create.manual-password.description":
- "Se não estiver marcado, o usuário receberá um e-mail com um link para definir sua senha.",
+ "admin.users.modal.create.manual-password.description": "Se não estiver marcado, o usuário receberá um e-mail com um link para definir sua senha.",
"admin.users.modal.create.admin": "Privilégios de administrador",
- "admin.users.modal.create.admin.description":
- "Se marcado, o usuário poderá acessar o painel de administração.",
+ "admin.users.modal.create.admin.description": "Se marcado, o usuário poderá acessar o painel de administração.",
// END /admin/users
// /upload
- "upload.title": "Upload",
- "upload.notify.generic-error":
- "Ocorreu um erro ao terminar seu compartilhamento.",
- "upload.notify.count-failed":
- "Falha ao enviar {count} arquivos. Tentando novamente.",
+ "upload.title": "Carregar",
+ "upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
+ "upload.notify.count-failed": "Falha ao enviar {count} arquivos. Tentando novamente.",
// Dropzone.tsx
- "upload.dropzone.title": "Upload de arquivos",
- "upload.dropzone.description":
- "Arraste os arquivos aqui para iniciar o seu compartilhamento. Podemos aceitar apenas arquivos que são menores que {maxSize} no total.",
- "upload.dropzone.notify.file-too-big":
- "Seus arquivos excedem o tamanho máximo do compartilhamento {maxSize}.",
+ "upload.dropzone.title": "Carregar arquivos",
+ "upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Podemos aceitar apenas arquivos que são menores que {maxSize} no total.",
+ "upload.dropzone.notify.file-too-big": "Seus arquivos excedem o tamanho máximo do compartilhamento {maxSize}.",
// FileList.tsx
"upload.filelist.name": "Nome",
"upload.filelist.size": "Tamanho",
// showCreateUploadModal.tsx
"upload.modal.title": "Criar Compartilhamento",
- "upload.modal.link.error.invalid":
- "Pode conter apenas letras, números, sublinhados e hífens",
+ "upload.modal.link.error.invalid": "Pode conter apenas letras, números, sublinhados e hífens",
"upload.modal.link.error.taken": "Este link já está em uso",
"upload.modal.not-signed-in": "Você não está conectado",
- "upload.modal.not-signed-in-description":
- "Você não poderá excluir seu compartilhamento manualmente e visualizar a contagem de visitantes.",
+ "upload.modal.not-signed-in-description": "Você não poderá excluir seu compartilhamento manualmente e visualizar a contagem de visitantes.",
"upload.modal.expires.never": "nunca",
"upload.modal.expires.never-long": "Nunca expira",
"upload.modal.link.label": "Link",
@@ -241,11 +205,9 @@ export default {
"upload.modal.expires.year-singular": "Ano",
"upload.modal.expires.year-plural": "Anos",
"upload.modal.accordion.description.title": "Descrição",
- "upload.modal.accordion.description.placeholder":
- "Nota para os destinatários deste compartilhamento",
+ "upload.modal.accordion.description.placeholder": "Nota para os destinatários deste compartilhamento",
"upload.modal.accordion.email.title": "Destinatários de e-mail",
- "upload.modal.accordion.email.placeholder":
- "Insira os destinatários do e-mail",
+ "upload.modal.accordion.email.placeholder": "Insira os destinatários do e-mail",
"upload.modal.accordion.email.invalid-email": "Endereço de e-mail inválido",
"upload.modal.accordion.security.title": "Opções de segurança",
"upload.modal.accordion.security.password.label": "Protecção por senha",
@@ -253,37 +215,29 @@ export default {
"upload.modal.accordion.security.max-views.label": "Máximo de visualizações",
"upload.modal.accordion.security.max-views.placeholder": "Sem limite",
// showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires":
- "Este compartilhamento reverso nunca irá expirar.",
- "upload.modal.completed.expires-on":
- "Este compartilhamento reverso irá expirar em {expiration}.",
+ "upload.modal.completed.never-expires": "Este compartilhamento reverso nunca irá expirar.",
+ "upload.modal.completed.expires-on": "Este compartilhamento reverso irá expirar em {expiration}.",
"upload.modal.completed.share-ready": "Compartilhamento pronto",
// END /upload
// /share/[id]
"share.title": "Compartilhar {shareId}",
"share.description": "Veja o que eu compartilhei com você!",
"share.error.visitor-limit-exceeded.title": "Limite de visitantes excedido",
- "share.error.visitor-limit-exceeded.description":
- "O limite de visitantes deste compartilhamento foi excedido.",
+ "share.error.visitor-limit-exceeded.description": "O limite de visitantes deste compartilhamento foi excedido.",
"share.error.removed.title": "Compartilhamento removido",
"share.error.not-found.title": "Compartilhamento não encontrado",
- "share.error.not-found.description":
- "O compartilhamento que você procura não existe.",
+ "share.error.not-found.description": "O compartilhamento que você procura não existe.",
"share.modal.password.title": "Senha necessária",
- "share.modal.password.description":
- "Para acessar este compartilhamento, por favor digite a senha para o compartilhamento.",
+ "share.modal.password.description": "Para acessar este compartilhamento, por favor digite a senha para o compartilhamento.",
"share.modal.password": "Senha",
"share.modal.error.invalid-password": "Senha inválida",
"share.button.download-all": "Transferir tudo",
- "share.notify.download-all-preparing":
- "O compartilhamento está sendo preparado. Tente novamente em alguns minutos.",
+ "share.notify.download-all-preparing": "O compartilhamento está sendo preparado. Tente novamente em alguns minutos.",
"share.modal.file-link": "Link do arquivo",
"share.table.name": "Nome",
"share.table.size": "Tamanho",
- "share.modal.file-preview.error.not-supported.title":
- "Visualização não suportada",
- "share.modal.file-preview.error.not-supported.description":
- "Uma visualização para este tipo de arquivo não é suportada. Faça o download do arquivo para visualizá-lo.",
+ "share.modal.file-preview.error.not-supported.title": "Visualização não suportada",
+ "share.modal.file-preview.error.not-supported.description": "Uma visualização para este tipo de arquivo não é suportada. Faça o download do arquivo para visualizá-lo.",
// END /share/[id]
// /admin/config
"admin.config.title": "Configuração",
@@ -294,71 +248,46 @@ export default {
"admin.config.general.app-name": "Nome da aplicação",
"admin.config.general.app-name.description": "Nome da aplicação",
"admin.config.general.app-url": "URL do Aplicativo",
- "admin.config.general.app-url.description":
- "Em qual URL o Pingvin Share está disponível",
+ "admin.config.general.app-url.description": "Em qual URL o Pingvin Share está disponível",
"admin.config.general.show-home-page": "Mostrar a página inicial",
- "admin.config.general.show-home-page.description":
- "Mostrar ou não a página inicial",
+ "admin.config.general.show-home-page.description": "Mostrar ou não a página inicial",
"admin.config.general.logo": "Logo",
- "admin.config.general.logo.description":
- "Alterar o seu logo carregando uma nova imagem. A imagem deve ser PNG e deve ter o formato 1:1.",
+ "admin.config.general.logo.description": "Alterar o seu logo carregando uma nova imagem. A imagem deve ser PNG e deve ter o formato 1:1.",
"admin.config.general.logo.placeholder": "Escolhe uma imagem",
- "admin.config.email.enable-share-email-recipients":
- "Ativar compartilhamento de e-mails destinatários",
- "admin.config.email.enable-share-email-recipients.description":
- "Se quiser permitir que e-mails compartilhem destinatários. Apenas habilite isso se você tiver ativado o SMTP.",
- "admin.config.email.share-recipients-subject":
- "Assunto dos destinatários do compartilhamento",
- "admin.config.email.share-recipients-subject.description":
- "Assunto do e-mail enviado para os destinatários do compartilhamento.",
- "admin.config.email.share-recipients-message":
- "Assunto dos destinatários do compartilhamento",
- "admin.config.email.share-recipients-message.description":
- "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
- "admin.config.email.reverse-share-subject":
- "Assunto do compartilhamento reverso",
- "admin.config.email.reverse-share-subject.description":
- "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
- "admin.config.email.reverse-share-message":
- "Mensagem do compartilhamento reverso",
- "admin.config.email.reverse-share-message.description":
- "Mensagem enviada quando alguém criou um compartilhamento com o link reverso. {shareUrl} será substituído pelo nome do criador e pela URL de compartilhamento.",
+ "admin.config.email.enable-share-email-recipients": "Ativar compartilhamento de e-mails destinatários",
+ "admin.config.email.enable-share-email-recipients.description": "Se quiser permitir que e-mails compartilhem destinatários. Apenas habilite isso se você tiver ativado o SMTP.",
+ "admin.config.email.share-recipients-subject": "Assunto dos destinatários do compartilhamento",
+ "admin.config.email.share-recipients-subject.description": "Assunto do e-mail enviado para os destinatários do compartilhamento.",
+ "admin.config.email.share-recipients-message": "Assunto dos destinatários do compartilhamento",
+ "admin.config.email.share-recipients-message.description": "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
+ "admin.config.email.reverse-share-subject": "Assunto do compartilhamento reverso",
+ "admin.config.email.reverse-share-subject.description": "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
+ "admin.config.email.reverse-share-message": "Mensagem do compartilhamento reverso",
+ "admin.config.email.reverse-share-message.description": "Mensagem enviada quando alguém criou um compartilhamento com o link reverso. {shareUrl} será substituído pelo nome do criador e pela URL de compartilhamento.",
"admin.config.email.reset-password-subject": "Redefinir assunto da senha",
- "admin.config.email.reset-password-subject.description":
- "Assunto do e-mail enviado quando um usuário solicita uma redefinição de senha.",
- "admin.config.email.reset-password-message":
- "Mensagem de redefinição de senha",
- "admin.config.email.reset-password-message.description":
- "Mensagem enviada quando um usuário solicita uma redefinição de senha. {url} será substituído pela URL de redefinição de senha.",
+ "admin.config.email.reset-password-subject.description": "Assunto do e-mail enviado quando um usuário solicita uma redefinição de senha.",
+ "admin.config.email.reset-password-message": "Mensagem de redefinição de senha",
+ "admin.config.email.reset-password-message.description": "Mensagem enviada quando um usuário solicita uma redefinição de senha. {url} será substituído pela URL de redefinição de senha.",
"admin.config.email.invite-subject": "Assunto do convite",
- "admin.config.email.invite-subject.description":
- "Assunto do e-mail enviado quando um administrador convida um usuário.",
+ "admin.config.email.invite-subject.description": "Assunto do e-mail enviado quando um administrador convida um usuário.",
"admin.config.email.invite-message": "Mensagem de convite",
- "admin.config.email.invite-message.description":
- "Mensagem enviada quando um administrador convida um usuário. {url} será substituído pelo URL de convite e {password} pela senha.",
+ "admin.config.email.invite-message.description": "Mensagem enviada quando um administrador convida um usuário. {url} será substituído pelo URL de convite e {password} pela senha.",
"admin.config.share.allow-registration": "Permitir novos registos",
- "admin.config.share.allow-registration.description":
- "Se o registro é permitido",
- "admin.config.share.allow-unauthenticated-shares":
- "Permitir compartilhamentos sem autenticação",
- "admin.config.share.allow-unauthenticated-shares.description":
- "Se usuários não autenticados podem criar compartilhamentos",
+ "admin.config.share.allow-registration.description": "Se o registro é permitido",
+ "admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
+ "admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
"admin.config.share.max-size": "Tamanho máximo",
- "admin.config.share.max-size.description":
- "Tamanho máximo do compartilhamento em bytes",
+ "admin.config.share.max-size.description": "Tamanho máximo do compartilhamento em bytes",
"admin.config.share.zip-compression-level": "Nível de compressão",
- "admin.config.share.zip-compression-level.description":
- "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ",
+ "admin.config.share.zip-compression-level.description": "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ",
"admin.config.smtp.enabled": "Ativado",
- "admin.config.smtp.enabled.description":
- "Se o SMTP está habilitado. Apenas defina como verdadeiro se você digitou o host, porta, e-mail, usuário e senha do seu servidor SMTP.",
+ "admin.config.smtp.enabled.description": "Se o SMTP está habilitado. Apenas defina como verdadeiro se você digitou o host, porta, e-mail, usuário e senha do seu servidor SMTP.",
"admin.config.smtp.host": "Servidor",
"admin.config.smtp.host.description": "Nome do Servidor SMTP",
"admin.config.smtp.port": "Porta",
"admin.config.smtp.port.description": "Porta do Servidor SMTP",
"admin.config.smtp.email": "E-mail",
- "admin.config.smtp.email.description":
- "Endereço de e-mail do qual os e-mails são enviados",
+ "admin.config.smtp.email.description": "Endereço de e-mail do qual os e-mails são enviados",
"admin.config.smtp.username": "Nome do usuário",
"admin.config.smtp.username.description": "Nome de usuário do servidor SMTP",
"admin.config.smtp.password": "Senha",
@@ -390,5 +319,5 @@ export default {
"common.error.too-long": "Deve ter no máximo {length} caracteres",
"common.error.exact-length": "Deve ter exatamente {length} caracteres",
"common.error.invalid-number": "Tem que ser um número",
- "common.error.field-required": "Este campo é obrigatório",
-};
+ "common.error.field-required": "Este campo é obrigatório"
+};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/pt-PT.ts b/frontend/src/i18n/translations/pt-PT.ts
new file mode 100644
index 0000000..595a4e5
--- /dev/null
+++ b/frontend/src/i18n/translations/pt-PT.ts
@@ -0,0 +1,323 @@
+export default {
+ // Navbar
+ "navbar.upload": "Carregar",
+ "navbar.signin": "Iniciar sessão",
+ "navbar.home": "Início",
+ "navbar.signup": "Registar-se",
+ "navbar.links.shares": "Meus compartilhamentos",
+ "navbar.links.reverse": "Compartilhamentos reversos",
+ "navbar.avatar.account": "Minha conta",
+ "navbar.avatar.admin": "Administração",
+ "navbar.avatar.signout": "Terminar sessão",
+ // END navbar
+ // /
+ "home.title": "Uma plataforma de compartilhamento de arquivos auto-hospedada.",
+ "home.description": "Deseja realmente dar os seus arquivos pessoais na mão de terceiros como o WeTransfer?",
+ "home.bullet.a.name": "Auto-Hospedado",
+ "home.bullet.a.description": "Hospede o Pingvin Share em sua própria máquina.",
+ "home.bullet.b.name": "Privacidade",
+ "home.bullet.b.description": "Seus arquivos são seus arquivos e nunca devem cair nas mãos de terceiros.",
+ "home.bullet.c.name": "Sem limite de tamanho de arquivo irritante",
+ "home.bullet.c.description": "Carregue os arquivos grandes que desejar. Apenas o seu disco rígido será o seu limite.",
+ "home.button.start": "Começar",
+ "home.button.source": "Código-fonte",
+ // END /
+ // /auth/signin
+ "signin.title": "Bem-vindo de volta",
+ "signin.description": "Ainda não tem uma conta?",
+ "signin.button.signup": "Registo",
+ "signin.input.email-or-username": "Correio ou Nome de utilizador",
+ "signin.input.email-or-username.placeholder": "Seu e-mail ou nome de usuário",
+ "signin.input.password": "Senha",
+ "signin.input.password.placeholder": "A sua senha",
+ "signin.button.submit": "Iniciar sessão",
+ "signIn.notify.totp-required.title": "Autenticação de dois fatores necessária",
+ "signIn.notify.totp-required.description": "Insira seu código de autenticação de dois fatores",
+ // END /auth/signin
+ // /auth/signup
+ "signup.title": "Criar uma conta",
+ "signup.description": "Já tem uma conta?",
+ "signup.button.signin": "Iniciar sessão",
+ "signup.input.username": "Utilizador",
+ "signup.input.username.placeholder": "Seu nome de usuário",
+ "signup.input.email": "E-mail",
+ "signup.input.email.placeholder": "Seu e-mail",
+ "signup.button.submit": "Vamos começar",
+ // END /auth/signup
+ // /auth/reset-password
+ "resetPassword.title": "Esqueceu a sua senha?",
+ "resetPassword.description": "Insira o seu e-mail para redefinir a sua senha.",
+ "resetPassword.notify.success": "Um e-mail foi enviado com um link para redefinir a sua senha.",
+ "resetPassword.button.back": "Voltar para a página inicial",
+ "resetPassword.text.resetPassword": "Redefinir senha",
+ "resetPassword.text.enterNewPassword": "Digite uma nova senha",
+ "resetPassword.input.password": "Nova senha",
+ "resetPassword.notify.passwordReset": "A sua senha foi redefinida com sucesso.",
+ // /account
+ "account.title": "A minha conta",
+ "account.card.info.title": "Informação sobre a conta",
+ "account.card.info.username": "Nome do usuário",
+ "account.card.info.email": "E-mail",
+ "account.notify.info.success": "A conta foi atualizada com sucesso",
+ "account.card.password.title": "Senha",
+ "account.card.password.old": "Senha antiga",
+ "account.card.password.new": "Nova senha",
+ "account.notify.password.success": "Senha alterada com sucesso",
+ "account.card.security.title": "Segurança",
+ "account.card.security.totp.enable.description": "Digite a sua senha atual para começar a habilitar o TOTP",
+ "account.card.security.totp.disable.description": "Digite a sua senha atual para desabilitar o TOTP",
+ "account.card.security.totp.button.start": "Iniciar",
+ "account.modal.totp.title": "Habilitar TOTP",
+ "account.modal.totp.step1": "Passo 1: Adicionar o seu autenticador",
+ "account.modal.totp.step2": "Passo 2: Valide o seu código",
+ "account.modal.totp.enterManually": "Inserir manualmente",
+ "account.modal.totp.code": "Código",
+ "account.modal.totp.clickToCopy": "Clique para copiar",
+ "account.modal.totp.verify": "Verificar",
+ "account.notify.totp.disable": "TOTP desabilitado com sucesso",
+ "account.notify.totp.enable": "TOTP habilitado com sucesso",
+ "account.card.language.title": "Idioma",
+ "account.card.language.description": "O projeto é traduzido pela comunidade. Alguns idiomas podem estar incompletos.",
+ "account.card.color.title": "Esquema de cores",
+ // ThemeSwitcher.tsx
+ "account.theme.dark": "Escuro",
+ "account.theme.light": "Claro",
+ "account.theme.system": "Sistema",
+ "account.button.delete": "Excluir conta",
+ "account.modal.delete.title": "Excluir conta",
+ "account.modal.delete.description": "Você realmente deseja excluir a sua conta, incluindo todos os seus compartilhamentos ativos?",
+ // END /account
+ // /account/shares
+ "account.shares.title": "Meus compartilhamentos",
+ "account.shares.title.empty": "Está vazio aqui 👀",
+ "account.shares.description.empty": "Você não tem nenhum compartilhamento.",
+ "account.shares.button.create": "Crie um",
+ "account.shares.info.title": "Informações do compartilhamento",
+ "account.shares.table.id": "ID",
+ "account.shares.table.name": "Nome",
+ "account.shares.table.description": "Descrição",
+ "account.shares.table.visitors": "Visitantes",
+ "account.shares.table.expiresAt": "Expira em",
+ "account.shares.table.createdAt": "Criado em",
+ "account.shares.table.size": "Tamanho",
+ "account.shares.modal.share-informations": "Informações do compartilhamento",
+ "account.shares.modal.share-link": "Link do compartilhamento",
+ "account.shares.modal.delete.title": "Excluir o compartilhamento {share}",
+ "account.shares.modal.delete.description": "Tem certeza que deseja excluir este compartilhamento?",
+ // END /account/shares
+ // /account/reverseShares
+ "account.reverseShares.title": "Compartilhamentos reversos",
+ "account.reverseShares.description": "Um compartilhamento reverso permite gerar uma URL única que autoriza usuários externos criarem um compartilhamento.",
+ "account.reverseShares.title.empty": "Está vazio aqui 👀",
+ "account.reverseShares.description.empty": "Você não tem nenhum compartilhamento reverso.",
+ // showCreateReverseShareModal.tsx
+ "account.reverseShares.modal.expiration.label": "Expiração",
+ "account.reverseShares.modal.expiration.minute-singular": "Minuto",
+ "account.reverseShares.modal.expiration.minute-plural": "Minutos",
+ "account.reverseShares.modal.expiration.hour-singular": "Hora",
+ "account.reverseShares.modal.expiration.hour-plural": "Horas",
+ "account.reverseShares.modal.expiration.day-singular": "Dia",
+ "account.reverseShares.modal.expiration.day-plural": "Dias",
+ "account.reverseShares.modal.expiration.week-singular": "Semana",
+ "account.reverseShares.modal.expiration.week-plural": "Semanas",
+ "account.reverseShares.modal.expiration.month-singular": "Mês",
+ "account.reverseShares.modal.expiration.month-plural": "Meses",
+ "account.reverseShares.modal.expiration.year-singular": "Ano",
+ "account.reverseShares.modal.expiration.year-plural": "Anos",
+ "account.reverseShares.modal.max-size.label": "Tamanho máximo do compartilhamento",
+ "account.reverseShares.modal.send-email": "Enviar notificação por e-mail",
+ "account.reverseShares.modal.send-email.description": "Enviar uma notificação por e-mail quando um compartilhamento for criado com este link reverso.",
+ "account.reverseShares.modal.max-use.label": "Limite de uso",
+ "account.reverseShares.modal.max-use.description": "A quantidade máxima de vezes que esta URL pode ser usada para criar um compartilhamento.",
+ "account.reverseShare.never-expires": "Este compartilhamento reverso nunca irá expirar.",
+ "account.reverseShare.expires-on": "Este compartilhamento reverso irá expirar em {expiration}.",
+ "account.reverseShares.table.no-shares": "Nenhum compartilhamento criado ainda",
+ "account.reverseShares.table.count.singular": "compartilhar",
+ "account.reverseShares.table.count.plural": "compartilhamentos",
+ "account.reverseShares.table.shares": "Compartilhamentos",
+ "account.reverseShares.table.remaining": "Usos restantes",
+ "account.reverseShares.table.max-size": "Tamanho máximo do compartilhamento",
+ "account.reverseShares.table.expires": "Expira em",
+ "account.reverseShares.modal.reverse-share-link": "Link do compartilhamento reverso",
+ "account.reverseShares.modal.delete.title": "Excluir o compartilhamento reverso",
+ "account.reverseShares.modal.delete.description": "Você realmente deseja excluir este compartilhamento reverso? Se você o fizer, os compartilhamentos associados também serão excluídos.",
+ // END /account/reverseShares
+ // /admin
+ "admin.title": "Administração",
+ "admin.button.users": "Gerenciamento de usuários",
+ "admin.button.config": "Configuração",
+ "admin.version": "Versão",
+ // END /admin
+ // /admin/users
+ "admin.users.title": "Gerenciamento de usuários",
+ "admin.users.table.username": "Nome do usuário",
+ "admin.users.table.email": "E-mail",
+ "admin.users.table.admin": "Admin",
+ "admin.users.edit.update.title": "Atualizar usuário {username}",
+ "admin.users.edit.update.admin-privileges": "Privilégios de administrador",
+ "admin.users.edit.update.change-password.title": "Alterar senha",
+ "admin.users.edit.update.change-password.field": "Nova senha",
+ "admin.users.edit.update.change-password.button": "Salvar nova senha",
+ "admin.users.edit.update.notify.password.success": "Senha alterada com sucesso",
+ "admin.users.edit.delete.title": "Excluir usuário {username}",
+ "admin.users.edit.delete.description": "Você realmente quer excluir este usuário e todos os seus compartilhamentos?",
+ // showCreateUserModal.tsx
+ "admin.users.modal.create.title": "Criar usuário",
+ "admin.users.modal.create.username": "Nome do usuário",
+ "admin.users.modal.create.email": "E-mail",
+ "admin.users.modal.create.password": "Senha",
+ "admin.users.modal.create.manual-password": "Definir senha manualmente",
+ "admin.users.modal.create.manual-password.description": "Se não estiver marcado, o usuário receberá um e-mail com um link para definir sua senha.",
+ "admin.users.modal.create.admin": "Privilégios de administrador",
+ "admin.users.modal.create.admin.description": "Se marcado, o usuário poderá acessar o painel de administração.",
+ // END /admin/users
+ // /upload
+ "upload.title": "Upload",
+ "upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
+ "upload.notify.count-failed": "Falha ao enviar {count} arquivos. Tentando novamente.",
+ // Dropzone.tsx
+ "upload.dropzone.title": "Upload de arquivos",
+ "upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Podemos aceitar apenas arquivos que são menores que {maxSize} no total.",
+ "upload.dropzone.notify.file-too-big": "Seus arquivos excedem o tamanho máximo do compartilhamento {maxSize}.",
+ // FileList.tsx
+ "upload.filelist.name": "Nome",
+ "upload.filelist.size": "Tamanho",
+ // showCreateUploadModal.tsx
+ "upload.modal.title": "Criar Compartilhamento",
+ "upload.modal.link.error.invalid": "Pode conter apenas letras, números, sublinhados e hífens",
+ "upload.modal.link.error.taken": "Este link já está em uso",
+ "upload.modal.not-signed-in": "Você não está conectado",
+ "upload.modal.not-signed-in-description": "Você não poderá excluir seu compartilhamento manualmente e visualizar a contagem de visitantes.",
+ "upload.modal.expires.never": "nunca",
+ "upload.modal.expires.never-long": "Nunca expira",
+ "upload.modal.link.label": "Link",
+ "upload.modal.expires.label": "Expiração",
+ "upload.modal.expires.minute-singular": "Minuto",
+ "upload.modal.expires.minute-plural": "Minutos",
+ "upload.modal.expires.hour-singular": "Hora",
+ "upload.modal.expires.hour-plural": "Horas",
+ "upload.modal.expires.day-singular": "Dia",
+ "upload.modal.expires.day-plural": "Dias",
+ "upload.modal.expires.week-singular": "Semana",
+ "upload.modal.expires.week-plural": "Semanas",
+ "upload.modal.expires.month-singular": "Mês",
+ "upload.modal.expires.month-plural": "Meses",
+ "upload.modal.expires.year-singular": "Ano",
+ "upload.modal.expires.year-plural": "Anos",
+ "upload.modal.accordion.description.title": "Descrição",
+ "upload.modal.accordion.description.placeholder": "Nota para os destinatários deste compartilhamento",
+ "upload.modal.accordion.email.title": "Destinatários de e-mail",
+ "upload.modal.accordion.email.placeholder": "Insira os destinatários do e-mail",
+ "upload.modal.accordion.email.invalid-email": "Endereço de e-mail inválido",
+ "upload.modal.accordion.security.title": "Opções de segurança",
+ "upload.modal.accordion.security.password.label": "Protecção por senha",
+ "upload.modal.accordion.security.password.placeholder": "Sem senha",
+ "upload.modal.accordion.security.max-views.label": "Máximo de visualizações",
+ "upload.modal.accordion.security.max-views.placeholder": "Sem limite",
+ // showCompletedUploadModal.tsx
+ "upload.modal.completed.never-expires": "Este compartilhamento reverso nunca irá expirar.",
+ "upload.modal.completed.expires-on": "Este compartilhamento reverso irá expirar em {expiration}.",
+ "upload.modal.completed.share-ready": "Compartilhamento pronto",
+ // END /upload
+ // /share/[id]
+ "share.title": "Compartilhar {shareId}",
+ "share.description": "Veja o que eu compartilhei com você!",
+ "share.error.visitor-limit-exceeded.title": "Limite de visitantes excedido",
+ "share.error.visitor-limit-exceeded.description": "O limite de visitantes deste compartilhamento foi excedido.",
+ "share.error.removed.title": "Compartilhamento removido",
+ "share.error.not-found.title": "Compartilhamento não encontrado",
+ "share.error.not-found.description": "O compartilhamento que você procura não existe.",
+ "share.modal.password.title": "Senha necessária",
+ "share.modal.password.description": "Para acessar este compartilhamento, por favor digite a senha para o compartilhamento.",
+ "share.modal.password": "Senha",
+ "share.modal.error.invalid-password": "Senha inválida",
+ "share.button.download-all": "Transferir tudo",
+ "share.notify.download-all-preparing": "O compartilhamento está sendo preparado. Tente novamente em alguns minutos.",
+ "share.modal.file-link": "Link do arquivo",
+ "share.table.name": "Nome",
+ "share.table.size": "Tamanho",
+ "share.modal.file-preview.error.not-supported.title": "Visualização não suportada",
+ "share.modal.file-preview.error.not-supported.description": "Uma visualização para este tipo de arquivo não é suportada. Faça o download do arquivo para visualizá-lo.",
+ // END /share/[id]
+ // /admin/config
+ "admin.config.title": "Configuração",
+ "admin.config.category.general": "Geral",
+ "admin.config.category.share": "Compartilhamento",
+ "admin.config.category.email": "E-mail",
+ "admin.config.category.smtp": "SMTP",
+ "admin.config.general.app-name": "Nome da aplicação",
+ "admin.config.general.app-name.description": "Nome da aplicação",
+ "admin.config.general.app-url": "URL do Aplicativo",
+ "admin.config.general.app-url.description": "Em qual URL o Pingvin Share está disponível",
+ "admin.config.general.show-home-page": "Mostrar a página inicial",
+ "admin.config.general.show-home-page.description": "Mostrar ou não a página inicial",
+ "admin.config.general.logo": "Logo",
+ "admin.config.general.logo.description": "Alterar o seu logo carregando uma nova imagem. A imagem deve ser PNG e deve ter o formato 1:1.",
+ "admin.config.general.logo.placeholder": "Escolhe uma imagem",
+ "admin.config.email.enable-share-email-recipients": "Ativar compartilhamento de e-mails destinatários",
+ "admin.config.email.enable-share-email-recipients.description": "Se quiser permitir que e-mails compartilhem destinatários. Apenas habilite isso se você tiver ativado o SMTP.",
+ "admin.config.email.share-recipients-subject": "Assunto dos destinatários do compartilhamento",
+ "admin.config.email.share-recipients-subject.description": "Assunto do e-mail enviado para os destinatários do compartilhamento.",
+ "admin.config.email.share-recipients-message": "Assunto dos destinatários do compartilhamento",
+ "admin.config.email.share-recipients-message.description": "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
+ "admin.config.email.reverse-share-subject": "Assunto do compartilhamento reverso",
+ "admin.config.email.reverse-share-subject.description": "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
+ "admin.config.email.reverse-share-message": "Mensagem do compartilhamento reverso",
+ "admin.config.email.reverse-share-message.description": "Mensagem enviada quando alguém criou um compartilhamento com o link reverso. {shareUrl} será substituído pelo nome do criador e pela URL de compartilhamento.",
+ "admin.config.email.reset-password-subject": "Redefinir assunto da senha",
+ "admin.config.email.reset-password-subject.description": "Assunto do e-mail enviado quando um usuário solicita uma redefinição de senha.",
+ "admin.config.email.reset-password-message": "Mensagem de redefinição de senha",
+ "admin.config.email.reset-password-message.description": "Mensagem enviada quando um usuário solicita uma redefinição de senha. {url} será substituído pela URL de redefinição de senha.",
+ "admin.config.email.invite-subject": "Assunto do convite",
+ "admin.config.email.invite-subject.description": "Assunto do e-mail enviado quando um administrador convida um usuário.",
+ "admin.config.email.invite-message": "Mensagem de convite",
+ "admin.config.email.invite-message.description": "Mensagem enviada quando um administrador convida um usuário. {url} será substituído pelo URL de convite e {password} pela senha.",
+ "admin.config.share.allow-registration": "Permitir novos registos",
+ "admin.config.share.allow-registration.description": "Se o registro é permitido",
+ "admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
+ "admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
+ "admin.config.share.max-size": "Tamanho máximo",
+ "admin.config.share.max-size.description": "Tamanho máximo do compartilhamento em bytes",
+ "admin.config.share.zip-compression-level": "Nível de compressão",
+ "admin.config.share.zip-compression-level.description": "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ",
+ "admin.config.smtp.enabled": "Ativado",
+ "admin.config.smtp.enabled.description": "Se o SMTP está habilitado. Apenas defina como verdadeiro se você digitou o host, porta, e-mail, usuário e senha do seu servidor SMTP.",
+ "admin.config.smtp.host": "Servidor",
+ "admin.config.smtp.host.description": "Nome do Servidor SMTP",
+ "admin.config.smtp.port": "Porta",
+ "admin.config.smtp.port.description": "Porta do Servidor SMTP",
+ "admin.config.smtp.email": "E-mail",
+ "admin.config.smtp.email.description": "Endereço de e-mail do qual os e-mails são enviados",
+ "admin.config.smtp.username": "Nome do usuário",
+ "admin.config.smtp.username.description": "Nome de usuário do servidor SMTP",
+ "admin.config.smtp.password": "Senha",
+ "admin.config.smtp.password.description": "Senha do servidor SMTP",
+ "admin.config.smtp.button.test": "Enviar email de teste",
+ // 404
+ "404.description": "Ops, esta página não existe.",
+ "404.button.home": "Me traga de volta para casa",
+ // Common translations
+ "common.button.save": "Salvar",
+ "common.button.create": "Criar",
+ "common.button.submit": "Submeter",
+ "common.button.delete": "Excluir",
+ "common.button.cancel": "Cancelar",
+ "common.button.confirm": "Confirmar",
+ "common.button.disable": "Desativar",
+ "common.button.share": "Compartilhamento",
+ "common.button.generate": "Gerar",
+ "common.button.done": "Concluído",
+ "common.text.link": "Link",
+ "common.text.or": "ou",
+ "common.button.go-back": "Voltar",
+ "common.notify.copied": "O seu link foi copiado para a área de transferência",
+ "common.success": "Sucesso",
+ "common.error": "Erro",
+ "common.error.unknown": "Ocorreu um erro desconhecido",
+ "common.error.invalid-email": "Endereço de e-mail inválido",
+ "common.error.too-short": "Deve ter no mínimo {length} caracteres",
+ "common.error.too-long": "Deve ter no máximo {length} caracteres",
+ "common.error.exact-length": "Deve ter exatamente {length} caracteres",
+ "common.error.invalid-number": "Tem que ser um número",
+ "common.error.field-required": "Este campo é obrigatório"
+};
\ No newline at end of file