Compare commits

..

14 Commits

Author SHA1 Message Date
Elias Schneider
51478b6a9f release: 1.3.0 2024-11-14 19:10:37 +01:00
Elias Schneider
6f45c3b1fb fix: use current window url instead of app url in frontend 2024-11-14 19:10:11 +01:00
Elias Schneider
ff2dd81055 chore(translations): update translations via Crowdin (#665)
* New translations en-us.ts (Spanish)

* New translations en-us.ts (Serbian (Cyrillic))

* New translations en-us.ts (Serbian (Cyrillic))

* New translations en-us.ts (Portuguese, Brazilian)

* New translations en-us.ts (Thai)

* New translations en-us.ts (Thai)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (French)

* New translations en-us.ts (French)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Chinese Simplified)

* New translations en-us.ts (French)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Serbian (Cyrillic))

* New translations en-us.ts (Portuguese, Brazilian)

* New translations en-us.ts (Thai)

* New translations en-us.ts (French)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Chinese Simplified)

* New translations en-us.ts (Bulgarian)

* New translations en-us.ts (Czech)

* New translations en-us.ts (Danish)

* New translations en-us.ts (German)

* New translations en-us.ts (Greek)

* New translations en-us.ts (Finnish)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (Korean)

* New translations en-us.ts (Polish)

* New translations en-us.ts (Slovenian)

* New translations en-us.ts (Swedish)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Ukrainian)

* New translations en-us.ts (Chinese Traditional)

* New translations en-us.ts (Vietnamese)

* New translations en-us.ts (Serbian (Latin))

* New translations en-us.ts (Dutch, Belgium)

* New translations en-us.ts (Arabic, Egypt)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Serbian (Cyrillic))

* New translations en-us.ts (Portuguese, Brazilian)

* New translations en-us.ts (Thai)

* New translations en-us.ts (French)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Chinese Simplified)

* New translations en-us.ts (Bulgarian)

* New translations en-us.ts (Czech)

* New translations en-us.ts (Danish)

* New translations en-us.ts (German)

* New translations en-us.ts (Greek)

* New translations en-us.ts (Finnish)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (Korean)

* New translations en-us.ts (Polish)

* New translations en-us.ts (Slovenian)

* New translations en-us.ts (Swedish)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Ukrainian)

* New translations en-us.ts (Chinese Traditional)

* New translations en-us.ts (Vietnamese)

* New translations en-us.ts (Serbian (Latin))

* New translations en-us.ts (Dutch, Belgium)

* New translations en-us.ts (Arabic, Egypt)
2024-11-14 18:57:20 +01:00
Elias Schneider
c26de4e881 fix: throw error if no disk space is left 2024-11-14 18:44:32 +01:00
Elias Schneider
4ef7ebb062 fix: improve share completed dialog redirection for reverse shares 2024-11-14 18:41:34 +01:00
Elias Schneider
d870b5721a refactor: run formatter 2024-11-14 18:04:18 +01:00
Elias Schneider
d8084e401d feat: add confirm dialog for leaving the page if an upload is in progress 2024-11-14 18:04:11 +01:00
Elias Schneider
e1a5d19544 fix: prevent deletion of last admin account 2024-11-14 17:39:06 +01:00
Elias Schneider
4ce64206be feat: add 'secureCookies' configuration variable to explicitly set the secure flag and prevent confusion 2024-11-14 17:31:17 +01:00
Elias Schneider
77eef187b7 chore(translations): fix wrong label for Serbian latin and cyrillic 2024-10-31 17:01:03 +01:00
Elias Schneider
c7138bcf5d chore(translations): update translations via Crowdin (#657)
* New translations en-us.ts (Serbian (Latin))

* New translations en-us.ts (Portuguese, Brazilian)

* New translations en-us.ts (German)

* New translations en-us.ts (French)

* New translations en-us.ts (French)

* New translations en-us.ts (German)

* New translations en-us.ts (German)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (German)

* New translations en-us.ts (Spanish)
2024-10-31 16:57:43 +01:00
Elias Schneider
ab4f19e921 release: 1.2.4 2024-10-24 14:45:05 +02:00
Elias Schneider
428c1d2b99 fix: don't enforce password lenght for sign in form because of LDAP 2024-10-24 14:44:07 +02:00
Elias Schneider
c89ca7e64b fix: use app name as totp issuer 2024-10-24 13:59:54 +02:00
59 changed files with 739 additions and 707 deletions

View File

@@ -1,3 +1,27 @@
## [1.3.0](https://github.com/stonith404/pingvin-share/compare/v1.2.4...v1.3.0) (2024-11-14)
### Features
* add 'secureCookies' configuration variable to explicitly set the secure flag and prevent confusion ([4ce6420](https://github.com/stonith404/pingvin-share/commit/4ce64206be7440a99299e1ed238ced7408c0563d))
* add confirm dialog for leaving the page if an upload is in progress ([d8084e4](https://github.com/stonith404/pingvin-share/commit/d8084e401d7572b2d6e38ffa20cb678a0fb0e615))
### Bug Fixes
* improve share completed dialog redirection for reverse shares ([4ef7ebb](https://github.com/stonith404/pingvin-share/commit/4ef7ebb0622f16d2d2c4d114b5fc15298e2ba24f))
* prevent deletion of last admin account ([e1a5d19](https://github.com/stonith404/pingvin-share/commit/e1a5d195448e3d741b77fb982ce515489a360562))
* throw error if no disk space is left ([c26de4e](https://github.com/stonith404/pingvin-share/commit/c26de4e881edfe6c7db617c0aeba89871397ebe2))
* use current window url instead of app url in frontend ([6f45c3b](https://github.com/stonith404/pingvin-share/commit/6f45c3b1fbf4a95b29e5742878b55a1afa0b8886))
## [1.2.4](https://github.com/stonith404/pingvin-share/compare/v1.2.3...v1.2.4) (2024-10-24)
### Bug Fixes
* don't enforce password lenght for sign in form because of LDAP ([428c1d2](https://github.com/stonith404/pingvin-share/commit/428c1d2b993a05a25cc94aabe56216b9ab969fa1))
* use app name as totp issuer ([c89ca7e](https://github.com/stonith404/pingvin-share/commit/c89ca7e64b08f437dd1b7e9bf2b9d674cc612228))
## [1.2.3](https://github.com/stonith404/pingvin-share/compare/v1.2.2...v1.2.3) (2024-10-23)

View File

@@ -1,12 +1,12 @@
{
"name": "pingvin-share-backend",
"version": "1.2.3",
"version": "1.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pingvin-share-backend",
"version": "1.2.3",
"version": "1.3.0",
"dependencies": {
"@nestjs/cache-manager": "^2.2.2",
"@nestjs/common": "^10.4.3",

View File

@@ -1,6 +1,6 @@
{
"name": "pingvin-share-backend",
"version": "1.2.3",
"version": "1.3.0",
"scripts": {
"build": "nest build",
"dev": "cross-env NODE_ENV=development nest start --watch",

View File

@@ -20,6 +20,10 @@ const configVariables: ConfigVariables = {
defaultValue: "http://localhost:3000",
secret: false,
},
secureCookies: {
type: "boolean",
defaultValue: "false",
},
showHomePage: {
type: "boolean",
defaultValue: "true",

View File

@@ -176,7 +176,7 @@ export class AuthController {
request.cookies.access_token,
);
const isSecure = this.config.get("general.appUrl").startsWith("https");
const isSecure = this.config.get("general.secureCookies");
response.cookie("access_token", "", {
maxAge: -1,
secure: isSecure,

View File

@@ -334,7 +334,7 @@ export class AuthService {
refreshToken?: string,
accessToken?: string,
) {
const isSecure = this.config.get("general.appUrl").startsWith("https");
const isSecure = this.config.get("general.secureCookies");
if (accessToken)
response.cookie("access_token", accessToken, {
sameSite: "lax",

View File

@@ -8,6 +8,7 @@ import { User } from "@prisma/client";
import * as argon from "argon2";
import { authenticator, totp } from "otplib";
import * as qrcode from "qrcode-svg";
import { ConfigService } from "src/config/config.service";
import { PrismaService } from "src/prisma/prisma.service";
import { AuthService } from "./auth.service";
import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto";
@@ -16,6 +17,7 @@ import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto";
export class AuthTotpService {
constructor(
private prisma: PrismaService,
private configService: ConfigService,
private authService: AuthService,
) {}
@@ -76,13 +78,10 @@ export class AuthTotpService {
throw new BadRequestException("TOTP is already enabled");
}
const issuer = this.configService.get("general.appName");
const secret = authenticator.generateSecret();
const otpURL = totp.keyuri(
user.username || user.email,
"pingvin-share",
secret,
);
const otpURL = totp.keyuri(user.username || user.email, issuer, secret);
await this.prisma.user.update({
where: { id: user.id },

View File

@@ -1,8 +1,6 @@
import { PickType } from "@nestjs/swagger";
import { IsEmail, IsOptional, IsString } from "class-validator";
import { UserDTO } from "src/user/dto/user.dto";
export class AuthSignInDTO extends PickType(UserDTO, ["password"] as const) {
export class AuthSignInDTO {
@IsEmail()
@IsOptional()
email: string;
@@ -10,4 +8,7 @@ export class AuthSignInDTO extends PickType(UserDTO, ["password"] as const) {
@IsString()
@IsOptional()
username: string;
@IsString()
password: string;
}

View File

@@ -3,6 +3,7 @@ import {
HttpException,
HttpStatus,
Injectable,
InternalServerErrorException,
NotFoundException,
} from "@nestjs/common";
import { JwtService } from "@nestjs/jwt";
@@ -59,6 +60,13 @@ export class FileService {
const buffer = Buffer.from(data, "base64");
// Check if there is enough space on the server
const space = await fs.promises.statfs(SHARE_DIRECTORY);
const availableSpace = space.bavail * space.bsize;
if (availableSpace < buffer.byteLength) {
throw new InternalServerErrorException("Not enough space on the server");
}
// Check if share size limit is exceeded
const fileSizeSum = share.files.reduce(
(n, { size }) => n + parseInt(size),

View File

@@ -3,6 +3,7 @@ import {
Controller,
Delete,
Get,
HttpCode,
Param,
Patch,
Post,
@@ -14,12 +15,12 @@ import { Response } from "express";
import { GetUser } from "src/auth/decorator/getUser.decorator";
import { AdministratorGuard } from "src/auth/guard/isAdmin.guard";
import { JwtGuard } from "src/auth/guard/jwt.guard";
import { ConfigService } from "../config/config.service";
import { CreateUserDTO } from "./dto/createUser.dto";
import { UpdateOwnUserDTO } from "./dto/updateOwnUser.dto";
import { UpdateUserDto } from "./dto/updateUser.dto";
import { UserDTO } from "./dto/user.dto";
import { UserSevice } from "./user.service";
import { ConfigService } from "../config/config.service";
@Controller("users")
export class UserController {
@@ -48,12 +49,15 @@ export class UserController {
}
@Delete("me")
@HttpCode(204)
@UseGuards(JwtGuard)
async deleteCurrentUser(
@GetUser() user: User,
@Res({ passthrough: true }) response: Response,
) {
const isSecure = this.config.get("general.appUrl").startsWith("https");
await this.userService.delete(user.id);
const isSecure = this.config.get("general.secureCookies");
response.cookie("access_token", "accessToken", {
maxAge: -1,
@@ -65,7 +69,6 @@ export class UserController {
maxAge: -1,
secure: isSecure,
});
return new UserDTO().from(await this.userService.delete(user.id));
}
// Global user operations

View File

@@ -2,15 +2,15 @@ import { BadRequestException, Injectable, Logger } from "@nestjs/common";
import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library";
import * as argon from "argon2";
import * as crypto from "crypto";
import { Entry } from "ldapts";
import { AuthSignInDTO } from "src/auth/dto/authSignIn.dto";
import { EmailService } from "src/email/email.service";
import { PrismaService } from "src/prisma/prisma.service";
import { inspect } from "util";
import { ConfigService } from "../config/config.service";
import { FileService } from "../file/file.service";
import { CreateUserDTO } from "./dto/createUser.dto";
import { UpdateUserDto } from "./dto/updateUser.dto";
import { ConfigService } from "../config/config.service";
import { Entry } from "ldapts";
import { AuthSignInDTO } from "src/auth/dto/authSignIn.dto";
import { inspect } from "util";
@Injectable()
export class UserSevice {
@@ -89,6 +89,16 @@ export class UserSevice {
});
if (!user) throw new BadRequestException("User not found");
if (user.isAdmin) {
const userCount = await this.prisma.user.count({
where: { isAdmin: true },
});
if (userCount === 1) {
throw new BadRequestException("Cannot delete the last admin user");
}
}
await Promise.all(
user.shares.map((share) => this.fileService.deleteAllFiles(share.id)),
);

View File

@@ -1,12 +1,12 @@
{
"name": "pingvin-share-frontend",
"version": "1.2.3",
"version": "1.3.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "pingvin-share-frontend",
"version": "1.2.3",
"version": "1.3.0",
"dependencies": {
"@emotion/react": "^11.13.3",
"@emotion/server": "^11.11.0",

View File

@@ -1,6 +1,6 @@
{
"name": "pingvin-share-frontend",
"version": "1.2.3",
"version": "1.3.0",
"scripts": {
"dev": "next dev",
"build": "next build",

View File

@@ -5,10 +5,9 @@ import { translateOutsideContext } from "../../hooks/useTranslate.hook";
const showReverseShareLinkModal = (
modals: ModalsContextProps,
reverseShareToken: string,
appUrl: string,
) => {
const t = translateOutsideContext();
const link = `${appUrl}/upload/${reverseShareToken}`;
const link = `${window.location.origin}/upload/${reverseShareToken}`;
return modals.openModal({
title: t("account.reverseShares.modal.reverse-share-link"),
children: (

View File

@@ -11,11 +11,10 @@ import CopyTextField from "../upload/CopyTextField";
const showShareInformationsModal = (
modals: ModalsContextProps,
share: MyShare,
appUrl: string,
maxShareSize: number,
) => {
const t = translateOutsideContext();
const link = `${appUrl}/s/${share.id}`;
const link = `${window.location.origin}/s/${share.id}`;
const formattedShareSize = byteToHumanSizeString(share.size);
const formattedMaxShareSize = byteToHumanSizeString(maxShareSize);

View File

@@ -2,13 +2,9 @@ import { Stack, TextInput } from "@mantine/core";
import { ModalsContextProps } from "@mantine/modals/lib/context";
import { translateOutsideContext } from "../../hooks/useTranslate.hook";
const showShareLinkModal = (
modals: ModalsContextProps,
shareId: string,
appUrl: string,
) => {
const showShareLinkModal = (modals: ModalsContextProps, shareId: string) => {
const t = translateOutsideContext();
const link = `${appUrl}/s/${shareId}`;
const link = `${window.location.origin}/s/${shareId}`;
return modals.openModal({
title: t("account.shares.modal.share-link"),
children: (

View File

@@ -89,15 +89,11 @@ const ManageShareTable = ({
onClick={() => {
if (window.isSecureContext) {
clipboard.copy(
`${config.get("general.appUrl")}/s/${share.id}`,
`${window.location.origin}/s/${share.id}`,
);
toast.success(t("common.notify.copied"));
} else {
showShareLinkModal(
modals,
share.id,
config.get("general.appUrl"),
);
showShareLinkModal(modals, share.id);
}
}}
>

View File

@@ -81,10 +81,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
const validationSchema = yup.object().shape({
emailOrUsername: yup.string().required(t("common.error.field-required")),
password: yup
.string()
.min(8, t("common.error.too-short", { length: 8 }))
.required(t("common.error.field-required")),
password: yup.string().required(t("common.error.field-required")),
});
const form = useForm({
@@ -131,9 +128,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
config.get("oauth.disablePassword")
) {
setIsRedirectingToOauthProvider(true);
router.push(
getOAuthUrl(config.get("general.appUrl"), providers.data[0]),
);
router.push(getOAuthUrl(window.location.origin, providers.data[0]));
}
})
.catch(toast.axiosError);
@@ -211,7 +206,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
key={provider}
component="a"
title={t(`signIn.oauth.${provider}`)}
href={getOAuthUrl(config.get("general.appUrl"), provider)}
href={getOAuthUrl(window.location.origin, provider)}
variant="light"
fullWidth
>

View File

@@ -65,7 +65,7 @@ const FileList = ({
};
const copyFileLink = (file: FileMetaData) => {
const link = `${config.get("general.appUrl")}/api/shares/${
const link = `${window.location.origin}/api/shares/${
share.id
}/files/${file.id}`;

View File

@@ -13,7 +13,6 @@ import CopyTextField from "../CopyTextField";
const showCompletedUploadModal = (
modals: ModalsContextProps,
share: CompletedShare,
appUrl: string,
) => {
const t = translateOutsideContext();
return modals.openModal({
@@ -21,16 +20,18 @@ const showCompletedUploadModal = (
withCloseButton: false,
closeOnEscape: false,
title: t("upload.modal.completed.share-ready"),
children: <Body share={share} appUrl={appUrl} />,
children: <Body share={share} />,
});
};
const Body = ({ share, appUrl }: { share: CompletedShare; appUrl: string }) => {
const Body = ({ share }: { share: CompletedShare }) => {
const modals = useModals();
const router = useRouter();
const t = useTranslate();
const link = `${appUrl}/s/${share.id}`;
const isReverseShare = !!router.query["reverseShareToken"];
const link = `${window.location.origin}/s/${share.id}`;
return (
<Stack align="stretch">
@@ -65,7 +66,11 @@ const Body = ({ share, appUrl }: { share: CompletedShare; appUrl: string }) => {
<Button
onClick={() => {
modals.closeAll();
router.push("/upload");
if (isReverseShare) {
router.reload();
} else {
router.push("/upload");
}
}}
>
<FormattedMessage id="common.button.done" />

View File

@@ -19,7 +19,7 @@ import { useForm, yupResolver } from "@mantine/form";
import { useModals } from "@mantine/modals";
import { ModalsContextProps } from "@mantine/modals/lib/context";
import moment from "moment";
import { useState } from "react";
import React, { useState } from "react";
import { TbAlertCircle } from "react-icons/tb";
import { FormattedMessage } from "react-intl";
import * as yup from "yup";
@@ -30,7 +30,6 @@ import shareService from "../../../services/share.service";
import { FileUpload } from "../../../types/File.type";
import { CreateShare } from "../../../types/share.type";
import { getExpirationPreview } from "../../../utils/date.util";
import React from "react";
import toast from "../../../utils/toast.util";
const showCreateUploadModal = (
@@ -38,7 +37,6 @@ const showCreateUploadModal = (
options: {
isUserSignedIn: boolean;
isReverseShare: boolean;
appUrl: string;
allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean;
maxExpirationInHours: number;
@@ -101,7 +99,6 @@ const CreateUploadModalBody = ({
options: {
isUserSignedIn: boolean;
isReverseShare: boolean;
appUrl: string;
allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean;
maxExpirationInHours: number;
@@ -245,7 +242,7 @@ const CreateUploadModalBody = ({
color: theme.colors.gray[6],
})}
>
{`${options.appUrl}/s/${form.values.link}`}
{`${window.location.origin}/s/${form.values.link}`}
</Text>
{!options.isReverseShare && (
<>
@@ -461,7 +458,6 @@ const SimplifiedCreateUploadModalModal = ({
options: {
isUserSignedIn: boolean;
isReverseShare: boolean;
appUrl: string;
allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean;
maxExpirationInHours: number;

View File

@@ -0,0 +1,42 @@
import { useRouter } from "next/router";
import { useEffect } from "react";
const useConfirmLeave = ({
message,
enabled,
}: {
message: string;
enabled: boolean;
}) => {
const router = useRouter();
useEffect(() => {
if (!enabled) return;
// Show confirmation dialog when route changes
const handleRouteChange = () => {
const confirmLeave = window.confirm(message);
if (!confirmLeave) {
router.events.emit("routeChangeError");
throw "Route change aborted.";
}
};
// Show confirmation when the user tries to leave or reload the page
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
event.preventDefault();
event.returnValue = message;
return message;
};
router.events.on("routeChangeStart", handleRouteChange);
window.addEventListener("beforeunload", handleBeforeUnload);
return () => {
router.events.off("routeChangeStart", handleRouteChange);
window.removeEventListener("beforeunload", handleBeforeUnload);
};
}, [router, message, enabled]);
};
export default useConfirmLeave;

View File

@@ -15,7 +15,7 @@ import polish from "./translations/pl-PL";
import portuguese from "./translations/pt-BR";
import russian from "./translations/ru-RU";
import slovenian from "./translations/sl-SI";
import serbian from "./translations/sr-SP";
import serbianCyrillic from "./translations/sr-SP";
import swedish from "./translations/sv-SE";
import thai from "./translations/th-TH";
import ukrainian from "./translations/uk-UA";
@@ -25,7 +25,7 @@ import turkish from "./translations/tr-TR";
import czech from "./translations/cs-CZ";
import viatnamese from "./translations/vi-VN";
import bulgarian from "./translations/bg-BG";
import serbianCyrillic from "./translations/sr-CS";
import serbianLatin from "./translations/sr-CS";
export const LOCALES = {
ENGLISH: {
@@ -89,9 +89,14 @@ export const LOCALES = {
messages: thai,
},
SERBIAN: {
name: "Srpski",
name: "Српски",
code: "sr-SP",
messages: serbian,
messages: serbianCyrillic,
},
SERBIAN_LATIN: {
name: "Srpski",
code: "sr-CS",
messages: serbianLatin,
},
DUTCH: {
name: "Nederlands",
@@ -163,9 +168,4 @@ export const LOCALES = {
code: "bg-BG",
messages: bulgarian,
},
SERBIAN_CYRILLIC: {
name: "Српски",
code: "sr-CS",
messages: serbianCyrillic,
},
};

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "رفع",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "حدث خطأ أثناء إنهاء مشاركتك.",
"upload.notify.count-failed": "فشل رفع {count} ملفات. تجري المحاولة مجددًا.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "رفع الملفات",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "اسم التطبيق",
"admin.config.general.app-url": "رابط التطبيق",
"admin.config.general.app-url.description": "الرابط الذي تكون مشاركة Pingvin صالحة عليه",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "إظهار الصفحة الرئيسية",
"admin.config.general.show-home-page.description": "تحديد ما إذا كان سيتم عرض الصفحة الرئيسية",
"admin.config.general.session-duration": "مدة الجلسة",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Upload",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "An error occurred while finishing your share.",
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Upload files",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"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.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"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.session-duration": "Session Duration",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Nahrát",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.",
"upload.notify.count-failed": "{count} souborů se nepodařilo nahrát. Zkouším to znovu.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Nahrát soubory",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Název aplikace",
"admin.config.general.app-url": "URL aplikace",
"admin.config.general.app-url.description": "Na kterém URL je Pingvin Share k dispozici",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Zobrazit domovskou stránku",
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
"admin.config.general.session-duration": "Délka trvání relace",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Upload",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Der opstod en fejl under afslutningen af din deling.",
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Upload filer",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"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.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Vis forside",
"admin.config.general.show-home-page.description": "Om forsiden skal vises",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -16,9 +16,9 @@ export default {
"home.bullet.a.name": "Selbst gehostet",
"home.bullet.a.description": "Betreibe Pingvin Share auf deinem eigenen Server.",
"home.bullet.b.name": "Privatsphäre",
"home.bullet.b.description": "Ihre Dateien gehören Ihnen und werden niemals von Dritten zugänglich gemacht.",
"home.bullet.b.description": "Ihre Dateien gehören Ihnen und sind niemals durch Dritte zugänglich.",
"home.bullet.c.name": "Keine lästige Dateigrößenbegrenzung",
"home.bullet.c.description": " Laden Sie so große Dateien hoch, wie Sie wollen. Nur Ihre Festplatte ist Ihr Limit.",
"home.bullet.c.description": "Laden Sie so große Dateien hoch, wie Sie wollen. Nur Ihre Festplatte ist Ihr Limit.",
"home.button.start": "Lege los",
"home.button.source": "Quellcode",
// END /
@@ -26,13 +26,13 @@ export default {
"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": "E-Mail 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",
"signIn.notify.totp-required.description": "Bitte gebe deinen Zwei-Faktor-Authentifizierungscode ein",
"signIn.oauth.or": "ODER",
"signIn.oauth.signInWith": "Anmelden mit",
"signIn.oauth.github": "GitHub",
@@ -47,8 +47,8 @@ export default {
"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.input.email": "E-Mail",
"signup.input.email.placeholder": "Deine E-Mail-Adresse",
"signup.button.submit": "Lass uns loslegen",
// END /auth/signup
// /auth/totp
@@ -57,13 +57,13 @@ export default {
// END /auth/totp
// /auth/reset-password
"resetPassword.title": "Passwort vergessen?",
"resetPassword.description": "Gib deine Email Adresse ein, um dein Passwort zurückzusetzen.",
"resetPassword.description": "Gib deine E-Mail-Adresse ein, um dein Passwort zurückzusetzen.",
"resetPassword.notify.success": "Wir haben dir einen Link gesendet, unter dem du dein Passwort zurücksetzen kannst.",
"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": "Ihr Passwort wurde erfolgreich zurückgesetzt",
"resetPassword.notify.passwordReset": "Ihr Passwort wurde erfolgreich zurückgesetzt.",
// /account
"account.title": "Mein Konto",
"account.card.info.title": "Kontoinformationen",
@@ -92,7 +92,7 @@ export default {
"account.card.security.totp.disable.description": "Gib 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": "Schritt 1: Füge deinen Authenticator hinzu",
"account.modal.totp.step1": "Schritt 1: Füge deinen Authentifikator hinzu",
"account.modal.totp.step2": "Schritt 2: Bestätige deinen Code",
"account.modal.totp.enterManually": "Manuell eingeben",
"account.modal.totp.code": "Code",
@@ -150,7 +150,7 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "Jahr",
"account.reverseShares.modal.expiration.year-plural": "Jahre",
"account.reverseShares.modal.max-size.label": "Maximale Freigabegröße",
"account.reverseShares.modal.send-email": "E-Mail-Benachrichtigungen senden",
"account.reverseShares.modal.send-email": "E-Mail Benachrichtigungen senden",
"account.reverseShares.modal.send-email.description": "Sendet eine E-Mail Benachrichtigung, wenn eine Datei auf Ihrer externen Freigabe hochgeladen wurde.",
"account.reverseShares.modal.simplified": "Einfacher Modus",
"account.reverseShares.modal.simplified.description": "Mache es der Person, die die Datei hochlädt, einfach, sie mit dir zu teilen. Sie werden nur den Namen und die Beschreibung der Freigabe ändern können.",
@@ -190,7 +190,7 @@ export default {
"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": "Benutzer löschen: {username}?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.description": "Möchtest du wirklich diesen Benutzer mit allen seinen Freigaben löschen?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Benutzer erstellen",
"admin.users.modal.create.username": "Benutzername",
@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Upload",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Während der Erstellung der Freigabe ist ein Fehler aufgetreten.",
"upload.notify.count-failed": "{count} Dateien konnten nicht hochgeladen werden. Wird erneut versucht.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Dateien hochladen",
"upload.dropzone.description": "Ziehe Dateien per Drag'n'Drop hierher, um deine Freigabe zu starten. Wir akzeptieren nur Dateien mit einer Gesamtgröße von bis zu {maxSize}.",
@@ -300,6 +303,8 @@ export default {
"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.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Startseite anzeigen",
"admin.config.general.show-home-page.description": "Ob die Startseite angezeigt werden soll",
"admin.config.general.session-duration": "Session-Dauer",
@@ -382,8 +387,8 @@ export default {
"admin.config.oauth.microsoft-client-secret.description": "Client-Sekret der Microsoft OAuth-App",
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Discord Anmeldung erlaubt",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-users": "Discord limitierte Benutzer",
"admin.config.oauth.discord-limited-users.description": "Limitiere die Anmeldung für spezifische Benutzer anhand ihrer Discord ID. Lasse dieses Feld leer, um es zu deaktivieren.",
"admin.config.oauth.discord-limited-guild": "Discord Server-ID",
"admin.config.oauth.discord-limited-guild.description": "Die Anmeldung auf Benutzer in einem bestimmten Server beschränken. Leer lassen, um zu deaktivieren.",
"admin.config.oauth.discord-client-id": "Discord Client-ID",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Μεταφόρτωση",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Παρουσιάστηκε σφάλμα κατά την ολοκλήρωση της κοινής χρήσης σας.",
"upload.notify.count-failed": "Τα αρχεία {count} απέτυχαν να μεταφορτώσουν. Δοκιμάστε ξανά.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Μεταφόρτωση αρχείων",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Ονομασία της εφαρμογής",
"admin.config.general.app-url": "URL Εφαρμογής",
"admin.config.general.app-url.description": "Η διεύθυνση URL όπου το Pingvin Share είναι διαθέσιμο",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Εμφάνιση αρχικής σελίδας",
"admin.config.general.show-home-page.description": "Εάν θα εμφανίζεται η αρχική σελίδα",
"admin.config.general.session-duration": "Διάρκεια συνεδρίας",

View File

@@ -286,9 +286,14 @@ export default {
// /upload
"upload.title": "Upload",
"upload.notify.confirm-leave":
"Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error":
"An error occurred while finishing your share.",
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description":
"This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Upload files",
@@ -410,6 +415,9 @@ export default {
"admin.config.general.app-url": "App URL",
"admin.config.general.app-url.description":
"On which URL Pingvin Share is available",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description":
"Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Show home page",
"admin.config.general.show-home-page.description":
"Whether to show the home page",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "Subir",
"navbar.signin": "Iniciar sesión",
"navbar.home": "Inicio",
"navbar.signup": "Sign up",
"navbar.signup": "Registrarse",
"navbar.links.shares": "Mis compartidos",
"navbar.links.reverse": "Comparticiones inversas",
"navbar.avatar.account": "Mi cuenta",
@@ -16,9 +16,9 @@ export default {
"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": "Your files are yours and will never be accessed by third parties.",
"home.bullet.b.description": "Tus archivos son tuyos y nunca serán accesibles por terceros.",
"home.bullet.c.name": "Sin molestos límites de tamaño de archivo",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "Sube archivos del tamaño que desees. Solo el espacio en tu disco duro será tu límite.",
"home.button.start": "Comenzar",
"home.button.source": "Código fuente",
// END /
@@ -58,12 +58,12 @@ export default {
// /auth/reset-password
"resetPassword.title": "¿Olvidaste tu contraseña?",
"resetPassword.description": "Ingresa tu correo para restablecer tu contraseña.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "Se ha enviado un mensaje con un enlace para restablecer tu contraseña si el correo electrónico proporcionado existe.",
"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": "Your password has been successfully reset.",
"resetPassword.notify.passwordReset": "Tu contraseña ha sido restablecida exitosamente.",
// /account
"account.title": "Mi cuenta",
"account.card.info.title": "Información de cuenta",
@@ -73,7 +73,7 @@ export default {
"account.card.password.title": "Contraseña",
"account.card.password.old": "Anterior contraseña",
"account.card.password.new": "Nueva contraseña",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "No tienes una contraseña configurada. Para iniciar sesión usando tu correo electrónico y contraseña, necesitas crear una contraseña.",
"account.notify.password.success": "Contraseña cambiada correctamente",
"account.card.oauth.title": "Inicio de sesión con red social",
"account.card.oauth.github": "GitHub",
@@ -85,7 +85,7 @@ export default {
"account.card.oauth.unlink": "Desvincular",
"account.card.oauth.unlinked": "Desvinculado",
"account.modal.unlink.title": "Desvincular cuenta",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "Desvincular tus cuentas sociales puede hacer que pierdas acceso a tu cuenta si no recuerdas tus credenciales de inicio de sesión",
"account.notify.oauth.unlinked.success": "Desvinculado correctamente",
"account.card.security.title": "Seguridad",
"account.card.security.totp.enable.description": "Ingrese su contraseña actual para habilitar TOTP",
@@ -121,12 +121,12 @@ export default {
"account.shares.table.name": "Nombre",
"account.shares.table.description": "Descripción",
"account.shares.table.visitors": "Visitas",
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.expiresAt": "Vence el",
"account.shares.table.createdAt": "Creado el",
"account.shares.table.size": "Tamaño",
"account.shares.modal.share-informations": "Información del compartido",
"account.shares.modal.share-link": "Enlace",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.title": "Eliminar enlace compartido: {share}",
"account.shares.modal.delete.description": "¿Seguro que quieres eliminar este compartido?",
// END /account/shares
// /account/reverseShares
@@ -150,12 +150,12 @@ export default {
"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 del compartido",
"account.reverseShares.modal.send-email": "Send email notifications",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email": "Enviar notificaciones por correo electrónico",
"account.reverseShares.modal.send-email.description": "Te envía una notificación por correo electrónico cuando se crea un enlace compartido con este enlace de compartición inverso.",
"account.reverseShares.modal.simplified": "Modo simple",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "Facilita que la persona que sube el archivo lo comparta contigo. Solo podrá personalizar el nombre y la descripción del enlace compartido.",
"account.reverseShares.modal.public-access": "Acceso público",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "Haz que los enlaces compartidos creados con este enlace de compartición inverso sean públicos. Si está desactivado, solo tú y el creador del enlace tendrán acceso para verlo.",
"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 compartido.",
"account.reverseShare.never-expires": "Esta compartición inversa nunca expirará.",
@@ -183,14 +183,14 @@ export default {
"admin.users.table.username": "Nombre de usuario",
"admin.users.table.email": "Correo",
"admin.users.table.admin": "Administrador",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.title": "Editar 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": "Delete user: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.title": "Eliminar usuario: {username} ?",
"admin.users.edit.delete.description": "¿Realmente deseas eliminar a este usuario y todos sus enlaces compartidos?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Crear usuario",
"admin.users.modal.create.username": "Nombre de usuario",
@@ -206,17 +206,20 @@ export default {
"admin.shares.table.id": "ID de compartición",
"admin.shares.table.username": "Creador",
"admin.shares.table.visitors": "Visitantes",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.table.expires": "Vence el",
"admin.shares.edit.delete.title": "Eliminar enlace compartido: {id}",
"admin.shares.edit.delete.description": "¿Seguro que quieres eliminar este compartido?",
// END /admin/shares
// /upload
"upload.title": "Subir",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"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.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Subir archivos",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.description": "Arrastra y suelta los archivos aquí para crear tu enlace compartido. Solo aceptamos archivos de hasta {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",
@@ -228,8 +231,8 @@ export default {
"upload.modal.not-signed-in": "No has iniciado sesión",
"upload.modal.not-signed-in-description": "No podrás eliminar tus compartidos manualmente ni ver el número de visitas.",
"upload.modal.expires.never": "nunca",
"upload.modal.expires.never-long": "Permanent share",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
"upload.modal.expires.never-long": "Enlace compartido permanente",
"upload.modal.expires.error.too-long": "La fecha de expiración excede el máximo de {max}.",
"upload.modal.link.label": "Enlace",
"upload.modal.expires.label": "Expiración",
"upload.modal.expires.minute-singular": "Minuto",
@@ -272,16 +275,16 @@ export default {
"share.error.access-denied.title": "Compartición privada",
"share.error.access-denied.description": "La cuenta actual no tiene permiso para acceder a este compartido",
"share.modal.password.title": "Se requiere contraseña",
"share.modal.password.description": "Please enter the password to acces this share.",
"share.modal.password.description": "Por favor, ingresa la contraseña para acceder a este enlace 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": "The share is being prepared. Please try again in a few minutes.",
"share.notify.download-all-preparing": "El enlace compartido está en preparación. Por favor, inténtalo 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": "Previews are not supported for this type of files. Please download the file to view it.",
"share.modal.file-preview.error.not-supported.description": "Las vistas previas no son compatibles con este tipo de archivos. Por favor, descargue el archivo para verlo.",
// END /share/[id]
// /share/[id]/edit
"share.edit.title": "Editar {shareId}",
@@ -300,6 +303,8 @@ export default {
"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.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Mostrar página de inicio",
"admin.config.general.show-home-page.description": "Mostrar o no la página de inicio",
"admin.config.general.session-duration": "Duración de la sesión",
@@ -307,24 +312,24 @@ export default {
"admin.config.general.logo": "Logo",
"admin.config.general.logo.description": "Cambia tu logo subiendo una nueva imagen. La imagen debe ser un PNG y debe estar en formato 1:1.",
"admin.config.general.logo.placeholder": "Elegir imagen",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.enable-share-email-recipients": "Habilitar compartir por correo electrónico",
"admin.config.email.enable-share-email-recipients.description": "Si desea permitir compartir por correo electrónico. Solo habilita esto si SMTP está activado.",
"admin.config.email.share-recipients-subject": "Asunto destinatario",
"admin.config.email.share-recipients-subject.description": "Asunto del correo el cual es enviado al destinatario del compartido.",
"admin.config.email.share-recipients-message": "Mensaje destinatario",
"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 These variables will be replaced with the actual value.",
"admin.config.email.share-recipients-message.description": "Mensaje que se envía a los destinatarios del enlace compartido. \nVariables disponibles:\n{creator} - El nombre de usuario del creador del enlace\n{shareUrl} - La URL del enlace compartido\n{desc} - La descripción del enlace compartido\n{expires} - La fecha de expiración del enlace\nEstas variables se reemplazarán con el valor real.",
"admin.config.email.reverse-share-subject": "Asunto de la compartición inversa",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
"admin.config.email.reverse-share-subject.description": "Asunto del correo electrónico enviado cuando alguien crea un enlace compartido con tu enlace compartido inverso.",
"admin.config.email.reverse-share-message": "Mensaje de la compartición inversa",
"admin.config.email.reverse-share-message.description": "Mensaje que se envía cuando alguien comparte algo con tu enlace de compartición inversa. {shareUrl} Se remplazará con el nombre del creador y la URL del compartido.",
"admin.config.email.reset-password-subject": "Asunto restablecer contraseña",
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
"admin.config.email.reset-password-subject.description": "Asunto del correo electrónico enviado cuando un usuario solicita un restablecimiento de contraseña.",
"admin.config.email.reset-password-message": "Mensaje restablecer contraseña",
"admin.config.email.reset-password-message.description": "Mensaje que se envía cuando un usuario solicita restablecer la contraseña. {url} se remplazará con la URL para restablecer la contraseña.",
"admin.config.email.invite-subject": "Asunto de la invitación",
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
"admin.config.email.invite-subject.description": "Asunto del correo electrónico enviado cuando un administrador invita a un usuario.",
"admin.config.email.invite-message": "Mensaje de invitación",
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
"admin.config.email.invite-message.description": "Mensaje que se envía cuando un administrador invita a un usuario. {url} se reemplazará con la URL de invitación, {email} con el correo electrónico y {password} con la contraseña del usuario.",
"admin.config.share.allow-registration": "Permitir registro",
"admin.config.share.allow-registration.description": "Si se permite el registro",
"admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión",
@@ -336,17 +341,17 @@ export default {
"admin.config.share.zip-compression-level": "Nivel de compresión del Zip",
"admin.config.share.zip-compression-level.description": "Ajustar el nivel para equilibrar entre el tamaño del archivo y la velocidad de compresión. Los valores válidos van del 0 al 9, siendo 0 sin compresión y 9 el nivel máximo de compresión. ",
"admin.config.share.chunk-size": "Tamaño de los fragmentos",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.chunk-size.description": "Ajusta el tamaño del fragmento (en bytes) para tus subidas y equilibra la eficiencia y la fiabilidad según tu conexión a Internet. Fragmentos más pequeños pueden aumentar las tasas de éxito para conexiones inestables, mientras que fragmentos más grandes hacen que las subidas sean más rápidas para conexiones estables.",
"admin.config.share.auto-open-share-modal": "Auto abrir un modal de creación de compartidos",
"admin.config.share.auto-open-share-modal.description": "El modal de creación de compartir aparece automáticamente cuando un usuario selecciona archivos, eliminando la necesidad de hacer clic manualmente en el botón.",
"admin.config.smtp.enabled": "Enable",
"admin.config.smtp.enabled": "Habilitar",
"admin.config.smtp.enabled.description": "Si SMTP está habilitado. Active solo si ha introducido el host, el puerto, el correo, el usuario y la contraseña de su servidor SMTP.",
"admin.config.smtp.host": "Host",
"admin.config.smtp.host.description": "Host del servidor SMTP",
"admin.config.smtp.port": "Puerto",
"admin.config.smtp.port.description": "Puerto del servidor SMTP",
"admin.config.smtp.email": "Correo",
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
"admin.config.smtp.email.description": "Dirección desde la cual se envían los correos electrónicos",
"admin.config.smtp.username": "Usuario",
"admin.config.smtp.username.description": "Usuario del servidor SMTP",
"admin.config.smtp.password": "Contraseña",
@@ -375,58 +380,58 @@ export default {
"admin.config.oauth.microsoft-enabled": "Microsoft",
"admin.config.oauth.microsoft-enabled.description": "Si el inicio de sesión de Microsoft está habilitado",
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
"admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
"admin.config.oauth.microsoft-tenant.description": "Tenant ID de la aplicación OAuth de Microsoft\ncomún: Los usuarios con una cuenta personal de Microsoft y una cuenta de trabajo o escuela de Microsoft Entra ID pueden iniciar sesión en la aplicación.\norganizaciones: Solo los usuarios con cuentas de trabajo o escuela de Microsoft Entra ID pueden iniciar sesión en la aplicación.\nconsumidores: Solo los usuarios con una cuenta personal de Microsoft pueden iniciar sesión en la aplicación.\nNombre de dominio del Tenant ID de Microsoft Entra o el Tenant ID en formato GUID: Solo los usuarios de un Tenant específico de Microsoft Entra (miembros del directorio con una cuenta de trabajo o escuela o invitados del directorio con una cuenta personal de Microsoft) pueden iniciar sesión en la aplicación.",
"admin.config.oauth.microsoft-client-id": "ID del cliente de Microsoft",
"admin.config.oauth.microsoft-client-id.description": "ID de cliente de la app OAuth de Microsoft",
"admin.config.oauth.microsoft-client-secret": "Secreto del cliente de Microsoft",
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
"admin.config.oauth.microsoft-client-secret.description": "Secreto del cliente de la aplicación OAuth de Microsoft",
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Si el inicio de sesión de Discord está habilitado",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
"admin.config.oauth.discord-limited-users": "Usuarios limitados de Discord",
"admin.config.oauth.discord-limited-users.description": "Limitar el inicio de sesión a usuarios específicos por su ID de Discord. Deja en blanco para desactivar.",
"admin.config.oauth.discord-limited-guild": "ID de servidor limitado de Discord",
"admin.config.oauth.discord-limited-guild.description": "Limitar el inicio de sesión a usuarios en un servidor específico. Déjelo en blanco para desactivarlo.",
"admin.config.oauth.discord-client-id": "Discord Client ID",
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
"admin.config.oauth.discord-client-secret": "Discord Client secret",
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
"admin.config.oauth.discord-client-id": "ID de cliente de Discord",
"admin.config.oauth.discord-client-id.description": "ID de cliente de la aplicación OAuth de Discord",
"admin.config.oauth.discord-client-secret": "Secreto de cliente de Discord",
"admin.config.oauth.discord-client-secret.description": "Secreto del cliente de la aplicación OAuth de Discord",
"admin.config.oauth.oidc-enabled": "Conexión OpenID",
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
"admin.config.oauth.oidc-role-path.description": "Debe ser una ruta JMES válida que haga referencia a un array de roles. " + "Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
"admin.config.oauth.oidc-enabled.description": "Si el inicio de sesión de OpenID Connect está habilitado",
"admin.config.oauth.oidc-discovery-uri": "URI de descubrimiento de OpenID Connect",
"admin.config.oauth.oidc-discovery-uri.description": "URI de descubrimiento de la aplicación OAuth de OpenID Connect",
"admin.config.oauth.oidc-sign-out": "Cerrar sesión de OpenID Connect",
"admin.config.oauth.oidc-sign-out.description": "Si el botón \"Cerrar sesión\" cerrará la sesión del proveedor de OpenID Connect",
"admin.config.oauth.oidc-username-claim": "Reclamo de nombre de usuario de OpenID Connect",
"admin.config.oauth.oidc-username-claim.description": "Reclamo de nombre de usuario en el token de OpenID Connect. Déjalo en blanco si no sabes qué es esta configuración.",
"admin.config.oauth.oidc-role-path": "Ruta a los roles en el token de OpenID Connect",
"admin.config.oauth.oidc-role-path.description": "Debe ser una ruta JMES válida que haga referencia a un array de roles. " + "Se recomienda gestionar los derechos de acceso utilizando roles de OpenID Connect solo si no se ha configurado ningún otro proveedor de identidad y si el inicio de sesión con contraseña está deshabilitado. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
"admin.config.oauth.oidc-role-general-access": "Rol de OpenID Connect para acceso general",
"admin.config.oauth.oidc-role-general-access.description": "Rol requerido para acceso general. Debe estar presente en los roles de un usuario para que inicie sesión. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
"admin.config.oauth.oidc-role-admin-access": "Rol de OpenID Connect para acceso de administrador",
"admin.config.oauth.oidc-role-admin-access.description": "Rol requerido para el acceso administrativo. Debe estar presente en los roles de un usuario para acceder al panel de administración. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-client-id": "ID de Cliente OpenID Connect",
"admin.config.oauth.oidc-client-id.description": "ID de cliente de la aplicación OAuth de OpenID Connect",
"admin.config.oauth.oidc-client-secret": "Secreto de cliente de OpenID Connect",
"admin.config.oauth.oidc-client-secret.description": "Secreto del cliente de la aplicación OAuth de OpenID Connect",
"admin.config.category.ldap": "LDAP",
"admin.config.ldap.enabled": "Enable LDAP",
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
"admin.config.ldap.url": "Server URL",
"admin.config.ldap.url.description": "URL of the LDAP server",
"admin.config.ldap.enabled": "Habilitar LDAP",
"admin.config.ldap.enabled.description": "Usar autenticación LDAP para el inicio de sesión de usuarios",
"admin.config.ldap.url": "URL del servidor",
"admin.config.ldap.url.description": "URL del servidor LDAP",
"admin.config.ldap.bind-dn": "Bind DN",
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
"admin.config.ldap.bind-dn.description": "Usuario predeterminado utilizado para realizar la búsqueda de usuarios",
"admin.config.ldap.bind-password": "Bind password",
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
"admin.config.ldap.search-base": "User base",
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
"admin.config.ldap.search-query": "User query",
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
"admin.config.ldap.admin-groups": "Admin group",
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
"admin.config.ldap.field-name-member-of": "User groups attribute name",
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
"admin.config.ldap.field-name-email": "User email attribute name",
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
"admin.config.ldap.bind-password.description": "Contraseña utilizada para realizar la búsqueda de usuarios",
"admin.config.ldap.search-base": "Base de usuarios",
"admin.config.ldap.search-base.description": "Ubicación base, donde se llevará a cabo la búsqueda de usuarios",
"admin.config.ldap.search-query": "Consulta de usuario",
"admin.config.ldap.search-query.description": "La consulta de usuario se utilizará para buscar en la 'Base de usuarios' al usuario LDAP. Se puede usar %username% como marcador de posición para la entrada del usuario.",
"admin.config.ldap.admin-groups": "Grupo de administración",
"admin.config.ldap.admin-groups.description": "Grupo requerido para acceso administrativo.",
"admin.config.ldap.field-name-member-of": "Atributo grupos de usuarios",
"admin.config.ldap.field-name-member-of.description": "Nombre del atributo LDAP para los grupos de los que es miembro un usuario. Esto se utiliza al verificar el grupo de administración.",
"admin.config.ldap.field-name-email": "Atributo correo electrónico del usuario",
"admin.config.ldap.field-name-email.description": "Nombre del atributo LDAP para el correo electrónico de un usuario.",
// 404
"404.description": "Oops esta página no existe.",
"404.button.home": "Regrésame al inicio",
@@ -441,10 +446,10 @@ export default {
"error.msg.no_user": "El usuario vinculado a esta cuenta {0} no existe.",
"error.msg.no_email": "No se puede obtener la dirección de correo electrónico de esta cuenta {0}.",
"error.msg.already_linked": "Esta cuenta {0} ya está vinculada a otra cuenta.",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
"error.msg.not_linked": "Esta cuenta {0} aún no ha sido vinculada a ninguna cuenta.",
"error.msg.unverified_account": "Esta cuenta {0} no está verificada, por favor inténtalo de nuevo después de la verificación.",
"error.msg.user_not_allowed": "No tienes permitido iniciar sesion.",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
"error.msg.cannot_get_user_info": "No se puede obtener tu información de usuario de esta cuenta {0}.",
"error.param.provider_github": "GitHub",
"error.param.provider_google": "Google",
"error.param.provider_microsoft": "Microsoft",
@@ -462,9 +467,9 @@ export default {
"common.button.generate": "Generar",
"common.button.done": "Listo",
"common.text.link": "Enlace",
"common.text.navigate-to-link": "Visit link",
"common.text.navigate-to-link": "Visitar enlace",
"common.text.or": "o",
"common.text.redirecting": "Redirecting...",
"common.text.redirecting": "Redirigiendo...",
"common.button.go-back": "Volver",
"common.button.go-home": "Página de inicio",
"common.notify.copied": "Tu enlace se ha copiado al portapapeles",
@@ -474,8 +479,8 @@ export default {
"common.error.invalid-email": "Correo electrónico no válido",
"common.error.too-short": "Debe tener al menos {length} caracteres",
"common.error.too-long": "Debe tener como máximo {length} caracteres",
"common.error.number-too-small": "Must be at least {min}",
"common.error.number-too-large": "Must be at most {max}",
"common.error.number-too-small": "Debe ser al menos {min}",
"common.error.number-too-large": "Debe ser como máximo {max}",
"common.error.exact-length": "Debe tener exactamente {length} caracteres",
"common.error.invalid-number": "Debe ser un número",
"common.error.field-required": "Este campo es requerido"

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Pilvetä",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Kohdattiin odottamaton virhe jaon luomisessa.",
"upload.notify.count-failed": "{count} tiedostoa ei voitu ladata. Yritetään uudelleen.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Pilvetä tiedostoja",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Sovelluksen nimi",
"admin.config.general.app-url": "Sovelluksen URL",
"admin.config.general.app-url.description": "Millä URL-osoitteella Pingvin Share on saatavilla",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Näytä kotisivu",
"admin.config.general.show-home-page.description": "Näytetäänkö kotisivu vai ei",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -91,14 +91,14 @@ export default {
"account.card.security.totp.enable.description": "Entrez votre mot de passe actuel pour activer TOTP",
"account.card.security.totp.disable.description": "Entrez votre mot de passe actuel pour désactiver TOTP",
"account.card.security.totp.button.start": "Démarrer",
"account.modal.totp.title": "Activer TOTP",
"account.modal.totp.step1": "Étape 1 : Ajouter votre authentificateur",
"account.modal.totp.title": "Activer la double authentification",
"account.modal.totp.step1": "Étape 1 : Ajouter votre authentification",
"account.modal.totp.step2": "Étape 2 : Valider votre code",
"account.modal.totp.enterManually": "Saisir manuellement",
"account.modal.totp.code": "Code",
"common.button.clickToCopy": "Cliquez pour copier",
"account.modal.totp.verify": "Vérifier",
"account.notify.totp.disable": "TOTP désactivé avec succès",
"account.notify.totp.disable": "Double authentification (TOTP) désactivé avec succès",
"account.notify.totp.enable": "TOTP activé avec succès",
"account.card.language.title": "Langue",
"account.card.language.description": "Le projet est traduit par la communauté. Certaines traductions peuvent être incomplètes.",
@@ -151,7 +151,7 @@ export default {
"account.reverseShares.modal.expiration.year-plural": "Ans",
"account.reverseShares.modal.max-size.label": "Taille maximale du partage",
"account.reverseShares.modal.send-email": "Envoyer des notifications par courriel",
"account.reverseShares.modal.send-email.description": "Vous envoie une notification par courriel lorsqu'un partage est créé avec ce lien de partage inversé.",
"account.reverseShares.modal.send-email.description": "Vous envoi une notification par courriel lorsqu'un partage est créé avec ce lien de partage inversé.",
"account.reverseShares.modal.simplified": "Mode simple",
"account.reverseShares.modal.simplified.description": "Simplifiez la tâche à la personne qui vous partage un fichier. Ils ne pourront que personnaliser le nom et la description du partage.",
"account.reverseShares.modal.public-access": "Accès public",
@@ -190,7 +190,7 @@ export default {
"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": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.description": "Souhaitez-vous vraiment supprimer cet utilisateur et tous ses partages ?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Créer un utilisateur",
"admin.users.modal.create.username": "Surnom",
@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Envoyer",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
"upload.notify.count-failed": "{count} fichier(s) na(ont) pas pu être envoyé(s). Veuillez réessayer.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Téléverser des fichiers",
"upload.dropzone.description": "Glisser-déposer les fichiers ici pour commencer votre partage. Nous n'acceptons que les fichiers jusqu'à {maxSize} au total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Le nom de lapplication",
"admin.config.general.app-url": "URL de lappli",
"admin.config.general.app-url.description": "Depuis quel URL le partage Pingvin est disponible",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Afficher la page daccueil",
"admin.config.general.show-home-page.description": "Afficher ou non la page daccueil",
"admin.config.general.session-duration": "Durée de la session",
@@ -312,7 +317,7 @@ export default {
"admin.config.email.share-recipients-subject": "Sujet dun partage",
"admin.config.email.share-recipients-subject.description": "Intitulé du courriel envoyé aux destinataires dun partage.",
"admin.config.email.share-recipients-message": "Message dun partage",
"admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage. Variables possibles :\n• {creator} : Le pseudo de lauteur du partage\n• {shareUrl} : LURL du partage\n• {desc} : La description du partage\n• {expires} : La date d'expiration du partage\nCes variables seront remplacées par leur valeur réelle.",
"admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage.\nVariables possibles :\n• {creator} : Le pseudo de lauteur du partage\n• {shareUrl} : LURL du partage\n• {desc} : La description du partage\n• {expires} : La date d'expiration du partage\nCes variables seront remplacées par leur valeur réelle.",
"admin.config.email.reverse-share-subject": "Sujet dun partage inversé",
"admin.config.email.reverse-share-subject.description": "Intitulé du courriel envoyé lorsque quelquun a partagé des fichiers depuis votre partage inversé.",
"admin.config.email.reverse-share-message": "Message dun partage inversé",
@@ -356,8 +361,8 @@ export default {
"admin.config.smtp.allow-unauthorized-certificates.description": "Ne permettez ceci que si vous avez besoin de faire confiance aux certificats autosignés.",
"admin.config.oauth.allow-registration": "Autoriser linscription",
"admin.config.oauth.allow-registration.description": "Permettre aux utilisateurs de sinscrire via leur identifiant social",
"admin.config.oauth.ignore-totp": "Ignorer TOTP",
"admin.config.oauth.ignore-totp.description": "Ignorer le TOTP lorsque lutilisateur utilise un identifiant social.",
"admin.config.oauth.ignore-totp": "Ignorer double authentification TOTP",
"admin.config.oauth.ignore-totp.description": "Ignorer la double-authentification (TOTP) lorsque lutilisateur utilise un identifiant social",
"admin.config.oauth.disable-password": "Désactiver la connexion par mot de passe",
"admin.config.oauth.disable-password.description": "Désactive la connexion par mot de passe\nAssurez-vous quun fournisseur OAuth soit correctement configuré avant dactiver cette configuration pour éviter d'être enfermé.",
"admin.config.oauth.github-enabled": "GitHub",
@@ -383,7 +388,7 @@ export default {
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Permettre la connexion via Discord",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-users.description": "Limiter la connexion à des utilisateurs spécifiques par leur identifiant Discord. Laissez vide pour désactiver.",
"admin.config.oauth.discord-limited-guild": "ID de serveur restreint Discord",
"admin.config.oauth.discord-limited-guild.description": "Limiter la connexion aux utilisateurs sur un serveur spécifique. Laissez vide pour désactiver.",
"admin.config.oauth.discord-client-id": "ID du client Discord",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "Feltöltés",
"navbar.signin": "Bejelentkezés",
"navbar.home": "Home",
"navbar.signup": "Sign up",
"navbar.signup": "Regisztráció",
"navbar.links.shares": "Megosztásaim",
"navbar.links.reverse": "Fordított megosztások",
"navbar.avatar.account": "Fiókom",
@@ -16,9 +16,9 @@ export default {
"home.bullet.a.name": "Saját üzemeltetés",
"home.bullet.a.description": "A Pingvin Share megosztót saját gépéről futtathatja.",
"home.bullet.b.name": "Adatvédelem",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
"home.bullet.b.description": "A te fájljaid a tiéd, és harmadik felek soha nem férnek hozzá.",
"home.bullet.c.name": "Nincs bosszantó fájl méretkorlát",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "Akkora fájlokat oszt meg, amekkorákat csak akar. Határt csak a lemezterület szab.",
"home.button.start": "Nosza, kezdjük",
"home.button.source": "Forráskód",
// END /
@@ -58,12 +58,12 @@ export default {
// /auth/reset-password
"resetPassword.title": "Elfelejtette jelszavát?",
"resetPassword.description": "Adja meg emailcímét a jelszó alaphelyzetbe állításához.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "A jelszó visszaállítására szolgáló linket tartalmazó üzenetet küldtünk, abban az esetben, ha az e-mail létezik.",
"resetPassword.button.back": "Vissza a bejelentkezési oldalra",
"resetPassword.text.resetPassword": "Jelszó alaphelyzetbe állítása",
"resetPassword.text.enterNewPassword": "Adja meg új jelszavát",
"resetPassword.input.password": "Új jelszó",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
"resetPassword.notify.passwordReset": "A jelszavát sikeresen helyreállította.",
// /account
"account.title": "Fiókom",
"account.card.info.title": "Fiókinformáció",
@@ -73,7 +73,7 @@ export default {
"account.card.password.title": "Jelszó",
"account.card.password.old": "Régi jelszó",
"account.card.password.new": "Új jelszó",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "Még nincs jelszava. Ha email és jelszó kombinációval kíván bejelentkezni, létre kell hoznia egy jelszót.",
"account.notify.password.success": "A jelszó sikeresen frissítésre került",
"account.card.oauth.title": "Közösségi bejelentkezés",
"account.card.oauth.github": "GitHub",
@@ -85,7 +85,7 @@ export default {
"account.card.oauth.unlink": "Leválasztás",
"account.card.oauth.unlinked": "Leválasztva",
"account.modal.unlink.title": "Fiók leválasztása",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "A közösségi hálón keresztül csatolt fiók leválasztásával elveszítheti hozzáférését a fiókhoz, ha a név és jelszó kombinációra nem emlékszik",
"account.notify.oauth.unlinked.success": "Leválasztás sikeres",
"account.card.security.title": "Biztonság",
"account.card.security.totp.enable.description": "Adja meg az aktuális jelszavát a TOTP engedélyezéséhez",
@@ -121,12 +121,12 @@ export default {
"account.shares.table.name": "Megnevezés",
"account.shares.table.description": "Leírás",
"account.shares.table.visitors": "Látogatók",
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.expiresAt": "Lejár",
"account.shares.table.createdAt": "Létrehozva",
"account.shares.table.size": "Méret",
"account.shares.modal.share-informations": "Megosztás adatai",
"account.shares.modal.share-link": "Hivatkozás",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.title": "Megosztás törlése: {share}",
"account.shares.modal.delete.description": "Biztos abban, hogy törölni kívánja ezt a megosztást?",
// END /account/shares
// /account/reverseShares
@@ -150,12 +150,12 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "év",
"account.reverseShares.modal.expiration.year-plural": "év",
"account.reverseShares.modal.max-size.label": "Megosztás megengedett max mérete",
"account.reverseShares.modal.send-email": "Send email notifications",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email": "E-mail értesítések",
"account.reverseShares.modal.send-email.description": "E-mailben értesít, amikor a fordított megosztási hivatkozást használva megosztást hoznak létre.",
"account.reverseShares.modal.simplified": "Egyszerű mód",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "A fájlt feltöltő személy számára egyszerűsíthető az Önnel történő megosztás. A megosztásnak csak a neve és a leírása módosítható.",
"account.reverseShares.modal.public-access": "Nyilvános megosztás",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "A fordított megosztással létrehozott megosztások nyilvánossá tétele. Kikapcsolása esetén csak a megosztás létrehozója és Ön láthatja a megosztást.",
"account.reverseShares.modal.max-use.label": "Megengedett alkalmak száma",
"account.reverseShares.modal.max-use.description": "A megosztási hivatkozás megengedett felhasználási alkalmainak száma.",
"account.reverseShare.never-expires": "Ez a fordított megosztás soha nem fog lejárni.",
@@ -183,14 +183,14 @@ export default {
"admin.users.table.username": "Felhasználónév",
"admin.users.table.email": "Email",
"admin.users.table.admin": "Admin ügyek",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.title": "{username} felhasználó szerkesztése",
"admin.users.edit.update.admin-privileges": "Adminisztrátori jogosultságok",
"admin.users.edit.update.change-password.title": "Jelszó módosítása",
"admin.users.edit.update.change-password.field": "Új jelszó",
"admin.users.edit.update.change-password.button": "Új jelszó mentése",
"admin.users.edit.update.notify.password.success": "A jelszó sikeresen frissítésre került",
"admin.users.edit.delete.title": "Delete user: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.title": "{username} felhasználó törlése ?",
"admin.users.edit.delete.description": "Biztosan törölni szeretné ezt a felhasználót és az összes megosztását?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Felhasználó létrehozása",
"admin.users.modal.create.username": "Felhasználónév",
@@ -206,17 +206,20 @@ export default {
"admin.shares.table.id": "Megosztás ID",
"admin.shares.table.username": "Létrehozó",
"admin.shares.table.visitors": "Látogatók",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.table.expires": "Lejár",
"admin.shares.edit.delete.title": "Megosztás törlése: {id}",
"admin.shares.edit.delete.description": "Valóban törölni kívánja ezt a megosztást?",
// END /admin/shares
// /upload
"upload.title": "Feltöltés",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Hiba lépett fel a megosztás befejezése közben.",
"upload.notify.count-failed": "{count} darab fájlt nem sikerült feltölteni. Próbálja ismét.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Fájlok feltöltése",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.description": "Húzza ide a fájlokat a megosztás elkészítéséhez. Legfeljebb {maxSize} fájl húzható egy megosztásba.",
"upload.dropzone.notify.file-too-big": "A fájlok mérete meghaladja a megengedett {maxSize} méretet.",
// FileList.tsx
"upload.filelist.name": "Megnevezés",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Az alkalmazás neve",
"admin.config.general.app-url": "Alkalmazás URL hivatkozás",
"admin.config.general.app-url.description": "A Pingvin Share megosztáskezelőre mutató hivatkozás",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Kezdőlap mutatása",
"admin.config.general.show-home-page.description": "A kezdőlap mutatásának ki- és bekapcsolása",
"admin.config.general.session-duration": "Munkamenet időtartama",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Carica",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.",
"upload.notify.count-failed": "Impossibile caricare {count} file. Riprovare.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Carica File",
"upload.dropzone.description": "Trascina qui i file per iniziare la tua condivisione. Possiamo accettare solo i file che sono inferiori a {maxSize} in totale.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Nome dell' applicazione",
"admin.config.general.app-url": "URL dell'App",
"admin.config.general.app-url.description": "Su quale URL Pingvin Share è pubblicato",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Visualizza Home Page",
"admin.config.general.show-home-page.description": "Indica se mostrare la home page",
"admin.config.general.session-duration": "Durata della sessione",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "アップロード",
"navbar.signin": "サインイン",
"navbar.home": "ホーム",
"navbar.signup": "Sign up",
"navbar.signup": "新規登録",
"navbar.links.shares": "自分の共有",
"navbar.links.reverse": "ファイルリクエスト",
"navbar.avatar.account": "マイアカウント",
@@ -16,9 +16,9 @@ export default {
"home.bullet.a.name": "セルフホスト",
"home.bullet.a.description": "Pingvin Shareをあなたのマシンでホストしましょう。",
"home.bullet.b.name": "プライバシー",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
"home.bullet.b.description": "あなたのファイルはあなたのものであり、第三者がアクセスすることは決してありません。",
"home.bullet.c.name": "ファイルサイズ制限に悩まされることはありません",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "必要なだけ大きなファイルをアップロードできます。制限があるのはハードドライブのみです。",
"home.button.start": "始めましょう",
"home.button.source": "ソースコード",
// END /
@@ -58,12 +58,12 @@ export default {
// /auth/reset-password
"resetPassword.title": "パスワードを忘れてしまいましたか?",
"resetPassword.description": "登録しているメールアドレスを入力してください。",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "指定されたメールアドレスが存在する場合、パスワードをリセットするためのリンクを含むメッセージが送信されました。",
"resetPassword.button.back": "サインインページに戻る",
"resetPassword.text.resetPassword": "パスワードをリセット",
"resetPassword.text.enterNewPassword": "新規パスワードを入力",
"resetPassword.input.password": "新規パスワード",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
"resetPassword.notify.passwordReset": "パスワードが正常にリセットされました。",
// /account
"account.title": "マイアカウント",
"account.card.info.title": "アカウント情報",
@@ -73,7 +73,7 @@ export default {
"account.card.password.title": "パスワード",
"account.card.password.old": "現在のパスワード",
"account.card.password.new": "新規パスワード",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "パスワードが設定されていません。メールアドレスとパスワードを使用してサインインするには、パスワードを作成する必要があります。",
"account.notify.password.success": "パスワードの変更に成功しました",
"account.card.oauth.title": "ソーシャルログイン",
"account.card.oauth.github": "GitHub",
@@ -85,7 +85,7 @@ export default {
"account.card.oauth.unlink": "リンク解除",
"account.card.oauth.unlinked": "リンクされていません",
"account.modal.unlink.title": "アカウントのリンクを解除",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "ソーシャルアカウントのリンクを解除すると、ログイン認証情報を忘れた場合、アカウントを失う可能性があります。",
"account.notify.oauth.unlinked.success": "リンク解除に成功しました",
"account.card.security.title": "セキュリティ",
"account.card.security.totp.enable.description": "2段階認証を有効にするため、現在のパスワードを入力してください",
@@ -121,12 +121,12 @@ export default {
"account.shares.table.name": "名前",
"account.shares.table.description": "説明",
"account.shares.table.visitors": "訪問者",
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.expiresAt": "有効期限",
"account.shares.table.createdAt": "作成日",
"account.shares.table.size": "サイズ",
"account.shares.modal.share-informations": "共有情報",
"account.shares.modal.share-link": "共有リンク",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.title": "共有を削除: {share}",
"account.shares.modal.delete.description": "この共有を削除してもよろしいですか?",
// END /account/shares
// /account/reverseShares
@@ -150,12 +150,12 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "年間",
"account.reverseShares.modal.expiration.year-plural": "年間",
"account.reverseShares.modal.max-size.label": "最大ファイルサイズ",
"account.reverseShares.modal.send-email": "Send email notifications",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email": "メール通知を送信",
"account.reverseShares.modal.send-email.description": "このファイルリクエストリンクを使用して共有が作成されるとメール通知が送信されます。",
"account.reverseShares.modal.simplified": "シンプルモード",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "ファイルをアップロードした人が簡単に共有できるようにします。共有の名前と説明のみをカスタマイズできます。",
"account.reverseShares.modal.public-access": "公開アクセス",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "このファイルリクエストで作成された共有を公開します。無効にするとあなたと共有作成者だけが共有を表示できます。",
"account.reverseShares.modal.max-use.label": "最大回数",
"account.reverseShares.modal.max-use.description": "このURLを使用してファイルをアップロードできる最大回数です。",
"account.reverseShare.never-expires": "このファイルリクエストリンクは期限切れになりません。",
@@ -183,14 +183,14 @@ export default {
"admin.users.table.username": "ユーザー名",
"admin.users.table.email": "メールアドレス",
"admin.users.table.admin": "管理画面",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.title": "ユーザーの編集: {username}",
"admin.users.edit.update.admin-privileges": "管理者権限",
"admin.users.edit.update.change-password.title": "パスワードを変更",
"admin.users.edit.update.change-password.field": "新規パスワード",
"admin.users.edit.update.change-password.button": "新しいパスワードを保存",
"admin.users.edit.update.notify.password.success": "パスワードの変更に成功しました",
"admin.users.edit.delete.title": "Delete user: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.title": "ユーザーを削除: {username}",
"admin.users.edit.delete.description": "このユーザーとそのすべての共有を本当に削除しますか?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "ユーザーを作成",
"admin.users.modal.create.username": "ユーザー名",
@@ -206,17 +206,20 @@ export default {
"admin.shares.table.id": "共有ID",
"admin.shares.table.username": "作成者",
"admin.shares.table.visitors": "訪問者",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.table.expires": "有効期限",
"admin.shares.edit.delete.title": "共有を削除: {id}",
"admin.shares.edit.delete.description": "この共有を削除してもよろしいですか?",
// END /admin/shares
// /upload
"upload.title": "アップロード",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "共有を仕上げている最中にエラーが発生しました。",
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "ファイルをアップロード",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.description": "共有を開始するにはここにファイルをドラッグ&ドロップしてください。受け入れ可能なファイルの合計サイズは{maxSize}までです。",
"upload.dropzone.notify.file-too-big": "アップロードしようとしたファイルは、最大ファイルサイズの{maxSize} を超えています。",
// FileList.tsx
"upload.filelist.name": "ファイル名",
@@ -228,8 +231,8 @@ export default {
"upload.modal.not-signed-in": "サインインしていません",
"upload.modal.not-signed-in-description": "共有の手動削除と訪問者カウンターは表示できません。",
"upload.modal.expires.never": "永久",
"upload.modal.expires.never-long": "Permanent share",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
"upload.modal.expires.never-long": "永久シェア",
"upload.modal.expires.error.too-long": "有効期限が最大値{max}を超えています。",
"upload.modal.link.label": "リンク",
"upload.modal.expires.label": "有効期限",
"upload.modal.expires.minute-singular": "分間",
@@ -272,16 +275,16 @@ export default {
"share.error.access-denied.title": "プライベートシェア",
"share.error.access-denied.description": "現在のアカウントにはこの共有にアクセスする権限がありません",
"share.modal.password.title": "パスワードが必要です",
"share.modal.password.description": "Please enter the password to acces this share.",
"share.modal.password.description": "この共有にアクセスするにはパスワードを入力してください。",
"share.modal.password": "パスワード",
"share.modal.error.invalid-password": "パスワードが間違っています",
"share.button.download-all": "全てダウンロード",
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
"share.notify.download-all-preparing": "共有の準備中です。数分後にもう一度お試しください。",
"share.modal.file-link": "ファイルリンク",
"share.table.name": "ファイル名",
"share.table.size": "サイズ",
"share.modal.file-preview.error.not-supported.title": "プレビューに対応していません",
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
"share.modal.file-preview.error.not-supported.description": "このファイル形式のプレビューはサポートされていません。ファイルをダウンロードして表示してください。",
// END /share/[id]
// /share/[id]/edit
"share.edit.title": "編集 {shareId}",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "アプリの名前",
"admin.config.general.app-url": "アプリ名",
"admin.config.general.app-url.description": "Pingvin Shareで利用できるURL",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "ホームページを表示する",
"admin.config.general.show-home-page.description": "ホームページを表示するかどうか選択",
"admin.config.general.session-duration": "セッション期間",
@@ -307,24 +312,24 @@ export default {
"admin.config.general.logo": "ロゴ",
"admin.config.general.logo.description": "新しい画像をアップロードしてロゴを変更できます。画像は、PNG形式でアスペクト比が1:1である必要があります。",
"admin.config.general.logo.placeholder": "画像を選択",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.enable-share-email-recipients": "メール受信者の共有を有効にする",
"admin.config.email.enable-share-email-recipients.description": "受信者とのメール共有を許可するかどうか。SMTPが有効な場合にのみこれを有効にします。",
"admin.config.email.share-recipients-subject": "宛先への件名",
"admin.config.email.share-recipients-subject.description": "メールで共有された相手に送信メールの件名です。",
"admin.config.email.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 These variables will be replaced with the actual value.",
"admin.config.email.share-recipients-message.description": "共有受信者に送信されるメッセージ。使用可能な変数:\n {creator} - 共有の作成者のユーザー名\n {shareUrl} - 共有の URL\n {desc} - 共有の説明\n {expires} - 共有の有効期限\n これらの変数は実際の値に置き換えられます。",
"admin.config.email.reverse-share-subject": "ファイルリクエストの件名",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
"admin.config.email.reverse-share-subject.description": "誰かがあなたのファイルリクエストリンクを使用して共有を作成したときに送信されるメールの件名。",
"admin.config.email.reverse-share-message": "ファイルリクエストの本文",
"admin.config.email.reverse-share-message.description": "あなたが作成したファイルリクエストリンクからファイルがアップロードされた場合に送信されるメールの本文です。{shareUrl} は、作成者の名前とURLにより置き換えられます。",
"admin.config.email.reset-password-subject": "パスワードリセットの件名",
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
"admin.config.email.reset-password-subject.description": "ユーザーがパスワードのリセットを要求したときに送信されるメールの件名。",
"admin.config.email.reset-password-message": "パスワードリセットの本文",
"admin.config.email.reset-password-message.description": "あなたが作成したファイルリクエストリンクからファイルがアップロードされた場合に送信されるメールの本文です。{url} は、実際のパスワードリセットURLによって置き換えられます。",
"admin.config.email.invite-subject": "無効な件名",
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
"admin.config.email.invite-subject.description": "管理者がユーザーを招待するときに送信されるメールの件名。",
"admin.config.email.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, {email} with the email and {password} with the users password.",
"admin.config.email.invite-message.description": "管理者がユーザーを招待したときに送信されるメッセージ。{url}は招待URLに、{email}はメールアドレスに、{password}はユーザーのパスワードに置き換えられます。",
"admin.config.share.allow-registration": "登録を許可する",
"admin.config.share.allow-registration.description": "登録を許可するかどうかを選択してください。",
"admin.config.share.allow-unauthenticated-shares": "ログインしていない状態での共有を許可する",
@@ -336,17 +341,17 @@ export default {
"admin.config.share.zip-compression-level": "Zip圧縮レベル",
"admin.config.share.zip-compression-level.description": "ファイルサイズと圧縮速度のバランスを取るように、レベルを調整できます。有効な値は09の間で、0が無圧縮、9で最大限の圧縮となります。 ",
"admin.config.share.chunk-size": "チャンクサイズ",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.chunk-size.description": "インターネット接続に応じて、効率と信頼性のバランスをとるためにアップロードのチャンクサイズ (バイト単位) を調整します。チャンクを小さくすると、不安定な接続での成功率が向上し、チャンクを大きくすると、安定した接続でのアップロードが速くなります。",
"admin.config.share.auto-open-share-modal": "共有モーダルを自動的に開く",
"admin.config.share.auto-open-share-modal.description": "ユーザーがファイルを選択すると、共有作成モーダルが自動的に表示されるため、手動でボタンをクリックする必要がありません。",
"admin.config.smtp.enabled": "Enable",
"admin.config.smtp.enabled": "有効",
"admin.config.smtp.enabled.description": "SMTPを有効にするかどうかを選択してください。SMTPサーバーのホスト名、ポート番号、電子メールアドレス、ユーザー名、パスワードが入力されている場合にのみ、有効にしてください。",
"admin.config.smtp.host": "ホスト名",
"admin.config.smtp.host.description": "SMTPサーバーのホスト名",
"admin.config.smtp.port": "ポート番号",
"admin.config.smtp.port.description": "SMTPサーバーのポート番号",
"admin.config.smtp.email": "メールアドレス",
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
"admin.config.smtp.email.description": "メールの送信元となるメールアドレス",
"admin.config.smtp.username": "ユーザー名",
"admin.config.smtp.username.description": "SMTPサーバーのユーザー名",
"admin.config.smtp.password": "パスワード",
@@ -382,8 +387,8 @@ export default {
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuthアプリのクライアントシークレット",
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Discordアカウントを使用したログインを許可するかどうかを設定します",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-users": "Discord限定ユーザー",
"admin.config.oauth.discord-limited-users.description": "Discord IDによって特定のユーザーのサインインを制限します。無効にするには空白のままにします。",
"admin.config.oauth.discord-limited-guild": "Discord限定サーバーID",
"admin.config.oauth.discord-limited-guild.description": "特定のサーバーのユーザーにサインインを制限します。無効にするには空白のままにしてください。",
"admin.config.oauth.discord-client-id": "Discord クライアントID",
@@ -409,14 +414,14 @@ export default {
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuthアプリのクライアントシークレット",
"admin.config.category.ldap": "LDAP",
"admin.config.ldap.enabled": "Enable LDAP",
"admin.config.ldap.enabled": "LDAPを有効化",
"admin.config.ldap.enabled.description": "ユーザーログインにLDAP認証を使用する",
"admin.config.ldap.url": "サーバーURL",
"admin.config.ldap.url.description": "LDAPサーバーのURL",
"admin.config.ldap.bind-dn": "バインド DN",
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
"admin.config.ldap.bind-dn.description": "ユーザー検索を実行するために使用されるデフォルトのユーザー",
"admin.config.ldap.bind-password": "パスワードをバインド",
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
"admin.config.ldap.bind-password.description": "ユーザー検索を実行するために使用するパスワード",
"admin.config.ldap.search-base": "ユーザーベース",
"admin.config.ldap.search-base.description": "ユーザーの検索が実行されるベースの場所",
"admin.config.ldap.search-query": "ユーザークエリ",
@@ -441,10 +446,10 @@ export default {
"error.msg.no_user": "この{0} アカウントにリンクしたユーザーが存在しません。",
"error.msg.no_email": "この{0} アカウントからメールアドレスを取得出来ません。",
"error.msg.already_linked": "この{0} アカウントは、既に別のアカウントにリンクされています。",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
"error.msg.not_linked": "この{0}アカウントはまだどのアカウントにもリンクされていません。",
"error.msg.unverified_account": "この {0} アカウントは認証されていません。認証後にもう一度お試しください。",
"error.msg.user_not_allowed": "サインインできません。",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
"error.msg.cannot_get_user_info": "この{0}アカウントからユーザー情報を取得できません。",
"error.param.provider_github": "GitHub",
"error.param.provider_google": "Google",
"error.param.provider_microsoft": "Microsoft",
@@ -462,7 +467,7 @@ export default {
"common.button.generate": "生成",
"common.button.done": "完了",
"common.text.link": "リンク",
"common.text.navigate-to-link": "Visit link",
"common.text.navigate-to-link": "リンクを開く",
"common.text.or": "または",
"common.text.redirecting": "リダイレクトしています...",
"common.button.go-back": "戻る",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "업로드",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "공유를 완료하는 동안 오류가 발생했습니다.",
"upload.notify.count-failed": "{count}개의 파일을 업로드하지 못했습니다. 다시 시도하세요.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "파일 업로드",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "이 앱의 이름",
"admin.config.general.app-url": "앱 URL",
"admin.config.general.app-url.description": "Pingvin Share를 사용할 수 있는 URL",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "홈 페이지 표시",
"admin.config.general.show-home-page.description": "홈 페이지를 표시할지 여부",
"admin.config.general.session-duration": "세션 기간",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Uploaden",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Er is een fout opgetreden tijdens het voltooien van uw share.",
"upload.notify.count-failed": "{count} bestanden konden niet worden geüpload. Probeer het nogmaals.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Bestanden uploaden",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Naam van de applicatie",
"admin.config.general.app-url": "App-URL",
"admin.config.general.app-url.description": "De URL waar Pingvin Share bereikbaar is",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Toon startpagina",
"admin.config.general.show-home-page.description": "Toon of verberg de home pagina",
"admin.config.general.session-duration": "Sessieduur",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Prześlij",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Wystąpił błąd podczas zakończenia tworzenia udziału.",
"upload.notify.count-failed": "Nie udało się przesłać {count} plików. Próbuję ponownie.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Prześlij pliki",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Nazwa aplikacji",
"admin.config.general.app-url": "Adres URL aplikacji",
"admin.config.general.app-url.description": "Pod którym adresem URL Pingvin Share jest dostępny",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Pokaż stronę główną",
"admin.config.general.show-home-page.description": "Czy wyświetlać stronę główną",
"admin.config.general.session-duration": "Czas trwania sesji",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "Carregar",
"navbar.signin": "Iniciar sessão",
"navbar.home": "Início",
"navbar.signup": "Sign up",
"navbar.signup": "Cadastre-se",
"navbar.links.shares": "Meus compartilhamentos",
"navbar.links.reverse": "Compartilhamentos reversos",
"navbar.avatar.account": "Minha conta",
@@ -16,9 +16,9 @@ export default {
"home.bullet.a.name": "Auto-Hospedado",
"home.bullet.a.description": "Hospede o Pingvin Share em sua própria máquina.",
"home.bullet.b.name": "Privacidade",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
"home.bullet.b.description": "Seus arquivos são seus e nunca serão acessados por terceiros.",
"home.bullet.c.name": "Sem limite de tamanho de arquivo irritante",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "Carregue arquivos tão grandes quanto quiser. Apenas o seu disco rígido será o seu limite.",
"home.button.start": "Começar",
"home.button.source": "Código-fonte",
// END /
@@ -58,12 +58,12 @@ export default {
// /auth/reset-password
"resetPassword.title": "Esqueceu a sua senha?",
"resetPassword.description": "Insira o seu e-mail para redefinir a sua senha.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "Uma mensagem com um link para redefinir sua senha foi enviada se o e-mail fornecido existir.",
"resetPassword.button.back": "Voltar para a página inicial",
"resetPassword.text.resetPassword": "Redefinir senha",
"resetPassword.text.enterNewPassword": "Digite uma nova senha",
"resetPassword.input.password": "Nova senha",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
"resetPassword.notify.passwordReset": "A sua senha foi redefinida com sucesso.",
// /account
"account.title": "A minha conta",
"account.card.info.title": "Informação sobre a conta",
@@ -73,7 +73,7 @@ export default {
"account.card.password.title": "Senha",
"account.card.password.old": "Senha antiga",
"account.card.password.new": "Nova senha",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "Você não tem uma senha definida. Para entrar utilizando seu e-mail e senha, você precisa criar uma senha.",
"account.notify.password.success": "Senha alterada com sucesso",
"account.card.oauth.title": "Login com Redes Sociais",
"account.card.oauth.github": "GitHub",
@@ -85,7 +85,7 @@ export default {
"account.card.oauth.unlink": "Desvincular",
"account.card.oauth.unlinked": "Desvinculado",
"account.modal.unlink.title": "Desvincular conta",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "Desvincular suas redes sociais pode fazer com que você perca sua conta se não se lembrar de seu nome de usuário e senha",
"account.notify.oauth.unlinked.success": "Desvinculado com sucesso",
"account.card.security.title": "Segurança",
"account.card.security.totp.enable.description": "Digite a sua senha atual para começar a habilitar o TOTP",
@@ -121,12 +121,12 @@ export default {
"account.shares.table.name": "Nome",
"account.shares.table.description": "Descrição",
"account.shares.table.visitors": "Visitantes",
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.expiresAt": "Expira em",
"account.shares.table.createdAt": "Criada em",
"account.shares.table.size": "Tamanho",
"account.shares.modal.share-informations": "Informações do compartilhamento",
"account.shares.modal.share-link": "Link do compartilhamento",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.title": "Excluir o compartilhamento {share}",
"account.shares.modal.delete.description": "Tem certeza que deseja excluir este compartilhamento?",
// END /account/shares
// /account/reverseShares
@@ -150,12 +150,12 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "Ano",
"account.reverseShares.modal.expiration.year-plural": "Anos",
"account.reverseShares.modal.max-size.label": "Tamanho máximo do compartilhamento",
"account.reverseShares.modal.send-email": "Send email notifications",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email": "Enviar notificações por email",
"account.reverseShares.modal.send-email.description": "Enviar uma notificação por e-mail quando um compartilhamento for criado com este link reverso.",
"account.reverseShares.modal.simplified": "Modo simples",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "Facilite o upload da pessoa para compartilhar o arquivo com você. Eles serão capazes de personalizar somente o nome e a descrição do compartilhamento.",
"account.reverseShares.modal.public-access": "Acesso público",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "Faça os compartilhamentos criados com este compartilhamento reverso público. Se desativado, somente você e o criador do compartilhamento poderão visualizá-lo.",
"account.reverseShares.modal.max-use.label": "Limite de uso",
"account.reverseShares.modal.max-use.description": "A quantidade máxima de vezes que esta URL pode ser usada para criar um compartilhamento.",
"account.reverseShare.never-expires": "Este compartilhamento reverso nunca irá expirar.",
@@ -183,14 +183,14 @@ export default {
"admin.users.table.username": "Nome de usuário",
"admin.users.table.email": "E-mail",
"admin.users.table.admin": "Admin",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.title": "Editar usuário: {username}",
"admin.users.edit.update.admin-privileges": "Privilégios de administrador",
"admin.users.edit.update.change-password.title": "Alterar senha",
"admin.users.edit.update.change-password.field": "Nova senha",
"admin.users.edit.update.change-password.button": "Salvar nova senha",
"admin.users.edit.update.notify.password.success": "Senha alterada com sucesso",
"admin.users.edit.delete.title": "Delete user: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.title": "Excluir usuário {username} ?",
"admin.users.edit.delete.description": "Você realmente quer excluir este usuário e todos os seus compartilhamentos?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Criar usuário",
"admin.users.modal.create.username": "Nome de usuário",
@@ -206,17 +206,20 @@ export default {
"admin.shares.table.id": "ID do Compartilhamento",
"admin.shares.table.username": "Criador",
"admin.shares.table.visitors": "Visitantes",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.table.expires": "Expira em",
"admin.shares.edit.delete.title": "Excluir o compartilhamento {id}",
"admin.shares.edit.delete.description": "Tem certeza que deseja excluir este compartilhamento?",
// END /admin/shares
// /upload
"upload.title": "Carregar",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
"upload.notify.count-failed": "Falha ao enviar {count} arquivos. Tentando novamente.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Carregar arquivos",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Aceitamos apenas arquivos até {maxSize} no total.",
"upload.dropzone.notify.file-too-big": "Seus arquivos excedem o tamanho máximo do compartilhamento {maxSize}.",
// FileList.tsx
"upload.filelist.name": "Nome",
@@ -228,8 +231,8 @@ export default {
"upload.modal.not-signed-in": "Você não está conectado",
"upload.modal.not-signed-in-description": "Você não poderá excluir seu compartilhamento manualmente e visualizar a contagem de visitantes.",
"upload.modal.expires.never": "nunca",
"upload.modal.expires.never-long": "Permanent share",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
"upload.modal.expires.never-long": "Compartilhamento permanente",
"upload.modal.expires.error.too-long": "Data de expiração excede o máximo de {max}.",
"upload.modal.link.label": "Link",
"upload.modal.expires.label": "Expiração",
"upload.modal.expires.minute-singular": "Minuto",
@@ -272,16 +275,16 @@ export default {
"share.error.access-denied.title": "Compartilhamento privado",
"share.error.access-denied.description": "A conta atual não tem permissão para acessar este compartilhamento",
"share.modal.password.title": "Senha necessária",
"share.modal.password.description": "Please enter the password to acces this share.",
"share.modal.password.description": "Por favor, digite a senha para acessar este compartilhamento.",
"share.modal.password": "Senha",
"share.modal.error.invalid-password": "Senha inválida",
"share.button.download-all": "Transferir tudo",
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
"share.notify.download-all-preparing": "O compartilhamento está sendo preparado. Tente novamente em alguns minutos.",
"share.modal.file-link": "Link do arquivo",
"share.table.name": "Nome",
"share.table.size": "Tamanho",
"share.modal.file-preview.error.not-supported.title": "Visualização não suportada",
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
"share.modal.file-preview.error.not-supported.description": "Pré-visualizações não são suportadas para este tipo de arquivos. Por favor, baixe o arquivo para visualizá-lo.",
// END /share/[id]
// /share/[id]/edit
"share.edit.title": "Editar {shareId}",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Nome da aplicação",
"admin.config.general.app-url": "URL do Aplicativo",
"admin.config.general.app-url.description": "Em qual URL o Pingvin Share está disponível",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Mostrar a página inicial",
"admin.config.general.show-home-page.description": "Mostrar ou não a página inicial",
"admin.config.general.session-duration": "Duração de sessão",
@@ -307,24 +312,24 @@ export default {
"admin.config.general.logo": "Logo",
"admin.config.general.logo.description": "Alterar o seu logo carregando uma nova imagem. A imagem deve ser PNG e deve ter o formato 1:1.",
"admin.config.general.logo.placeholder": "Escolhe uma imagem",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.enable-share-email-recipients": "Ativar compartilhamento por email",
"admin.config.email.enable-share-email-recipients.description": "Se deseja permitir o compartilhamento por e-mail com destinatários. Só ative isto se o SMTP estiver ativado.",
"admin.config.email.share-recipients-subject": "Assunto dos destinatários do compartilhamento",
"admin.config.email.share-recipients-subject.description": "Assunto do e-mail enviado para os destinatários do compartilhamento.",
"admin.config.email.share-recipients-message": "Assunto dos destinatários do compartilhamento",
"admin.config.email.share-recipients-message.description": "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 These variables will be replaced with the actual value.",
"admin.config.email.share-recipients-message.description": "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
"admin.config.email.reverse-share-subject": "Assunto do compartilhamento reverso",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
"admin.config.email.reverse-share-subject.description": "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
"admin.config.email.reverse-share-message": "Mensagem do compartilhamento reverso",
"admin.config.email.reverse-share-message.description": "Mensagem enviada quando alguém criou um compartilhamento com o link reverso. {shareUrl} será substituído pelo nome do criador e pela URL de compartilhamento.",
"admin.config.email.reset-password-subject": "Redefinir assunto da senha",
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
"admin.config.email.reset-password-subject.description": "Assunto do e-mail enviado quando um usuário solicita uma redefinição de senha.",
"admin.config.email.reset-password-message": "Mensagem de redefinição de senha",
"admin.config.email.reset-password-message.description": "Mensagem enviada quando um usuário solicita uma redefinição de senha. {url} será substituído pela URL de redefinição de senha.",
"admin.config.email.invite-subject": "Assunto do convite",
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
"admin.config.email.invite-subject.description": "Assunto do e-mail enviado quando um administrador convida um usuário.",
"admin.config.email.invite-message": "Mensagem de convite",
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
"admin.config.email.invite-message.description": "Mensagem que é enviada quando um administrador convida um usuário. {url} será substituído pelo URL de convite, {email} com o e-mail e {password} com a senha do usuário.",
"admin.config.share.allow-registration": "Permitir novos registos",
"admin.config.share.allow-registration.description": "Se o registro é permitido",
"admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
@@ -336,17 +341,17 @@ export default {
"admin.config.share.zip-compression-level": "Nível de compressão",
"admin.config.share.zip-compression-level.description": "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ",
"admin.config.share.chunk-size": "Tamanho do pedaço",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.chunk-size.description": "Ajuste o tamanho do pedaço (em bytes) para seus uploads equilibrarem eficiência e confiabilidade de acordo com sua conexão com a internet. Pedaços menores podem aumentar as taxas de sucesso para conexões instáveis, enquanto partes maiores aceleram uploads para conexões estáveis.",
"admin.config.share.auto-open-share-modal": "Abertura automática do modal de criação de compartilhamento",
"admin.config.share.auto-open-share-modal.description": "O modal de criação de compartilhamento aparece automaticamente quando um usuário seleciona arquivos, eliminando a necessidade de clicar manualmente no botão.",
"admin.config.smtp.enabled": "Enable",
"admin.config.smtp.enabled": "Habilitar",
"admin.config.smtp.enabled.description": "Se o SMTP está habilitado. Apenas defina como verdadeiro se você digitou o servidor, porta, e-mail, usuário e senha do seu servidor SMTP.",
"admin.config.smtp.host": "Servidor",
"admin.config.smtp.host.description": "Nome do Servidor SMTP",
"admin.config.smtp.port": "Porta",
"admin.config.smtp.port.description": "Porta do Servidor SMTP",
"admin.config.smtp.email": "E-mail",
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
"admin.config.smtp.email.description": "Endereço de e-mail do qual os e-mails são enviados",
"admin.config.smtp.username": "Nome de usuário",
"admin.config.smtp.username.description": "Nome de usuário do servidor SMTP",
"admin.config.smtp.password": "Senha",
@@ -382,8 +387,8 @@ export default {
"admin.config.oauth.microsoft-client-secret.description": "Client secret do aplicativo Microsoft OAuth",
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Se o login do Discord está habilitado",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-users": "Usuários limitados do Discord",
"admin.config.oauth.discord-limited-users.description": "Limite de login em usuários específicos por sua ID do Discord. Deixe em branco para desativar.",
"admin.config.oauth.discord-limited-guild": "ID do servidor limitado do Discord",
"admin.config.oauth.discord-limited-guild.description": "Limite de login para usuários em um servidor específico. Deixe em branco para desativar.",
"admin.config.oauth.discord-client-id": "ID do Cliente Discord",
@@ -409,14 +414,14 @@ export default {
"admin.config.oauth.oidc-client-secret": "Segredo do cliente OpenID Connect",
"admin.config.oauth.oidc-client-secret.description": "ID do cliente do aplicativo OpenID OAuth",
"admin.config.category.ldap": "LDAP",
"admin.config.ldap.enabled": "Enable LDAP",
"admin.config.ldap.enabled": "Habilitar LDAP",
"admin.config.ldap.enabled.description": "Usar autenticação LDAP para login de usuário",
"admin.config.ldap.url": "URL do Servidor",
"admin.config.ldap.url.description": "URL do Servidor LDAP",
"admin.config.ldap.bind-dn": "Bind DN",
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
"admin.config.ldap.bind-dn.description": "Usuário padrão usado para realizar a pesquisa de usuário",
"admin.config.ldap.bind-password": "Bind Password",
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
"admin.config.ldap.bind-password.description": "Senha usada para realizar a busca de usuários",
"admin.config.ldap.search-base": "Base de Usuários",
"admin.config.ldap.search-base.description": "Localização base, onde a pesquisa do usuário será realizada",
"admin.config.ldap.search-query": "Consulta de usuário",
@@ -441,10 +446,10 @@ export default {
"error.msg.no_user": "O usuário vinculado a esta conta {0} não existe.",
"error.msg.no_email": "Não é possível obter o endereço de e-mail desta conta {0}.",
"error.msg.already_linked": "Esta conta {0} já está vinculada a outra conta.",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
"error.msg.not_linked": "Esta conta {0} ainda não foi vinculada a nenhuma conta.",
"error.msg.unverified_account": "Esta conta {0} não foi verificada, tente novamente após a verificação.",
"error.msg.user_not_allowed": "Você não tem permissão para acessar.",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
"error.msg.cannot_get_user_info": "Não é possível obter suas informações de usuário desta conta {0}.",
"error.param.provider_github": "GitHub",
"error.param.provider_google": "Google",
"error.param.provider_microsoft": "Microsoft",
@@ -462,7 +467,7 @@ export default {
"common.button.generate": "Gerar",
"common.button.done": "Concluído",
"common.text.link": "Link",
"common.text.navigate-to-link": "Visit link",
"common.text.navigate-to-link": "Visitar Link",
"common.text.or": "ou",
"common.text.redirecting": "Redirecionando...",
"common.button.go-back": "Voltar",

View File

@@ -34,7 +34,7 @@ export default {
"signIn.notify.totp-required.title": "Требуется двухфакторная аутентификация",
"signIn.notify.totp-required.description": "Пожалуйста, введите код Вашей 2-х факторной аутентификации",
"signIn.oauth.or": "ИЛИ",
"signIn.oauth.signInWith": "Sign in with",
"signIn.oauth.signInWith": "Войдите с помощью",
"signIn.oauth.github": "GitHub",
"signIn.oauth.google": "Google",
"signIn.oauth.microsoft": "Microsoft",
@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Загрузить",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.",
"upload.notify.count-failed": "Не удалось загрузить файлы {count}. Повтор попытки.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Загрузить файлы",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Видимое название приложения",
"admin.config.general.app-url": "URL-адрес приложения",
"admin.config.general.app-url.description": "Адрес на котором доступен Pingvin Share",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Показывать домашнюю страницу",
"admin.config.general.show-home-page.description": "Показывать ли домашнюю страницу или нет",
"admin.config.general.session-duration": "Session Duration",
@@ -462,9 +467,9 @@ export default {
"common.button.generate": "Сгенерировать",
"common.button.done": "Готово",
"common.text.link": "Ссылка",
"common.text.navigate-to-link": "Visit link",
"common.text.navigate-to-link": "Перейти по ссылке",
"common.text.or": "или",
"common.text.redirecting": "Redirecting...",
"common.text.redirecting": "Идет перенаправление...",
"common.button.go-back": "Назад",
"common.button.go-home": "Домой",
"common.notify.copied": "Ваша ссылка скопирована в буфер обмена",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Naložite",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Prišlo je do napake pri ustvarjanju vašega deljenja.",
"upload.notify.count-failed": "Prišlo je do napake pri nalaganju toliko datotek: {count}. Poskušamo ponovno.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Naloži datoteke",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Ime vaše aplikacije",
"admin.config.general.app-url": "URL aplikacije",
"admin.config.general.app-url.description": "Na katerem URL-ju je dostopen Pingvin Share",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Prikaži domačo stran",
"admin.config.general.show-home-page.description": "Ali prikazati domačo stran",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -4,33 +4,24 @@ export default {
"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 <h>self-hosted</h> file sharing platform.",
"home.description":
"Do you really want to give your personal files in the hand of third parties like WeTransfer?",
"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 yours and will never be accessed by third parties.",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
"home.bullet.c.name": "No annoying file size limit",
"home.bullet.c.description":
"Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "Upload files as big 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?",
@@ -41,8 +32,7 @@ export default {
"signin.input.password.placeholder": "Your password",
"signin.button.submit": "Sign in",
"signIn.notify.totp-required.title": "Two-factor authentication required",
"signIn.notify.totp-required.description":
"Please enter your two-factor authentication code",
"signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
"signIn.oauth.or": "OR",
"signIn.oauth.signInWith": "Sign in with",
"signIn.oauth.github": "GitHub",
@@ -50,9 +40,7 @@ export default {
"signIn.oauth.microsoft": "Microsoft",
"signIn.oauth.discord": "Discord",
"signIn.oauth.oidc": "OpenID",
// END /auth/signin
// /auth/signup
"signup.title": "Create an account",
"signup.description": "Already have an account?",
@@ -62,42 +50,31 @@ export default {
"signup.input.email": "Email",
"signup.input.email.placeholder": "Your email",
"signup.button.submit": "Let's get started",
// END /auth/signup
// /auth/totp
"totp.title": "TOTP Authentication",
"totp.button.signIn": "Sign in",
// END /auth/totp
// /auth/reset-password
"resetPassword.title": "Forgot your password?",
"resetPassword.description": "Enter your email to reset your password.",
"resetPassword.notify.success":
"A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"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 successfully reset.",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
// /account
"account.title": "My account",
"account.card.info.title": "Account info",
"account.card.info.username": "Username",
"account.card.info.email": "Email",
"account.notify.info.success": "Account updated successfully",
"account.card.password.title": "Password",
"account.card.password.old": "Old password",
"account.card.password.new": "New password",
"account.card.password.noPasswordSet":
"You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.notify.password.success": "Password changed successfully",
"account.card.oauth.title": "Social login",
"account.card.oauth.github": "GitHub",
"account.card.oauth.google": "Google",
@@ -108,15 +85,11 @@ export default {
"account.card.oauth.unlink": "Unlink",
"account.card.oauth.unlinked": "Unlinked",
"account.modal.unlink.title": "Unlink account",
"account.modal.unlink.description":
"Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.notify.oauth.unlinked.success": "Unlinked successfully",
"account.card.security.title": "Security",
"account.card.security.totp.enable.description":
"Enter your current password to start enabling TOTP",
"account.card.security.totp.disable.description":
"Enter your current password to disable TOTP",
"account.card.security.totp.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",
@@ -127,29 +100,22 @@ export default {
"account.modal.totp.verify": "Verify",
"account.notify.totp.disable": "TOTP disabled successfully",
"account.notify.totp.enable": "TOTP enabled successfully",
"account.card.language.title": "Language",
"account.card.language.description":
"The project is translated by the community. Some languages might be incomplete.",
"account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
"account.card.color.title": "Color scheme",
// ThemeSwitcher.tsx
"account.theme.dark": "Dark",
"account.theme.light": "Light",
"account.theme.system": "System",
"account.button.delete": "Delete Account",
"account.modal.delete.title": "Delete Account",
"account.modal.delete.description":
"Do you really want to delete your account including all your active shares?",
"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",
@@ -158,25 +124,16 @@ export default {
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Size",
"account.shares.modal.share-informations": "Share informations",
"account.shares.modal.share-link": "Share link",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.description":
"Do you really want to delete this share?",
"account.shares.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.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
"account.reverseShares.title.empty": "It's empty here 👀",
"account.reverseShares.description.empty":
"You don't have any reverse shares.",
"account.reverseShares.description.empty": "You don't have any reverse shares.",
// showCreateReverseShareModal.tsx
"account.reverseShares.modal.title": "Create reverse share",
"account.reverseShares.modal.expiration.label": "Expiration",
@@ -192,28 +149,17 @@ export default {
"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 notifications",
"account.reverseShares.modal.send-email.description":
"Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.simplified": "Simple mode",
"account.reverseShares.modal.simplified.description":
"Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.public-access": "Public access",
"account.reverseShares.modal.public-access.description":
"Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"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.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.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",
@@ -221,15 +167,10 @@ export default {
"account.reverseShares.table.remaining": "Remaining uses",
"account.reverseShares.table.max-size": "Max share size",
"account.reverseShares.table.expires": "Expires at",
"account.reverseShares.modal.reverse-share-link": "Reverse share link",
"account.reverseShares.modal.delete.title": "Delete reverse share",
"account.reverseShares.modal.delete.description":
"Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
"account.reverseShares.modal.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",
@@ -237,84 +178,61 @@ export default {
"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": "Edit 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.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 their shares?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their 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.manual-password.description": "If not checked, the user will receive an email with a link to set their password.",
"admin.users.modal.create.admin": "Admin privileges",
"admin.users.modal.create.admin.description":
"If checked, the user will be able to access the admin panel.",
"admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
// END /admin/users
// /admin/shares
"admin.shares.title": "Share management",
"admin.shares.table.id": "Share ID",
"admin.shares.table.username": "Creator",
"admin.shares.table.visitors": "Visitors",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.edit.delete.description":
"Do you really want to delete this share?",
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
// END /admin/shares
// /upload
"upload.title": "Upload",
"upload.notify.generic-error":
"An error occurred while finishing your share.",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "An error occurred while finishing your share.",
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Upload files",
"upload.dropzone.description":
"Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.notify.file-too-big":
"Your files exceed the maximum share size of {maxSize}.",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {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.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.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": "Permanent share",
"upload.modal.expires.error.too-long":
"Expiration date exceeds the maximum of {max}.",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
"upload.modal.link.label": "Link",
"upload.modal.expires.label": "Expiration",
"upload.modal.expires.minute-singular": "Minute",
@@ -329,74 +247,51 @@ export default {
"upload.modal.expires.month-plural": "Months",
"upload.modal.expires.year-singular": "Year",
"upload.modal.expires.year-plural": "Years",
"upload.modal.accordion.name-and-description.title": "Name and description",
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
"upload.modal.accordion.name-and-description.description.placeholder":
"Note for the recipients of this share",
"upload.modal.accordion.name-and-description.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.expires-on": "This share will expire on {expiration}.",
"upload.modal.completed.share-ready": "Share ready",
"upload.modal.completed.notified-reverse-share-creator":
"We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
// 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.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.error.not-found.description": "The share you're looking for doesn't exist.",
"share.error.access-denied.title": "Private share",
"share.error.access-denied.description":
"The current account does not have permission to access this share",
"share.error.access-denied.description": "The current account does not have permission to access this share",
"share.modal.password.title": "Password required",
"share.modal.password.description":
"Please enter the password to acces this share.",
"share.modal.password.description": "Please enter the password to acces this 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 being prepared. Please try again in a few minutes.",
"share.notify.download-all-preparing": "The share is being prepared. Please 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":
"Previews are not supported for this type of files. Please download the file to view it.",
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
// END /share/[id]
// /share/[id]/edit
"share.edit.title": "Edit {shareId}",
"share.edit.append-upload": "Append file",
"share.edit.notify.generic-error":
"An error occurred while finishing your share.",
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Share updated successfully",
// END /share/[id]/edit
// /admin/config
"admin.config.title": "Configuration",
"admin.config.category.general": "General",
@@ -404,241 +299,162 @@ export default {
"admin.config.category.email": "Email",
"admin.config.category.smtp": "SMTP",
"admin.config.category.oauth": "Social Login",
"admin.config.general.app-name": "App name",
"admin.config.general.app-name.description": "Name of the application",
"admin.config.general.app-url": "App URL",
"admin.config.general.app-url.description":
"On which URL Pingvin Share is available",
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"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.show-home-page.description": "Whether to show the home page",
"admin.config.general.session-duration": "Session Duration",
"admin.config.general.session-duration.description":
"Time in hours after which a user must log in again (default: 3 months).",
"admin.config.general.session-duration.description": "Time in hours after which a user must log in again (default: 3 months).",
"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.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 email recipient sharing",
"admin.config.email.enable-share-email-recipients.description":
"Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"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-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 These variables will be replaced with the actual value.",
"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 These 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 sent email when someone created a share with your reverse share link.",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email 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.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 sent email when a user requests a password reset.",
"admin.config.email.reset-password-subject.description": "Subject of the sent email 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.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 sent email when an admin invites a user.",
"admin.config.email.invite-subject.description": "Subject of the sent email 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, {email} with the email and {password} with the users password.",
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users 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.allow-registration.description": "Whether registration is allowed",
"admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
"admin.config.share.max-expiration": "Max expiration",
"admin.config.share.max-expiration.description":
"Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
"admin.config.share.max-expiration.description": "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
"admin.config.share.max-size": "Max size",
"admin.config.share.max-size.description": "Maximum share size in bytes",
"admin.config.share.zip-compression-level": "Zip compression level",
"admin.config.share.zip-compression-level.description":
"Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
"admin.config.share.chunk-size": "Chunk size",
"admin.config.share.chunk-size.description":
"Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description":
"The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable",
"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.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 from wich the emails get sent",
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
"admin.config.smtp.username": "Username",
"admin.config.smtp.username.description": "Username of the SMTP server",
"admin.config.smtp.password": "Password",
"admin.config.smtp.password.description": "Password of the SMTP server",
"admin.config.smtp.button.test": "Send test email",
"admin.config.smtp.allow-unauthorized-certificates":
"Trust unauthorized SMTP server certificates",
"admin.config.smtp.allow-unauthorized-certificates.description":
"Only set this to true if you need to trust self signed certificates.",
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
"admin.config.smtp.allow-unauthorized-certificates.description": "Only set this to true if you need to trust self signed certificates.",
"admin.config.oauth.allow-registration": "Allow registration",
"admin.config.oauth.allow-registration.description":
"Allow users to register via social login",
"admin.config.oauth.allow-registration.description": "Allow users to register via social login",
"admin.config.oauth.ignore-totp": "Ignore TOTP",
"admin.config.oauth.ignore-totp.description":
"Whether to ignore TOTP when user using social login",
"admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login",
"admin.config.oauth.disable-password": "Disable password login",
"admin.config.oauth.disable-password.description":
"Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
"admin.config.oauth.disable-password.description": "Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
"admin.config.oauth.github-enabled": "GitHub",
"admin.config.oauth.github-enabled.description":
"Whether GitHub login is enabled",
"admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled",
"admin.config.oauth.github-client-id": "GitHub Client ID",
"admin.config.oauth.github-client-id.description":
"Client ID of the GitHub OAuth app",
"admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app",
"admin.config.oauth.github-client-secret": "GitHub Client secret",
"admin.config.oauth.github-client-secret.description":
"Client secret of the GitHub OAuth app",
"admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app",
"admin.config.oauth.google-enabled": "Google",
"admin.config.oauth.google-enabled.description":
"Whether Google login is enabled",
"admin.config.oauth.google-enabled.description": "Whether Google login is enabled",
"admin.config.oauth.google-client-id": "Google Client ID",
"admin.config.oauth.google-client-id.description":
"Client ID of the Google OAuth app",
"admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app",
"admin.config.oauth.google-client-secret": "Google Client secret",
"admin.config.oauth.google-client-secret.description":
"Client secret of the Google OAuth app",
"admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app",
"admin.config.oauth.microsoft-enabled": "Microsoft",
"admin.config.oauth.microsoft-enabled.description":
"Whether Microsoft login is enabled",
"admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled",
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
"admin.config.oauth.microsoft-tenant.description":
"Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
"admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
"admin.config.oauth.microsoft-client-id.description":
"Client ID of the Microsoft OAuth app",
"admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app",
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
"admin.config.oauth.microsoft-client-secret.description":
"Client secret of the Microsoft OAuth app",
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
"admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description":
"Whether Discord login is enabled",
"admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled",
"admin.config.oauth.discord-limited-users": "Discord limited users",
"admin.config.oauth.discord-limited-users.description":
"Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
"admin.config.oauth.discord-limited-guild.description":
"Limit signing in to users in a specific server. Leave it blank to disable.",
"admin.config.oauth.discord-limited-guild.description": "Limit signing in to users in a specific server. Leave it blank to disable.",
"admin.config.oauth.discord-client-id": "Discord Client ID",
"admin.config.oauth.discord-client-id.description":
"Client ID of the Discord OAuth app",
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
"admin.config.oauth.discord-client-secret": "Discord Client secret",
"admin.config.oauth.discord-client-secret.description":
"Client secret of the Discord OAuth app",
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
"admin.config.oauth.oidc-enabled": "OpenID Connect",
"admin.config.oauth.oidc-enabled.description":
"Whether OpenID Connect login is enabled",
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
"admin.config.oauth.oidc-discovery-uri.description":
"Discovery URI of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
"admin.config.oauth.oidc-sign-out.description":
"Whether the “Sign out” button will sign out from the OpenID Connect provider",
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
"admin.config.oauth.oidc-username-claim.description":
"Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
"admin.config.oauth.oidc-role-path.description":
"Must be a valid JMES path referencing an array of roles. " +
"Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " +
"Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-general-access":
"OpenID Connect role for general access",
"admin.config.oauth.oidc-role-general-access.description":
"Role required for general access. Must be present in a users roles for them to log in. " +
"Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-admin-access":
"OpenID Connect role for admin access",
"admin.config.oauth.oidc-role-admin-access.description":
"Role required for administrative access. Must be present in a users roles for them to access the admin panel. " +
"Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-path.description": "Must be a valid JMES path referencing an array of roles. " + "Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " + "Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a users roles for them to log in. " + "Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a users roles for them to access the admin panel. " + "Leave it blank if you don't know what this config is.",
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
"admin.config.oauth.oidc-client-id.description":
"Client ID of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
"admin.config.oauth.oidc-client-secret.description":
"Client secret of the OpenID Connect OAuth app",
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
"admin.config.category.ldap": "LDAP",
"admin.config.ldap.enabled": "Enable LDAP",
"admin.config.ldap.enabled.description":
"Use LDAP authentication for user login",
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
"admin.config.ldap.url": "Server URL",
"admin.config.ldap.url.description": "URL of the LDAP server",
"admin.config.ldap.bind-dn": "Bind DN",
"admin.config.ldap.bind-dn.description":
"Default user used to perform the user search",
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
"admin.config.ldap.bind-password": "Bind password",
"admin.config.ldap.bind-password.description":
"Password used to perform the user search",
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
"admin.config.ldap.search-base": "User base",
"admin.config.ldap.search-base.description":
"Base location, where the user search will be performed",
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
"admin.config.ldap.search-query": "User query",
"admin.config.ldap.search-query.description":
"The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
"admin.config.ldap.admin-groups": "Admin group",
"admin.config.ldap.admin-groups.description":
"Group required for administrative access.",
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
"admin.config.ldap.field-name-member-of": "User groups attribute name",
"admin.config.ldap.field-name-member-of.description":
"LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
"admin.config.ldap.field-name-email": "User email attribute name",
"admin.config.ldap.field-name-email.description":
"LDAP attribute name for the email of an user.",
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
// 404
"404.description": "Oops this page doesn't exist.",
"404.button.home": "Bring me back home",
// error
"error.title": "Error",
"error.description": "Oops!",
"error.button.back": "Go back",
"error.msg.default": "Something went wrong.",
"error.msg.access_denied":
"You canceled the authentication process, please try again.",
"error.msg.expired_token":
"The authentication process took too long, please try again.",
"error.msg.access_denied": "You canceled the authentication process, please try again.",
"error.msg.expired_token": "The authentication process took too long, please try again.",
"error.msg.invalid_token": "Internal Error",
"error.msg.no_user": "User linked to this {0} account doesn't exist.",
"error.msg.no_email": "Can't get email address from this {0} account.",
"error.msg.already_linked":
"This {0} account is already linked to another account.",
"error.msg.not_linked":
"This {0} account hasn't been linked to any account yet.",
"error.msg.unverified_account":
"This {0} account is unverified, please try again after verification.",
"error.msg.already_linked": "This {0} account is already linked to another account.",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
"error.msg.unverified_account": "This {0} account is unverified, please try again after verification.",
"error.msg.user_not_allowed": "You are not allowed to sign in.",
"error.msg.cannot_get_user_info":
"Cannot get your user info from this {0} account.",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
"error.param.provider_github": "GitHub",
"error.param.provider_google": "Google",
"error.param.provider_microsoft": "Microsoft",
"error.param.provider_discord": "Discord",
"error.param.provider_oidc": "OpenID Connect",
// Common translations
"common.button.save": "Save",
"common.button.create": "Create",
@@ -658,7 +474,6 @@ export default {
"common.button.go-home": "Go home",
"common.notify.copied": "Your link was copied to the clipboard",
"common.success": "Success",
"common.error": "Error",
"common.error.unknown": "An unknown error occurred",
"common.error.invalid-email": "Invalid email address",
@@ -668,5 +483,5 @@ export default {
"common.error.number-too-large": "Must be at most {max}",
"common.error.exact-length": "Must be exactly {length} characters",
"common.error.invalid-number": "Must be a number",
"common.error.field-required": "This field is required",
};
"common.error.field-required": "This field is required"
};

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "Пошаљи",
"navbar.signin": "Пријавите се",
"navbar.home": "Почетна",
"navbar.signup": "Sign up",
"navbar.signup": "Региструј се",
"navbar.links.shares": "Moja дељења",
"navbar.links.reverse": "Обрнуто дељење",
"navbar.avatar.account": "Мој налог",
@@ -11,14 +11,14 @@ export default {
"navbar.avatar.signout": "Одјави се",
// END navbar
// /
"home.title": "<h>self-hosted</h> платформа за дељење фајлова.",
"home.description": "Да ли заиста желите да дате своје личне датотеке у руке трећих страна као што је WeTransfer?",
"home.title": "<h>Само-хостована</h> платформа за дељење фајлова.",
"home.description": "Да ли заиста желите да дате своје личне фајлове у руке трећих страна као што је WeTransfer?",
"home.bullet.a.name": "Личан хостинг",
"home.bullet.a.description": "Хостујте Pingvin Share на својој машини.",
"home.bullet.b.name": "Privatnost",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
"home.bullet.b.description": "Ваши фајлови су ваши и никада неће бити доступни трећим странама.",
"home.bullet.c.name": "Нема досадног ограничења величине датотеке",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
"home.bullet.c.description": "Отпремите онолико великих датотека колико желите. Само ваш чврсти диск је ваша граница.",
"home.button.start": "Почети",
"home.button.source": "Изворни код",
// END /
@@ -58,12 +58,12 @@ export default {
// /auth/reset-password
"resetPassword.title": "Заборавили сте лозинку?",
"resetPassword.description": "Унесите своју е-пошту да бисте ресетовали лозинку.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.notify.success": "Порука са линком за ресетовање лозинке је послата ако унета имејл адреса постоји.",
"resetPassword.button.back": "Назад на страницу за пријаву",
"resetPassword.text.resetPassword": "Обнови лозинку",
"resetPassword.text.enterNewPassword": "Унесите вашу нову лозинку",
"resetPassword.input.password": "Нова лозинка",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
"resetPassword.notify.passwordReset": "Ваша лозинка је успешно ресетована.",
// /account
"account.title": "Мој налог",
"account.card.info.title": "Подаци о налогу",
@@ -73,7 +73,7 @@ export default {
"account.card.password.title": "Лозинка",
"account.card.password.old": "Стара лозинка",
"account.card.password.new": "Нова лозинка",
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
"account.card.password.noPasswordSet": "Немате постављену лозинку. Да бисте се пријавили користећи имејл и лозинку, потребно је да направите лозинку.",
"account.notify.password.success": "Лозинка је успешно промењена",
"account.card.oauth.title": "Социал логин",
"account.card.oauth.github": "GitHub",
@@ -85,7 +85,7 @@ export default {
"account.card.oauth.unlink": "Прекини везу",
"account.card.oauth.unlinked": "Веза је прекинута",
"account.modal.unlink.title": "Прекини везу са налогом",
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
"account.modal.unlink.description": "Уклањање везе са вашим друштвеним налозима може довести до губитка вашег налога ако се не сећате својих приступних података",
"account.notify.oauth.unlinked.success": "Веза је прекинута",
"account.card.security.title": "Безбедност",
"account.card.security.totp.enable.description": "Унесите своју тренутну лозинку да бисте почели да омогућавате ТОТП",
@@ -121,12 +121,12 @@ export default {
"account.shares.table.name": "Назив",
"account.shares.table.description": "Опис",
"account.shares.table.visitors": "Посетици",
"account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on",
"account.shares.table.expiresAt": "Истиче",
"account.shares.table.createdAt": "Направљено",
"account.shares.table.size": "Величина",
"account.shares.modal.share-informations": "Делите информације",
"account.shares.modal.share-link": "Дели везу",
"account.shares.modal.delete.title": "Delete share: {share}",
"account.shares.modal.delete.title": "Избриши дељење {share}",
"account.shares.modal.delete.description": "Да ли заиста желите да избришете ово дељење?",
// END /account/shares
// /account/reverseShares
@@ -150,12 +150,12 @@ export default {
"account.reverseShares.modal.expiration.year-singular": "Година",
"account.reverseShares.modal.expiration.year-plural": "Године",
"account.reverseShares.modal.max-size.label": "Максимална величина дељења",
"account.reverseShares.modal.send-email": "Send email notifications",
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
"account.reverseShares.modal.send-email": "Пошаљи обавештења е-поштом",
"account.reverseShares.modal.send-email.description": "Пошаљи обавештење е-поштом када се креира дељење помоћу ове обрнуте везе за дељење.",
"account.reverseShares.modal.simplified": "Једноставан режим",
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
"account.reverseShares.modal.simplified.description": "Олакшајте особи која отпрема фајл да га подели са вама. Они ће моћи да прилагоде само име и опис дељења.",
"account.reverseShares.modal.public-access": "Јавни приступ",
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
"account.reverseShares.modal.public-access.description": "Учини да дељења креирана овим реверзним линком за дељење буду јавна. Ако је онемогућено, само ви и креатор дељења ћете имати приступ за преглед.",
"account.reverseShares.modal.max-use.label": "Максималан број коришћења",
"account.reverseShares.modal.max-use.description": "Максималан број пута који овај URL може да се користи за прављење дељења.",
"account.reverseShare.never-expires": "Ово обрнуто дељење никада неће истећи.",
@@ -183,14 +183,14 @@ export default {
"admin.users.table.username": "Корисничко име",
"admin.users.table.email": "E-пошта",
"admin.users.table.admin": "Админ",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.title": "Уредите корисника: {username}",
"admin.users.edit.update.admin-privileges": "Администраторске привилегије",
"admin.users.edit.update.change-password.title": "Промените лозинку",
"admin.users.edit.update.change-password.field": "Нова лозинка",
"admin.users.edit.update.change-password.button": "Снимите нову лозинку",
"admin.users.edit.update.notify.password.success": "Лозинка је успешно промењена",
"admin.users.edit.delete.title": "Delete user: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
"admin.users.edit.delete.title": "Обришите корисника: {username} ?",
"admin.users.edit.delete.description": "Да ли заиста желите да обришете овог корисника и сва његова дељења?",
// showCreateUserModal.tsx
"admin.users.modal.create.title": "Креирај корисника",
"admin.users.modal.create.username": "Корисничко име",
@@ -202,21 +202,24 @@ export default {
"admin.users.modal.create.admin.description": "Ако је означено, корисник ће моћи да приступи административном панелу.",
// END /admin/users
// /admin/shares
"admin.shares.title": "Share management",
"admin.shares.table.id": "Share ID",
"admin.shares.table.username": "Creator",
"admin.shares.table.visitors": "Visitors",
"admin.shares.table.expires": "Expires on",
"admin.shares.edit.delete.title": "Delete share: {id}",
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
"admin.shares.title": "Управљање дељењем",
"admin.shares.table.id": "ID дељења",
"admin.shares.table.username": "Креатор",
"admin.shares.table.visitors": "Посетиоци",
"admin.shares.table.expires": "Истиче",
"admin.shares.edit.delete.title": "Обриши дељење: {id}",
"admin.shares.edit.delete.description": "Да ли заиста желите да обришете ово дељење?",
// END /admin/shares
// /upload
"upload.title": "Пошаљи",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Дошло је до грешке при довршавању дељења.",
"upload.notify.count-failed": "Отпремање {count} датотека није успело. Покушавам поново.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Пошаљи датотеке",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
"upload.dropzone.description": "Превуците и отпустите фајлове овде да бисте започели дељење. Прихватамо само фајлове укупне величине до {maxSize}.",
"upload.dropzone.notify.file-too-big": "Ваше датотеке премашују максималну величину дељења од {maxSize}.",
// FileList.tsx
"upload.filelist.name": "Назив",
@@ -228,8 +231,8 @@ export default {
"upload.modal.not-signed-in": "Нисте пријављени",
"upload.modal.not-signed-in-description": "Нећете моћи ручно да избришете своје дељење и видите број посетилаца.",
"upload.modal.expires.never": "никад",
"upload.modal.expires.never-long": "Permanent share",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
"upload.modal.expires.never-long": "Трајно дељење",
"upload.modal.expires.error.too-long": "Датум истека превазилази максималну вредност од {max}.",
"upload.modal.link.label": "Линк",
"upload.modal.expires.label": "Истиче",
"upload.modal.expires.minute-singular": "Минут",
@@ -244,9 +247,9 @@ export default {
"upload.modal.expires.month-plural": "Месеци",
"upload.modal.expires.year-singular": "Година",
"upload.modal.expires.year-plural": "Године",
"upload.modal.accordion.name-and-description.title": "Name and description",
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
"upload.modal.accordion.name-and-description.title": "Име и опис",
"upload.modal.accordion.name-and-description.name.placeholder": "Име",
"upload.modal.accordion.name-and-description.description.placeholder": "Напомена за примаоце овог дељења",
"upload.modal.accordion.email.title": "Примаоци е-поште",
"upload.modal.accordion.email.placeholder": "Унесите примаоце е-поште",
"upload.modal.accordion.email.invalid-email": "Неисправна адреса е-поште",
@@ -259,7 +262,7 @@ export default {
"upload.modal.completed.never-expires": "Ово дељење никада неће истећи.",
"upload.modal.completed.expires-on": "Ово дељење ће истећи {expiration}.",
"upload.modal.completed.share-ready": "Дељење је спремно",
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
"upload.modal.completed.notified-reverse-share-creator": "Обавестили смо креатора реверзног дељења. Такође можете ручно поделити овај линк са њима на друге начине.",
// END /upload
// /share/[id]
"share.title": "Дељење {shareId}",
@@ -269,25 +272,25 @@ export default {
"share.error.removed.title": "Дељење је уклоњено",
"share.error.not-found.title": "Дељење није пронађено",
"share.error.not-found.description": "Удео који тражите не постоји.",
"share.error.access-denied.title": "Private share",
"share.error.access-denied.description": "The current account does not have permission to access this share",
"share.error.access-denied.title": "Приватно дељење",
"share.error.access-denied.description": "Тренутни налог нема дозволу за приступ овом дељењу",
"share.modal.password.title": "Обавезна лозинка",
"share.modal.password.description": "Please enter the password to acces this share.",
"share.modal.password.description": "Молимо унесите лозинку за приступ овом дељењу.",
"share.modal.password": "Лозинка",
"share.modal.error.invalid-password": "Неисправна лозинка",
"share.button.download-all": "Преузми све",
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
"share.notify.download-all-preparing": "Дељење се припрема. Молимо покушајте поново за неколико минута.",
"share.modal.file-link": "Веза датотеке",
"share.table.name": "Назив",
"share.table.size": "Величина",
"share.modal.file-preview.error.not-supported.title": "Преглед није подржан",
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
"share.modal.file-preview.error.not-supported.description": "Прегледи нису подржани за овај тип фајлова. Молимо преузмите фајл да бисте га прегледали.",
// END /share/[id]
// /share/[id]/edit
"share.edit.title": "Edit {shareId}",
"share.edit.append-upload": "Append file",
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Share updated successfully",
"share.edit.title": "Уреди {shareId}",
"share.edit.append-upload": "Надодај фајл",
"share.edit.notify.generic-error": "Дошло је до грешке приликом завршетка вашег дељења.",
"share.edit.notify.save-success": "Дељење је успешно ажурирано",
// END /share/[id]/edit
// /admin/config
"admin.config.title": "Конфигурација",
@@ -300,31 +303,33 @@ export default {
"admin.config.general.app-name.description": "Назив апликације",
"admin.config.general.app-url": "URL апликације",
"admin.config.general.app-url.description": "На којој URL адреси је доступан Pingvin Share",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Прикажи почетну страницу",
"admin.config.general.show-home-page.description": "Да ли да се прикаже почетна страница",
"admin.config.general.session-duration": "Session Duration",
"admin.config.general.session-duration.description": "Time in hours after which a user must log in again (default: 3 months).",
"admin.config.general.session-duration": "Трајање сесије",
"admin.config.general.session-duration.description": "Време у сатима након којег корисник мора поново да се пријави (подразумевано: 3 месеца).",
"admin.config.general.logo": "Лого",
"admin.config.general.logo.description": "Промените свој логотип тако што ћете отпремити нову слику. Слика мора да буде PNG и треба да има формат 1:1.",
"admin.config.general.logo.placeholder": "Изабери слику",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.enable-share-email-recipients": "Омогући дељење са примаоцима е-поштом",
"admin.config.email.enable-share-email-recipients.description": "Да ли дозволити дељење са примаоцима путем е-поште. Омогућите ово само ако је SMTP активиран.",
"admin.config.email.share-recipients-subject": "Поделите наслов примаоца",
"admin.config.email.share-recipients-subject.description": "Тема е-поруке која се шаље примаоцима дељења.",
"admin.config.email.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 These variables will be replaced with the actual value.",
"admin.config.email.share-recipients-message.description": "Порука која се шаље примаоцима дељења. Доступне променљиве:\n{creator} - Корисничко име креатора дељења\n{shareUrl} - URL дељења\n{desc} - Опис дељења\n{expires} - Датум истека дељења\nОве променљиве ће бити замењене стварним вредностима.",
"admin.config.email.reverse-share-subject": "Тема обрнутог дељења",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
"admin.config.email.reverse-share-subject.description": "Наслов е-поште која се шаље када неко креира дељење са вашим реверзним линком за дељење.",
"admin.config.email.reverse-share-message": "Обрнуто дељење порука",
"admin.config.email.reverse-share-message.description": "Порука која се шаље када је неко направио дељење са вашом обрнутом везом за дељење. {shareUrl} ће бити замењен именом креатора и УРЛ-ом за дељење.",
"admin.config.email.reset-password-subject": "Ресетујте тему лозинке",
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
"admin.config.email.reset-password-subject.description": "Наслов е-поште која се шаље када корисник затражи ресетовање лозинке.",
"admin.config.email.reset-password-message": "Порука за ресетовање лозинке",
"admin.config.email.reset-password-message.description": "Порука која се шаље када корисник затражи ресетовање лозинке. {url} ће бити замењен УРЛ-ом за ресетовање лозинке.",
"admin.config.email.invite-subject": "Позивна тема",
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
"admin.config.email.invite-subject.description": "Наслов е-поште која се шаље када администратор позове корисника.",
"admin.config.email.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, {email} with the email and {password} with the users password.",
"admin.config.email.invite-message.description": "Порука која се шаље када администратор позове корисника. {url} ће бити замењен линком за позив, {email} е-поштом, а {password} лозинком корисника.",
"admin.config.share.allow-registration": "Дозволи регистрацију",
"admin.config.share.allow-registration.description": "Да ли је регистрација дозвољена",
"admin.config.share.allow-unauthenticated-shares": "Дозволи дељење без аутентификације",
@@ -335,11 +340,11 @@ export default {
"admin.config.share.max-size.description": "Максимална величина дељења у бајтовима",
"admin.config.share.zip-compression-level": "Ниво zip компресије",
"admin.config.share.zip-compression-level.description": "Подесите ниво да бисте балансирали између величине датотеке и брзине компресије. Важеће вредности се крећу од 0 до 9, при чему је 0 без компресије, а 9 је максимална компресија. ",
"admin.config.share.chunk-size": "Chunk size",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
"admin.config.share.chunk-size": "Величина комада",
"admin.config.share.chunk-size.description": "Подесите величину дела (у бајтовима) за ваша отпремање како бисте уравнотежили ефикасност и поузданост у складу са вашом интернет везом. Мањи делови могу побољшати стопу успеха за нестабилне везе, док већи делови омогућавају брже отпремање за стабилне везе.",
"admin.config.share.auto-open-share-modal": "",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable",
"admin.config.smtp.enabled": "Омогући",
"admin.config.smtp.enabled.description": "Да ли је SMTP омогућен. Поставите ово на тачно само ако сте унели хост, порт, е-пошту, корисника и лозинку вашег SMTP сервера.",
"admin.config.smtp.host": "Домаћин",
"admin.config.smtp.host.description": "Домаћин SMTP сервера",
@@ -423,10 +428,10 @@ export default {
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
"admin.config.ldap.admin-groups": "Admin group",
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
"admin.config.ldap.field-name-member-of": "User groups attribute name",
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
"admin.config.ldap.field-name-email": "User email attribute name",
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
"admin.config.ldap.field-name-member-of": "Назив атрибута корисничких група",
"admin.config.ldap.field-name-member-of.description": "LDAP назив атрибута за групе чији је корисник члан. Ово се користи при провери администраторске групе.",
"admin.config.ldap.field-name-email": "Назив атрибута за е-пошту корисника",
"admin.config.ldap.field-name-email.description": "LDAP назив атрибута за е-пошту корисника.",
// 404
"404.description": "Опа - Ова страна не постоји.",
"404.button.home": "Врати ме на почетак",
@@ -437,14 +442,14 @@ export default {
"error.msg.default": "Нешто је пошло наопако.",
"error.msg.access_denied": "Отказали сте процес аутентификације, покушајте поново.",
"error.msg.expired_token": "Процес аутентификације је трајао предуго, покушајте поново.",
"error.msg.invalid_token": "Internal Error",
"error.msg.invalid_token": "Интерна грешка",
"error.msg.no_user": "Корисник повезан са овим {0} налогом не постоји.",
"error.msg.no_email": "Не могу да добијем адресу е-поште са овог {0} налога.",
"error.msg.already_linked": "Овај {0} налог је већ повезан са другим налогом.",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
"error.msg.unverified_account": "This {0} account is unverified, please try again after verification.",
"error.msg.user_not_allowed": "You are not allowed to sign in.",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
"error.msg.not_linked": "Овај {0} налог још увек није повезан ни са једним налогом.",
"error.msg.unverified_account": "Овај {0} налог је непотврђен, молимо покушајте поново након верификације.",
"error.msg.user_not_allowed": "Није вам дозвољено да се пријавите.",
"error.msg.cannot_get_user_info": "Не могу да добијем ваше корисничке информације са овог {0} налога.",
"error.param.provider_github": "GitHub",
"error.param.provider_google": "Google",
"error.param.provider_microsoft": "Microsoft",
@@ -462,11 +467,11 @@ export default {
"common.button.generate": "Генериши",
"common.button.done": "Готово",
"common.text.link": "Линк",
"common.text.navigate-to-link": "Visit link",
"common.text.navigate-to-link": "Посетите линк",
"common.text.or": "или",
"common.text.redirecting": "Redirecting...",
"common.text.redirecting": "Преусмеравање...",
"common.button.go-back": "Иди назад",
"common.button.go-home": "Go home",
"common.button.go-home": "Почетна страница",
"common.notify.copied": "Ваша веза је копирана у clipboard",
"common.success": "Успешно",
"common.error": "Грешка",
@@ -474,8 +479,8 @@ export default {
"common.error.invalid-email": "Неисправна адреса е-поште",
"common.error.too-short": "Мора да има најмање {length} знакова",
"common.error.too-long": "Мора да има највише {length} знакова",
"common.error.number-too-small": "Must be at least {min}",
"common.error.number-too-large": "Must be at most {max}",
"common.error.number-too-small": "Мора бити најмање {min}",
"common.error.number-too-large": "Мора бити највише {max}",
"common.error.exact-length": "Мора да има тачно {length} знакова",
"common.error.invalid-number": "Мора бити број",
"common.error.field-required": "Поље је обавезно"

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Ladda upp",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.",
"upload.notify.count-failed": "{count} filer kunde inte laddas upp. Försöker igen.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Ladda upp filer",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Namn på applikationen",
"admin.config.general.app-url": "Appens URL",
"admin.config.general.app-url.description": "På vilken URL Pingvin Share finns",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Visa startsidan",
"admin.config.general.show-home-page.description": "Om du vill visa startsidan",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "อัพโหลด",
"navbar.signin": "เข้าสู่ระบบ",
"navbar.home": "หน้าหลัก",
"navbar.signup": "Sign up",
"navbar.signup": "ลงทะเบียน",
"navbar.links.shares": "แชร์ของฉัน",
"navbar.links.reverse": "รีเวิร์สแชร์",
"navbar.avatar.account": "บัญชีของฉัน",
@@ -26,8 +26,8 @@ export default {
"signin.title": "ยินดีต้อนรับกลับ",
"signin.description": "ยังไม่มีบัญชี?",
"signin.button.signup": "สมัครบัญชี",
"signin.input.email-or-username": "อีเมล์์์์์์์์หรือชื่อผู้ใช้",
"signin.input.email-or-username.placeholder": "อีเมล์์์์์์์หรือชื่อผู้ใช้ของคุณ",
"signin.input.email-or-username": "อีเมลหรือชื่อผู้ใช้",
"signin.input.email-or-username.placeholder": "อีเมลหรือชื่อผู้ใช้ของคุณ",
"signin.input.password": "รหัสผ่าน",
"signin.input.password.placeholder": "รหัสผ่านของคุณ",
"signin.button.submit": "เข้าสู่ระบบ",
@@ -47,8 +47,8 @@ export default {
"signup.button.signin": "เข้าสู่ระบบ",
"signup.input.username": "ชื่อผู้ใช้",
"signup.input.username.placeholder": "ชื่อผู้ใช้ของคุณ",
"signup.input.email": "อีเมล์์์์์์์์",
"signup.input.email.placeholder": "อีเมล์์์์์์์์ของคุณ",
"signup.input.email": "อีเมล",
"signup.input.email.placeholder": "อีเมลของคุณ",
"signup.button.submit": "เริ่มต้นกัน",
// END /auth/signup
// /auth/totp
@@ -57,7 +57,7 @@ export default {
// END /auth/totp
// /auth/reset-password
"resetPassword.title": "ลืมรหัสผ่าน?",
"resetPassword.description": "กรุณาใส่อีเมล์์์์์์์ของคุณเพื่อรีเซ็ตรหัสผ่าน",
"resetPassword.description": "กรุณาใส่อีเมลของคุณเพื่อรีเซ็ตรหัสผ่าน",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
"resetPassword.button.back": "กลับไปที่หน้าลงชื่อเข้าใช้",
"resetPassword.text.resetPassword": "รีเซ็ตรหัสผ่าน",
@@ -68,7 +68,7 @@ export default {
"account.title": "บัญชีของฉัน",
"account.card.info.title": "ข้อมูลบัญชี",
"account.card.info.username": "ชื่อผู้ใช้",
"account.card.info.email": "อีเมล์์์์์์์",
"account.card.info.email": "อีเมล",
"account.notify.info.success": "อัปเดตบัญชีเรียบร้อยแล้ว",
"account.card.password.title": "รหัสผ่าน",
"account.card.password.old": "รหัสผ่านเก่า",
@@ -181,7 +181,7 @@ export default {
// /admin/users
"admin.users.title": "การจัดการผู้ใช้",
"admin.users.table.username": "ชื่อผู้ใช้",
"admin.users.table.email": "อีเมล์์์์์์์",
"admin.users.table.email": "อีเมล",
"admin.users.table.admin": "ผู้ดูแลระบบ",
"admin.users.edit.update.title": "Edit user: {username}",
"admin.users.edit.update.admin-privileges": "สิทธิ์ของผู้ดูแลระบบ",
@@ -194,10 +194,10 @@ export default {
// showCreateUserModal.tsx
"admin.users.modal.create.title": "สร้างผู้ใช้",
"admin.users.modal.create.username": "ชื่อผู้ใช้",
"admin.users.modal.create.email": "อีเมล",
"admin.users.modal.create.email": "อีเมล",
"admin.users.modal.create.password": "รหัสผ่าน",
"admin.users.modal.create.manual-password": "ตั้งรหัสผ่านด้วยตนเอง",
"admin.users.modal.create.manual-password.description": "หากไม่ติ๊กเลือก ผู้ใช้จะได้รับอีเมลพร้อมลิงก์เพื่อตั้งรหัสผ่านด้วยตนเอง",
"admin.users.modal.create.manual-password.description": "หากไม่ติ๊กเลือก ผู้ใช้จะได้รับอีเมลพร้อมลิงก์เพื่อตั้งรหัสผ่านด้วยตนเอง",
"admin.users.modal.create.admin": "สิทธิ์ของผู้ดูแลระบบ",
"admin.users.modal.create.admin.description": "หากติ๊กเลือก ผู้ใช้จะสามารถเข้าถึงแผงควบคุมระบบได้",
// END /admin/users
@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "อัปโหลด",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "เกิดข้อผิดพลาดขณะที่กำลังจัดการการแชร์ของคุณ",
"upload.notify.count-failed": "มีไฟล์จำนวน {count} ไฟล์ที่ไม่สามารถอัปโหลดได้ กำลังลองอีกครั้ง",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "อัปโหลดไฟล์",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -247,9 +250,9 @@ export default {
"upload.modal.accordion.name-and-description.title": "Name and description",
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
"upload.modal.accordion.email.title": "ผู้รับอีเมล",
"upload.modal.accordion.email.placeholder": "ป้อนผู้รับอีเมล",
"upload.modal.accordion.email.invalid-email": "ที่อยู่อีเมลไม่ถูกต้อง",
"upload.modal.accordion.email.title": "ผู้รับอีเมล",
"upload.modal.accordion.email.placeholder": "ป้อนผู้รับอีเมล",
"upload.modal.accordion.email.invalid-email": "ที่อยู่อีเมลไม่ถูกต้อง",
"upload.modal.accordion.security.title": "ตัวเลือกความปลอดภัย",
"upload.modal.accordion.security.password.label": "การป้องกันรหัสผ่าน",
"upload.modal.accordion.security.password.placeholder": "ไม่มีรหัสผ่าน",
@@ -293,13 +296,15 @@ export default {
"admin.config.title": "การตั้งค่า",
"admin.config.category.general": "ทั่วไป",
"admin.config.category.share": "การแชร์",
"admin.config.category.email": "อีเมล์์์์์์",
"admin.config.category.email": "อีเมล",
"admin.config.category.smtp": "SMTP",
"admin.config.category.oauth": "Social Login",
"admin.config.general.app-name": "ชื่อแอพ",
"admin.config.general.app-name.description": "ชื่อแอพพลิเคชัน",
"admin.config.general.app-url": "URL ของแอพ",
"admin.config.general.app-url.description": "URL ที่สามารถเข้าถึงแอพพลิเคชัน Pingvin Share ได้",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "แสดงหน้าแรก",
"admin.config.general.show-home-page.description": "หากติ๊ก เว็บไซต์จะแสดงหน้าหลักเวลาเข้าถึง URL หลัก",
"admin.config.general.session-duration": "Session Duration",
@@ -309,9 +314,9 @@ export default {
"admin.config.general.logo.placeholder": "คลิกที่นี่หรือลากไฟล์มา",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมล์์์์์์ของการแชร์",
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมล์์์์์์์์ที่ส่งไปยังผู้รับอีเมล์์์์์์ของการแชร์",
"admin.config.email.share-recipients-message": "ข้อความผู้รับอีเมล์์์์์์ของการแชร์",
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมลของการแชร์",
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมลที่ส่งไปยังผู้รับอีเมลของการแชร์",
"admin.config.email.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 These variables will be replaced with the actual value.",
"admin.config.email.reverse-share-subject": "หัวเรื่องการแชร์รีเวิร์ส",
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
@@ -340,12 +345,12 @@ export default {
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable",
"admin.config.smtp.enabled.description": "เปิดใช้งาน SMTP สำหรับการส่งอีเมล์์์์์์ เปิดได้เท่านั้นต่อเมื่อคุณใส่ข้อมูลโฮสต์ พอร์ต อีเมล ผู้ใช้ และรหัสผ่านของเซิร์ฟเวอร์ SMTP ของคุณ",
"admin.config.smtp.enabled.description": "เปิดใช้งาน SMTP สำหรับการส่งอีเมล เปิดได้เท่านั้นต่อเมื่อคุณใส่ข้อมูลโฮสต์ พอร์ต อีเมล ผู้ใช้ และรหัสผ่านของเซิร์ฟเวอร์ SMTP ของค",
"admin.config.smtp.host": "โฮสต์",
"admin.config.smtp.host.description": "โฮสต์ของเซิร์ฟเวอร์ SMTP",
"admin.config.smtp.port": "พอร์ต",
"admin.config.smtp.port.description": "พอร์ตของเซิร์ฟเวอร์ SMTP",
"admin.config.smtp.email": "อีเมล์์์์์์์",
"admin.config.smtp.email": "อีเมล",
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
"admin.config.smtp.username": "ชื่อผู้ใช้",
"admin.config.smtp.username.description": "ชื่อผู้ใช้ของเซิร์ฟเวอร์ SMTP",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Yükle",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.",
"upload.notify.count-failed": "{count} dosya yüklenemedi. Yeniden deneniyor.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Dosya yükle",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Uygulamanın adı",
"admin.config.general.app-url": "Uygulama URL'si",
"admin.config.general.app-url.description": "Pingvin Share'in hangi bağlantıda kullanılacağı",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Ana sayfayı göster",
"admin.config.general.show-home-page.description": "Ana sayfanın görünürlüğü",
"admin.config.general.session-duration": "Oturum Süresi",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Завантажити",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.",
"upload.notify.count-failed": "Не вдалося завантажити файли {count}. Повтор спроби.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Завантажити файли",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Видима назва додатка",
"admin.config.general.app-url": "URL-адреса програми",
"admin.config.general.app-url.description": "Адреса, на якій доступний Pingvin Share",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "Показувати домашню сторінку",
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "Tải lên",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "An error occurred while finishing your share.",
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "Upload files",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "Name of the application",
"admin.config.general.app-url": "URL ứng dụng",
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"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.session-duration": "Session Duration",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "上传",
"navbar.signin": "登录",
"navbar.home": "首页",
"navbar.signup": "Sign up",
"navbar.signup": "注册",
"navbar.links.shares": "我的共享",
"navbar.links.reverse": "预留共享",
"navbar.avatar.account": "我的账户",
@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "上传",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "创建共享的过程中发生了错误",
"upload.notify.count-failed": "{count} 文件上传失败,请重试",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "上传文件",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "自定义 App 的名称",
"admin.config.general.app-url": "App 的地址",
"admin.config.general.app-url.description": "Pingvin Share 的 URL 地址",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "显示首页",
"admin.config.general.show-home-page.description": "是否显示首页",
"admin.config.general.session-duration": "会话时长",
@@ -475,7 +480,7 @@ export default {
"common.error.too-short": "必须不少于 {length} 个字符",
"common.error.too-long": "必须不超过 {length} 个字符",
"common.error.number-too-small": "Must be at least {min}",
"common.error.number-too-large": "Must be at most {max}",
"common.error.number-too-large": "必须至多为 {max}",
"common.error.exact-length": "必须为 {length} 个字符",
"common.error.invalid-number": "必须为数字",
"common.error.field-required": "必填项"

View File

@@ -212,8 +212,11 @@ export default {
// END /admin/shares
// /upload
"upload.title": "上傳",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
"upload.notify.generic-error": "建立分享的過程中發生了錯誤",
"upload.notify.count-failed": "{count} 檔案上傳失敗,請重試",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
// Dropzone.tsx
"upload.dropzone.title": "上傳檔案",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
@@ -300,6 +303,8 @@ export default {
"admin.config.general.app-name.description": "這個 App 的名稱",
"admin.config.general.app-url": "App URL",
"admin.config.general.app-url.description": "Pingvin Share 的 URL",
"admin.config.general.secure-cookies": "Secure cookies",
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
"admin.config.general.show-home-page": "顯示首頁",
"admin.config.general.show-home-page.description": "是否顯示首頁",
"admin.config.general.session-duration": "Session Duration",

View File

@@ -279,10 +279,7 @@ const Account = () => {
) : (
<Button
component="a"
href={getOAuthUrl(
config.get("general.appUrl"),
provider,
)}
href={getOAuthUrl(window.location.origin, provider)}
>
{t("account.card.oauth.link")}
</Button>
@@ -414,8 +411,10 @@ const Account = () => {
},
confirmProps: { color: "red" },
onConfirm: async () => {
await userService.removeCurrentUser();
window.location.reload();
await userService
.removeCurrentUser()
.then(window.location.reload)
.catch(toast.axiosError);
},
})
}

View File

@@ -37,8 +37,6 @@ const MyShares = () => {
const config = useConfig();
const appUrl = config.get("general.appUrl");
const [reverseShares, setReverseShares] = useState<MyReverseShare[]>();
const getReverseShares = () => {
@@ -146,7 +144,7 @@ const MyShares = () => {
{reverseShare.shares.map((share) => (
<Group key={share.id} mb={4}>
<Anchor
href={`${appUrl}/share/${share.id}`}
href={`${window.location.origin}/share/${share.id}`}
target="_blank"
>
<Text maw={120} truncate>
@@ -159,14 +157,12 @@ const MyShares = () => {
size={25}
onClick={() => {
if (window.isSecureContext) {
clipboard.copy(`${appUrl}/s/${share.id}`);
clipboard.copy(
`${window.location.origin}/s/${share.id}`,
);
toast.success(t("common.notify.copied"));
} else {
showShareLinkModal(
modals,
share.id,
config.get("general.appUrl"),
);
showShareLinkModal(modals, share.id);
}
}}
>
@@ -197,7 +193,7 @@ const MyShares = () => {
onClick={() => {
if (window.isSecureContext) {
clipboard.copy(
`${config.get("general.appUrl")}/upload/${
`${window.location.origin}/upload/${
reverseShare.token
}`,
);
@@ -206,7 +202,6 @@ const MyShares = () => {
showReverseShareLinkModal(
modals,
reverseShare.token,
config.get("general.appUrl"),
);
}
}}

View File

@@ -4,7 +4,6 @@ import {
Button,
Center,
Group,
MediaQuery,
Space,
Stack,
Table,
@@ -109,7 +108,6 @@ const MyShares = () => {
showShareInformationsModal(
modals,
share,
config.get("general.appUrl"),
parseInt(config.get("share.maxSize")),
);
}}
@@ -123,15 +121,11 @@ const MyShares = () => {
onClick={() => {
if (window.isSecureContext) {
clipboard.copy(
`${config.get("general.appUrl")}/s/${share.id}`,
`${window.location.origin}/s/${share.id}`,
);
toast.success(t("common.notify.copied"));
} else {
showShareLinkModal(
modals,
share.id,
config.get("general.appUrl"),
);
showShareLinkModal(modals, share.id);
}
}}
>

View File

@@ -2,12 +2,13 @@ import { LoadingOverlay } from "@mantine/core";
import { useModals } from "@mantine/modals";
import { GetServerSidePropsContext } from "next";
import { useEffect, useState } from "react";
import Meta from "../../../components/Meta";
import showErrorModal from "../../../components/share/showErrorModal";
import EditableUpload from "../../../components/upload/EditableUpload";
import useConfirmLeave from "../../../hooks/confirm-leave.hook";
import useTranslate from "../../../hooks/useTranslate.hook";
import shareService from "../../../services/share.service";
import { Share as ShareType } from "../../../types/share.type";
import useTranslate from "../../../hooks/useTranslate.hook";
import EditableUpload from "../../../components/upload/EditableUpload";
import Meta from "../../../components/Meta";
export function getServerSideProps(context: GetServerSidePropsContext) {
return {
@@ -18,9 +19,15 @@ export function getServerSideProps(context: GetServerSidePropsContext) {
const Share = ({ shareId }: { shareId: string }) => {
const t = useTranslate();
const modals = useModals();
const [isLoading, setIsLoading] = useState(true);
const [share, setShare] = useState<ShareType>();
useConfirmLeave({
message: t("upload.notify.confirm-leave"),
enabled: isLoading,
});
useEffect(() => {
shareService
.getFromOwner(shareId)

View File

@@ -5,6 +5,7 @@ import { useEffect, useState } from "react";
import Upload from ".";
import showErrorModal from "../../components/share/showErrorModal";
import shareService from "../../services/share.service";
import useTranslate from "../../hooks/useTranslate.hook";
export function getServerSideProps(context: GetServerSidePropsContext) {
return {
@@ -14,6 +15,7 @@ export function getServerSideProps(context: GetServerSidePropsContext) {
const Share = ({ reverseShareToken }: { reverseShareToken: string }) => {
const modals = useModals();
const t = useTranslate();
const [isLoading, setIsLoading] = useState(true);
const [maxShareSize, setMaxShareSize] = useState(0);
@@ -30,8 +32,8 @@ const Share = ({ reverseShareToken }: { reverseShareToken: string }) => {
.catch(() => {
showErrorModal(
modals,
"Invalid Link",
"This link is invalid. Please check your link.",
t("upload.reverse-share.error.invalid.title"),
t("upload.reverse-share.error.invalid.description"),
"go-home",
);
setIsLoading(false);

View File

@@ -11,6 +11,7 @@ import FileList from "../../components/upload/FileList";
import showCompletedUploadModal from "../../components/upload/modals/showCompletedUploadModal";
import showCreateUploadModal from "../../components/upload/modals/showCreateUploadModal";
import useConfig from "../../hooks/config.hook";
import useConfirmLeave from "../../hooks/confirm-leave.hook";
import useTranslate from "../../hooks/useTranslate.hook";
import useUser from "../../hooks/user.hook";
import shareService from "../../services/share.service";
@@ -39,6 +40,11 @@ const Upload = ({
const [files, setFiles] = useState<FileUpload[]>([]);
const [isUploading, setisUploading] = useState(false);
useConfirmLeave({
message: t("upload.notify.confirm-leave"),
enabled: isUploading,
});
const chunkSize = useRef(parseInt(config.get("share.chunkSize")));
maxShareSize ??= parseInt(config.get("share.maxSize"));
@@ -129,7 +135,6 @@ const Upload = ({
{
isUserSignedIn: user ? true : false,
isReverseShare,
appUrl: config.get("general.appUrl"),
allowUnauthenticatedShares: config.get(
"share.allowUnauthenticatedShares",
),
@@ -183,7 +188,7 @@ const Upload = ({
.completeShare(createdShare.id)
.then((share) => {
setisUploading(false);
showCompletedUploadModal(modals, share, config.get("general.appUrl"));
showCompletedUploadModal(modals, share);
setFiles([]);
})
.catch(() => toast.error(t("upload.notify.generic-error")));

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "pingvin-share",
"version": "1.2.3",
"version": "1.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pingvin-share",
"version": "1.2.3",
"version": "1.3.0",
"devDependencies": {
"conventional-changelog-cli": "^3.0.0"
}

View File

@@ -1,6 +1,6 @@
{
"name": "pingvin-share",
"version": "1.2.3",
"version": "1.3.0",
"scripts": {
"format": "cd frontend && npm run format && cd ../backend && npm run format",
"lint": "cd frontend && npm run lint && cd ../backend && npm run lint",