diff --git a/frontend/src/i18n/locales.ts b/frontend/src/i18n/locales.ts
index 2d1daf5e..7a3242b8 100644
--- a/frontend/src/i18n/locales.ts
+++ b/frontend/src/i18n/locales.ts
@@ -3,7 +3,7 @@ import german from "./translations/de-DE";
import english from "./translations/en-US";
import spanish from "./translations/es-ES";
import french from "./translations/fr-FR";
-import portugueze from "./translations/pt-PT";
+import portuguese from "./translations/pt-BR";
import thai from "./translations/th-TH";
import chineseSimplified from "./translations/zh-CN";
@@ -23,10 +23,10 @@ export const LOCALES = {
code: "fr-FR",
messages: french,
},
- PORTUGUEZE: {
- name: "Português",
- code: "pt-PT",
- messages: portugueze,
+ PORTUGUESE_BRAZIL: {
+ name: "Português (Brasil)",
+ code: "pt-BR",
+ messages: portuguese,
},
DANISH: {
name: "Dansk",
diff --git a/frontend/src/i18n/translations/en-US.ts b/frontend/src/i18n/translations/en-US.ts
index d2dc2b16..f93fcdc5 100644
--- a/frontend/src/i18n/translations/en-US.ts
+++ b/frontend/src/i18n/translations/en-US.ts
@@ -425,6 +425,7 @@ export default {
"common.text.or": "or",
"common.button.go-back": "Go back",
"common.notify.copied": "Your link was copied to the clipboard",
+ "common.success": "Success",
"common.error": "Error",
"common.error.unknown": "An unknown error occurred",
diff --git a/frontend/src/i18n/translations/pt-BR.ts b/frontend/src/i18n/translations/pt-BR.ts
index 0fe43bb6..93d67cb1 100644
--- a/frontend/src/i18n/translations/pt-BR.ts
+++ b/frontend/src/i18n/translations/pt-BR.ts
@@ -4,21 +4,26 @@ export default {
"navbar.signin": "Iniciar sessão",
"navbar.home": "Início",
"navbar.signup": "Registar-se",
- "navbar.links.shares": "My shares",
- "navbar.links.reverse": "Reverse shares",
- "navbar.avatar.account": "A minha conta",
+ "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": "A self-hosted file sharing platform.",
- "home.description": "Deseja realmente dar os seus arquivos pessoais na mão de terceiros como o WeTransfer?",
- "home.bullet.a.name": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
+ "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": "Your files are your files and should never get into the hands of third parties.",
- "home.bullet.c.name": "No annoying file size limit",
- "home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
+ "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 /
@@ -27,297 +32,363 @@ export default {
"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": "Your email or username",
+ "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": "Two-factor authentication required",
- "signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
+ "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": "Your username",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Your email",
- "signup.button.submit": "Let's get started",
+ "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": "Forgot your password?",
- "resetPassword.description": "Enter your email to reset your password.",
- "resetPassword.notify.success": "An email has been sent with a link to reset your password.",
- "resetPassword.button.back": "Back to sign in page",
- "resetPassword.text.resetPassword": "Reset password",
- "resetPassword.text.enterNewPassword": "Enter your new password",
- "resetPassword.input.password": "New password",
- "resetPassword.notify.passwordReset": "Your password has been reset successfully.",
+ "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": "My account",
- "account.card.info.title": "Account info",
- "account.card.info.username": "Username",
- "account.card.info.email": "Email",
- "account.notify.info.success": "Account updated successfully",
- "account.card.password.title": "Password",
- "account.card.password.old": "Old password",
- "account.card.password.new": "New password",
- "account.notify.password.success": "Password changed successfully",
- "account.card.security.title": "Security",
- "account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
- "account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
- "account.card.security.totp.button.start": "Start",
- "account.modal.totp.title": "Enable TOTP",
- "account.modal.totp.step1": "Step 1: Add your authenticator",
- "account.modal.totp.step2": "Step 2: Validate your code",
- "account.modal.totp.enterManually": "Enter manually",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Click to copy",
- "account.modal.totp.verify": "Verify",
- "account.notify.totp.disable": "TOTP disabled successfully",
- "account.notify.totp.enable": "TOTP enabled successfully",
- "account.card.language.title": "Language",
- "account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
- "account.card.color.title": "Color scheme",
+ "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": "Dark",
- "account.theme.light": "Light",
- "account.theme.system": "System",
- "account.button.delete": "Delete Account",
- "account.modal.delete.title": "Delete Account",
- "account.modal.delete.description": "Do you really want to delete your account including all your active shares?",
+ "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": "My shares",
- "account.shares.title.empty": "It's empty here 👀",
- "account.shares.description.empty": "You don't have any shares.",
- "account.shares.button.create": "Create one",
- "account.shares.info.title": "Share informations",
+ "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": "Name",
- "account.shares.table.description": "Description",
- "account.shares.table.visitors": "Visitors",
- "account.shares.table.expiresAt": "Expires at",
- "account.shares.table.createdAt": "Created at",
- "account.shares.table.size": "Size",
- "account.shares.modal.share-informations": "Share informations",
- "account.shares.modal.share-link": "Share link",
- "account.shares.modal.delete.title": "Delete share {share}",
- "account.shares.modal.delete.description": "Do you really want to delete this share?",
+ "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": "Reverse shares",
- "account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
- "account.reverseShares.title.empty": "It's empty here 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
+ "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": "Expiration",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minutes",
- "account.reverseShares.modal.expiration.hour-singular": "Hour",
- "account.reverseShares.modal.expiration.hour-plural": "Hours",
- "account.reverseShares.modal.expiration.day-singular": "Day",
- "account.reverseShares.modal.expiration.day-plural": "Days",
- "account.reverseShares.modal.expiration.week-singular": "Week",
- "account.reverseShares.modal.expiration.week-plural": "Weeks",
- "account.reverseShares.modal.expiration.month-singular": "Month",
- "account.reverseShares.modal.expiration.month-plural": "Months",
- "account.reverseShares.modal.expiration.year-singular": "Year",
- "account.reverseShares.modal.expiration.year-plural": "Years",
- "account.reverseShares.modal.max-size.label": "Max share size",
- "account.reverseShares.modal.send-email": "Send email notification",
- "account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
- "account.reverseShares.modal.max-use.label": "Max uses",
- "account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
- "account.reverseShare.never-expires": "This reverse share will never expire.",
- "account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
- "account.reverseShares.table.no-shares": "No shares created yet",
- "account.reverseShares.table.count.singular": "share",
- "account.reverseShares.table.count.plural": "shares",
- "account.reverseShares.table.shares": "Shares",
- "account.reverseShares.table.remaining": "Remaining uses",
- "account.reverseShares.table.max-size": "Max share size",
- "account.reverseShares.table.expires": "Expires at",
- "account.reverseShares.modal.reverse-share-link": "Reverse share link",
- "account.reverseShares.modal.delete.title": "Delete reverse share",
- "account.reverseShares.modal.delete.description": "Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
+ "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": "Administration",
- "admin.button.users": "User management",
- "admin.button.config": "Configuration",
- "admin.version": "Version",
+ "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": "User management",
- "admin.users.table.username": "Username",
- "admin.users.table.email": "Email",
+ "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": "Update user {username}",
- "admin.users.edit.update.admin-privileges": "Admin privileges",
- "admin.users.edit.update.change-password.title": "Change password",
- "admin.users.edit.update.change-password.field": "New password",
- "admin.users.edit.update.change-password.button": "Save new password",
- "admin.users.edit.update.notify.password.success": "Password changed successfully",
- "admin.users.edit.delete.title": "Delete user {username}",
- "admin.users.edit.delete.description": "Do you really want to delete this user and all his shares?",
+ "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": "Create user",
- "admin.users.modal.create.username": "Username",
- "admin.users.modal.create.email": "Email",
- "admin.users.modal.create.password": "Password",
- "admin.users.modal.create.manual-password": "Set password manually",
- "admin.users.modal.create.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
- "admin.users.modal.create.admin": "Admin privileges",
- "admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
+ "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": "An error occurred while finishing your share.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
+ "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 files",
- "upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
- "upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
+ "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": "Name",
- "upload.filelist.size": "Size",
+ "upload.filelist.name": "Nome",
+ "upload.filelist.size": "Tamanho",
// showCreateUploadModal.tsx
- "upload.modal.title": "Create Share",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "This link is already in use",
- "upload.modal.not-signed-in": "You're not signed in",
- "upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
- "upload.modal.expires.never": "never",
- "upload.modal.expires.never-long": "Never Expires",
+ "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": "Expiration",
- "upload.modal.expires.minute-singular": "Minute",
- "upload.modal.expires.minute-plural": "Minutes",
- "upload.modal.expires.hour-singular": "Hour",
- "upload.modal.expires.hour-plural": "Hours",
- "upload.modal.expires.day-singular": "Day",
- "upload.modal.expires.day-plural": "Days",
- "upload.modal.expires.week-singular": "Week",
- "upload.modal.expires.week-plural": "Weeks",
- "upload.modal.expires.month-singular": "Month",
- "upload.modal.expires.month-plural": "Months",
- "upload.modal.expires.year-singular": "Year",
- "upload.modal.expires.year-plural": "Years",
- "upload.modal.accordion.description.title": "Description",
- "upload.modal.accordion.description.placeholder": "Note for the recipients of this share",
- "upload.modal.accordion.email.title": "Email recipients",
- "upload.modal.accordion.email.placeholder": "Enter email recipients",
- "upload.modal.accordion.email.invalid-email": "Invalid email address",
- "upload.modal.accordion.security.title": "Security options",
- "upload.modal.accordion.security.password.label": "Password protection",
- "upload.modal.accordion.security.password.placeholder": "No password",
- "upload.modal.accordion.security.max-views.label": "Maximum views",
- "upload.modal.accordion.security.max-views.placeholder": "No limit",
+ "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": "This share will never expire.",
- "upload.modal.completed.expires-on": "This share will expire on {expiration}.",
- "upload.modal.completed.share-ready": "Share ready",
+ "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": "Share {shareId}",
- "share.description": "Look what I've shared with you!",
- "share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
- "share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
- "share.error.removed.title": "Share removed",
- "share.error.not-found.title": "Share not found",
- "share.error.not-found.description": "The share you're looking for doesn't exist.",
- "share.modal.password.title": "Password required",
- "share.modal.password.description": "To access this share please enter the password for the share.",
- "share.modal.password": "Password",
- "share.modal.error.invalid-password": "Invalid password",
- "share.button.download-all": "Download all",
- "share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
- "share.modal.file-link": "File link",
- "share.table.name": "Name",
- "share.table.size": "Size",
- "share.modal.file-preview.error.not-supported.title": "Preview not supported",
- "share.modal.file-preview.error.not-supported.description": "A preview for thise file type is unsupported. Please download the file to view it.",
+ "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": "Configuration",
- "admin.config.category.general": "General",
- "admin.config.category.share": "Share",
- "admin.config.category.email": "Email",
+ "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": "App name",
- "admin.config.general.app-name.description": "Name of the application",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "On which URL Pingvin Share is available",
- "admin.config.general.show-home-page": "Show home page",
- "admin.config.general.show-home-page.description": "Whether to show the home page",
+ "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": "Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
- "admin.config.general.logo.placeholder": "Pick image",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.share.zip-compression-level": "Zip compression level",
- "admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
- "admin.config.smtp.enabled": "Enabled",
- "admin.config.smtp.enabled.description": "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
- "admin.config.smtp.host": "Host",
- "admin.config.smtp.host.description": "Host of the SMTP server",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port of the SMTP server",
- "admin.config.smtp.email": "Email",
- "admin.config.smtp.email.description": "Email address which the emails get sent from",
- "admin.config.smtp.username": "Username",
- "admin.config.smtp.username.description": "Username of the SMTP server",
- "admin.config.smtp.password": "Password",
- "admin.config.smtp.password.description": "Password of the SMTP server",
- "admin.config.smtp.button.test": "Send test email",
+ "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": "Oops this page doesn't exist.",
- "404.button.home": "Bring me back home",
+ "404.description": "Ops, esta página não existe.",
+ "404.button.home": "Me traga de volta para casa",
// Common translations
- "common.button.save": "Save",
- "common.button.create": "Create",
- "common.button.submit": "Submit",
- "common.button.delete": "Delete",
- "common.button.cancel": "Cancel",
- "common.button.confirm": "Confirm",
- "common.button.disable": "Disable",
- "common.button.share": "Share",
- "common.button.generate": "Generate",
- "common.button.done": "Done",
+ "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": "or",
- "common.button.go-back": "Go back",
- "common.notify.copied": "Your link was copied to the clipboard",
- "common.success": "Success",
- "common.error": "Error",
- "common.error.unknown": "An unknown error occurred",
- "common.error.invalid-email": "Invalid email address",
- "common.error.too-short": "Must be at least {length} characters",
- "common.error.too-long": "Must be at most {length} characters",
- "common.error.exact-length": "Must be exactly {length} characters",
- "common.error.invalid-number": "Must be a number",
- "common.error.field-required": "This field is required"
-};
\ No newline at end of file
+ "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",
+};
diff --git a/frontend/src/i18n/translations/pt-PT.ts b/frontend/src/i18n/translations/pt-PT.ts
deleted file mode 100644
index 595a4e5b..00000000
--- a/frontend/src/i18n/translations/pt-PT.ts
+++ /dev/null
@@ -1,323 +0,0 @@
-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
diff --git a/frontend/src/utils/toast.util.tsx b/frontend/src/utils/toast.util.tsx
index ef20c02c..d6c5eef1 100644
--- a/frontend/src/utils/toast.util.tsx
+++ b/frontend/src/utils/toast.util.tsx
@@ -1,11 +1,13 @@
import { NotificationProps, showNotification } from "@mantine/notifications";
import { TbCheck, TbX } from "react-icons/tb";
+import { FormattedMessage } from "react-intl";
+
const error = (message: string, config?: Omit) =>
showNotification({
icon: ,
color: "red",
radius: "md",
- title: "Error",
+ title: ,
message: message,
autoClose: true,
@@ -24,7 +26,7 @@ const success = (
icon: ,
color: "green",
radius: "md",
- title: "Success",
+ title: ,
message: message,
autoClose: true,
...config,