From 5fd79a35cb34611a545b56437ea835dac1f4aeb3 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sun, 30 Jul 2023 21:00:20 +0200 Subject: [PATCH] chore: add translation file for Finnish --- frontend/src/i18n/locales.ts | 6 + frontend/src/i18n/translations/fi-FI.ts | 438 ++++++++++++++++++++++++ frontend/src/i18n/translations/pt-PT.ts | 323 ----------------- 3 files changed, 444 insertions(+), 323 deletions(-) create mode 100644 frontend/src/i18n/translations/fi-FI.ts delete mode 100644 frontend/src/i18n/translations/pt-PT.ts diff --git a/frontend/src/i18n/locales.ts b/frontend/src/i18n/locales.ts index 7a3242b8..363be664 100644 --- a/frontend/src/i18n/locales.ts +++ b/frontend/src/i18n/locales.ts @@ -2,6 +2,7 @@ import danish from "./translations/da-DK"; import german from "./translations/de-DE"; import english from "./translations/en-US"; import spanish from "./translations/es-ES"; +import finnish from "./translations/fi-FI"; import french from "./translations/fr-FR"; import portuguese from "./translations/pt-BR"; import thai from "./translations/th-TH"; @@ -48,4 +49,9 @@ export const LOCALES = { code: "zh-CN", messages: chineseSimplified, }, + FINNISH: { + name: "Suomi", + code: "fi-FI", + messages: finnish, + }, }; diff --git a/frontend/src/i18n/translations/fi-FI.ts b/frontend/src/i18n/translations/fi-FI.ts new file mode 100644 index 00000000..f93fcdc5 --- /dev/null +++ b/frontend/src/i18n/translations/fi-FI.ts @@ -0,0 +1,438 @@ +export default { + // Navbar + "navbar.upload": "Upload", + "navbar.signin": "Sign in", + "navbar.home": "Home", + "navbar.signup": "Sign Up", + + "navbar.links.shares": "My shares", + "navbar.links.reverse": "Reverse shares", + + "navbar.avatar.account": "My account", + "navbar.avatar.admin": "Administration", + "navbar.avatar.signout": "Sign out", + // END navbar + + // / + "home.title": "A self-hosted file sharing platform.", + + "home.description": + "Do you really want to give your personal files in the hand of third parties like WeTransfer?", + "home.bullet.a.name": "Self-Hosted", + "home.bullet.a.description": "Host Pingvin Share on your own machine.", + "home.bullet.b.name": "Privacy", + "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": "Get started", + "home.button.source": "Source code", + // END / + + // /auth/signin + "signin.title": "Welcome back", + "signin.description": "You don't have an account yet?", + "signin.button.signup": "Sign up", + "signin.input.email-or-username": "Email or username", + "signin.input.email-or-username.placeholder": "Your email or username", + "signin.input.password": "Password", + "signin.input.password.placeholder": "Your password", + "signin.button.submit": "Sign in", + "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": "Create an account", + "signup.description": "Already have an account?", + "signup.button.signin": "Sign in", + "signup.input.username": "Username", + "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", +}; 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