diff --git a/crowdin.yml b/crowdin.yml
index 4a230c4..0f4dae5 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,4 +1,4 @@
files:
- - source: /frontend/src/i18n/translations/en.ts
+ - source: /frontend/src/i18n/translations/en-US.ts
translation: /%original_path%/%locale%.ts
pull_request_title: "chore: update translations via Crowdin"
diff --git a/frontend/src/i18n/locales.ts b/frontend/src/i18n/locales.ts
index f643550..2d1daf5 100644
--- a/frontend/src/i18n/locales.ts
+++ b/frontend/src/i18n/locales.ts
@@ -1,46 +1,46 @@
-import danish from "./translations/da";
-import german from "./translations/de";
-import english from "./translations/en";
-import spanish from "./translations/es";
-import french from "./translations/fr";
-import portugueze from "./translations/pt";
-import thai from "./translations/th";
+import danish from "./translations/da-DK";
+import german from "./translations/de-DE";
+import english from "./translations/en-US";
+import spanish from "./translations/es-ES";
+import french from "./translations/fr-FR";
+import portugueze from "./translations/pt-PT";
+import thai from "./translations/th-TH";
import chineseSimplified from "./translations/zh-CN";
export const LOCALES = {
ENGLISH: {
name: "English",
- code: "en",
+ code: "en-US",
messages: english,
},
GERMAN: {
name: "Deutsch",
- code: "de",
+ code: "de-DE",
messages: german,
},
FRENCH: {
name: "Français",
- code: "fr",
+ code: "fr-FR",
messages: french,
},
PORTUGUEZE: {
name: "Português",
- code: "pt",
+ code: "pt-PT",
messages: portugueze,
},
DANISH: {
name: "Dansk",
- code: "da",
+ code: "da-DK",
messages: danish,
},
THAI: {
name: "ไทย",
- code: "th",
+ code: "th-TH",
messages: thai,
},
SPANISH: {
name: "Español",
- code: "es",
+ code: "es-ES",
messages: spanish,
},
CHINESE_SIMPLIFIED: {
diff --git a/frontend/src/i18n/translations/da.ts b/frontend/src/i18n/translations/da.ts
deleted file mode 100644
index 8da2798..0000000
--- a/frontend/src/i18n/translations/da.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Upload",
- "navbar.signin": "Log ind",
- "navbar.home": "Hjem",
- "navbar.signup": "Opret bruger",
- "navbar.links.shares": "Mine delte filer",
- "navbar.links.reverse": "Omvendt deling",
- "navbar.avatar.account": "Min bruger",
- "navbar.avatar.admin": "Administration",
- "navbar.avatar.signout": "Log ud",
- // END navbar
- // /
- "home.title": "En self-hosted fildelingsplatform.",
- "home.description": "Er du sikker på, at du vil overlade dine personlige filer til tredjeparter som WeTransfer?",
- "home.bullet.a.name": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share på din egen maskine.",
- "home.bullet.b.name": "Privatliv",
- "home.bullet.b.description": "Dine filer er dine filer og bør ikke komme i hænderne på tredjeparter.",
- "home.bullet.c.name": "Ingen irriterende grænse for filstørrelse",
- "home.bullet.c.description": "Upload så store filer, som du vil. Kun din harddisk sætter grænsen.",
- "home.button.start": "Kom i gang",
- "home.button.source": "Source code",
- // END /
- // /auth/signin
- "signin.title": "Velkommen tilbage",
- "signin.description": "Har du ikke en bruger endnu?",
- "signin.button.signup": "Opret bruger",
- "signin.input.email-or-username": "E-mail eller brugernavn",
- "signin.input.email-or-username.placeholder": "Din e-mail eller dit brugernavn",
- "signin.input.password": "Adgangskode",
- "signin.input.password.placeholder": "Din adgangskode",
- "signin.button.submit": "Log ind",
- "signIn.notify.totp-required.title": "2-faktor login påkrævet",
- "signIn.notify.totp-required.description": "Indtast den aktuelle engangskode fra din 2-faktor Authenticator",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Opret en bruger",
- "signup.description": "Har du allerede en bruger?",
- "signup.button.signin": "Log ind",
- "signup.input.username": "Brugernavn",
- "signup.input.username.placeholder": "Dit brugernavn",
- "signup.input.email": "E-mail",
- "signup.input.email.placeholder": "Din e-mail",
- "signup.button.submit": "Lad os komme i gang",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Glemt din adgangskode?",
- "resetPassword.description": "Indtast din e-mail for at nulstille din adgangskode.",
- "resetPassword.notify.success": "En e-mail er blevet sendt med et link til at nulstille din adgangskode.",
- "resetPassword.button.back": "Tilbage til login",
- "resetPassword.text.resetPassword": "Nulstil adgangskode",
- "resetPassword.text.enterNewPassword": "Indtast din nye adgangskode",
- "resetPassword.input.password": "Ny adgangskode",
- "resetPassword.notify.passwordReset": "Adgangskoden er blevet nulstillet.",
- // /account
- "account.title": "Min bruger",
- "account.card.info.title": "Brugerinfo",
- "account.card.info.username": "Brugernavn",
- "account.card.info.email": "E-mail",
- "account.notify.info.success": "Brugeren blev opdateret med succes",
- "account.card.password.title": "Adgangskode",
- "account.card.password.old": "Gammel adgangskode",
- "account.card.password.new": "Ny adgangskode",
- "account.notify.password.success": "Adgangskoden er ændret",
- "account.card.security.title": "Sikkerhed",
- "account.card.security.totp.enable.description": "Indtast din nuværende adgangskode for at begynde opsætningen af 2-faktor login",
- "account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
- "account.card.security.totp.button.start": "Start",
- "account.modal.totp.title": "Aktiver 2-faktor login",
- "account.modal.totp.step1": "Trin 1: Tilføj din 2-faktor Authenticator",
- "account.modal.totp.step2": "Trin 2: Valider din kode",
- "account.modal.totp.enterManually": "Indtast manuelt",
- "account.modal.totp.code": "Kode",
- "account.modal.totp.clickToCopy": "Klik for at kopiere",
- "account.modal.totp.verify": "Bekræft",
- "account.notify.totp.disable": "2-faktor blev deaktiveret",
- "account.notify.totp.enable": "2-faktor blev deaktiveret",
- "account.card.language.title": "Sprog",
- "account.card.color.title": "Farveskema",
- // ThemeSwitcher.tsx
- "account.theme.dark": "Mørkt",
- "account.theme.light": "Lyst",
- "account.theme.system": "System",
- "account.button.delete": "Slet bruger",
- "account.modal.delete.title": "Slet bruger",
- "account.modal.delete.description": "Er du sikker på at du vil slette din bruger, herunder alle dine aktive delinger?",
- // END /account
- // /account/shares
- "account.shares.title": "Mine delte filer",
- "account.shares.title.empty": "Der er tomt her 👀",
- "account.shares.description.empty": "Du har ingen delinger.",
- "account.shares.button.create": "Opret en",
- "account.shares.info.title": "Share informations",
- "account.shares.table.id": "ID",
- "account.shares.table.name": "Navn",
- "account.shares.table.description": "Beskrivelse",
- "account.shares.table.visitors": "Besøgende",
- "account.shares.table.expiresAt": "Udløber d",
- "account.shares.table.createdAt": "Oprettet d.",
- "account.shares.table.size": "Størrelse",
- "account.shares.modal.share-link": "Del link",
- "account.shares.modal.delete.title": "Delete share {share}",
- "account.shares.modal.delete.description": "Ønsker du virkelig at slette denne deling?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Omvendt deling",
- "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": "Der er tomt her 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Udløb",
- "account.reverseShares.modal.expiration.minute-singular": "Minut",
- "account.reverseShares.modal.expiration.minute-plural": "Minutter",
- "account.reverseShares.modal.expiration.hour-singular": "Time",
- "account.reverseShares.modal.expiration.hour-plural": "Timer",
- "account.reverseShares.modal.expiration.day-singular": "Dag",
- "account.reverseShares.modal.expiration.day-plural": "Dage",
- "account.reverseShares.modal.expiration.week-singular": "Uge",
- "account.reverseShares.modal.expiration.week-plural": "Uger",
- "account.reverseShares.modal.expiration.month-singular": "Måned",
- "account.reverseShares.modal.expiration.month-plural": "Måneder",
- "account.reverseShares.modal.expiration.year-singular": "År",
- "account.reverseShares.modal.expiration.year-plural": "År",
- "account.reverseShares.modal.max-size.label": "Maksimal størrelse for deling",
- "account.reverseShares.modal.send-email": "Send e-mail notifikation",
- "account.reverseShares.modal.send-email.description": "Send en e-mail notifikation, når der oprettes en deling med dette omvendte delingslink.",
- "account.reverseShares.modal.max-use.label": "Maksimal anvendelser",
- "account.reverseShares.modal.max-use.description": "Det maksimale antal gange, denne URL kan bruges til at oprette en deling.",
- "account.reverseShare.never-expires": "Denne omvendte deling udløber aldrig.",
- "account.reverseShare.expires-on": "Denne omvendte deling udløber den {expiration}.",
- "account.reverseShares.table.no-shares": "Der er ikke oprettet nogle delinger endnu",
- "account.reverseShares.table.count.singular": "del",
- "account.reverseShares.table.count.plural": "delinger",
- "account.reverseShares.table.shares": "Delinger",
- "account.reverseShares.table.remaining": "Resterende anvendelser",
- "account.reverseShares.table.max-size": "Maksimal størrelse for deling",
- "account.reverseShares.table.expires": "Udløber d",
- "account.reverseShares.modal.reverse-share-link": "Omvendt deling",
- "account.reverseShares.modal.delete.title": "Delete reverse share",
- "account.reverseShares.modal.delete.description": "Ønsker du virkelig at slette denne omvendte deling? Hvis du gør det, vil de tilknyttede delinger også blive slettet.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administration",
- "admin.button.users": "Brugeradministration",
- "admin.button.config": "Konfiguration",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "Brugeradministration",
- "admin.users.table.username": "Brugernavn",
- "admin.users.table.email": "E-mail",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Opdater bruger {username}",
- "admin.users.edit.update.admin-privileges": "Admin rettigheder",
- "admin.users.edit.update.change-password.title": "Skift adgangskode",
- "admin.users.edit.update.change-password.field": "Ny adgangskode",
- "admin.users.edit.update.change-password.button": "Gem ny adgangskode",
- "admin.users.edit.update.notify.password.success": "Adgangskoden er ændret",
- "admin.users.edit.delete.title": "Slet bruger {username}",
- "admin.users.edit.delete.description": "Er du sikker på du vil slette denne bruger og tilhørende delinger?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Opret bruger",
- "admin.users.modal.create.username": "Brugernavn",
- "admin.users.modal.create.email": "E-mail",
- "admin.users.modal.create.password": "Adgangskode",
- "admin.users.modal.create.manual-password": "Angiv adgangskode manuelt",
- "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": "Der opstod en fejl under afslutningen af din deling.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
- // Dropzone.tsx
- "upload.dropzone.title": "Upload filer",
- "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": "Navn",
- "upload.filelist.size": "Størrelse",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Opret Deling",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "Det valgte link er allerede i brug",
- "upload.modal.not-signed-in": "Du er ikke logget ind",
- "upload.modal.not-signed-in-description": "Du vil ikke være i stand til at slette din deling manuelt og se antallet af besøgende.",
- "upload.modal.expires.never": "aldrig",
- "upload.modal.expires.never-long": "Udløber aldrig",
- "upload.modal.link.label": "Link",
- "upload.modal.link.placeholder": "minAwesomeDeling",
- "upload.modal.expires.label": "Udløb",
- "upload.modal.expires.minute-singular": "Minut",
- "upload.modal.expires.minute-plural": "Minutter",
- "upload.modal.expires.hour-singular": "Time",
- "upload.modal.expires.hour-plural": "Timer",
- "upload.modal.expires.day-singular": "Dag",
- "upload.modal.expires.day-plural": "Dage",
- "upload.modal.expires.week-singular": "Uge",
- "upload.modal.expires.week-plural": "Uger",
- "upload.modal.expires.month-singular": "Måned",
- "upload.modal.expires.month-plural": "Måneder",
- "upload.modal.expires.year-singular": "År",
- "upload.modal.expires.year-plural": "År",
- "upload.modal.accordion.description.title": "Beskrivelse",
- "upload.modal.accordion.description.placeholder": "Note for the recipients of this share",
- "upload.modal.accordion.email.title": "E-mail modtagere",
- "upload.modal.accordion.email.placeholder": "Indtast e-mail modtagere",
- "upload.modal.accordion.email.invalid-email": "Ugyldig e-mailadresse",
- "upload.modal.accordion.security.title": "Sikkerhedsindstillinger",
- "upload.modal.accordion.security.password.label": "Adgangskodebeskyttelse",
- "upload.modal.accordion.security.password.placeholder": "Ingen adgangskode",
- "upload.modal.accordion.security.max-views.label": "Max antal visninger",
- "upload.modal.accordion.security.max-views.placeholder": "Ingen begrænsning",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "Denne deling vil aldrig udløbe.",
- "upload.modal.completed.expires-on": "Denne omvendte deling udløber den {expiration}.",
- "upload.modal.completed.share-ready": "Delingen er klar",
- // END /upload
- // /share/[id]
- "share.title": "Del {shareId}",
- "share.description": "Se hvad jeg har delt med dig!",
- "share.error.visitor-limit-exceeded.title": "Grænsen for besøgende overskredet",
- "share.error.visitor-limit-exceeded.description": "Besøgsgrænsen for denne deling er blevet overskredet.",
- "share.error.removed.title": "Deling fjernet",
- "share.error.not-found.title": "Delingen blev ikke fundet",
- "share.error.not-found.description": "Den deling, du leder efter, eksisterer ikke.",
- "share.modal.password.title": "Adgangskode påkrævet",
- "share.modal.password.description": "For at få adgang til denne deling, indtast venligst adgangskoden til delingen.",
- "share.modal.password": "Adgangskode",
- "share.modal.error.invalid-password": "Ugyldig adgangskode",
- "share.button.download-all": "Download alle",
- "share.notify.download-all-preparing": "Delingen forberedes. Prøv igen om et par minutter.",
- "share.modal.file-link": "Fil link",
- "share.table.name": "Navn",
- "share.table.size": "Størrelse",
- "share.modal.file-preview.error.not-supported.title": "Forhåndsvisning ikke understøttet",
- "share.modal.file-preview.error.not-supported.description": "En forhåndsvisning for thise filtype er ikke understøttet. Download venligst filen for at se den.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Konfiguration",
- "admin.config.category.general": "Generelt",
- "admin.config.category.share": "Del",
- "admin.config.category.email": "E-mail",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "App-navn",
- "admin.config.general.app-name.description": "Navnet på applikationen",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "På hvilken URL Pingvin Share er tilgængelig",
- "admin.config.general.show-home-page": "Vis forside",
- "admin.config.general.show-home-page.description": "Om forsiden skal vises",
- "admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Skift dit logo ved at uploade et nyt billede. Billedet skal være PNG og skal have formatet 1:1.",
- "admin.config.general.logo.placeholder": "Vælg billede",
- "admin.config.email.enable-share-email-recipients": "Aktiver deling til e-mail modtagere",
- "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": "Nulstil adgangskode besked",
- "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": "Invitations emne",
- "admin.config.email.invite-subject.description": "Emne for den e-mail, der sendes, når en administrator inviterer en ny bruger.",
- "admin.config.email.invite-message": "Invitations besked",
- "admin.config.email.invite-message.description": "Besked som bliver sendt, når en administrator inviterer en bruger. {url} vil blive erstattet med invitations-URL'en og {password} med adgangskoden.",
- "admin.config.share.allow-registration": "Tillad oprettelser",
- "admin.config.share.allow-registration.description": "Om alle skal kunne oprette en bruger",
- "admin.config.share.allow-unauthenticated-shares": "Tillad uautoriserede delinger",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Maks. størrelse",
- "admin.config.share.max-size.description": "Maksimal filstørrelse i bytes",
- "admin.config.smtp.enabled": "Aktiveret",
- "admin.config.smtp.enabled.description": "Om SMTP er aktiveret. Aktiver kun SMTP, hvis du har indtastet SMTP-server vært, port, e-mail, bruger og adgangskode.",
- "admin.config.smtp.host": "Vært",
- "admin.config.smtp.host.description": "Vært for SMTP serveren",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Porten til SMTP serveren",
- "admin.config.smtp.email": "E-mail",
- "admin.config.smtp.email.description": "E-mail adressen som der skal afsendes fra",
- "admin.config.smtp.username": "Brugernavn",
- "admin.config.smtp.username.description": "Brugernavnet til SMTP serveren",
- "admin.config.smtp.password": "Adgangskode",
- "admin.config.smtp.password.description": "Adgangskoden til SMTP serveren",
- "admin.config.smtp.button.test": "Send test e-mail",
- // 404
- "404.title": "404",
- "404.description": "Ups! Denne side findes ikke.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Gem",
- "common.button.create": "Opret",
- "common.button.submit": "Submit",
- "common.button.delete": "Slet",
- "common.button.cancel": "Annuller",
- "common.button.confirm": "Bekræft",
- "common.button.disable": "Deaktiver",
- "common.button.share": "Del",
- "common.button.generate": "Generer",
- "common.button.done": "Færdig",
- "common.text.link": "Link",
- "common.text.or": "eller",
- "common.button.go-back": "Gå tilbage",
- "common.notify.copied": "Linket blev kopieret til udklipsholderen",
- "common.error": "Fejl",
- "common.error.unknown": "En ukendt fejl opstod",
- "common.error.invalid-email": "Ugyldig e-mail",
- "common.error.too-short": "Skal være på mindst {length} tegn",
- "common.error.too-long": "Må højst være {length} tegn",
- "common.error.exact-length": "Skal være præcis {length} tegn",
- "common.error.invalid-number": "Skal være et tal",
- "common.error.field-required": "Dette felt er påkrævet"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/de.ts b/frontend/src/i18n/translations/de.ts
deleted file mode 100644
index 27ef1f6..0000000
--- a/frontend/src/i18n/translations/de.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Hochladen",
- "navbar.signin": "Anmelden",
- "navbar.home": "Startseite",
- "navbar.signup": "Registrieren",
- "navbar.links.shares": "Meine Freigaben",
- "navbar.links.reverse": "Reverse shares",
- "navbar.avatar.account": "Mein Konto",
- "navbar.avatar.admin": "Administration",
- "navbar.avatar.signout": "Abmelden",
- // END navbar
- // /
- "home.title": "Eine selbst gehostete Dateifreigabe-Plattform.",
- "home.description": "Do you really want to give your personal files in the hand of third parties like WeTransfer?",
- "home.bullet.a.name": "Selbst gehostet",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
- "home.bullet.b.name": "Privatsphäre",
- "home.bullet.b.description": "Your files are your files and should never get into the hands of third parties.",
- "home.bullet.c.name": "Keine lästige Dateigrößenbegrenzung",
- "home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
- "home.button.start": "Lege los",
- "home.button.source": "Quellcode",
- // END /
- // /auth/signin
- "signin.title": "Willkommen zurück",
- "signin.description": "Du hast noch kein Konto?",
- "signin.button.signup": "Registrieren",
- "signin.input.email-or-username": "Email oder Benutzername",
- "signin.input.email-or-username.placeholder": "Deine Email Adresse oder Benutzername",
- "signin.input.password": "Passwort",
- "signin.input.password.placeholder": "Dein Passwort",
- "signin.button.submit": "Anmelden",
- "signIn.notify.totp-required.title": "Zwei-Faktor-Authentifizierung benötigt",
- "signIn.notify.totp-required.description": "Bitte füge deinen Zwei-Faktor-Authentifizierungscode ein",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Erstelle ein Konto",
- "signup.description": "Besitzt du bereits ein Konto?",
- "signup.button.signin": "Anmelden",
- "signup.input.username": "Benutzername",
- "signup.input.username.placeholder": "Dein Benutzername",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Deine Emailadresse",
- "signup.button.submit": "Lass uns loslegen",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Passwort vergessen?",
- "resetPassword.description": "Gib deine Email Adresse ein, um dein Passwort zurückzusetzen.",
- "resetPassword.notify.success": "Ein Link zum Rücksetzen des Passwortes wurde an deine Emailadresse versandt.",
- "resetPassword.button.back": "Zurück zur Anmeldeseite",
- "resetPassword.text.resetPassword": "Passwort zurücksetzen",
- "resetPassword.text.enterNewPassword": "Gib dein neues Passwort ein",
- "resetPassword.input.password": "Neues Passwort",
- "resetPassword.notify.passwordReset": "Dein Passwort wurde erfolgreich zurückgesetzt.",
- // /account
- "account.title": "Mein Konto",
- "account.card.info.title": "Kontoinformationen",
- "account.card.info.username": "Benutzername",
- "account.card.info.email": "Email",
- "account.notify.info.success": "Konto erfolgreich aktualisiert",
- "account.card.password.title": "Passwort",
- "account.card.password.old": "Altes Passwort",
- "account.card.password.new": "Neues Passwort",
- "account.notify.password.success": "Passwort erfolgreich geändert",
- "account.card.security.title": "Sicherheit",
- "account.card.security.totp.enable.description": "Geben dein aktuelles Passwort ein, um TOTP zu aktivieren",
- "account.card.security.totp.disable.description": "Geben dein aktuelles Passwort ein, um TOTP zu deaktivieren",
- "account.card.security.totp.button.start": "Starten",
- "account.modal.totp.title": "TOTP aktivieren",
- "account.modal.totp.step1": "Step 1: Add your authenticator",
- "account.modal.totp.step2": "Step 2: Validate your code",
- "account.modal.totp.enterManually": "Manuell eingeben",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Klicken zum Kopieren",
- "account.modal.totp.verify": "Überprüfen",
- "account.notify.totp.disable": "TOTP erfolgreich deaktiviert",
- "account.notify.totp.enable": "TOTP erfolgreich aktiviert",
- "account.card.language.title": "Sprache",
- "account.card.color.title": "Farbschema",
- // ThemeSwitcher.tsx
- "account.theme.dark": "Dunkel",
- "account.theme.light": "Hell",
- "account.theme.system": "System",
- "account.button.delete": "Konto löschen",
- "account.modal.delete.title": "Konto löschen",
- "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": "Erstelle eine",
- "account.shares.info.title": "Share informations",
- "account.shares.table.id": "ID",
- "account.shares.table.name": "Name",
- "account.shares.table.description": "Beschreibung",
- "account.shares.table.visitors": "Besucher",
- "account.shares.table.expiresAt": "Läuft ab am",
- "account.shares.table.createdAt": "Erstellt am",
- "account.shares.table.size": "Size",
- "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": "Es ist leer hier 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Ablauf",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minuten",
- "account.reverseShares.modal.expiration.hour-singular": "Stunde",
- "account.reverseShares.modal.expiration.hour-plural": "Stunden",
- "account.reverseShares.modal.expiration.day-singular": "Tag",
- "account.reverseShares.modal.expiration.day-plural": "Tage",
- "account.reverseShares.modal.expiration.week-singular": "Woche",
- "account.reverseShares.modal.expiration.week-plural": "Wochen",
- "account.reverseShares.modal.expiration.month-singular": "Monat",
- "account.reverseShares.modal.expiration.month-plural": "Monate",
- "account.reverseShares.modal.expiration.year-singular": "Jahr",
- "account.reverseShares.modal.expiration.year-plural": "Jahre",
- "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": "Maximale Verwendungen",
- "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": "Freigabe",
- "account.reverseShares.table.count.plural": "Freigaben",
- "account.reverseShares.table.shares": "Freigaben",
- "account.reverseShares.table.remaining": "Verbleibende Verwendungen",
- "account.reverseShares.table.max-size": "Maximale Freigabegröße",
- "account.reverseShares.table.expires": "Läuft ab am",
- "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": "Benutzerverwaltung",
- "admin.button.config": "Konfiguration",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "Benutzerverwaltung",
- "admin.users.table.username": "Benutzername",
- "admin.users.table.email": "Email",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Benutzer {username} aktualisieren",
- "admin.users.edit.update.admin-privileges": "Administratorrechte",
- "admin.users.edit.update.change-password.title": "Passwort ändern",
- "admin.users.edit.update.change-password.field": "Neues Passwort",
- "admin.users.edit.update.change-password.button": "Neues Passwort speichern",
- "admin.users.edit.update.notify.password.success": "Passwort erfolgreich geändert",
- "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": "Passwort",
- "admin.users.modal.create.manual-password": "Set password manually",
- "admin.users.modal.create.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
- "admin.users.modal.create.admin": "Admin privileges",
- "admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
- // END /admin/users
- // /upload
- "upload.title": "Upload",
- "upload.notify.generic-error": "An error occurred while finishing your share.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
- // Dropzone.tsx
- "upload.dropzone.title": "Upload files",
- "upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
- "upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Name",
- "upload.filelist.size": "Size",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Create Share",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "This link is already in use",
- "upload.modal.not-signed-in": "You're not signed in",
- "upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
- "upload.modal.expires.never": "never",
- "upload.modal.expires.never-long": "Never Expires",
- "upload.modal.link.label": "Link",
- "upload.modal.link.placeholder": "myAwesomeShare",
- "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": "Ungültiges Passwort",
- "share.button.download-all": "Alle herunterladen",
- "share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
- "share.modal.file-link": "File link",
- "share.table.name": "Name",
- "share.table.size": "Size",
- "share.modal.file-preview.error.not-supported.title": "Preview not supported",
- "share.modal.file-preview.error.not-supported.description": "A preview for thise file type is unsupported. Please download the file to view it.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Konfiguration",
- "admin.config.category.general": "Allgemein",
- "admin.config.category.share": "Freigabe",
- "admin.config.category.email": "E-Mail",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "App-Name",
- "admin.config.general.app-name.description": "Name der Applikation",
- "admin.config.general.app-url": "App-URL",
- "admin.config.general.app-url.description": "Auf welcher URL Pingvin Share verfügbar ist",
- "admin.config.general.show-home-page": "Startseite anzeigen",
- "admin.config.general.show-home-page.description": "Ob die Startseite angezeigt werden soll",
- "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": "Bild auswählen",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.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 des SMTP-Servers",
- "admin.config.smtp.email": "E-Mail",
- "admin.config.smtp.email.description": "E-Mail-Adresse, von der die E-Mails gesendet werden",
- "admin.config.smtp.username": "Benutzername",
- "admin.config.smtp.username.description": "Benutzername des SMTP-Servers",
- "admin.config.smtp.password": "Passwort",
- "admin.config.smtp.password.description": "Passwort des SMTP-Servers",
- "admin.config.smtp.button.test": "Test-E-Mail senden",
- // 404
- "404.title": "404",
- "404.description": "Ups, diese Seite existiert nicht.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Speichern",
- "common.button.create": "Erstellen",
- "common.button.submit": "Bestätigen",
- "common.button.delete": "Löschen",
- "common.button.cancel": "Abbrechen",
- "common.button.confirm": "Bestätigen",
- "common.button.disable": "Deaktivieren",
- "common.button.share": "Teilen",
- "common.button.generate": "Generieren",
- "common.button.done": "Fertig",
- "common.text.link": "Link",
- "common.text.or": "oder",
- "common.button.go-back": "Zurück",
- "common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert",
- "common.error": "Fehler",
- "common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
- "common.error.invalid-email": "Ungültige E-Mail-Adresse",
- "common.error.too-short": "Muss mindestens {length} Zeichen enthalten",
- "common.error.too-long": "Muss maximal {length} Zeichen enthalten",
- "common.error.exact-length": "Muss genau {length} Zeichen lang sein",
- "common.error.invalid-number": "Muss eine Zahl sein",
- "common.error.field-required": "Dieses Feld ist erforderlich"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/en.ts b/frontend/src/i18n/translations/en-US.ts
similarity index 100%
rename from frontend/src/i18n/translations/en.ts
rename to frontend/src/i18n/translations/en-US.ts
diff --git a/frontend/src/i18n/translations/es.ts b/frontend/src/i18n/translations/es.ts
deleted file mode 100644
index bfebd53..0000000
--- a/frontend/src/i18n/translations/es.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Subir",
- "navbar.signin": "Iniciar sesión",
- "navbar.home": "Inicio",
- "navbar.signup": "Registrarse",
- "navbar.links.shares": "Mis compartidos",
- "navbar.links.reverse": "Compartidos conmigo",
- "navbar.avatar.account": "Mi cuenta",
- "navbar.avatar.admin": "Administración",
- "navbar.avatar.signout": "Cerrar sesión",
- // END navbar
- // /
- "home.title": "Una plataforma autoalojada para compartir archivos.",
- "home.description": "¿En realidad quieres dejar tus archivos personales en manos de terceros como WeTransfer?",
- "home.bullet.a.name": "Autoalojada",
- "home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.",
- "home.bullet.b.name": "Privacidad",
- "home.bullet.b.description": "Tus archivos son tus archivos y nunca deberían terminar en manos de terceros.",
- "home.bullet.c.name": "Sin molestos límites de tamaño de archivo",
- "home.bullet.c.description": "Sube archivos tan grandes como quieras. El único límite es la capacidad de tu disco duro.",
- "home.button.start": "Comenzar",
- "home.button.source": "Código fuente",
- // END /
- // /auth/signin
- "signin.title": "Bienvenido nuevamente",
- "signin.description": "¿Todavía no tienes una cuenta?",
- "signin.button.signup": "Registrarse",
- "signin.input.email-or-username": "Correo o nombre de usuario",
- "signin.input.email-or-username.placeholder": "Tu correo o nombre de usuario",
- "signin.input.password": "Contraseña",
- "signin.input.password.placeholder": "Tu contraseña",
- "signin.button.submit": "Iniciar sesión",
- "signIn.notify.totp-required.title": "Se requiere autenticación de dos factores",
- "signIn.notify.totp-required.description": "Por favor ingrese su código de autenticación de dos factores",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Crear una cuenta",
- "signup.description": "¿Ya tienes una cuenta?",
- "signup.button.signin": "Iniciar sesión",
- "signup.input.username": "Nombre de usuario",
- "signup.input.username.placeholder": "Tu nombre de usuario",
- "signup.input.email": "Correo",
- "signup.input.email.placeholder": "Tu correo",
- "signup.button.submit": "Comencemos",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "¿Olvidaste tu contraseña?",
- "resetPassword.description": "Ingresa tu correo para restablecer tu contraseña.",
- "resetPassword.notify.success": "Se ha enviado un correo con el enlace para restablecer tu contraseña.",
- "resetPassword.button.back": "Volver al inicio de sesión",
- "resetPassword.text.resetPassword": "Restablecer contraseña",
- "resetPassword.text.enterNewPassword": "Ingresa tu nueva contraseña",
- "resetPassword.input.password": "Nueva contraseña",
- "resetPassword.notify.passwordReset": "Tu contraseña se ha restablecido correctamente.",
- // /account
- "account.title": "Mi cuenta",
- "account.card.info.title": "Información de cuenta",
- "account.card.info.username": "Nombre de usuario",
- "account.card.info.email": "Correo",
- "account.notify.info.success": "Cuenta actualizada correctamente",
- "account.card.password.title": "Contraseña",
- "account.card.password.old": "Anterior contraseña",
- "account.card.password.new": "Nueva contraseña",
- "account.notify.password.success": "Contraseña cambiada correctamente",
- "account.card.security.title": "Seguridad",
- "account.card.security.totp.enable.description": "Ingrese su contraseña actual para habilitar TOTP",
- "account.card.security.totp.disable.description": "Ingrese su contraseña actual para deshabilitar TOTP",
- "account.card.security.totp.button.start": "Iniciar",
- "account.modal.totp.title": "Habilitar TOTP",
- "account.modal.totp.step1": "Paso 1: Añadir tu autentificador",
- "account.modal.totp.step2": "Paso 2: Validar tu código",
- "account.modal.totp.enterManually": "Ingresar manualmente",
- "account.modal.totp.code": "Código",
- "account.modal.totp.clickToCopy": "Clic para copiar",
- "account.modal.totp.verify": "Verificar",
- "account.notify.totp.disable": "TOTP deshabilitado correctamente",
- "account.notify.totp.enable": "TOTP habilitado correctamente",
- "account.card.language.title": "Idioma",
- "account.card.color.title": "Esquema de colores",
- // ThemeSwitcher.tsx
- "account.theme.dark": "Oscuro",
- "account.theme.light": "Claro",
- "account.theme.system": "Sistema",
- "account.button.delete": "Eliminar Cuenta",
- "account.modal.delete.title": "Eliminar Cuenta",
- "account.modal.delete.description": "¿Realmente quieres eliminar tu cuenta con todos los archivos que estás compartiendo actualmente?",
- // END /account
- // /account/shares
- "account.shares.title": "Mis compartidos",
- "account.shares.title.empty": "Aquí está vacío 👀",
- "account.shares.description.empty": "No tienes nada compartido.",
- "account.shares.button.create": "Crear uno",
- "account.shares.info.title": "Información del archivo compartido",
- "account.shares.table.id": "ID",
- "account.shares.table.name": "Nombre",
- "account.shares.table.description": "Descripción",
- "account.shares.table.visitors": "Visitas",
- "account.shares.table.expiresAt": "Expira en",
- "account.shares.table.createdAt": "Creado en",
- "account.shares.table.size": "Tamaño",
- "account.shares.modal.share-link": "Enlace",
- "account.shares.modal.delete.title": "Eliminar archivo {share}",
- "account.shares.modal.delete.description": "¿Seguro que quieres eliminar este archivo compartido?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Reverse shares",
- "account.reverseShares.description": "Un reverse share te permite generar una URL única con la que usuarios externos pueden compartir archivos.",
- "account.reverseShares.title.empty": "Aquí está vacío 👀",
- "account.reverseShares.description.empty": "No tienes ninguna reverse share.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Expiración",
- "account.reverseShares.modal.expiration.minute-singular": "Minuto",
- "account.reverseShares.modal.expiration.minute-plural": "Minutos",
- "account.reverseShares.modal.expiration.hour-singular": "Hora",
- "account.reverseShares.modal.expiration.hour-plural": "Horas",
- "account.reverseShares.modal.expiration.day-singular": "Día",
- "account.reverseShares.modal.expiration.day-plural": "Días",
- "account.reverseShares.modal.expiration.week-singular": "Semana",
- "account.reverseShares.modal.expiration.week-plural": "Semanas",
- "account.reverseShares.modal.expiration.month-singular": "Mes",
- "account.reverseShares.modal.expiration.month-plural": "Meses",
- "account.reverseShares.modal.expiration.year-singular": "Año",
- "account.reverseShares.modal.expiration.year-plural": "Años",
- "account.reverseShares.modal.max-size.label": "Tamaño máximo a compartir",
- "account.reverseShares.modal.send-email": "Enviar notificación por correo",
- "account.reverseShares.modal.send-email.description": "Enviar una notificación por correo cuando se comparta algo con este enlace de Reverse Share.",
- "account.reverseShares.modal.max-use.label": "Máximo de usos",
- "account.reverseShares.modal.max-use.description": "Cantidad máxima de veces que esta URL se puede usar para crear un archivo compartido.",
- "account.reverseShare.never-expires": "Esta Reverse Share nunca expirará.",
- "account.reverseShare.expires-on": "Esta Reverse Share expirará en {expiration}.",
- "account.reverseShares.table.no-shares": "Todavía no has compartido un archivo",
- "account.reverseShares.table.count.singular": "compartido",
- "account.reverseShares.table.count.plural": "compartidos",
- "account.reverseShares.table.shares": "Compartidos",
- "account.reverseShares.table.remaining": "Usos restantes",
- "account.reverseShares.table.max-size": "Tamaño máximo de archivo",
- "account.reverseShares.table.expires": "Expira en",
- "account.reverseShares.modal.reverse-share-link": "Enlace de Reverse Share",
- "account.reverseShares.modal.delete.title": "Eliminar Reverse Share",
- "account.reverseShares.modal.delete.description": "¿Seguro que quieres eliminar esta Reverse Share? Si lo haces, todos los archivos asociados también serán eliminados.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administración",
- "admin.button.users": "Gestión de usuarios",
- "admin.button.config": "Configuración",
- "admin.version": "Versión",
- // END /admin
- // /admin/users
- "admin.users.title": "Gestión de usuarios",
- "admin.users.table.username": "Nombre de usuario",
- "admin.users.table.email": "Correo",
- "admin.users.table.admin": "Administrador",
- "admin.users.edit.update.title": "Actualizar usuario {username}",
- "admin.users.edit.update.admin-privileges": "Privilegios de administrador",
- "admin.users.edit.update.change-password.title": "Cambiar contraseña",
- "admin.users.edit.update.change-password.field": "Nueva contraseña",
- "admin.users.edit.update.change-password.button": "Guardar nueva contraseña",
- "admin.users.edit.update.notify.password.success": "Contraseña cambiada correctamente",
- "admin.users.edit.delete.title": "Eliminar usuario {username}",
- "admin.users.edit.delete.description": "¿Realmente quiere eliminar este usuario y todos sus archivos compartidos?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Crear usuario",
- "admin.users.modal.create.username": "Nombre de usuario",
- "admin.users.modal.create.email": "Correo",
- "admin.users.modal.create.password": "Contraseña",
- "admin.users.modal.create.manual-password": "Establecer contraseña manualmente",
- "admin.users.modal.create.manual-password.description": "Si no se marca, el usuario recibirá un correo con un enlace para configurar su contraseña.",
- "admin.users.modal.create.admin": "Privilegios de administrador",
- "admin.users.modal.create.admin.description": "Si se marca, el usuario podrá acceder al panel de administrador.",
- // END /admin/users
- // /upload
- "upload.title": "Subir",
- "upload.notify.generic-error": "Ha ocurrido un error mientras se compartía tu archivo.",
- "upload.notify.count-failed": "No se pudo cargar {count} archivos. Intentando nuevamente.",
- // Dropzone.tsx
- "upload.dropzone.title": "Subir archivos",
- "upload.dropzone.description": "Arrastra archivos aquí para comenzar a compartir. Aceptamos archivos de un tamaño menor a {maxSize} en total.",
- "upload.dropzone.notify.file-too-big": "Tus archivos exceden el tamaño máximo de {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Nombre",
- "upload.filelist.size": "Tamaño",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Crear archivo compartido",
- "upload.modal.link.error.invalid": "Solo puede contener letras, números, guiones y guiones bajos",
- "upload.modal.link.error.taken": "Este enlace ya está en uso",
- "upload.modal.not-signed-in": "No has iniciado sesión",
- "upload.modal.not-signed-in-description": "No podrás eliminar tus archivos compartidos manualmente ni ver el número de visitas.",
- "upload.modal.expires.never": "nunca",
- "upload.modal.expires.never-long": "Nunca Expira",
- "upload.modal.link.label": "Enlace",
- "upload.modal.link.placeholder": "myAwesomeShare",
- "upload.modal.expires.label": "Expiración",
- "upload.modal.expires.minute-singular": "Minuto",
- "upload.modal.expires.minute-plural": "Minutos",
- "upload.modal.expires.hour-singular": "Hora",
- "upload.modal.expires.hour-plural": "Horas",
- "upload.modal.expires.day-singular": "Día",
- "upload.modal.expires.day-plural": "Días",
- "upload.modal.expires.week-singular": "Semana",
- "upload.modal.expires.week-plural": "Semanas",
- "upload.modal.expires.month-singular": "Mes",
- "upload.modal.expires.month-plural": "Meses",
- "upload.modal.expires.year-singular": "Año",
- "upload.modal.expires.year-plural": "Años",
- "upload.modal.accordion.description.title": "Descripción",
- "upload.modal.accordion.description.placeholder": "Nota para los destinatarios de este archivo",
- "upload.modal.accordion.email.title": "Correo de los destinatarios",
- "upload.modal.accordion.email.placeholder": "Ingresa los correos de los destinatarios",
- "upload.modal.accordion.email.invalid-email": "Dirección de correo inválida",
- "upload.modal.accordion.security.title": "Opciones de seguridad",
- "upload.modal.accordion.security.password.label": "Protección por contraseña",
- "upload.modal.accordion.security.password.placeholder": "Sin contraseña",
- "upload.modal.accordion.security.max-views.label": "Máximo de vistas",
- "upload.modal.accordion.security.max-views.placeholder": "Sin límite",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "Este archivo nunca expirará.",
- "upload.modal.completed.expires-on": "Este archivo expira en {expiration}.",
- "upload.modal.completed.share-ready": "Archivo listo",
- // END /upload
- // /share/[id]
- "share.title": "Archivo {shareId}",
- "share.description": "¡Mira lo que he compartido contigo!",
- "share.error.visitor-limit-exceeded.title": "Se excedió el límite de visitas",
- "share.error.visitor-limit-exceeded.description": "Se ha excedido el límite de visitas para este archivo.",
- "share.error.removed.title": "Archivo eliminado",
- "share.error.not-found.title": "Archivo no encontrado",
- "share.error.not-found.description": "El archivo que estás buscando no existe.",
- "share.modal.password.title": "Se requiere contraseña",
- "share.modal.password.description": "Por favor ingrese la contraseña para poder acceder a este archivo compartido.",
- "share.modal.password": "Contraseña",
- "share.modal.error.invalid-password": "Contraseña inválida",
- "share.button.download-all": "Descargar todo",
- "share.notify.download-all-preparing": "Se está preparando el archivo. Intente de nuevo en unos minutos.",
- "share.modal.file-link": "Enlace del archivo",
- "share.table.name": "Nombre",
- "share.table.size": "Tamaño",
- "share.modal.file-preview.error.not-supported.title": "Vista previa no disponible",
- "share.modal.file-preview.error.not-supported.description": "La vista previa para este tipo de archivo no está disponible. Por favor descargue el archivo para verlo.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Configuración",
- "admin.config.category.general": "General",
- "admin.config.category.share": "Share",
- "admin.config.category.email": "Correo",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "Nombre de la App",
- "admin.config.general.app-name.description": "Nombre de la aplicación",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "En cuál URL está disponible Pingvin Share",
- "admin.config.general.show-home-page": "Mostrar página de inicio",
- "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": "Elegir imagen",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.smtp.enabled": "Enabled",
- "admin.config.smtp.enabled.description": "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
- "admin.config.smtp.host": "Host",
- "admin.config.smtp.host.description": "Host of the SMTP server",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port of the SMTP server",
- "admin.config.smtp.email": "Email",
- "admin.config.smtp.email.description": "Email address which the emails get sent from",
- "admin.config.smtp.username": "Username",
- "admin.config.smtp.username.description": "Username of the SMTP server",
- "admin.config.smtp.password": "Password",
- "admin.config.smtp.password.description": "Password of the SMTP server",
- "admin.config.smtp.button.test": "Send test email",
- // 404
- "404.title": "404",
- "404.description": "Oops this page doesn't exist.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Save",
- "common.button.create": "Create",
- "common.button.submit": "Submit",
- "common.button.delete": "Delete",
- "common.button.cancel": "Cancel",
- "common.button.confirm": "Confirm",
- "common.button.disable": "Disable",
- "common.button.share": "Share",
- "common.button.generate": "Generate",
- "common.button.done": "Done",
- "common.text.link": "Enlace",
- "common.text.or": "or",
- "common.button.go-back": "Go back",
- "common.notify.copied": "Your link was copied to the clipboard",
- "common.error": "Error",
- "common.error.unknown": "An unknown error occurred",
- "common.error.invalid-email": "Invalid email address",
- "common.error.too-short": "Must be at least {length} characters",
- "common.error.too-long": "Must be at most {length} characters",
- "common.error.exact-length": "Must be exactly {length} characters",
- "common.error.invalid-number": "Must be a number",
- "common.error.field-required": "This field is required"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/fr.ts b/frontend/src/i18n/translations/fr.ts
deleted file mode 100644
index 7ac9c31..0000000
--- a/frontend/src/i18n/translations/fr.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Envoyer",
- "navbar.signin": "Se connecter",
- "navbar.home": "Accueil",
- "navbar.signup": "S'inscrire",
- "navbar.links.shares": "Mes partages",
- "navbar.links.reverse": "Partages inversés",
- "navbar.avatar.account": "Mon compte",
- "navbar.avatar.admin": "Administration",
- "navbar.avatar.signout": "Se déconnecter",
- // END navbar
- // /
- "home.title": "Une plateforme de partage de fichier auto-hébergée.",
- "home.description": "Voulez-vous vraiment remettre vos fichiers personnels dans les mains de tiers comme WeTransfer ?",
- "home.bullet.a.name": "Auto-hébergé",
- "home.bullet.a.description": "Hébergez Pingvin Share sur votre propre machine.",
- "home.bullet.b.name": "Confidentialité",
- "home.bullet.b.description": "Vos fichiers sont vos fichiers et ne devraient jamais être mis entre les mains de tiers.",
- "home.bullet.c.name": "Aucune rébarbative limite de taille",
- "home.bullet.c.description": "Téléchargez des fichiers volumineux que vous le souhaitez. Seul votre disque dur est la limite.",
- "home.button.start": "Commencer",
- "home.button.source": "Code source",
- // END /
- // /auth/signin
- "signin.title": "Content de vous revoir",
- "signin.description": "Pas encore de compte ?",
- "signin.button.signup": "S'inscrire",
- "signin.input.email-or-username": "Email ou pseudo",
- "signin.input.email-or-username.placeholder": "Votre email ou pseudo",
- "signin.input.password": "Mot de passe",
- "signin.input.password.placeholder": "Votre mot de passe",
- "signin.button.submit": "Se connecter",
- "signIn.notify.totp-required.title": "Une authentification à deux facteurs est requise",
- "signIn.notify.totp-required.description": "Veuillez entrer votre code d'authentification à deux facteurs",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Créer un compte",
- "signup.description": "Vous avez déjà un compte ?",
- "signup.button.signin": "Se connecter",
- "signup.input.username": "Pseudo",
- "signup.input.username.placeholder": "Votre pseudo",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Votre adresse mail",
- "signup.button.submit": "Commençons",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Mot de passe oublié ?",
- "resetPassword.description": "Saisissez votre email pour réinitialiser votre mot de passe.",
- "resetPassword.notify.success": "Un mail a été envoyé avec un lien pour réinitialiser votre mot de passe.",
- "resetPassword.button.back": "Retour à la page de connexion",
- "resetPassword.text.resetPassword": "Réinitialiser le mot de passe",
- "resetPassword.text.enterNewPassword": "Saisissez votre nouveau mot de passe",
- "resetPassword.input.password": "Nouveau mot de passe",
- "resetPassword.notify.passwordReset": "Votre mot de passe a bien été réinitialisé.",
- // /account
- "account.title": "Mon compte",
- "account.card.info.title": "Détails du compte",
- "account.card.info.username": "Pseudo",
- "account.card.info.email": "Adresse mail",
- "account.notify.info.success": "Compte mis à jour avec succès",
- "account.card.password.title": "Mot de passe",
- "account.card.password.old": "Ancien mot de passe",
- "account.card.password.new": "Nouveau mot de passe",
- "account.notify.password.success": "Le mot de passe a été modifié avec succès",
- "account.card.security.title": "Sécurité",
- "account.card.security.totp.enable.description": "Entrez votre mot de passe actuel pour commencer à activer TOTP",
- "account.card.security.totp.disable.description": "Entrez votre mot de passe pour désactiver TOTP",
- "account.card.security.totp.button.start": "Commencer",
- "account.modal.totp.title": "Activer TOTP",
- "account.modal.totp.step1": "Étape 1 : Ajouter votre authentificateur",
- "account.modal.totp.step2": "Étape 2 : Valider votre code",
- "account.modal.totp.enterManually": "Saisir manuellement",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Cliquez pour copier",
- "account.modal.totp.verify": "Vérifier",
- "account.notify.totp.disable": "TOTP désactivé",
- "account.notify.totp.enable": "TOTP activé",
- "account.card.language.title": "Langue",
- "account.card.color.title": "Thème de couleurs",
- // ThemeSwitcher.tsx
- "account.theme.dark": "Sombre",
- "account.theme.light": "Clair",
- "account.theme.system": "Système",
- "account.button.delete": "Supprimer le compte",
- "account.modal.delete.title": "Supprimer le compte",
- "account.modal.delete.description": "Voulez-vous vraiment supprimer votre compte, y compris tous vos partages actifs ?",
- // END /account
- // /account/shares
- "account.shares.title": "Mes partages",
- "account.shares.title.empty": "Il n'y a rien ici 👀",
- "account.shares.description.empty": "Vous n’avez aucun partage.",
- "account.shares.button.create": "Créez-en un",
- "account.shares.info.title": "Détails du partage",
- "account.shares.table.id": "ID",
- "account.shares.table.name": "Nom",
- "account.shares.table.description": "Description",
- "account.shares.table.visitors": "Visiteurs",
- "account.shares.table.expiresAt": "Expire le",
- "account.shares.table.createdAt": "Créé le",
- "account.shares.table.size": "Taille",
- "account.shares.modal.share-link": "Lien de partage",
- "account.shares.modal.delete.title": "Supprimer le partage {share}",
- "account.shares.modal.delete.description": "Voulez-vous vraiment supprimer ce partage ?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Partages inversés",
- "account.reverseShares.description": "Un partage inversé vous permet de générer une URL unique qui permet à des utilisateurs externes de créer un partage.",
- "account.reverseShares.title.empty": "Il n'y a rien ici 👀",
- "account.reverseShares.description.empty": "Vous n'avez aucun partage inversé.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Expiration",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minutes",
- "account.reverseShares.modal.expiration.hour-singular": "Heure",
- "account.reverseShares.modal.expiration.hour-plural": "Heures",
- "account.reverseShares.modal.expiration.day-singular": "Jour",
- "account.reverseShares.modal.expiration.day-plural": "Jours",
- "account.reverseShares.modal.expiration.week-singular": "Semaine",
- "account.reverseShares.modal.expiration.week-plural": "Semaines",
- "account.reverseShares.modal.expiration.month-singular": "Mois",
- "account.reverseShares.modal.expiration.month-plural": "Mois",
- "account.reverseShares.modal.expiration.year-singular": "An",
- "account.reverseShares.modal.expiration.year-plural": "Ans",
- "account.reverseShares.modal.max-size.label": "Taille maximale du partage",
- "account.reverseShares.modal.send-email": "Envoyer un mail de notification",
- "account.reverseShares.modal.send-email.description": "Envoyer une notification par courriel lorsqu'un partage est créé depuis ce partage inversé.",
- "account.reverseShares.modal.max-use.label": "Nombre d'utilisation max",
- "account.reverseShares.modal.max-use.description": "Le nombre maximal de fois que cette URL peut être utilisée pour créer un partage.",
- "account.reverseShare.never-expires": "Ce partage inversé n'expirera jamais.",
- "account.reverseShare.expires-on": "Ce partage inversé expirera le {expiration}.",
- "account.reverseShares.table.no-shares": "Aucun partage créé pour le moment",
- "account.reverseShares.table.count.singular": "partage",
- "account.reverseShares.table.count.plural": "partages",
- "account.reverseShares.table.shares": "Partages",
- "account.reverseShares.table.remaining": "Utilisations restantes",
- "account.reverseShares.table.max-size": "Taille maximale du partage",
- "account.reverseShares.table.expires": "Expire dans",
- "account.reverseShares.modal.reverse-share-link": "Lien du partage inversé",
- "account.reverseShares.modal.delete.title": "Supprimer le partage inversé",
- "account.reverseShares.modal.delete.description": "Voulez-vous vraiment supprimer ce partage inversé ? Si vous le faites, les partages qu'il contient seront également supprimés.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administration",
- "admin.button.users": "Gestion des utilisateurs",
- "admin.button.config": "Paramètres",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "Gestion des utilisateurs",
- "admin.users.table.username": "Pseudo",
- "admin.users.table.email": "Adresse mail",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Modifier l'utilisateur {username}",
- "admin.users.edit.update.admin-privileges": "Privilèges admin",
- "admin.users.edit.update.change-password.title": "Changer le mot de passe",
- "admin.users.edit.update.change-password.field": "Nouveau mot de passe",
- "admin.users.edit.update.change-password.button": "Enregistrer le nouveau mot de passe",
- "admin.users.edit.update.notify.password.success": "Le mot de passe a été modifié",
- "admin.users.edit.delete.title": "Supprimer l'utilisateur {username}",
- "admin.users.edit.delete.description": "Voulez-vous vraiment supprimer cet utilisateur et toutes ses partages ?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Créer un utilisateur",
- "admin.users.modal.create.username": "Surnom",
- "admin.users.modal.create.email": "Courriel",
- "admin.users.modal.create.password": "Mot de passe",
- "admin.users.modal.create.manual-password": "Définir le mot de passe manuellement",
- "admin.users.modal.create.manual-password.description": "S'il n'est pas coché, l'utilisateur recevra un mail avec un lien pour définir son mot de passe.",
- "admin.users.modal.create.admin": "Privilèges admin",
- "admin.users.modal.create.admin.description": "Si coché, l'utilisateur pourra accéder au panneau d'administration.",
- // END /admin/users
- // /upload
- "upload.title": "Téléverser",
- "upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
- "upload.notify.count-failed": "{count} fichier(s) n'a(ont) pas pu être envoyé(s). Veuillez réessayer.",
- // Dropzone.tsx
- "upload.dropzone.title": "Téléverser des fichiers",
- "upload.dropzone.description": "Glissez-déposez des fichiers ici pour commencer votre partage. Ils ne peuvent avoir une taille supérieur à {maxSize} au total.",
- "upload.dropzone.notify.file-too-big": "Vos fichiers dépassent la taille maximale de {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Nom",
- "upload.filelist.size": "Taille",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Créer un partage",
- "upload.modal.link.error.invalid": "Ne peut contenir que des lettres, des chiffres, des tirets bas et des traits d'union",
- "upload.modal.link.error.taken": "Ce lien est déjà utilisé",
- "upload.modal.not-signed-in": "Vous n'êtes pas connecté",
- "upload.modal.not-signed-in-description": "Vous ne pourrez pas supprimer votre partage manuellement et afficher le nombre de visiteurs.",
- "upload.modal.expires.never": "jamais",
- "upload.modal.expires.never-long": "N'expire jamais",
- "upload.modal.link.label": "Lien",
- "upload.modal.link.placeholder": "monSuperPartage",
- "upload.modal.expires.label": "Expiration",
- "upload.modal.expires.minute-singular": "Minute",
- "upload.modal.expires.minute-plural": "Minutes",
- "upload.modal.expires.hour-singular": "Heure",
- "upload.modal.expires.hour-plural": "Heures",
- "upload.modal.expires.day-singular": "Jour",
- "upload.modal.expires.day-plural": "Jours",
- "upload.modal.expires.week-singular": "Semaine",
- "upload.modal.expires.week-plural": "Semaines",
- "upload.modal.expires.month-singular": "Mois",
- "upload.modal.expires.month-plural": "Mois",
- "upload.modal.expires.year-singular": "An",
- "upload.modal.expires.year-plural": "Ans",
- "upload.modal.accordion.description.title": "Description",
- "upload.modal.accordion.description.placeholder": "Note pour les destinataires de ce partage",
- "upload.modal.accordion.email.title": "Destinataires du mail",
- "upload.modal.accordion.email.placeholder": "Saisir les destinataires du mail",
- "upload.modal.accordion.email.invalid-email": "Adresse mail invalide",
- "upload.modal.accordion.security.title": "Options de sécurité",
- "upload.modal.accordion.security.password.label": "Protection par mot de passe",
- "upload.modal.accordion.security.password.placeholder": "Aucun mot de passe",
- "upload.modal.accordion.security.max-views.label": "Nombre de vues maximum",
- "upload.modal.accordion.security.max-views.placeholder": "Aucune limite",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "Ce partage n'expirera jamais.",
- "upload.modal.completed.expires-on": "Ce partage expirera le {expiration}.",
- "upload.modal.completed.share-ready": "Partage prêt",
- // END /upload
- // /share/[id]
- "share.title": "Partage {shareId}",
- "share.description": "Regardez ce que j'ai partagé !",
- "share.error.visitor-limit-exceeded.title": "Limite de visiteurs dépassée",
- "share.error.visitor-limit-exceeded.description": "La limite de visiteurs de ce partage a été dépassée.",
- "share.error.removed.title": "Partage supprimé",
- "share.error.not-found.title": "Partage introuvable",
- "share.error.not-found.description": "Le partage que vous cherchez n'existe pas.",
- "share.modal.password.title": "Mot de passe requis",
- "share.modal.password.description": "Pour accéder à ce partage, veuillez entrer le mot de passe du partage.",
- "share.modal.password": "Mot de passe",
- "share.modal.error.invalid-password": "Mot de passe incorrect",
- "share.button.download-all": "Télécharger tout",
- "share.notify.download-all-preparing": "Le partage est en préparation. Réessayez dans quelques minutes.",
- "share.modal.file-link": "Lien du fichier",
- "share.table.name": "Nom",
- "share.table.size": "Taille",
- "share.modal.file-preview.error.not-supported.title": "Aperçu non supporté",
- "share.modal.file-preview.error.not-supported.description": "Un aperçu pour ce type de fichier n'est pas pris en charge. Veuillez télécharger le fichier pour le voir.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Paramètres",
- "admin.config.category.general": "Général",
- "admin.config.category.share": "Partage",
- "admin.config.category.email": "Adresse mail",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "Nom de l'app",
- "admin.config.general.app-name.description": "Nom de l'application",
- "admin.config.general.app-url": "URL de l’application",
- "admin.config.general.app-url.description": "Depuis quel URL le partage Pingvin est disponible",
- "admin.config.general.show-home-page": "Afficher la page d'accueil",
- "admin.config.general.show-home-page.description": "Afficher ou non la page d'accueil",
- "admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Changez votre logo en téléchargeant une nouvelle image. L'image doit être un PNG et doit avoir un ratio 1:1.",
- "admin.config.general.logo.placeholder": "Sélectionner une image",
- "admin.config.email.enable-share-email-recipients": "Activer les destinataires du courriel du partage",
- "admin.config.email.enable-share-email-recipients.description": "Autorise les mails des destinataires du partage. N'activez cette option que si vous avez activé SMTP.",
- "admin.config.email.share-recipients-subject": "Sujet des destinataires du partage",
- "admin.config.email.share-recipients-subject.description": "Sujet du mail qui est envoyé aux destinataires du partage.",
- "admin.config.email.share-recipients-message": "Message des destinataires du partage",
- "admin.config.email.share-recipients-message.description": "Message qui est envoyé aux destinataires du partage. Variables possibles :\n {creator} - Le pseudo de l'auteur du partage\n {shareUrl} - L'URL du partage\n {desc} - La description du partage\n {expires} - La date d'expiration du partage\nLes variables seront remplacées par leur valeur réelle.",
- "admin.config.email.reverse-share-subject": "Sujet du partage inversé",
- "admin.config.email.reverse-share-subject.description": "Sujet du courriel qui est envoyé lorsque quelqu'un a créé un partage avec le lien de votre partage inversé.",
- "admin.config.email.reverse-share-message": "Message du partage inversé",
- "admin.config.email.reverse-share-message.description": "Message qui est envoyé lorsque quelqu'un créé un partage avec le lien de votre partage inversé. {shareUrl} sera remplacé par le nom du créateur et l'URL de partage.",
- "admin.config.email.reset-password-subject": "Sujet de réinitialisation du mot de passe",
- "admin.config.email.reset-password-subject.description": "Sujet de l'email envoyé lorsqu'un utilisateur demande une réinitialisation du mot de passe.",
- "admin.config.email.reset-password-message": "Message de réinitialisation du mot de passe",
- "admin.config.email.reset-password-message.description": "Message qui est envoyé lorsqu'un utilisateur demande à réinitialiser son mot de passe. {url} sera remplacé par l'URL de réinitialisation du mot de passe.",
- "admin.config.email.invite-subject": "Sujet de l'invitation",
- "admin.config.email.invite-subject.description": "Sujet du courriel qui est envoyé lorsqu'un administrateur invite un utilisateur.",
- "admin.config.email.invite-message": "Message de l'invitation",
- "admin.config.email.invite-message.description": "Message qui est envoyé lorsqu'un administrateur invite un utilisateur. {url} sera remplacé par l'URL d'invitation et {password} avec le mot de passe.",
- "admin.config.share.allow-registration": "Autoriser les inscriptions",
- "admin.config.share.allow-registration.description": "Autorise l'inscription",
- "admin.config.share.allow-unauthenticated-shares": "Autoriser les partages non authentifiés",
- "admin.config.share.allow-unauthenticated-shares.description": "Autorise des utilisateurs non authentifiés à créer des partages",
- "admin.config.share.max-size": "Taille max",
- "admin.config.share.max-size.description": "Taille maximale du fichier en octets",
- "admin.config.smtp.enabled": "Activé",
- "admin.config.smtp.enabled.description": "Active SMTP. Activez ceci uniquement si vous avez saisit l'hôte, le port, le courriel, l'utilisateur et le mot de passe de votre serveur SMTP.",
- "admin.config.smtp.host": "Hôte",
- "admin.config.smtp.host.description": "Hôte du serveur SMTP",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port du serveur SMTP",
- "admin.config.smtp.email": "Adresse mail",
- "admin.config.smtp.email.description": "Adresse à partir de laquelle les mails sont envoyés",
- "admin.config.smtp.username": "Nom d'utilisateur",
- "admin.config.smtp.username.description": "Nom d'utilisateur du serveur SMTP",
- "admin.config.smtp.password": "Mot de passe",
- "admin.config.smtp.password.description": "Mot de passe du serveur SMTP",
- "admin.config.smtp.button.test": "Envoyer un mail de test",
- // 404
- "404.title": "404",
- "404.description": "Désolé, mais cette page n’existe pas.",
- "404.button.home": "Retour à l'accueil",
- // Common translations
- "common.button.save": "Sauvegarder",
- "common.button.create": "Créer",
- "common.button.submit": "Envoyer",
- "common.button.delete": "Supprimer",
- "common.button.cancel": "Annuler",
- "common.button.confirm": "Confirmer",
- "common.button.disable": "Désactiver",
- "common.button.share": "Partager",
- "common.button.generate": "Générer",
- "common.button.done": "Terminer",
- "common.text.link": "Lien",
- "common.text.or": "ou",
- "common.button.go-back": "Précédent",
- "common.notify.copied": "Votre lien a été copié dans le presse-papiers",
- "common.error": "Erreur",
- "common.error.unknown": "Une erreur inconnue est survenue",
- "common.error.invalid-email": "Adresse email invalide",
- "common.error.too-short": "Doit comporter au moins {length} caractères",
- "common.error.too-long": "Doit comporter au plus {length} caractères",
- "common.error.exact-length": "Doit comporter exactement {length} caractères",
- "common.error.invalid-number": "Doit être un nombre",
- "common.error.field-required": "Ce champ est obligatoire"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/pt.ts b/frontend/src/i18n/translations/pt.ts
deleted file mode 100644
index a3119e8..0000000
--- a/frontend/src/i18n/translations/pt.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Carregar",
- "navbar.signin": "Iniciar sessão",
- "navbar.home": "Início",
- "navbar.signup": "Registar-se",
- "navbar.links.shares": "My shares",
- "navbar.links.reverse": "Reverse shares",
- "navbar.avatar.account": "A minha conta",
- "navbar.avatar.admin": "Administração",
- "navbar.avatar.signout": "Terminar sessão",
- // END navbar
- // /
- "home.title": "A self-hosted file sharing platform.",
- "home.description": "Deseja realmente dar os seus arquivos pessoais na mão de terceiros como o WeTransfer?",
- "home.bullet.a.name": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
- "home.bullet.b.name": "Privacidade",
- "home.bullet.b.description": "Your files are your files and should never get into the hands of third parties.",
- "home.bullet.c.name": "No annoying file size limit",
- "home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
- "home.button.start": "Get started",
- "home.button.source": "Source code",
- // END /
- // /auth/signin
- "signin.title": "Welcome back",
- "signin.description": "You don't have an account yet?",
- "signin.button.signup": "Sign up",
- "signin.input.email-or-username": "Email or username",
- "signin.input.email-or-username.placeholder": "Your email or username",
- "signin.input.password": "Password",
- "signin.input.password.placeholder": "Your password",
- "signin.button.submit": "Sign in",
- "signIn.notify.totp-required.title": "Two-factor authentication required",
- "signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Create an account",
- "signup.description": "Already have an account?",
- "signup.button.signin": "Sign in",
- "signup.input.username": "Username",
- "signup.input.username.placeholder": "Your username",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Your email",
- "signup.button.submit": "Let's get started",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Forgot your password?",
- "resetPassword.description": "Enter your email to reset your password.",
- "resetPassword.notify.success": "An email has been sent with a link to reset your password.",
- "resetPassword.button.back": "Back to sign in page",
- "resetPassword.text.resetPassword": "Reset password",
- "resetPassword.text.enterNewPassword": "Enter your new password",
- "resetPassword.input.password": "New password",
- "resetPassword.notify.passwordReset": "Your password has been reset successfully.",
- // /account
- "account.title": "My account",
- "account.card.info.title": "Account info",
- "account.card.info.username": "Username",
- "account.card.info.email": "Email",
- "account.notify.info.success": "Account updated successfully",
- "account.card.password.title": "Password",
- "account.card.password.old": "Old password",
- "account.card.password.new": "New password",
- "account.notify.password.success": "Password changed successfully",
- "account.card.security.title": "Security",
- "account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
- "account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
- "account.card.security.totp.button.start": "Start",
- "account.modal.totp.title": "Enable TOTP",
- "account.modal.totp.step1": "Step 1: Add your authenticator",
- "account.modal.totp.step2": "Step 2: Validate your code",
- "account.modal.totp.enterManually": "Enter manually",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Click to copy",
- "account.modal.totp.verify": "Verify",
- "account.notify.totp.disable": "TOTP disabled successfully",
- "account.notify.totp.enable": "TOTP enabled successfully",
- "account.card.language.title": "Language",
- "account.card.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-link": "Share link",
- "account.shares.modal.delete.title": "Delete share {share}",
- "account.shares.modal.delete.description": "Do you really want to delete this share?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Reverse shares",
- "account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
- "account.reverseShares.title.empty": "It's empty here 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Expiration",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minutes",
- "account.reverseShares.modal.expiration.hour-singular": "Hour",
- "account.reverseShares.modal.expiration.hour-plural": "Hours",
- "account.reverseShares.modal.expiration.day-singular": "Day",
- "account.reverseShares.modal.expiration.day-plural": "Days",
- "account.reverseShares.modal.expiration.week-singular": "Week",
- "account.reverseShares.modal.expiration.week-plural": "Weeks",
- "account.reverseShares.modal.expiration.month-singular": "Month",
- "account.reverseShares.modal.expiration.month-plural": "Months",
- "account.reverseShares.modal.expiration.year-singular": "Year",
- "account.reverseShares.modal.expiration.year-plural": "Years",
- "account.reverseShares.modal.max-size.label": "Max share size",
- "account.reverseShares.modal.send-email": "Send email notification",
- "account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
- "account.reverseShares.modal.max-use.label": "Max uses",
- "account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
- "account.reverseShare.never-expires": "This reverse share will never expire.",
- "account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
- "account.reverseShares.table.no-shares": "No shares created yet",
- "account.reverseShares.table.count.singular": "share",
- "account.reverseShares.table.count.plural": "shares",
- "account.reverseShares.table.shares": "Shares",
- "account.reverseShares.table.remaining": "Remaining uses",
- "account.reverseShares.table.max-size": "Max share size",
- "account.reverseShares.table.expires": "Expires at",
- "account.reverseShares.modal.reverse-share-link": "Reverse share link",
- "account.reverseShares.modal.delete.title": "Delete reverse share",
- "account.reverseShares.modal.delete.description": "Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administration",
- "admin.button.users": "User management",
- "admin.button.config": "Configuration",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "User management",
- "admin.users.table.username": "Username",
- "admin.users.table.email": "Email",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Update user {username}",
- "admin.users.edit.update.admin-privileges": "Admin privileges",
- "admin.users.edit.update.change-password.title": "Change password",
- "admin.users.edit.update.change-password.field": "New password",
- "admin.users.edit.update.change-password.button": "Save new password",
- "admin.users.edit.update.notify.password.success": "Password changed successfully",
- "admin.users.edit.delete.title": "Delete user {username}",
- "admin.users.edit.delete.description": "Do you really want to delete this user and all his shares?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Create user",
- "admin.users.modal.create.username": "Username",
- "admin.users.modal.create.email": "Email",
- "admin.users.modal.create.password": "Password",
- "admin.users.modal.create.manual-password": "Set password manually",
- "admin.users.modal.create.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
- "admin.users.modal.create.admin": "Admin privileges",
- "admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
- // END /admin/users
- // /upload
- "upload.title": "Upload",
- "upload.notify.generic-error": "An error occurred while finishing your share.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
- // Dropzone.tsx
- "upload.dropzone.title": "Upload files",
- "upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
- "upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Name",
- "upload.filelist.size": "Size",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Create Share",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "This link is already in use",
- "upload.modal.not-signed-in": "You're not signed in",
- "upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
- "upload.modal.expires.never": "never",
- "upload.modal.expires.never-long": "Never Expires",
- "upload.modal.link.label": "Link",
- "upload.modal.link.placeholder": "myAwesomeShare",
- "upload.modal.expires.label": "Expiration",
- "upload.modal.expires.minute-singular": "Minute",
- "upload.modal.expires.minute-plural": "Minutes",
- "upload.modal.expires.hour-singular": "Hour",
- "upload.modal.expires.hour-plural": "Hours",
- "upload.modal.expires.day-singular": "Day",
- "upload.modal.expires.day-plural": "Days",
- "upload.modal.expires.week-singular": "Week",
- "upload.modal.expires.week-plural": "Weeks",
- "upload.modal.expires.month-singular": "Month",
- "upload.modal.expires.month-plural": "Months",
- "upload.modal.expires.year-singular": "Year",
- "upload.modal.expires.year-plural": "Years",
- "upload.modal.accordion.description.title": "Description",
- "upload.modal.accordion.description.placeholder": "Note for the recipients of this share",
- "upload.modal.accordion.email.title": "Email recipients",
- "upload.modal.accordion.email.placeholder": "Enter email recipients",
- "upload.modal.accordion.email.invalid-email": "Invalid email address",
- "upload.modal.accordion.security.title": "Security options",
- "upload.modal.accordion.security.password.label": "Password protection",
- "upload.modal.accordion.security.password.placeholder": "No password",
- "upload.modal.accordion.security.max-views.label": "Maximum views",
- "upload.modal.accordion.security.max-views.placeholder": "No limit",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "This share will never expire.",
- "upload.modal.completed.expires-on": "This share will expire on {expiration}.",
- "upload.modal.completed.share-ready": "Share ready",
- // END /upload
- // /share/[id]
- "share.title": "Share {shareId}",
- "share.description": "Look what I've shared with you!",
- "share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
- "share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
- "share.error.removed.title": "Share removed",
- "share.error.not-found.title": "Share not found",
- "share.error.not-found.description": "The share you're looking for doesn't exist.",
- "share.modal.password.title": "Password required",
- "share.modal.password.description": "To access this share please enter the password for the share.",
- "share.modal.password": "Password",
- "share.modal.error.invalid-password": "Invalid password",
- "share.button.download-all": "Download all",
- "share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
- "share.modal.file-link": "File link",
- "share.table.name": "Name",
- "share.table.size": "Size",
- "share.modal.file-preview.error.not-supported.title": "Preview not supported",
- "share.modal.file-preview.error.not-supported.description": "A preview for thise file type is unsupported. Please download the file to view it.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Configuration",
- "admin.config.category.general": "General",
- "admin.config.category.share": "Share",
- "admin.config.category.email": "Email",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "App name",
- "admin.config.general.app-name.description": "Name of the application",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "On which URL Pingvin Share is available",
- "admin.config.general.show-home-page": "Show home page",
- "admin.config.general.show-home-page.description": "Whether to show the home page",
- "admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
- "admin.config.general.logo.placeholder": "Pick image",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.smtp.enabled": "Enabled",
- "admin.config.smtp.enabled.description": "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
- "admin.config.smtp.host": "Host",
- "admin.config.smtp.host.description": "Host of the SMTP server",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port of the SMTP server",
- "admin.config.smtp.email": "Email",
- "admin.config.smtp.email.description": "Email address which the emails get sent from",
- "admin.config.smtp.username": "Username",
- "admin.config.smtp.username.description": "Username of the SMTP server",
- "admin.config.smtp.password": "Password",
- "admin.config.smtp.password.description": "Password of the SMTP server",
- "admin.config.smtp.button.test": "Send test email",
- // 404
- "404.title": "404",
- "404.description": "Oops this page doesn't exist.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Save",
- "common.button.create": "Create",
- "common.button.submit": "Submit",
- "common.button.delete": "Delete",
- "common.button.cancel": "Cancel",
- "common.button.confirm": "Confirm",
- "common.button.disable": "Disable",
- "common.button.share": "Share",
- "common.button.generate": "Generate",
- "common.button.done": "Done",
- "common.text.link": "Link",
- "common.text.or": "or",
- "common.button.go-back": "Go back",
- "common.notify.copied": "Your link was copied to the clipboard",
- "common.error": "Error",
- "common.error.unknown": "An unknown error occurred",
- "common.error.invalid-email": "Invalid email address",
- "common.error.too-short": "Must be at least {length} characters",
- "common.error.too-long": "Must be at most {length} characters",
- "common.error.exact-length": "Must be exactly {length} characters",
- "common.error.invalid-number": "Must be a number",
- "common.error.field-required": "This field is required"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/th.ts b/frontend/src/i18n/translations/th.ts
deleted file mode 100644
index 11fea41..0000000
--- a/frontend/src/i18n/translations/th.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Upload",
- "navbar.signin": "Sign in",
- "navbar.home": "Home",
- "navbar.signup": "Sign Up",
- "navbar.links.shares": "My shares",
- "navbar.links.reverse": "Reverse shares",
- "navbar.avatar.account": "My account",
- "navbar.avatar.admin": "Administration",
- "navbar.avatar.signout": "Sign out",
- // END navbar
- // /
- "home.title": "A self-hosted file sharing platform.",
- "home.description": "Do you really want to give your personal files in the hand of third parties like WeTransfer?",
- "home.bullet.a.name": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
- "home.bullet.b.name": "Privacy",
- "home.bullet.b.description": "Your files are your files and should never get into the hands of third parties.",
- "home.bullet.c.name": "No annoying file size limit",
- "home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
- "home.button.start": "Get started",
- "home.button.source": "Source code",
- // END /
- // /auth/signin
- "signin.title": "Welcome back",
- "signin.description": "You don't have an account yet?",
- "signin.button.signup": "Sign up",
- "signin.input.email-or-username": "Email or username",
- "signin.input.email-or-username.placeholder": "Your email or username",
- "signin.input.password": "Password",
- "signin.input.password.placeholder": "Your password",
- "signin.button.submit": "Sign in",
- "signIn.notify.totp-required.title": "Two-factor authentication required",
- "signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Create an account",
- "signup.description": "Already have an account?",
- "signup.button.signin": "Sign in",
- "signup.input.username": "Username",
- "signup.input.username.placeholder": "Your username",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Your email",
- "signup.button.submit": "Let's get started",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Forgot your password?",
- "resetPassword.description": "Enter your email to reset your password.",
- "resetPassword.notify.success": "An email has been sent with a link to reset your password.",
- "resetPassword.button.back": "Back to sign in page",
- "resetPassword.text.resetPassword": "Reset password",
- "resetPassword.text.enterNewPassword": "Enter your new password",
- "resetPassword.input.password": "New password",
- "resetPassword.notify.passwordReset": "Your password has been reset successfully.",
- // /account
- "account.title": "My account",
- "account.card.info.title": "Account info",
- "account.card.info.username": "Username",
- "account.card.info.email": "Email",
- "account.notify.info.success": "Account updated successfully",
- "account.card.password.title": "Password",
- "account.card.password.old": "Old password",
- "account.card.password.new": "New password",
- "account.notify.password.success": "Password changed successfully",
- "account.card.security.title": "Security",
- "account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
- "account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
- "account.card.security.totp.button.start": "Start",
- "account.modal.totp.title": "Enable TOTP",
- "account.modal.totp.step1": "Step 1: Add your authenticator",
- "account.modal.totp.step2": "Step 2: Validate your code",
- "account.modal.totp.enterManually": "Enter manually",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Click to copy",
- "account.modal.totp.verify": "Verify",
- "account.notify.totp.disable": "TOTP disabled successfully",
- "account.notify.totp.enable": "TOTP enabled successfully",
- "account.card.language.title": "Language",
- "account.card.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-link": "Share link",
- "account.shares.modal.delete.title": "Delete share {share}",
- "account.shares.modal.delete.description": "Do you really want to delete this share?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Reverse shares",
- "account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
- "account.reverseShares.title.empty": "It's empty here 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Expiration",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minutes",
- "account.reverseShares.modal.expiration.hour-singular": "Hour",
- "account.reverseShares.modal.expiration.hour-plural": "Hours",
- "account.reverseShares.modal.expiration.day-singular": "Day",
- "account.reverseShares.modal.expiration.day-plural": "Days",
- "account.reverseShares.modal.expiration.week-singular": "Week",
- "account.reverseShares.modal.expiration.week-plural": "Weeks",
- "account.reverseShares.modal.expiration.month-singular": "Month",
- "account.reverseShares.modal.expiration.month-plural": "Months",
- "account.reverseShares.modal.expiration.year-singular": "Year",
- "account.reverseShares.modal.expiration.year-plural": "Years",
- "account.reverseShares.modal.max-size.label": "Max share size",
- "account.reverseShares.modal.send-email": "Send email notification",
- "account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
- "account.reverseShares.modal.max-use.label": "Max uses",
- "account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
- "account.reverseShare.never-expires": "This reverse share will never expire.",
- "account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
- "account.reverseShares.table.no-shares": "No shares created yet",
- "account.reverseShares.table.count.singular": "share",
- "account.reverseShares.table.count.plural": "shares",
- "account.reverseShares.table.shares": "Shares",
- "account.reverseShares.table.remaining": "Remaining uses",
- "account.reverseShares.table.max-size": "Max share size",
- "account.reverseShares.table.expires": "Expires at",
- "account.reverseShares.modal.reverse-share-link": "Reverse share link",
- "account.reverseShares.modal.delete.title": "Delete reverse share",
- "account.reverseShares.modal.delete.description": "Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administration",
- "admin.button.users": "User management",
- "admin.button.config": "Configuration",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "User management",
- "admin.users.table.username": "Username",
- "admin.users.table.email": "Email",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Update user {username}",
- "admin.users.edit.update.admin-privileges": "Admin privileges",
- "admin.users.edit.update.change-password.title": "Change password",
- "admin.users.edit.update.change-password.field": "New password",
- "admin.users.edit.update.change-password.button": "Save new password",
- "admin.users.edit.update.notify.password.success": "Password changed successfully",
- "admin.users.edit.delete.title": "Delete user {username}",
- "admin.users.edit.delete.description": "Do you really want to delete this user and all his shares?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Create user",
- "admin.users.modal.create.username": "Username",
- "admin.users.modal.create.email": "Email",
- "admin.users.modal.create.password": "Password",
- "admin.users.modal.create.manual-password": "Set password manually",
- "admin.users.modal.create.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
- "admin.users.modal.create.admin": "Admin privileges",
- "admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
- // END /admin/users
- // /upload
- "upload.title": "Upload",
- "upload.notify.generic-error": "An error occurred while finishing your share.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
- // Dropzone.tsx
- "upload.dropzone.title": "Upload files",
- "upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
- "upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Name",
- "upload.filelist.size": "Size",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Create Share",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "This link is already in use",
- "upload.modal.not-signed-in": "You're not signed in",
- "upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
- "upload.modal.expires.never": "never",
- "upload.modal.expires.never-long": "Never Expires",
- "upload.modal.link.label": "Link",
- "upload.modal.link.placeholder": "myAwesomeShare",
- "upload.modal.expires.label": "Expiration",
- "upload.modal.expires.minute-singular": "Minute",
- "upload.modal.expires.minute-plural": "Minutes",
- "upload.modal.expires.hour-singular": "Hour",
- "upload.modal.expires.hour-plural": "Hours",
- "upload.modal.expires.day-singular": "Day",
- "upload.modal.expires.day-plural": "Days",
- "upload.modal.expires.week-singular": "Week",
- "upload.modal.expires.week-plural": "Weeks",
- "upload.modal.expires.month-singular": "Month",
- "upload.modal.expires.month-plural": "Months",
- "upload.modal.expires.year-singular": "Year",
- "upload.modal.expires.year-plural": "Years",
- "upload.modal.accordion.description.title": "Description",
- "upload.modal.accordion.description.placeholder": "Note for the recipients of this share",
- "upload.modal.accordion.email.title": "Email recipients",
- "upload.modal.accordion.email.placeholder": "Enter email recipients",
- "upload.modal.accordion.email.invalid-email": "Invalid email address",
- "upload.modal.accordion.security.title": "Security options",
- "upload.modal.accordion.security.password.label": "Password protection",
- "upload.modal.accordion.security.password.placeholder": "No password",
- "upload.modal.accordion.security.max-views.label": "Maximum views",
- "upload.modal.accordion.security.max-views.placeholder": "No limit",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "This share will never expire.",
- "upload.modal.completed.expires-on": "This share will expire on {expiration}.",
- "upload.modal.completed.share-ready": "Share ready",
- // END /upload
- // /share/[id]
- "share.title": "Share {shareId}",
- "share.description": "Look what I've shared with you!",
- "share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
- "share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
- "share.error.removed.title": "Share removed",
- "share.error.not-found.title": "Share not found",
- "share.error.not-found.description": "The share you're looking for doesn't exist.",
- "share.modal.password.title": "Password required",
- "share.modal.password.description": "To access this share please enter the password for the share.",
- "share.modal.password": "Password",
- "share.modal.error.invalid-password": "Invalid password",
- "share.button.download-all": "Download all",
- "share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
- "share.modal.file-link": "File link",
- "share.table.name": "Name",
- "share.table.size": "Size",
- "share.modal.file-preview.error.not-supported.title": "Preview not supported",
- "share.modal.file-preview.error.not-supported.description": "A preview for thise file type is unsupported. Please download the file to view it.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Configuration",
- "admin.config.category.general": "General",
- "admin.config.category.share": "Share",
- "admin.config.category.email": "Email",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "App name",
- "admin.config.general.app-name.description": "Name of the application",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "On which URL Pingvin Share is available",
- "admin.config.general.show-home-page": "Show home page",
- "admin.config.general.show-home-page.description": "Whether to show the home page",
- "admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
- "admin.config.general.logo.placeholder": "Pick image",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.smtp.enabled": "Enabled",
- "admin.config.smtp.enabled.description": "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
- "admin.config.smtp.host": "Host",
- "admin.config.smtp.host.description": "Host of the SMTP server",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port of the SMTP server",
- "admin.config.smtp.email": "Email",
- "admin.config.smtp.email.description": "Email address which the emails get sent from",
- "admin.config.smtp.username": "Username",
- "admin.config.smtp.username.description": "Username of the SMTP server",
- "admin.config.smtp.password": "Password",
- "admin.config.smtp.password.description": "Password of the SMTP server",
- "admin.config.smtp.button.test": "Send test email",
- // 404
- "404.title": "404",
- "404.description": "Oops this page doesn't exist.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Save",
- "common.button.create": "Create",
- "common.button.submit": "Submit",
- "common.button.delete": "Delete",
- "common.button.cancel": "Cancel",
- "common.button.confirm": "Confirm",
- "common.button.disable": "Disable",
- "common.button.share": "Share",
- "common.button.generate": "Generate",
- "common.button.done": "Done",
- "common.text.link": "Link",
- "common.text.or": "or",
- "common.button.go-back": "Go back",
- "common.notify.copied": "Your link was copied to the clipboard",
- "common.error": "Error",
- "common.error.unknown": "An unknown error occurred",
- "common.error.invalid-email": "Invalid email address",
- "common.error.too-short": "Must be at least {length} characters",
- "common.error.too-long": "Must be at most {length} characters",
- "common.error.exact-length": "Must be exactly {length} characters",
- "common.error.invalid-number": "Must be a number",
- "common.error.field-required": "This field is required"
-};
\ No newline at end of file
diff --git a/frontend/src/i18n/translations/zh.ts b/frontend/src/i18n/translations/zh.ts
deleted file mode 100644
index 11fea41..0000000
--- a/frontend/src/i18n/translations/zh.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-export default {
- // Navbar
- "navbar.upload": "Upload",
- "navbar.signin": "Sign in",
- "navbar.home": "Home",
- "navbar.signup": "Sign Up",
- "navbar.links.shares": "My shares",
- "navbar.links.reverse": "Reverse shares",
- "navbar.avatar.account": "My account",
- "navbar.avatar.admin": "Administration",
- "navbar.avatar.signout": "Sign out",
- // END navbar
- // /
- "home.title": "A self-hosted file sharing platform.",
- "home.description": "Do you really want to give your personal files in the hand of third parties like WeTransfer?",
- "home.bullet.a.name": "Self-Hosted",
- "home.bullet.a.description": "Host Pingvin Share on your own machine.",
- "home.bullet.b.name": "Privacy",
- "home.bullet.b.description": "Your files are your files and should never get into the hands of third parties.",
- "home.bullet.c.name": "No annoying file size limit",
- "home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
- "home.button.start": "Get started",
- "home.button.source": "Source code",
- // END /
- // /auth/signin
- "signin.title": "Welcome back",
- "signin.description": "You don't have an account yet?",
- "signin.button.signup": "Sign up",
- "signin.input.email-or-username": "Email or username",
- "signin.input.email-or-username.placeholder": "Your email or username",
- "signin.input.password": "Password",
- "signin.input.password.placeholder": "Your password",
- "signin.button.submit": "Sign in",
- "signIn.notify.totp-required.title": "Two-factor authentication required",
- "signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
- // END /auth/signin
- // /auth/signup
- "signup.title": "Create an account",
- "signup.description": "Already have an account?",
- "signup.button.signin": "Sign in",
- "signup.input.username": "Username",
- "signup.input.username.placeholder": "Your username",
- "signup.input.email": "Email",
- "signup.input.email.placeholder": "Your email",
- "signup.button.submit": "Let's get started",
- // END /auth/signup
- // /auth/reset-password
- "resetPassword.title": "Forgot your password?",
- "resetPassword.description": "Enter your email to reset your password.",
- "resetPassword.notify.success": "An email has been sent with a link to reset your password.",
- "resetPassword.button.back": "Back to sign in page",
- "resetPassword.text.resetPassword": "Reset password",
- "resetPassword.text.enterNewPassword": "Enter your new password",
- "resetPassword.input.password": "New password",
- "resetPassword.notify.passwordReset": "Your password has been reset successfully.",
- // /account
- "account.title": "My account",
- "account.card.info.title": "Account info",
- "account.card.info.username": "Username",
- "account.card.info.email": "Email",
- "account.notify.info.success": "Account updated successfully",
- "account.card.password.title": "Password",
- "account.card.password.old": "Old password",
- "account.card.password.new": "New password",
- "account.notify.password.success": "Password changed successfully",
- "account.card.security.title": "Security",
- "account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
- "account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
- "account.card.security.totp.button.start": "Start",
- "account.modal.totp.title": "Enable TOTP",
- "account.modal.totp.step1": "Step 1: Add your authenticator",
- "account.modal.totp.step2": "Step 2: Validate your code",
- "account.modal.totp.enterManually": "Enter manually",
- "account.modal.totp.code": "Code",
- "account.modal.totp.clickToCopy": "Click to copy",
- "account.modal.totp.verify": "Verify",
- "account.notify.totp.disable": "TOTP disabled successfully",
- "account.notify.totp.enable": "TOTP enabled successfully",
- "account.card.language.title": "Language",
- "account.card.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-link": "Share link",
- "account.shares.modal.delete.title": "Delete share {share}",
- "account.shares.modal.delete.description": "Do you really want to delete this share?",
- // END /account/shares
- // /account/reverseShares
- "account.reverseShares.title": "Reverse shares",
- "account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
- "account.reverseShares.title.empty": "It's empty here 👀",
- "account.reverseShares.description.empty": "You don't have any reverse shares.",
- // showCreateReverseShareModal.tsx
- "account.reverseShares.modal.expiration.label": "Expiration",
- "account.reverseShares.modal.expiration.minute-singular": "Minute",
- "account.reverseShares.modal.expiration.minute-plural": "Minutes",
- "account.reverseShares.modal.expiration.hour-singular": "Hour",
- "account.reverseShares.modal.expiration.hour-plural": "Hours",
- "account.reverseShares.modal.expiration.day-singular": "Day",
- "account.reverseShares.modal.expiration.day-plural": "Days",
- "account.reverseShares.modal.expiration.week-singular": "Week",
- "account.reverseShares.modal.expiration.week-plural": "Weeks",
- "account.reverseShares.modal.expiration.month-singular": "Month",
- "account.reverseShares.modal.expiration.month-plural": "Months",
- "account.reverseShares.modal.expiration.year-singular": "Year",
- "account.reverseShares.modal.expiration.year-plural": "Years",
- "account.reverseShares.modal.max-size.label": "Max share size",
- "account.reverseShares.modal.send-email": "Send email notification",
- "account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
- "account.reverseShares.modal.max-use.label": "Max uses",
- "account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
- "account.reverseShare.never-expires": "This reverse share will never expire.",
- "account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
- "account.reverseShares.table.no-shares": "No shares created yet",
- "account.reverseShares.table.count.singular": "share",
- "account.reverseShares.table.count.plural": "shares",
- "account.reverseShares.table.shares": "Shares",
- "account.reverseShares.table.remaining": "Remaining uses",
- "account.reverseShares.table.max-size": "Max share size",
- "account.reverseShares.table.expires": "Expires at",
- "account.reverseShares.modal.reverse-share-link": "Reverse share link",
- "account.reverseShares.modal.delete.title": "Delete reverse share",
- "account.reverseShares.modal.delete.description": "Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
- // END /account/reverseShares
- // /admin
- "admin.title": "Administration",
- "admin.button.users": "User management",
- "admin.button.config": "Configuration",
- "admin.version": "Version",
- // END /admin
- // /admin/users
- "admin.users.title": "User management",
- "admin.users.table.username": "Username",
- "admin.users.table.email": "Email",
- "admin.users.table.admin": "Admin",
- "admin.users.edit.update.title": "Update user {username}",
- "admin.users.edit.update.admin-privileges": "Admin privileges",
- "admin.users.edit.update.change-password.title": "Change password",
- "admin.users.edit.update.change-password.field": "New password",
- "admin.users.edit.update.change-password.button": "Save new password",
- "admin.users.edit.update.notify.password.success": "Password changed successfully",
- "admin.users.edit.delete.title": "Delete user {username}",
- "admin.users.edit.delete.description": "Do you really want to delete this user and all his shares?",
- // showCreateUserModal.tsx
- "admin.users.modal.create.title": "Create user",
- "admin.users.modal.create.username": "Username",
- "admin.users.modal.create.email": "Email",
- "admin.users.modal.create.password": "Password",
- "admin.users.modal.create.manual-password": "Set password manually",
- "admin.users.modal.create.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
- "admin.users.modal.create.admin": "Admin privileges",
- "admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
- // END /admin/users
- // /upload
- "upload.title": "Upload",
- "upload.notify.generic-error": "An error occurred while finishing your share.",
- "upload.notify.count-failed": "{count} files failed to upload. Trying again.",
- // Dropzone.tsx
- "upload.dropzone.title": "Upload files",
- "upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
- "upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
- // FileList.tsx
- "upload.filelist.name": "Name",
- "upload.filelist.size": "Size",
- // showCreateUploadModal.tsx
- "upload.modal.title": "Create Share",
- "upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
- "upload.modal.link.error.taken": "This link is already in use",
- "upload.modal.not-signed-in": "You're not signed in",
- "upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
- "upload.modal.expires.never": "never",
- "upload.modal.expires.never-long": "Never Expires",
- "upload.modal.link.label": "Link",
- "upload.modal.link.placeholder": "myAwesomeShare",
- "upload.modal.expires.label": "Expiration",
- "upload.modal.expires.minute-singular": "Minute",
- "upload.modal.expires.minute-plural": "Minutes",
- "upload.modal.expires.hour-singular": "Hour",
- "upload.modal.expires.hour-plural": "Hours",
- "upload.modal.expires.day-singular": "Day",
- "upload.modal.expires.day-plural": "Days",
- "upload.modal.expires.week-singular": "Week",
- "upload.modal.expires.week-plural": "Weeks",
- "upload.modal.expires.month-singular": "Month",
- "upload.modal.expires.month-plural": "Months",
- "upload.modal.expires.year-singular": "Year",
- "upload.modal.expires.year-plural": "Years",
- "upload.modal.accordion.description.title": "Description",
- "upload.modal.accordion.description.placeholder": "Note for the recipients of this share",
- "upload.modal.accordion.email.title": "Email recipients",
- "upload.modal.accordion.email.placeholder": "Enter email recipients",
- "upload.modal.accordion.email.invalid-email": "Invalid email address",
- "upload.modal.accordion.security.title": "Security options",
- "upload.modal.accordion.security.password.label": "Password protection",
- "upload.modal.accordion.security.password.placeholder": "No password",
- "upload.modal.accordion.security.max-views.label": "Maximum views",
- "upload.modal.accordion.security.max-views.placeholder": "No limit",
- // showCompletedUploadModal.tsx
- "upload.modal.completed.never-expires": "This share will never expire.",
- "upload.modal.completed.expires-on": "This share will expire on {expiration}.",
- "upload.modal.completed.share-ready": "Share ready",
- // END /upload
- // /share/[id]
- "share.title": "Share {shareId}",
- "share.description": "Look what I've shared with you!",
- "share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
- "share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
- "share.error.removed.title": "Share removed",
- "share.error.not-found.title": "Share not found",
- "share.error.not-found.description": "The share you're looking for doesn't exist.",
- "share.modal.password.title": "Password required",
- "share.modal.password.description": "To access this share please enter the password for the share.",
- "share.modal.password": "Password",
- "share.modal.error.invalid-password": "Invalid password",
- "share.button.download-all": "Download all",
- "share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
- "share.modal.file-link": "File link",
- "share.table.name": "Name",
- "share.table.size": "Size",
- "share.modal.file-preview.error.not-supported.title": "Preview not supported",
- "share.modal.file-preview.error.not-supported.description": "A preview for thise file type is unsupported. Please download the file to view it.",
- // END /share/[id]
- // /admin/config
- "admin.config.title": "Configuration",
- "admin.config.category.general": "General",
- "admin.config.category.share": "Share",
- "admin.config.category.email": "Email",
- "admin.config.category.smtp": "SMTP",
- "admin.config.general.app-name": "App name",
- "admin.config.general.app-name.description": "Name of the application",
- "admin.config.general.app-url": "App URL",
- "admin.config.general.app-url.description": "On which URL Pingvin Share is available",
- "admin.config.general.show-home-page": "Show home page",
- "admin.config.general.show-home-page.description": "Whether to show the home page",
- "admin.config.general.logo": "Logo",
- "admin.config.general.logo.description": "Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
- "admin.config.general.logo.placeholder": "Pick image",
- "admin.config.email.enable-share-email-recipients": "Enable share email recipients",
- "admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
- "admin.config.email.share-recipients-subject": "Share recipients subject",
- "admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
- "admin.config.email.share-recipients-message": "Share recipients message",
- "admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
- "admin.config.email.reverse-share-subject": "Reverse share subject",
- "admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
- "admin.config.email.reverse-share-message": "Reverse share message",
- "admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
- "admin.config.email.reset-password-subject": "Reset password subject",
- "admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
- "admin.config.email.reset-password-message": "Reset password message",
- "admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
- "admin.config.email.invite-subject": "Invite subject",
- "admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
- "admin.config.email.invite-message": "Invite message",
- "admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL and {password} with the password.",
- "admin.config.share.allow-registration": "Allow registration",
- "admin.config.share.allow-registration.description": "Whether registration is allowed",
- "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
- "admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
- "admin.config.share.max-size": "Max size",
- "admin.config.share.max-size.description": "Maximum share size in bytes",
- "admin.config.smtp.enabled": "Enabled",
- "admin.config.smtp.enabled.description": "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
- "admin.config.smtp.host": "Host",
- "admin.config.smtp.host.description": "Host of the SMTP server",
- "admin.config.smtp.port": "Port",
- "admin.config.smtp.port.description": "Port of the SMTP server",
- "admin.config.smtp.email": "Email",
- "admin.config.smtp.email.description": "Email address which the emails get sent from",
- "admin.config.smtp.username": "Username",
- "admin.config.smtp.username.description": "Username of the SMTP server",
- "admin.config.smtp.password": "Password",
- "admin.config.smtp.password.description": "Password of the SMTP server",
- "admin.config.smtp.button.test": "Send test email",
- // 404
- "404.title": "404",
- "404.description": "Oops this page doesn't exist.",
- "404.button.home": "Bring me back home",
- // Common translations
- "common.button.save": "Save",
- "common.button.create": "Create",
- "common.button.submit": "Submit",
- "common.button.delete": "Delete",
- "common.button.cancel": "Cancel",
- "common.button.confirm": "Confirm",
- "common.button.disable": "Disable",
- "common.button.share": "Share",
- "common.button.generate": "Generate",
- "common.button.done": "Done",
- "common.text.link": "Link",
- "common.text.or": "or",
- "common.button.go-back": "Go back",
- "common.notify.copied": "Your link was copied to the clipboard",
- "common.error": "Error",
- "common.error.unknown": "An unknown error occurred",
- "common.error.invalid-email": "Invalid email address",
- "common.error.too-short": "Must be at least {length} characters",
- "common.error.too-long": "Must be at most {length} characters",
- "common.error.exact-length": "Must be exactly {length} characters",
- "common.error.invalid-number": "Must be a number",
- "common.error.field-required": "This field is required"
-};
\ No newline at end of file
diff --git a/frontend/src/utils/i18n.util.ts b/frontend/src/utils/i18n.util.ts
index 059c0b7..58c220b 100644
--- a/frontend/src/utils/i18n.util.ts
+++ b/frontend/src/utils/i18n.util.ts
@@ -11,13 +11,21 @@ const getLanguageFromAcceptHeader = (acceptLanguage?: string) => {
const languages = acceptLanguage.split(",").map((l) => l.split(";")[0]);
const supportedLanguages = Object.values(LOCALES).map((l) => l.code);
+ const supportedLanguagesWithoutRegion = supportedLanguages.map(
+ (l) => l.split("-")[0]
+ );
for (const language of languages) {
// Try to match the full language code first, then the language code without the region
if (supportedLanguages.includes(language)) {
return language;
- } else if (supportedLanguages.includes(language.split("-")[0])) {
- return language.split("-")[0];
+ } else if (
+ supportedLanguagesWithoutRegion.includes(language.split("-")[0])
+ ) {
+ const similarLanguage = supportedLanguages.find((l) =>
+ l.startsWith(language.split("-")[0])
+ );
+ return similarLanguage;
}
}
return "en";