diff --git a/frontend/src/i18n/translations/da-DK.ts b/frontend/src/i18n/translations/da-DK.ts index 919c98b..1ffd626 100644 --- a/frontend/src/i18n/translations/da-DK.ts +++ b/frontend/src/i18n/translations/da-DK.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Generer", "common.button.done": "Færdig", "common.text.link": "Link", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "eller", "common.button.go-back": "Gå tilbage", "common.notify.copied": "Linket blev kopieret til udklipsholderen", diff --git a/frontend/src/i18n/translations/de-DE.ts b/frontend/src/i18n/translations/de-DE.ts index c2f605f..7f118d3 100644 --- a/frontend/src/i18n/translations/de-DE.ts +++ b/frontend/src/i18n/translations/de-DE.ts @@ -276,7 +276,7 @@ export default { "admin.config.category.share": "Freigabe", "admin.config.category.email": "E-Mail", "admin.config.category.smtp": "SMTP", - "admin.config.category.oauth": "Anmeldung über soziale Netzwerke", + "admin.config.category.oauth": "OAuth-Anmeldung", "admin.config.general.app-name": "App-Name", "admin.config.general.app-name.description": "Name der Applikation", "admin.config.general.app-url": "App-URL", @@ -346,7 +346,7 @@ export default { "admin.config.oauth.microsoft-enabled": "Microsoft", "admin.config.oauth.microsoft-enabled.description": "Microsoft Anmeldung erlaubt", "admin.config.oauth.microsoft-tenant": "Microsoft Mandant", - "admin.config.oauth.microsoft-tenant.description": "Mandant-ID der Microsoft OAuth App\ncommon: Benutzer mit einem persönlichen Microsoft-Konto und einem Arbeits- oder Schulkonto von Microsoft Entra ID können sich in der Anwendung anmelden. organizations: Nur Benutzer mit Arbeits- oder Schulkonten von Microsoft Entra ID können sich in der Anwendung anmelden.\nconsumers: Nur Benutzer mit einem persönlichen Microsoft-Konto können sich in der Anwendung anmelden.\nDomänenname des Microsoft Entra Mandanten oder die Mandanten-ID im GUID-Format: Nur Benutzer eines bestimmten Microsoft Entra Mandanten (Verzeichnismitglieder mit einem Arbeits- oder Schulkonto oder Verzeichnis Gäste mit einem persönlichen Microsoft-Konto) können sich anmelden.", + "admin.config.oauth.microsoft-tenant.description": "Mandant-ID der Microsoft OAuth App\ncommon: Benutzer mit einem persönlichen Microsoft-Konto und einem Arbeits- oder Schulkonto von Microsoft Entra ID können sich in der Anwendung anmelden.\norganizations: Nur Benutzer mit Arbeits- oder Schulkonten von Microsoft Entra ID können sich in der Anwendung anmelden.\nconsumers: Nur Benutzer mit einem persönlichen Microsoft-Konto können sich in der Anwendung anmelden.\nDomänenname des Microsoft Entra Mandanten oder die Mandanten-ID im GUID-Format: Nur Benutzer eines bestimmten Microsoft Entra Mandanten (Verzeichnismitglieder mit einem Arbeits- oder Schulkonto oder Verzeichnis Gäste mit einem persönlichen Microsoft-Konto) können sich anmelden.", "admin.config.oauth.microsoft-client-id": "Microsoft Client-ID", "admin.config.oauth.microsoft-client-id.description": "Client-ID der Microsoft OAuth-App", "admin.config.oauth.microsoft-client-secret": "Microsoft Client-Secret", @@ -404,6 +404,7 @@ export default { "common.button.generate": "Generieren", "common.button.done": "Fertig", "common.text.link": "Link", + "common.text.navigate-to-link": "Link öffnen", "common.text.or": "oder", "common.button.go-back": "Zurück", "common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert", diff --git a/frontend/src/i18n/translations/el-GR.ts b/frontend/src/i18n/translations/el-GR.ts index e3e7f49..7cd9243 100644 --- a/frontend/src/i18n/translations/el-GR.ts +++ b/frontend/src/i18n/translations/el-GR.ts @@ -1,544 +1,420 @@ 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", - "signIn.oauth.or": "OR", - "signIn.oauth.github": "GitHub", - "signIn.oauth.google": "Google", - "signIn.oauth.microsoft": "Microsoft", - "signIn.oauth.discord": "Discord", - "signIn.oauth.oidc": "OpenID", - - // 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/totp - "totp.title": "TOTP Authentication", - "totp.button.signIn": "Sign in", - - // END /auth/totp - - // /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.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.", - "account.notify.password.success": "Password changed successfully", - - "account.card.oauth.title": "Social login", - "account.card.oauth.github": "GitHub", - "account.card.oauth.google": "Google", - "account.card.oauth.microsoft": "Microsoft", - "account.card.oauth.discord": "Discord", - "account.card.oauth.oidc": "OpenID", - "account.card.oauth.link": "Link", - "account.card.oauth.unlink": "Unlink", - "account.card.oauth.unlinked": "Unlinked", - "account.modal.unlink.title": "Unlink account", - "account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.", - "account.notify.oauth.unlinked.success": "Unlinked 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.title": "Create reverse share", - "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.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.", - - "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] - - // /share/[id]/edit - "share.edit.title": "Edit {shareId}", - "share.edit.append-upload": "Append file", - "share.edit.notify.generic-error": "An error occurred while finishing your share.", - "share.edit.notify.save-success": "Share updated successfully", - // END /share/[id]/edit - - // /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.category.oauth": "Social Login", - - "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-expiration": "Max expiration", - "admin.config.share.max-expiration.description": - "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.", - "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.oauth.allow-registration": "Allow registration", - "admin.config.oauth.allow-registration.description": "Allow users to register via social login", - "admin.config.oauth.ignore-totp": "Ignore TOTP", - "admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login", - "admin.config.oauth.github-enabled": "GitHub", - "admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled", - "admin.config.oauth.github-client-id": "GitHub Client ID", - "admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app", - "admin.config.oauth.github-client-secret": "GitHub Client secret", - "admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app", - "admin.config.oauth.google-enabled": "Google", - "admin.config.oauth.google-enabled.description": "Whether Google login is enabled", - "admin.config.oauth.google-client-id": "Google Client ID", - "admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app", - "admin.config.oauth.google-client-secret": "Google Client secret", - "admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app", - "admin.config.oauth.microsoft-enabled": "Microsoft", - "admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled", - "admin.config.oauth.microsoft-tenant": "Microsoft Tenant", - "admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.", - "admin.config.oauth.microsoft-client-id": "Microsoft Client ID", - "admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app", - "admin.config.oauth.microsoft-client-secret": "Microsoft Client secret", - "admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app", - "admin.config.oauth.discord-enabled": "Discord", - "admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled", - "admin.config.oauth.discord-limited-guild": "Discord limited server ID", - "admin.config.oauth.discord-limited-guild.description": "Limit signing in to users in a specific server. Leave it blank to disable.", - "admin.config.oauth.discord-client-id": "Discord Client ID", - "admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app", - "admin.config.oauth.discord-client-secret": "Discord Client secret", - "admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app", - "admin.config.oauth.oidc-enabled": "OpenID Connect", - "admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled", - "admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI", - "admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app", - "admin.config.oauth.oidc-username-claim": "OpenID Connect username claim", - "admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.", - "admin.config.oauth.oidc-client-id": "OpenID Connect Client ID", - "admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app", - "admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret", - "admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app", - - // 404 - "404.description": "Oops this page doesn't exist.", - "404.button.home": "Bring me back home", - - // error - "error.title": "Error", - "error.description": "Oops!", - "error.button.back": "Go back", - "error.msg.default": "Something went wrong.", - "error.msg.access_denied": "You canceled the authentication process, please try again.", - "error.msg.expired_token": "The authentication process took too long, please try again.", - "error.msg.invalid_token": "Internal Error", - "error.msg.no_user": "User linked to this {0} account doesn't exist.", - "error.msg.no_email": "Can't get email address from this {0} account.", - "error.msg.already_linked": "This {0} account is already linked to another account.", - "error.msg.not_linked": "This {0} account haven't linked to any account yet.", - "error.msg.unverified_account": "This {0} account is unverified, please try again after verification.", - "error.msg.discord_guild_permission_denied": "You are not allowed to sign in.", - "error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.", - "error.param.provider_github": "GitHub", - "error.param.provider_google": "Google", - "error.param.provider_microsoft": "Microsoft", - "error.param.provider_discord": "Discord", - "error.param.provider_oidc": "OpenID Connect", - - // 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.navigate-to-link": "Go to the 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 + // 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", + "signIn.oauth.or": "OR", + "signIn.oauth.github": "GitHub", + "signIn.oauth.google": "Google", + "signIn.oauth.microsoft": "Microsoft", + "signIn.oauth.discord": "Discord", + "signIn.oauth.oidc": "OpenID", + // 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/totp + "totp.title": "TOTP Authentication", + "totp.button.signIn": "Sign in", + // END /auth/totp + // /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.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.", + "account.notify.password.success": "Password changed successfully", + "account.card.oauth.title": "Social login", + "account.card.oauth.github": "GitHub", + "account.card.oauth.google": "Google", + "account.card.oauth.microsoft": "Microsoft", + "account.card.oauth.discord": "Discord", + "account.card.oauth.oidc": "OpenID", + "account.card.oauth.link": "Link", + "account.card.oauth.unlink": "Unlink", + "account.card.oauth.unlinked": "Unlinked", + "account.modal.unlink.title": "Unlink account", + "account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.", + "account.notify.oauth.unlinked.success": "Unlinked 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.title": "Create reverse share", + "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.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.", + "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] + // /share/[id]/edit + "share.edit.title": "Edit {shareId}", + "share.edit.append-upload": "Append file", + "share.edit.notify.generic-error": "An error occurred while finishing your share.", + "share.edit.notify.save-success": "Share updated successfully", + // END /share/[id]/edit + // /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.category.oauth": "Social Login", + "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-expiration": "Max expiration", + "admin.config.share.max-expiration.description": "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.", + "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.oauth.allow-registration": "Allow registration", + "admin.config.oauth.allow-registration.description": "Allow users to register via social login", + "admin.config.oauth.ignore-totp": "Ignore TOTP", + "admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login", + "admin.config.oauth.github-enabled": "GitHub", + "admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled", + "admin.config.oauth.github-client-id": "GitHub Client ID", + "admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app", + "admin.config.oauth.github-client-secret": "GitHub Client secret", + "admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app", + "admin.config.oauth.google-enabled": "Google", + "admin.config.oauth.google-enabled.description": "Whether Google login is enabled", + "admin.config.oauth.google-client-id": "Google Client ID", + "admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app", + "admin.config.oauth.google-client-secret": "Google Client secret", + "admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app", + "admin.config.oauth.microsoft-enabled": "Microsoft", + "admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled", + "admin.config.oauth.microsoft-tenant": "Microsoft Tenant", + "admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.", + "admin.config.oauth.microsoft-client-id": "Microsoft Client ID", + "admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app", + "admin.config.oauth.microsoft-client-secret": "Microsoft Client secret", + "admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app", + "admin.config.oauth.discord-enabled": "Discord", + "admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled", + "admin.config.oauth.discord-limited-guild": "Discord limited server ID", + "admin.config.oauth.discord-limited-guild.description": "Limit signing in to users in a specific server. Leave it blank to disable.", + "admin.config.oauth.discord-client-id": "Discord Client ID", + "admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app", + "admin.config.oauth.discord-client-secret": "Discord Client secret", + "admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app", + "admin.config.oauth.oidc-enabled": "OpenID Connect", + "admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled", + "admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI", + "admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-username-claim": "OpenID Connect username claim", + "admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.", + "admin.config.oauth.oidc-client-id": "OpenID Connect Client ID", + "admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret", + "admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app", + // 404 + "404.description": "Oops this page doesn't exist.", + "404.button.home": "Bring me back home", + // error + "error.title": "Error", + "error.description": "Oops!", + "error.button.back": "Go back", + "error.msg.default": "Something went wrong.", + "error.msg.access_denied": "You canceled the authentication process, please try again.", + "error.msg.expired_token": "The authentication process took too long, please try again.", + "error.msg.invalid_token": "Internal Error", + "error.msg.no_user": "User linked to this {0} account doesn't exist.", + "error.msg.no_email": "Can't get email address from this {0} account.", + "error.msg.already_linked": "This {0} account is already linked to another account.", + "error.msg.not_linked": "This {0} account haven't linked to any account yet.", + "error.msg.unverified_account": "This {0} account is unverified, please try again after verification.", + "error.msg.discord_guild_permission_denied": "You are not allowed to sign in.", + "error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.", + "error.param.provider_github": "GitHub", + "error.param.provider_google": "Google", + "error.param.provider_microsoft": "Microsoft", + "error.param.provider_discord": "Discord", + "error.param.provider_oidc": "OpenID Connect", + // 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.navigate-to-link": "Go to the 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/es-ES.ts b/frontend/src/i18n/translations/es-ES.ts index 392edce..29da522 100644 --- a/frontend/src/i18n/translations/es-ES.ts +++ b/frontend/src/i18n/translations/es-ES.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Generar", "common.button.done": "Listo", "common.text.link": "Enlace", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "o", "common.button.go-back": "Volver", "common.notify.copied": "Tu enlace se ha copiado al portapapeles", diff --git a/frontend/src/i18n/translations/fi-FI.ts b/frontend/src/i18n/translations/fi-FI.ts index 1b5182d..f03e888 100644 --- a/frontend/src/i18n/translations/fi-FI.ts +++ b/frontend/src/i18n/translations/fi-FI.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Luo", "common.button.done": "Valmis", "common.text.link": "Linkki", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "tai", "common.button.go-back": "Takaisin", "common.notify.copied": "Linkki kopioitiin leikepöydälle", diff --git a/frontend/src/i18n/translations/fr-FR.ts b/frontend/src/i18n/translations/fr-FR.ts index a161393..33a2c24 100644 --- a/frontend/src/i18n/translations/fr-FR.ts +++ b/frontend/src/i18n/translations/fr-FR.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Générer", "common.button.done": "Terminer", "common.text.link": "Lien", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "ou", "common.button.go-back": "Précédent", "common.notify.copied": "Votre lien a été copié dans le presse-papiers", diff --git a/frontend/src/i18n/translations/it-IT.ts b/frontend/src/i18n/translations/it-IT.ts index c01da2c..020187e 100644 --- a/frontend/src/i18n/translations/it-IT.ts +++ b/frontend/src/i18n/translations/it-IT.ts @@ -5,7 +5,7 @@ export default { "navbar.home": "Home", "navbar.signup": "Registrati", "navbar.links.shares": "Le mie condivisioni", - "navbar.links.reverse": "Reverse shares", + "navbar.links.reverse": "Condivisioni Inverse", "navbar.avatar.account": "Il mio account", "navbar.avatar.admin": "Amministrazione", "navbar.avatar.signout": "Disconetti", @@ -129,291 +129,292 @@ export default { "account.shares.modal.delete.description": "Vuoi davvero cancellare questa condivisione?", // 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": "Condivisione Inversa", + "account.reverseShares.description": "Una condivisione inversa consente di generare un URL univoco che consente agli utenti esterni di creare una condivisione.", + "account.reverseShares.title.empty": "È vuoto qui 👀", + "account.reverseShares.description.empty": "Non hai nessuna condivisione inversa.", // showCreateReverseShareModal.tsx - "account.reverseShares.modal.title": "Create reverse share", - "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.title": "Crea condivisione inversa", + "account.reverseShares.modal.expiration.label": "Valido fino a", + "account.reverseShares.modal.expiration.minute-singular": "Minuto", + "account.reverseShares.modal.expiration.minute-plural": "Minuti", + "account.reverseShares.modal.expiration.hour-singular": "Ora", + "account.reverseShares.modal.expiration.hour-plural": "Ore", + "account.reverseShares.modal.expiration.day-singular": "Giorno", + "account.reverseShares.modal.expiration.day-plural": "Giorni", + "account.reverseShares.modal.expiration.week-singular": "Settimana", + "account.reverseShares.modal.expiration.week-plural": "Settimane", + "account.reverseShares.modal.expiration.month-singular": "Mese", + "account.reverseShares.modal.expiration.month-plural": "Mesi", + "account.reverseShares.modal.expiration.year-singular": "Anno", + "account.reverseShares.modal.expiration.year-plural": "Anni", + "account.reverseShares.modal.max-size.label": "Dimensione massima della condivisione", + "account.reverseShares.modal.send-email": "Invia una notifica via email", + "account.reverseShares.modal.send-email.description": "Invia una notifica email quando viene creata una condivisione con questo link di condivisione inversa.", + "account.reverseShares.modal.max-use.label": "Utilizzo massimo", + "account.reverseShares.modal.max-use.description": "La quantità massima di volte che questo URL può essere usato per creare una condivisione.", + "account.reverseShare.never-expires": "Questa condivisione inversa non scadrà mai.", + "account.reverseShare.expires-on": "Questa condivisione inversa scadrà il {expiration}.", + "account.reverseShares.table.no-shares": "Nessuna condivisione è stata creata", + "account.reverseShares.table.count.singular": "condivisione", + "account.reverseShares.table.count.plural": "condivisioni", + "account.reverseShares.table.shares": "Condivisioni", + "account.reverseShares.table.remaining": "Utenti rimanenti", + "account.reverseShares.table.max-size": "Dimensione massima della condivisione", + "account.reverseShares.table.expires": "Scade il", + "account.reverseShares.modal.reverse-share-link": "Link di condivisione inversa", + "account.reverseShares.modal.delete.title": "Elimina condivisione inversa", + "account.reverseShares.modal.delete.description": "Vuoi davvero eliminare questa condivisione inversa? Se lo fai, anche le azioni associate verranno eliminate.", // END /account/reverseShares // /admin - "admin.title": "Administration", - "admin.button.users": "User management", - "admin.button.config": "Configuration", - "admin.version": "Version", + "admin.title": "Amministrazione", + "admin.button.users": "Gestione degli utenti", + "admin.button.config": "Configurazione", + "admin.version": "Versione", // END /admin // /admin/users - "admin.users.title": "User management", - "admin.users.table.username": "Username", + "admin.users.title": "Gestione degli utenti", + "admin.users.table.username": "Nome utente", "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?", + "admin.users.edit.update.title": "Aggiorna utente {username}", + "admin.users.edit.update.admin-privileges": "Privilegi di amministrazione", + "admin.users.edit.update.change-password.title": "Cambia la password", + "admin.users.edit.update.change-password.field": "Nuova password", + "admin.users.edit.update.change-password.button": "Salva la nuova password", + "admin.users.edit.update.notify.password.success": "Password cambiata con successo", + "admin.users.edit.delete.title": "Elimina l'utente: {username}", + "admin.users.edit.delete.description": "Vuoi davvero eliminare questo utente e tutte le sue condivisioni?", // showCreateUserModal.tsx - "admin.users.modal.create.title": "Create user", - "admin.users.modal.create.username": "Username", + "admin.users.modal.create.title": "Crea utente", + "admin.users.modal.create.username": "Nome utente", "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.manual-password": "Imposta la password manualmente", + "admin.users.modal.create.manual-password.description": "Se non selezionato, l'utente riceverà un'email con un link per impostare la propria password.", + "admin.users.modal.create.admin": "Privilegi di amministrazione", + "admin.users.modal.create.admin.description": "Se selezionato, l'utente sarà in grado di accedere al pannello amministratore.", // 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": "Si è verificato un errore durante il completamento della condivisione.", + "upload.notify.count-failed": "Impossibile caricare {count} file. Riprovare.", // 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.description": "Trascina qui i file per iniziare la tua condivisione. Possiamo accettare solo i file che sono inferiori a {maxSize} in totale.", + "upload.dropzone.notify.file-too-big": "I tuoi file superano la dimensione massima di condivisione di {maxSize}.", // FileList.tsx - "upload.filelist.name": "Name", - "upload.filelist.size": "Size", + "upload.filelist.name": "Nome", + "upload.filelist.size": "Dimensione", // 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.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.", - "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.title": "Crea Condivisione", + "upload.modal.link.error.invalid": "Può contenere solo lettere, numeri, underscore e trattini", + "upload.modal.link.error.taken": "Questo link è gia in uso", + "upload.modal.not-signed-in": "Non sei loggato", + "upload.modal.not-signed-in-description": "Non sarai in grado di eliminare la tua condivisione manualmente e visualizzare il numero dei visitatori.", + "upload.modal.expires.never": "mai", + "upload.modal.expires.never-long": "Non Scade Mai", + "upload.modal.expires.error.too-long": "La scadenza supera la data di scadenza massima di {max}.", + "upload.modal.link.label": "Collegamento", + "upload.modal.expires.label": "Valido fino a", + "upload.modal.expires.minute-singular": "Minuto", + "upload.modal.expires.minute-plural": "Minuti", + "upload.modal.expires.hour-singular": "Ora", + "upload.modal.expires.hour-plural": "Ore", + "upload.modal.expires.day-singular": "Giorno", + "upload.modal.expires.day-plural": "Giorni", + "upload.modal.expires.week-singular": "Settimana", + "upload.modal.expires.week-plural": "Settimane", + "upload.modal.expires.month-singular": "Mese", + "upload.modal.expires.month-plural": "Mesi", + "upload.modal.expires.year-singular": "Anno", + "upload.modal.expires.year-plural": "Anni", + "upload.modal.accordion.description.title": "Descrizione", + "upload.modal.accordion.description.placeholder": "Nota per i destinatari di questa condivisione", + "upload.modal.accordion.email.title": "Destinatari di posta elettronica", + "upload.modal.accordion.email.placeholder": "Inserisci le email dei destinatari", + "upload.modal.accordion.email.invalid-email": "Indirizzo email non valido", + "upload.modal.accordion.security.title": "Opzioni di sicurezza", + "upload.modal.accordion.security.password.label": "Protezione con password", + "upload.modal.accordion.security.password.placeholder": "Nessuna password", + "upload.modal.accordion.security.max-views.label": "Visualizzazioni massime", + "upload.modal.accordion.security.max-views.placeholder": "Nessun 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": "Questa condivisione non scadrà mai.", + "upload.modal.completed.expires-on": "Questa condivisione scadrà il {expiration}.", + "upload.modal.completed.share-ready": "Condivisione pronta", // 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.title": "Condividi {shareId}", + "share.description": "Guarda cosa ho condiviso con te!", + "share.error.visitor-limit-exceeded.title": "Limite visitatori superato", + "share.error.visitor-limit-exceeded.description": "Il limite di visitatori di questa condivisione è stato superato.", + "share.error.removed.title": "Condivisione rimossa", + "share.error.not-found.title": "Condivisione non trovata", + "share.error.not-found.description": "La condivisione che stai cercando non esiste.", + "share.modal.password.title": "Password richiesta", + "share.modal.password.description": "Per accedere a questa condivisione inserisci la password.", "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.modal.error.invalid-password": "Password non valida", + "share.button.download-all": "Scarica tutto", + "share.notify.download-all-preparing": "La condivisione è in preparazione. Riprova tra qualche minuto.", + "share.modal.file-link": "Link dei File", + "share.table.name": "Nome", + "share.table.size": "Dimensione", + "share.modal.file-preview.error.not-supported.title": "Anteprima non supportata", + "share.modal.file-preview.error.not-supported.description": "Un'anteprima per il tipo di file di questo tipo non è supportata. Per favore scarica il file per visualizzarlo.", // END /share/[id] // /share/[id]/edit - "share.edit.title": "Edit {shareId}", - "share.edit.append-upload": "Append file", - "share.edit.notify.generic-error": "An error occurred while finishing your share.", - "share.edit.notify.save-success": "Share updated successfully", + "share.edit.title": "Modifica {shareId}", + "share.edit.append-upload": "Aggiungi file", + "share.edit.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.", + "share.edit.notify.save-success": "Condivisione aggiornata correttamente", // END /share/[id]/edit // /admin/config - "admin.config.title": "Configuration", - "admin.config.category.general": "General", - "admin.config.category.share": "Share", + "admin.config.title": "Configurazione", + "admin.config.category.general": "Generale", + "admin.config.category.share": "Condivisioni", "admin.config.category.email": "Email", "admin.config.category.smtp": "SMTP", - "admin.config.category.oauth": "Social Login", - "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.category.oauth": "Effettua il login con i Social", + "admin.config.general.app-name": "Nome dell'App", + "admin.config.general.app-name.description": "Nome dell' applicazione", + "admin.config.general.app-url": "URL dell'App", + "admin.config.general.app-url.description": "Su quale URL Pingvin Share è pubblicato", + "admin.config.general.show-home-page": "Visualizza Home Page", + "admin.config.general.show-home-page.description": "Indica se mostrare la 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-expiration": "Max expiration", - "admin.config.share.max-expiration.description": "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.", - "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.general.logo.description": "Cambia il tuo logo caricando una nuova immagine. L'immagine deve essere un PNG e dovrebbe avere il formato 1:1.", + "admin.config.general.logo.placeholder": "Scegli un'immagine", + "admin.config.email.enable-share-email-recipients": "Abilita le email di notifica", + "admin.config.email.enable-share-email-recipients.description": "Indica se consentire la spedizione di email di notifica sulle share. Abilita questa opzione solo se hai abilitato SMTP.", + "admin.config.email.share-recipients-subject": "Oggetto dell'email di condivisione", + "admin.config.email.share-recipients-subject.description": "Oggetto dell'email che viene inviata ai destinatari della condivisione.", + "admin.config.email.share-recipients-message": "Testo dell'email di condivisione", + "admin.config.email.share-recipients-message.description": "Messaggio che viene inviato ai destinatari della condivisione. Variabili disponibili:\n {creator} - Il nome utente del creatore della condivisione\n {shareUrl} - L'URL della condivisione\n {desc} - La descrizione della condivisione\n {expires} - La data di scadenza della condivisione\n Le variabili saranno sostituite con il valore effettivo.", + "admin.config.email.reverse-share-subject": "Oggetto dell'email di condivisione inversa", + "admin.config.email.reverse-share-subject.description": "Oggetto dell'email che viene inviata quando qualcuno ha creato una condivisione con il tuo link di condivisione inversa.", + "admin.config.email.reverse-share-message": "Testo dell'email di condivisione inversa", + "admin.config.email.reverse-share-message.description": "Messaggio che viene inviato quando qualcuno ha creato una condivisione con il tuo link di condivisione inversa. {shareUrl} sarà sostituito con il nome del creatore e l'URL di condivisione.", + "admin.config.email.reset-password-subject": "Oggetto della mail per il reset della password", + "admin.config.email.reset-password-subject.description": "Oggetto dell'email che viene inviata quando un utente richiede il ripristino della password.", + "admin.config.email.reset-password-message": "Testo dell'email per il reset della password", + "admin.config.email.reset-password-message.description": "Messaggio che viene inviato quando un utente richiede un reset della password. {url} verrà sostituito con l'URL di reset della password.", + "admin.config.email.invite-subject": "Oggetto dell'email di invito", + "admin.config.email.invite-subject.description": "Oggetto dell'email che viene inviata quando un amministratore invita un utente.", + "admin.config.email.invite-message": "Testo dell'email di invito", + "admin.config.email.invite-message.description": "Messaggio che viene inviato quando un amministratore invita un utente. {url} verrà sostituito con l'URL di invito e {password} con la password.", + "admin.config.share.allow-registration": "Consenti la registrazione", + "admin.config.share.allow-registration.description": "Indica se la registrazione è autorizzata", + "admin.config.share.allow-unauthenticated-shares": "Consenti condivisioni non autenticate", + "admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni", + "admin.config.share.max-expiration": "Scadenza massima", + "admin.config.share.max-expiration.description": "Scadenza massima di condivisione in ore. Impostare a 0 per consentire la scadenza illimitata.", + "admin.config.share.max-size": "Dim. massima", + "admin.config.share.max-size.description": "Dimensione massima di condivisione in byte", + "admin.config.share.zip-compression-level": "Livello di compressione Zip", + "admin.config.share.zip-compression-level.description": "Regola il livello per bilanciare la dimensione del file e la velocità di compressione. Valori validi da 0 a 9, con 0 senza compressione e 9 con compressione massima. ", + "admin.config.smtp.enabled": "Abilitato", + "admin.config.smtp.enabled.description": "Indica se SMTP è abilitato. Impostalo a VERO solo se hai inserito host, porta, email, utente e password del tuo server SMTP.", "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.host.description": "Host del server SMTP", + "admin.config.smtp.port": "Porta", + "admin.config.smtp.port.description": "Porta del server SMTP", "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.email.description": "Indirizzo da cui vengono inviate le email", + "admin.config.smtp.username": "Nome utente", + "admin.config.smtp.username.description": "Nome utente del server SMTP", "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.oauth.allow-registration": "Allow registration", - "admin.config.oauth.allow-registration.description": "Allow users to register via social login", - "admin.config.oauth.ignore-totp": "Ignore TOTP", - "admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login", + "admin.config.smtp.password.description": "Password del server SMTP", + "admin.config.smtp.button.test": "Invia e-mail di prova", + "admin.config.oauth.allow-registration": "Consenti la registrazione", + "admin.config.oauth.allow-registration.description": "Consenti agli utenti di registrarsi tramite social login", + "admin.config.oauth.ignore-totp": "Ignora TOTP", + "admin.config.oauth.ignore-totp.description": "Indica se ignorare TOTP quando l'utente utilizza il social login", "admin.config.oauth.github-enabled": "GitHub", - "admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled", + "admin.config.oauth.github-enabled.description": "Se l'accesso tramite GitHub è abilitato", "admin.config.oauth.github-client-id": "GitHub Client ID", - "admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app", + "admin.config.oauth.github-client-id.description": "ID client dell'app GitHub OAuth", "admin.config.oauth.github-client-secret": "GitHub Client secret", - "admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app", + "admin.config.oauth.github-client-secret.description": "Client secret dell'app GitHub OAuth", "admin.config.oauth.google-enabled": "Google", - "admin.config.oauth.google-enabled.description": "Whether Google login is enabled", - "admin.config.oauth.google-client-id": "Google Client ID", - "admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app", + "admin.config.oauth.google-enabled.description": "Se il login tramite Google è abilitato", + "admin.config.oauth.google-client-id": "Id Client Goole", + "admin.config.oauth.google-client-id.description": "ID client dell'app Google OAuth", "admin.config.oauth.google-client-secret": "Google Client secret", - "admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app", + "admin.config.oauth.google-client-secret.description": "Client secret dell'app Google OAuth", "admin.config.oauth.microsoft-enabled": "Microsoft", - "admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled", + "admin.config.oauth.microsoft-enabled.description": "Se il login tramite Microsoft è abilitato", "admin.config.oauth.microsoft-tenant": "Microsoft Tenant", - "admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.", + "admin.config.oauth.microsoft-tenant.description": "Tenant ID dell'app Microsoft OAuth\ngenerico: Gli utenti con un account Microsoft personale e un account di lavoro o scuola da Microsoft Entra ID possono accedere all'applicazione. organizzazioni: Solo gli utenti con account di lavoro o scolastici di Microsoft Entra ID possono accedere all'applicazione.\nclienti: Solo gli utenti con un account Microsoft personale possono accedere all'applicazione.\nnome di dominio del tenant Microsoft Entra o l'ID del tenant in formato GUID: Solo gli utenti di uno specifico tenant Microsoft Entra (membri di directory con un account di lavoro o di scuola o ospiti di directory con un account Microsoft personale) possono accedere all'applicazione.", "admin.config.oauth.microsoft-client-id": "Microsoft Client ID", - "admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app", + "admin.config.oauth.microsoft-client-id.description": "ID client dell'app Microsoft OAuth", "admin.config.oauth.microsoft-client-secret": "Microsoft Client secret", - "admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app", + "admin.config.oauth.microsoft-client-secret.description": "Client secret dell'app Microsoft OAuth", "admin.config.oauth.discord-enabled": "Discord", - "admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled", - "admin.config.oauth.discord-limited-guild": "Discord limited server ID", - "admin.config.oauth.discord-limited-guild.description": "Limit signing in to users in a specific server. Leave it blank to disable.", + "admin.config.oauth.discord-enabled.description": "Se l'accesso tramite Discord è abilitato", + "admin.config.oauth.discord-limited-guild": "Limita a un particolare server ID", + "admin.config.oauth.discord-limited-guild.description": "Limita l'accesso agli utenti in un server specifico. Lascialo vuoto per disabilitare.", "admin.config.oauth.discord-client-id": "Discord Client ID", - "admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app", + "admin.config.oauth.discord-client-id.description": "ID client dell'app Discord OAuth", "admin.config.oauth.discord-client-secret": "Discord Client secret", - "admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app", - "admin.config.oauth.oidc-enabled": "OpenID Connect", - "admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled", + "admin.config.oauth.discord-client-secret.description": "Client secret dell'applicazione Discord OAuth", + "admin.config.oauth.oidc-enabled": "OpenId Connect", + "admin.config.oauth.oidc-enabled.description": "Se il login tramite OpenID Connect è abilitato", "admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI", - "admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app", - "admin.config.oauth.oidc-username-claim": "OpenID Connect username claim", - "admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.", + "admin.config.oauth.oidc-discovery-uri.description": "URI di scoperta dell'app OAuth di OpenID Connect", + "admin.config.oauth.oidc-username-claim": "Richiesta nome utente OpenID Connect", + "admin.config.oauth.oidc-username-claim.description": "Nome utente nel token OpenID Connect. Lascialo vuoto se non sai cos'è questa configurazione.", "admin.config.oauth.oidc-client-id": "OpenID Connect Client ID", - "admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-client-id.description": "Client ID dell'app OAuth di OpenID Connect", "admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret", - "admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-client-secret.description": "Client secret dell'app OAuth OpenID Connect", // 404 - "404.description": "Oops this page doesn't exist.", - "404.button.home": "Bring me back home", + "404.description": "Ops, questa pagina non esiste.", + "404.button.home": "Riportami a casa", // error - "error.title": "Error", + "error.title": "Errore", "error.description": "Oops!", - "error.button.back": "Go back", - "error.msg.default": "Something went wrong.", - "error.msg.access_denied": "You canceled the authentication process, please try again.", - "error.msg.expired_token": "The authentication process took too long, please try again.", - "error.msg.invalid_token": "Internal Error", - "error.msg.no_user": "User linked to this {0} account doesn't exist.", - "error.msg.no_email": "Can't get email address from this {0} account.", - "error.msg.already_linked": "This {0} account is already linked to another account.", - "error.msg.not_linked": "This {0} account haven't linked to any account yet.", - "error.msg.unverified_account": "This {0} account is unverified, please try again after verification.", - "error.msg.discord_guild_permission_denied": "You are not allowed to sign in.", - "error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.", + "error.button.back": "Torna indietro", + "error.msg.default": "Si è verificato un errore.", + "error.msg.access_denied": "Hai annullato il processo di autenticazione, per favore riprova.", + "error.msg.expired_token": "Il processo di autenticazione ha richiesto troppo tempo, per favore riprova.", + "error.msg.invalid_token": "Errore Interno", + "error.msg.no_user": "L'utente collegato a questo account {0} non esiste.", + "error.msg.no_email": "Impossibile ottenere l'indirizzo email da questo account {0}.", + "error.msg.already_linked": "Questo account {0} è già collegato ad un altro account.", + "error.msg.not_linked": "Questo account {0} non è ancora collegato ad alcun account.", + "error.msg.unverified_account": "Questo account {0} non è verificato, per favore riprova dopo la verifica.", + "error.msg.discord_guild_permission_denied": "Non sei autorizzato ad accedere.", + "error.msg.cannot_get_user_info": "Non è possibile ottenere le informazioni utente da questo account {0}.", "error.param.provider_github": "GitHub", "error.param.provider_google": "Google", "error.param.provider_microsoft": "Microsoft", "error.param.provider_discord": "Discord", - "error.param.provider_oidc": "OpenID Connect", + "error.param.provider_oidc": "OpenId Connect", // 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" + "common.button.save": "Salva", + "common.button.create": "Crea", + "common.button.submit": "Invia", + "common.button.delete": "Cancella", + "common.button.cancel": "Annulla", + "common.button.confirm": "Conferma", + "common.button.disable": "Disabilita", + "common.button.share": "Condividi", + "common.button.generate": "Genera", + "common.button.done": "Fatto", + "common.text.link": "Collegamento", + "common.text.navigate-to-link": "Vai al collegamento", + "common.text.or": "o", + "common.button.go-back": "Torna indietro", + "common.notify.copied": "Il tuo collegamento e' stato copiato negli appunti", + "common.success": "Successo", + "common.error": "Errore", + "common.error.unknown": "Si è verificato un errore sconosciuto", + "common.error.invalid-email": "Indirizzo email non valido", + "common.error.too-short": "Deve contenere almeno {length} caratteri", + "common.error.too-long": "Deve contenere al massimo {length} caratteri", + "common.error.exact-length": "Deve essere esattamente {length} caratteri", + "common.error.invalid-number": "Deve essere un numero", + "common.error.field-required": "Questo campo è obbligatorio" }; \ No newline at end of file diff --git a/frontend/src/i18n/translations/ja-JP.ts b/frontend/src/i18n/translations/ja-JP.ts index 12ef278..2f6571f 100644 --- a/frontend/src/i18n/translations/ja-JP.ts +++ b/frontend/src/i18n/translations/ja-JP.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "生成", "common.button.done": "完了", "common.text.link": "リンク", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "または", "common.button.go-back": "戻る", "common.notify.copied": "リンクをクリップボードにコピーしました", diff --git a/frontend/src/i18n/translations/nl-BE.ts b/frontend/src/i18n/translations/nl-BE.ts index 4c08a4a..22e1402 100644 --- a/frontend/src/i18n/translations/nl-BE.ts +++ b/frontend/src/i18n/translations/nl-BE.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Genereren", "common.button.done": "Voltooid", "common.text.link": "Koppeling", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "of", "common.button.go-back": "Ga terug", "common.notify.copied": "Uw link is gekopieerd naar het klembord", diff --git a/frontend/src/i18n/translations/pl-PL.ts b/frontend/src/i18n/translations/pl-PL.ts index 77f1e85..93bafb7 100644 --- a/frontend/src/i18n/translations/pl-PL.ts +++ b/frontend/src/i18n/translations/pl-PL.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Wygeneruj", "common.button.done": "Gotowe", "common.text.link": "Link", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "lub", "common.button.go-back": "Wróć", "common.notify.copied": "Link został skopiowany do schowka", diff --git a/frontend/src/i18n/translations/pt-BR.ts b/frontend/src/i18n/translations/pt-BR.ts index 49c341a..ee6b6c5 100644 --- a/frontend/src/i18n/translations/pt-BR.ts +++ b/frontend/src/i18n/translations/pt-BR.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Gerar", "common.button.done": "Concluído", "common.text.link": "Link", + "common.text.navigate-to-link": "Ir para o link", "common.text.or": "ou", "common.button.go-back": "Voltar", "common.notify.copied": "O seu link foi copiado para a área de transferência", diff --git a/frontend/src/i18n/translations/ru-RU.ts b/frontend/src/i18n/translations/ru-RU.ts index 6d06a91..c72aa6c 100644 --- a/frontend/src/i18n/translations/ru-RU.ts +++ b/frontend/src/i18n/translations/ru-RU.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Сгенерировать", "common.button.done": "Готово", "common.text.link": "Ссылка", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "или", "common.button.go-back": "Назад", "common.notify.copied": "Ваша ссылка скопирована в буфер обмена", diff --git a/frontend/src/i18n/translations/sr-SP.ts b/frontend/src/i18n/translations/sr-SP.ts index a4fbca0..a76a702 100644 --- a/frontend/src/i18n/translations/sr-SP.ts +++ b/frontend/src/i18n/translations/sr-SP.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "Генериши", "common.button.done": "Готово", "common.text.link": "Линк", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "или", "common.button.go-back": "Иди назад", "common.notify.copied": "Ваша веза је копирана у clipboard", diff --git a/frontend/src/i18n/translations/sv-SE.ts b/frontend/src/i18n/translations/sv-SE.ts index bbfa208..980db6b 100644 --- a/frontend/src/i18n/translations/sv-SE.ts +++ b/frontend/src/i18n/translations/sv-SE.ts @@ -346,7 +346,7 @@ export default { "admin.config.oauth.microsoft-enabled": "Microsoft", "admin.config.oauth.microsoft-enabled.description": "Om Microsoftinloggning skall vara aktiverat", "admin.config.oauth.microsoft-tenant": "Microsoft Tenant", - "admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.", + "admin.config.oauth.microsoft-tenant.description": "Tenant-ID för Microsoft OAuth app\ngemensamt: Användare med både ett personligt Microsoft-konto och ett arbets- eller skolkonto från Microsoft Entra ID kan logga in på programmet.\norganisationer: Endast användare med arbets- eller skolkonton från Microsoft Entra ID kan logga in på programmet.\nkonsumenter: Endast användare med ett personligt Microsoft-konto kan logga in på programmet.\ndomännamn för Microsoft Entra tenant eller tenant ID i GUID-format: Endast användare från en specifik Microsoft Entra tenant (katalogmedlemmar med ett arbets- eller skolkonto eller kataloggäster med ett personligt Microsoft-konto) kan logga in på ansökan.", "admin.config.oauth.microsoft-client-id": "Microsoft Client ID", "admin.config.oauth.microsoft-client-id.description": "Client ID för Microsoft OAuth", "admin.config.oauth.microsoft-client-secret": "Microsoft Client secret", @@ -360,15 +360,15 @@ export default { "admin.config.oauth.discord-client-secret": "Discord Client secret", "admin.config.oauth.discord-client-secret.description": "Client secret för Discord OAuth", "admin.config.oauth.oidc-enabled": "OpenID Connect", - "admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled", + "admin.config.oauth.oidc-enabled.description": "Om OpenID-inloggning är aktiverat", "admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI", - "admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app", - "admin.config.oauth.oidc-username-claim": "OpenID Connect username claim", - "admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.", + "admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen", + "admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamnsanspråk", + "admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.", "admin.config.oauth.oidc-client-id": "OpenID Connect Client ID", - "admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-client-id.description": "Client ID för OpenID OAuth", "admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret", - "admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app", + "admin.config.oauth.oidc-client-secret.description": "Client secret för OpenID OAuth", // 404 "404.description": "Hoppsan den här sidan finns inte.", "404.button.home": "Ta mig tillbaka hem", @@ -386,7 +386,7 @@ export default { "error.msg.not_linked": "Detta {0} konto har ännu inte länkat till något konto.", "error.msg.unverified_account": "Detta {0} -konto är overifierat, försök igen efter verifiering.", "error.msg.discord_guild_permission_denied": "Du är inte tillåten att logga in.", - "error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.", + "error.msg.cannot_get_user_info": "Kan inte hämta din användarinformation från detta {0} konto.", "error.param.provider_github": "GitHub", "error.param.provider_google": "Google", "error.param.provider_microsoft": "Microsoft", @@ -404,6 +404,7 @@ export default { "common.button.generate": "Generera", "common.button.done": "Klar", "common.text.link": "Länk", + "common.text.navigate-to-link": "Gå till länken", "common.text.or": "eller", "common.button.go-back": "Gå tillbaka", "common.notify.copied": "Din länk har kopierats till urklipp", diff --git a/frontend/src/i18n/translations/th-TH.ts b/frontend/src/i18n/translations/th-TH.ts index e04a89b..9a6c8f1 100644 --- a/frontend/src/i18n/translations/th-TH.ts +++ b/frontend/src/i18n/translations/th-TH.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "สุ่ม", "common.button.done": "เสร็จสิ้น", "common.text.link": "ลิงค์", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "หรือ", "common.button.go-back": "ย้อนกลับ", "common.notify.copied": "คัดลอกไปยังคลิปบอร์ดแล้ว", diff --git a/frontend/src/i18n/translations/zh-TW.ts b/frontend/src/i18n/translations/zh-TW.ts index 93a1017..a60eec4 100644 --- a/frontend/src/i18n/translations/zh-TW.ts +++ b/frontend/src/i18n/translations/zh-TW.ts @@ -404,6 +404,7 @@ export default { "common.button.generate": "自動產生", "common.button.done": "完成", "common.text.link": "聯結", + "common.text.navigate-to-link": "Go to the link", "common.text.or": "或", "common.button.go-back": "返回", "common.notify.copied": "已複製到剪貼簿",