diff --git a/frontend/src/i18n/translations/da-DK.ts b/frontend/src/i18n/translations/da-DK.ts
index e7a3a04d3..25677f433 100644
--- a/frontend/src/i18n/translations/da-DK.ts
+++ b/frontend/src/i18n/translations/da-DK.ts
@@ -311,6 +311,7 @@ export default {
"common.text.or": "eller",
"common.button.go-back": "Gå tilbage",
"common.notify.copied": "Linket blev kopieret til udklipsholderen",
+ "common.success": "Success",
"common.error": "Fejl",
"common.error.unknown": "En ukendt fejl opstod",
"common.error.invalid-email": "Ugyldig e-mail",
diff --git a/frontend/src/i18n/translations/de-DE.ts b/frontend/src/i18n/translations/de-DE.ts
index 47b0df482..e8fcfebcf 100644
--- a/frontend/src/i18n/translations/de-DE.ts
+++ b/frontend/src/i18n/translations/de-DE.ts
@@ -311,6 +311,7 @@ export default {
"common.text.or": "oder",
"common.button.go-back": "Zurück",
"common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert",
+ "common.success": "Erfolg",
"common.error": "Fehler",
"common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
"common.error.invalid-email": "Ungültige E-Mail-Adresse",
diff --git a/frontend/src/i18n/translations/es-ES.ts b/frontend/src/i18n/translations/es-ES.ts
index 922f8fb10..7e76c9803 100644
--- a/frontend/src/i18n/translations/es-ES.ts
+++ b/frontend/src/i18n/translations/es-ES.ts
@@ -77,7 +77,7 @@ export default {
"account.notify.totp.disable": "TOTP deshabilitado correctamente",
"account.notify.totp.enable": "TOTP habilitado correctamente",
"account.card.language.title": "Idioma",
- "account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
+ "account.card.language.description": "El proyecto ha sido traducido por la comunidad. Algunos idiomas pueden estar incompletos.",
"account.card.color.title": "Esquema de colores",
// ThemeSwitcher.tsx
"account.theme.dark": "Oscuro",
@@ -311,6 +311,7 @@ export default {
"common.text.or": "o",
"common.button.go-back": "Volver",
"common.notify.copied": "Tu enlace se ha copiado al portapapeles",
+ "common.success": "Éxito",
"common.error": "Error",
"common.error.unknown": "Ocurrió un error desconocido",
"common.error.invalid-email": "Correo electrónico no válido",
diff --git a/frontend/src/i18n/translations/fr-FR.ts b/frontend/src/i18n/translations/fr-FR.ts
index a8490fdc8..65dfc7ecf 100644
--- a/frontend/src/i18n/translations/fr-FR.ts
+++ b/frontend/src/i18n/translations/fr-FR.ts
@@ -26,8 +26,8 @@ export default {
"signin.title": "Content de vous revoir",
"signin.description": "Pas encore de compte ?",
"signin.button.signup": "S'inscrire",
- "signin.input.email-or-username": "Email ou pseudo",
- "signin.input.email-or-username.placeholder": "Votre email ou pseudo",
+ "signin.input.email-or-username": "Courriel ou pseudo",
+ "signin.input.email-or-username.placeholder": "Votre courriel ou pseudo",
"signin.input.password": "Mot de passe",
"signin.input.password.placeholder": "Votre mot de passe",
"signin.button.submit": "Se connecter",
@@ -40,14 +40,14 @@ export default {
"signup.button.signin": "Se connecter",
"signup.input.username": "Pseudo",
"signup.input.username.placeholder": "Votre pseudo",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Votre adresse mail",
+ "signup.input.email": "Adresse email",
+ "signup.input.email.placeholder": "Votre adresse email",
"signup.button.submit": "Commençons",
// END /auth/signup
// /auth/reset-password
"resetPassword.title": "Mot de passe oublié ?",
"resetPassword.description": "Saisissez votre email pour réinitialiser votre mot de passe.",
- "resetPassword.notify.success": "Un mail a été envoyé avec un lien pour réinitialiser votre mot de passe.",
+ "resetPassword.notify.success": "Un email a été envoyé avec un lien pour réinitialiser votre mot de passe.",
"resetPassword.button.back": "Retour à la page de connexion",
"resetPassword.text.resetPassword": "Réinitialiser le mot de passe",
"resetPassword.text.enterNewPassword": "Saisissez votre nouveau mot de passe",
@@ -57,7 +57,7 @@ export default {
"account.title": "Mon compte",
"account.card.info.title": "Détails du compte",
"account.card.info.username": "Pseudo",
- "account.card.info.email": "Adresse mail",
+ "account.card.info.email": "Adresse email",
"account.notify.info.success": "Compte mis à jour avec succès",
"account.card.password.title": "Mot de passe",
"account.card.password.old": "Ancien mot de passe",
@@ -77,7 +77,7 @@ export default {
"account.notify.totp.disable": "TOTP désactivé",
"account.notify.totp.enable": "TOTP activé",
"account.card.language.title": "Langue",
- "account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
+ "account.card.language.description": "Le projet est traduit par la communauté. Certaines traductions peuvent être incomplètes.",
"account.card.color.title": "Thème de couleurs",
// ThemeSwitcher.tsx
"account.theme.dark": "Sombre",
@@ -100,7 +100,7 @@ export default {
"account.shares.table.expiresAt": "Expire le",
"account.shares.table.createdAt": "Créé le",
"account.shares.table.size": "Taille",
- "account.shares.modal.share-informations": "Share informations",
+ "account.shares.modal.share-informations": "Détails du partage",
"account.shares.modal.share-link": "Lien de partage",
"account.shares.modal.delete.title": "Supprimer le partage {share}",
"account.shares.modal.delete.description": "Voulez-vous vraiment supprimer ce partage ?",
@@ -125,8 +125,8 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "An",
"account.reverseShares.modal.expiration.year-plural": "Ans",
"account.reverseShares.modal.max-size.label": "Taille maximale du partage",
- "account.reverseShares.modal.send-email": "Envoyer un mail de notification",
- "account.reverseShares.modal.send-email.description": "Envoyer une notification par courriel lorsqu'un partage est créé depuis ce partage inversé.",
+ "account.reverseShares.modal.send-email": "Envoyer un email de notification",
+ "account.reverseShares.modal.send-email.description": "Envoyer une notification par email lorsqu'un partage est créé depuis ce partage inversé.",
"account.reverseShares.modal.max-use.label": "Nombre d'utilisation max",
"account.reverseShares.modal.max-use.description": "Le nombre maximal de fois que cette URL peut être utilisée pour créer un partage.",
"account.reverseShare.never-expires": "Ce partage inversé n'expirera jamais.",
@@ -151,7 +151,7 @@ export default {
// /admin/users
"admin.users.title": "Gestion des utilisateurs",
"admin.users.table.username": "Pseudo",
- "admin.users.table.email": "Adresse mail",
+ "admin.users.table.email": "Adresse email",
"admin.users.table.admin": "Admin",
"admin.users.edit.update.title": "Modifier l'utilisateur {username}",
"admin.users.edit.update.admin-privileges": "Privilèges admin",
@@ -164,15 +164,15 @@ export default {
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Créer un utilisateur",
"admin.users.modal.create.username": "Surnom",
- "admin.users.modal.create.email": "Courriel",
+ "admin.users.modal.create.email": "Email",
"admin.users.modal.create.password": "Mot de passe",
"admin.users.modal.create.manual-password": "Définir le mot de passe manuellement",
- "admin.users.modal.create.manual-password.description": "S'il n'est pas coché, l'utilisateur recevra un mail avec un lien pour définir son mot de passe.",
+ "admin.users.modal.create.manual-password.description": "S'il n'est pas coché, l'utilisateur recevra un email avec un lien pour définir son mot de passe.",
"admin.users.modal.create.admin": "Privilèges admin",
"admin.users.modal.create.admin.description": "Si coché, l'utilisateur pourra accéder au panneau d'administration.",
// END /admin/users
// /upload
- "upload.title": "Téléverser",
+ "upload.title": "Envoyer",
"upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
"upload.notify.count-failed": "{count} fichier(s) n'a(ont) pas pu être envoyé(s). Veuillez réessayer.",
// Dropzone.tsx
@@ -206,9 +206,9 @@ export default {
"upload.modal.expires.year-plural": "Ans",
"upload.modal.accordion.description.title": "Description",
"upload.modal.accordion.description.placeholder": "Note pour les destinataires de ce partage",
- "upload.modal.accordion.email.title": "Destinataires du mail",
- "upload.modal.accordion.email.placeholder": "Saisir les destinataires du mail",
- "upload.modal.accordion.email.invalid-email": "Adresse mail invalide",
+ "upload.modal.accordion.email.title": "Adresse courriel des destinataires",
+ "upload.modal.accordion.email.placeholder": "Saisir les destinataires de ce partage",
+ "upload.modal.accordion.email.invalid-email": "Adresse email invalide",
"upload.modal.accordion.security.title": "Options de sécurité",
"upload.modal.accordion.security.password.label": "Protection par mot de passe",
"upload.modal.accordion.security.password.placeholder": "Aucun mot de passe",
@@ -243,56 +243,56 @@ export default {
"admin.config.title": "Paramètres",
"admin.config.category.general": "Général",
"admin.config.category.share": "Partage",
- "admin.config.category.email": "Adresse mail",
+ "admin.config.category.email": "Courriel",
"admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "Nom de l'app",
- "admin.config.general.app-name.description": "Nom de l'application",
- "admin.config.general.app-url": "URL de l’application",
+ "admin.config.general.app-name": "Nom de l'appli",
+ "admin.config.general.app-name.description": "Le nom de l'application",
+ "admin.config.general.app-url": "URL de l’appli",
"admin.config.general.app-url.description": "Depuis quel URL le partage Pingvin est disponible",
"admin.config.general.show-home-page": "Afficher la page d'accueil",
"admin.config.general.show-home-page.description": "Afficher ou non la page d'accueil",
"admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Changez votre logo en téléchargeant une nouvelle image. L'image doit être un PNG et doit avoir un ratio 1:1.",
+ "admin.config.general.logo.description": "Changez de logo en envoyant une nouvelle image. L'image doit être au format PNG et doit avoir un ratio 1:1.",
"admin.config.general.logo.placeholder": "Sélectionner une image",
- "admin.config.email.enable-share-email-recipients": "Activer les destinataires du courriel du partage",
- "admin.config.email.enable-share-email-recipients.description": "Autorise les mails des destinataires du partage. N'activez cette option que si vous avez activé SMTP.",
- "admin.config.email.share-recipients-subject": "Sujet des destinataires du partage",
- "admin.config.email.share-recipients-subject.description": "Sujet du mail qui est envoyé aux destinataires du partage.",
- "admin.config.email.share-recipients-message": "Message des destinataires du partage",
- "admin.config.email.share-recipients-message.description": "Message qui est envoyé aux destinataires du partage. Variables possibles :\n {creator} - Le pseudo de l'auteur du partage\n {shareUrl} - L'URL du partage\n {desc} - La description du partage\n {expires} - La date d'expiration du partage\nLes variables seront remplacées par leur valeur réelle.",
- "admin.config.email.reverse-share-subject": "Sujet du partage inversé",
- "admin.config.email.reverse-share-subject.description": "Sujet du courriel qui est envoyé lorsque quelqu'un a créé un partage avec le lien de votre partage inversé.",
+ "admin.config.email.enable-share-email-recipients": "Autoriser le partage par courriel",
+ "admin.config.email.enable-share-email-recipients.description": "Permet d'envoyer le lien du partage par courriel. N'activez cette option que si vous avez activé SMTP.",
+ "admin.config.email.share-recipients-subject": "Sujet d'un partage",
+ "admin.config.email.share-recipients-subject.description": "Intitulé du courriel envoyé aux destinataires d'un partage.",
+ "admin.config.email.share-recipients-message": "Message d'un partage",
+ "admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage. Variables possibles :\n• {creator} : Le pseudo de l'auteur du partage\n• {shareUrl} : L'URL du partage\n• {desc} : La description du partage\n• {expires} : La date d'expiration du partage\nLes variables seront remplacées par leur valeur réelle.",
+ "admin.config.email.reverse-share-subject": "Sujet d'un partage inversé",
+ "admin.config.email.reverse-share-subject.description": "Intitulé du courriel envoyé lorsque quelqu'un a partagé des fichiers depuis votre partage inversé.",
"admin.config.email.reverse-share-message": "Message du partage inversé",
- "admin.config.email.reverse-share-message.description": "Message qui est envoyé lorsque quelqu'un créé un partage avec le lien de votre partage inversé. {shareUrl} sera remplacé par le nom du créateur et l'URL de partage.",
- "admin.config.email.reset-password-subject": "Sujet de réinitialisation du mot de passe",
- "admin.config.email.reset-password-subject.description": "Sujet de l'email envoyé lorsqu'un utilisateur demande une réinitialisation du mot de passe.",
+ "admin.config.email.reverse-share-message.description": "Contenu du courriel envoyé lorsque quelqu'un partage des fichiers depuis votre partage inversé. {shareUrl} sera remplacé par le nom du créateur et l'URL de partage.",
+ "admin.config.email.reset-password-subject": "Sujet d'une réinitialisation du mot de passe",
+ "admin.config.email.reset-password-subject.description": "Intitulé du courriel envoyé lorsqu'un utilisateur demande une réinitialisation de son mot de passe.",
"admin.config.email.reset-password-message": "Message de réinitialisation du mot de passe",
- "admin.config.email.reset-password-message.description": "Message qui est envoyé lorsqu'un utilisateur demande à réinitialiser son mot de passe. {url} sera remplacé par l'URL de réinitialisation du mot de passe.",
- "admin.config.email.invite-subject": "Sujet de l'invitation",
- "admin.config.email.invite-subject.description": "Sujet du courriel qui est envoyé lorsqu'un administrateur invite un utilisateur.",
+ "admin.config.email.reset-password-message.description": "Contenu du courriel envoyé lorsqu'un utilisateur demande à réinitialiser son mot de passe. {url} sera remplacé par l'URL de réinitialisation du mot de passe.",
+ "admin.config.email.invite-subject": "Sujet d'une invitation",
+ "admin.config.email.invite-subject.description": "Intitulé du courriel envoyé lorsqu'un administrateur invite un utilisateur.",
"admin.config.email.invite-message": "Message de l'invitation",
- "admin.config.email.invite-message.description": "Message qui est envoyé lorsqu'un administrateur invite un utilisateur. {url} sera remplacé par l'URL d'invitation et {password} avec le mot de passe.",
+ "admin.config.email.invite-message.description": "Contenu du courriel envoyé lorsqu'un administrateur invite un utilisateur. {url} sera remplacé par l'URL d'invitation et {password} par le mot de passe.",
"admin.config.share.allow-registration": "Autoriser les inscriptions",
- "admin.config.share.allow-registration.description": "Autorise l'inscription",
- "admin.config.share.allow-unauthenticated-shares": "Autoriser les partages non authentifiés",
+ "admin.config.share.allow-registration.description": "Permet aux visiteurs de créer un compte.",
+ "admin.config.share.allow-unauthenticated-shares": "Autoriser les partages anonymes",
"admin.config.share.allow-unauthenticated-shares.description": "Autorise des utilisateurs non authentifiés à créer des partages",
"admin.config.share.max-size": "Taille max",
- "admin.config.share.max-size.description": "Taille maximale du fichier en octets",
- "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": "Activé",
- "admin.config.smtp.enabled.description": "Active SMTP. Activez ceci uniquement si vous avez saisit l'hôte, le port, le courriel, l'utilisateur et le mot de passe de votre serveur SMTP.",
+ "admin.config.share.max-size.description": "Taille maximale du partage en octets",
+ "admin.config.share.zip-compression-level": "Niveau de compression",
+ "admin.config.share.zip-compression-level.description": "Ajustez le niveau pour trouver l'équilibre entre la taille du fichier et la vitesse de compression. Les valeurs valides vont de 0 à 9, 0 étant sans compression et 9 étant la compression maximale. ",
+ "admin.config.smtp.enabled": "Activer",
+ "admin.config.smtp.enabled.description": "Active SMTP. Activez ceci uniquement si vous avez saisi l'hôte, le port, le courriel, l'utilisateur et le mot de passe de votre serveur SMTP.",
"admin.config.smtp.host": "Hôte",
- "admin.config.smtp.host.description": "Hôte du serveur SMTP",
+ "admin.config.smtp.host.description": "Nom du serveur SMTP",
"admin.config.smtp.port": "Port",
"admin.config.smtp.port.description": "Port du serveur SMTP",
- "admin.config.smtp.email": "Adresse mail",
- "admin.config.smtp.email.description": "Adresse à partir de laquelle les mails sont envoyés",
+ "admin.config.smtp.email": "Adresse email",
+ "admin.config.smtp.email.description": "Adresse à partir de laquelle les emails sont envoyés",
"admin.config.smtp.username": "Nom d'utilisateur",
"admin.config.smtp.username.description": "Nom d'utilisateur du serveur SMTP",
"admin.config.smtp.password": "Mot de passe",
"admin.config.smtp.password.description": "Mot de passe du serveur SMTP",
- "admin.config.smtp.button.test": "Envoyer un mail de test",
+ "admin.config.smtp.button.test": "Envoyer un email de test",
// 404
"404.description": "Désolé, mais cette page n’existe pas.",
"404.button.home": "Retour à l'accueil",
@@ -311,9 +311,10 @@ export default {
"common.text.or": "ou",
"common.button.go-back": "Précédent",
"common.notify.copied": "Votre lien a été copié dans le presse-papiers",
+ "common.success": "Opération réussie",
"common.error": "Erreur",
"common.error.unknown": "Une erreur inconnue est survenue",
- "common.error.invalid-email": "Adresse email invalide",
+ "common.error.invalid-email": "Adresse courriel invalide",
"common.error.too-short": "Doit comporter au moins {length} caractères",
"common.error.too-long": "Doit comporter au plus {length} caractères",
"common.error.exact-length": "Doit comporter exactement {length} caractères",
diff --git a/frontend/src/i18n/translations/pt-BR.ts b/frontend/src/i18n/translations/pt-BR.ts
new file mode 100644
index 000000000..0fe43bb6f
--- /dev/null
+++ b/frontend/src/i18n/translations/pt-BR.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": "My shares",
+ "navbar.links.reverse": "Reverse shares",
+ "navbar.avatar.account": "A 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.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.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": "Your email or username",
+ "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",
+ // 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",
+ // 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.",
+ // /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",
+ // 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?",
+ // 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.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?",
+ // 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.",
+ // 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.",
+ // END /account/reverseShares
+ // /admin
+ "admin.title": "Administration",
+ "admin.button.users": "User management",
+ "admin.button.config": "Configuration",
+ "admin.version": "Version",
+ // END /admin
+ // /admin/users
+ "admin.users.title": "User management",
+ "admin.users.table.username": "Username",
+ "admin.users.table.email": "Email",
+ "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?",
+ // 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.",
+ // 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.",
+ // 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}.",
+ // FileList.tsx
+ "upload.filelist.name": "Name",
+ "upload.filelist.size": "Size",
+ // 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.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",
+ // 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",
+ // 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.",
+ // 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.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.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",
+ // 404
+ "404.description": "Oops this page doesn't exist.",
+ "404.button.home": "Bring me back home",
+ // 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.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
diff --git a/frontend/src/i18n/translations/pt-PT.ts b/frontend/src/i18n/translations/pt-PT.ts
index 31598b2de..595a4e5be 100644
--- a/frontend/src/i18n/translations/pt-PT.ts
+++ b/frontend/src/i18n/translations/pt-PT.ts
@@ -4,21 +4,21 @@ 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.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": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
+ "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,296 +27,297 @@ 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.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"
+ "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/i18n/translations/th-TH.ts b/frontend/src/i18n/translations/th-TH.ts
index f402602ad..303ad9b36 100644
--- a/frontend/src/i18n/translations/th-TH.ts
+++ b/frontend/src/i18n/translations/th-TH.ts
@@ -311,6 +311,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",
"common.error.invalid-email": "Invalid email address",
diff --git a/frontend/src/i18n/translations/zh-CN.ts b/frontend/src/i18n/translations/zh-CN.ts
index a99f071db..c5fe5a7c8 100644
--- a/frontend/src/i18n/translations/zh-CN.ts
+++ b/frontend/src/i18n/translations/zh-CN.ts
@@ -311,6 +311,7 @@ export default {
"common.text.or": "或",
"common.button.go-back": "返回",
"common.notify.copied": "已复制到剪贴板",
+ "common.success": "Success",
"common.error": "错误",
"common.error.unknown": "发生未知错误",
"common.error.invalid-email": "邮件地址不可用",