Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
362e7d4f38 | ||
|
|
f36ba8ac0a | ||
|
|
30caeb5b25 | ||
|
|
bfd4049c15 | ||
|
|
856c54d5d6 | ||
|
|
6a97cc279c | ||
|
|
7e09ae1f98 | ||
|
|
3946f6f237 | ||
|
|
5069abe4b9 | ||
|
|
5a54fe4cb7 | ||
|
|
0b406f0464 | ||
|
|
cbc7fd83a7 | ||
|
|
c178a83fa5 | ||
|
|
185f1b2ab7 | ||
|
|
6771bfdf50 | ||
|
|
2db1f6a112 | ||
|
|
168038eae7 | ||
|
|
3df80acff9 | ||
|
|
e86f93830b | ||
|
|
38f1626b11 | ||
|
|
ac9b0a1d53 | ||
|
|
ba2e7e122c | ||
|
|
3527dd1dd9 | ||
|
|
54af6c2055 | ||
|
|
3160f90e1d | ||
|
|
da54ce6ee0 | ||
|
|
468b25828b | ||
|
|
9d4bb55a09 | ||
|
|
f78ffd69e7 | ||
|
|
17528f999a | ||
|
|
c8f05f2475 | ||
|
|
424e2564d5 |
52
CHANGELOG.md
52
CHANGELOG.md
@@ -1,3 +1,55 @@
|
|||||||
|
## [1.7.2](https://github.com/stonith404/pingvin-share/compare/v1.7.1...v1.7.2) (2024-12-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* crash on zip download if zip is larger than 4GB ([#709](https://github.com/stonith404/pingvin-share/issues/709)) ([bfd4049](https://github.com/stonith404/pingvin-share/commit/bfd4049c154caae037db0458863e5c8c5d398848))
|
||||||
|
|
||||||
|
## [1.7.1](https://github.com/stonith404/pingvin-share/compare/v1.7.0...v1.7.1) (2024-12-24)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* incorrect ownership of the public folder ([6a97cc2](https://github.com/stonith404/pingvin-share/commit/6a97cc279c51bf125b9b516d1795f85b208e6ad5))
|
||||||
|
|
||||||
|
## [1.7.0](https://github.com/stonith404/pingvin-share/compare/v1.6.1...v1.7.0) (2024-12-19)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add support for S3 as a storage provider ([#659](https://github.com/stonith404/pingvin-share/issues/659)) ([5a54fe4](https://github.com/stonith404/pingvin-share/commit/5a54fe4cb7d9c22740edd8619c0a51044ca8c791))
|
||||||
|
|
||||||
|
## [1.6.1](https://github.com/stonith404/pingvin-share/compare/v1.6.0...v1.6.1) (2024-11-26)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* error for non oidc oauth clients ([ba2e7e1](https://github.com/stonith404/pingvin-share/commit/ba2e7e122c45bfb2a783b15438112a79fee0c307))
|
||||||
|
|
||||||
|
## [1.6.0](https://github.com/stonith404/pingvin-share/compare/v1.5.0...v1.6.0) (2024-11-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add config variable to specify the requested OIDC sopes ([da54ce6](https://github.com/stonith404/pingvin-share/commit/da54ce6ee020a9718f55ec30c614607d411f55c8))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* add validation for share id and zip compression config variables ([3160f90](https://github.com/stonith404/pingvin-share/commit/3160f90e1d4bb3d6aa4017e98e400929fc4d3b2e))
|
||||||
|
|
||||||
|
## [1.5.0](https://github.com/stonith404/pingvin-share/compare/v1.4.0...v1.5.0) (2024-11-24)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **share:** add share ID length setting ([#677](https://github.com/stonith404/pingvin-share/issues/677)) ([9d4bb55](https://github.com/stonith404/pingvin-share/commit/9d4bb55a0945450f8a42c212d7f23983db38f37f))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* totp can't be enabled if user is a ldap user ([c8f05f2](https://github.com/stonith404/pingvin-share/commit/c8f05f2475a5a54550cf64ef57c8b612580273be))
|
||||||
|
|
||||||
## [1.4.0](https://github.com/stonith404/pingvin-share/compare/v1.3.0...v1.4.0) (2024-11-17)
|
## [1.4.0](https://github.com/stonith404/pingvin-share/compare/v1.3.0...v1.4.0) (2024-11-17)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
16
Dockerfile
16
Dockerfile
@@ -20,6 +20,8 @@ RUN npm ci
|
|||||||
|
|
||||||
# Stage 4: Build backend
|
# Stage 4: Build backend
|
||||||
FROM node:20-alpine AS backend-builder
|
FROM node:20-alpine AS backend-builder
|
||||||
|
RUN apk add openssl
|
||||||
|
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
COPY ./backend .
|
COPY ./backend .
|
||||||
COPY --from=backend-dependencies /opt/app/node_modules ./node_modules
|
COPY --from=backend-dependencies /opt/app/node_modules ./node_modules
|
||||||
@@ -30,9 +32,12 @@ RUN npm run build && npm prune --production
|
|||||||
FROM node:20-alpine AS runner
|
FROM node:20-alpine AS runner
|
||||||
ENV NODE_ENV=docker
|
ENV NODE_ENV=docker
|
||||||
|
|
||||||
|
# Delete default node user
|
||||||
|
RUN deluser --remove-home node
|
||||||
|
|
||||||
RUN apk update --no-cache \
|
RUN apk update --no-cache \
|
||||||
&& apk upgrade --no-cache \
|
&& apk upgrade --no-cache \
|
||||||
&& apk add --no-cache curl caddy
|
&& apk add --no-cache curl caddy su-exec openssl
|
||||||
|
|
||||||
WORKDIR /opt/app/frontend
|
WORKDIR /opt/app/frontend
|
||||||
COPY --from=frontend-builder /opt/app/public ./public
|
COPY --from=frontend-builder /opt/app/public ./public
|
||||||
@@ -46,13 +51,14 @@ COPY --from=backend-builder /opt/app/dist ./dist
|
|||||||
COPY --from=backend-builder /opt/app/prisma ./prisma
|
COPY --from=backend-builder /opt/app/prisma ./prisma
|
||||||
COPY --from=backend-builder /opt/app/package.json ./
|
COPY --from=backend-builder /opt/app/package.json ./
|
||||||
|
|
||||||
COPY ./reverse-proxy /etc/caddy
|
|
||||||
COPY ./scripts/docker-entrypoint.sh /opt/app/docker-entrypoint.sh
|
|
||||||
|
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
|
|
||||||
|
COPY ./reverse-proxy /opt/app/reverse-proxy
|
||||||
|
COPY ./scripts ./scripts
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://localhost:3000/api/health || exit 1
|
HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://localhost:3000/api/health || exit 1
|
||||||
|
|
||||||
CMD ["sh", "/opt/app/docker-entrypoint.sh"]
|
ENTRYPOINT ["sh", "./scripts/docker/create-user.sh"]
|
||||||
|
CMD ["sh", "./scripts/docker/entrypoint.sh"]
|
||||||
1796
backend/package-lock.json
generated
1796
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-backend",
|
"name": "pingvin-share-backend",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nest build",
|
"build": "nest build",
|
||||||
"dev": "cross-env NODE_ENV=development nest start --watch",
|
"dev": "cross-env NODE_ENV=development nest start --watch",
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
"seed": "ts-node prisma/seed/config.seed.ts"
|
"seed": "ts-node prisma/seed/config.seed.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@aws-sdk/client-s3": "^3.679.0",
|
||||||
"@nestjs/cache-manager": "^2.2.2",
|
"@nestjs/cache-manager": "^2.2.2",
|
||||||
"@nestjs/common": "^10.4.3",
|
"@nestjs/common": "^10.4.3",
|
||||||
"@nestjs/config": "^3.2.3",
|
"@nestjs/config": "^3.2.3",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
-- RedefineTables
|
||||||
|
PRAGMA defer_foreign_keys=ON;
|
||||||
|
PRAGMA foreign_keys=OFF;
|
||||||
|
CREATE TABLE "new_Share" (
|
||||||
|
"id" TEXT NOT NULL PRIMARY KEY,
|
||||||
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"name" TEXT,
|
||||||
|
"uploadLocked" BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
"isZipReady" BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
"views" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
"expiration" DATETIME NOT NULL,
|
||||||
|
"description" TEXT,
|
||||||
|
"removedReason" TEXT,
|
||||||
|
"creatorId" TEXT,
|
||||||
|
"reverseShareId" TEXT,
|
||||||
|
"storageProvider" TEXT NOT NULL DEFAULT 'LOCAL',
|
||||||
|
CONSTRAINT "Share_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT "Share_reverseShareId_fkey" FOREIGN KEY ("reverseShareId") REFERENCES "ReverseShare" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
INSERT INTO "new_Share" ("createdAt", "creatorId", "description", "expiration", "id", "isZipReady", "name", "removedReason", "reverseShareId", "uploadLocked", "views") SELECT "createdAt", "creatorId", "description", "expiration", "id", "isZipReady", "name", "removedReason", "reverseShareId", "uploadLocked", "views" FROM "Share";
|
||||||
|
DROP TABLE "Share";
|
||||||
|
ALTER TABLE "new_Share" RENAME TO "Share";
|
||||||
|
PRAGMA foreign_keys=ON;
|
||||||
|
PRAGMA defer_foreign_keys=OFF;
|
||||||
@@ -95,6 +95,7 @@ model Share {
|
|||||||
security ShareSecurity?
|
security ShareSecurity?
|
||||||
recipients ShareRecipient[]
|
recipients ShareRecipient[]
|
||||||
files File[]
|
files File[]
|
||||||
|
storageProvider String @default("LOCAL")
|
||||||
}
|
}
|
||||||
|
|
||||||
model ReverseShare {
|
model ReverseShare {
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ const configVariables: ConfigVariables = {
|
|||||||
defaultValue: "0",
|
defaultValue: "0",
|
||||||
secret: false,
|
secret: false,
|
||||||
},
|
},
|
||||||
|
shareIdLength: {
|
||||||
|
type: "number",
|
||||||
|
defaultValue: "8",
|
||||||
|
secret: false,
|
||||||
|
},
|
||||||
maxSize: {
|
maxSize: {
|
||||||
type: "number",
|
type: "number",
|
||||||
defaultValue: "1000000000",
|
defaultValue: "1000000000",
|
||||||
@@ -283,6 +288,10 @@ const configVariables: ConfigVariables = {
|
|||||||
type: "boolean",
|
type: "boolean",
|
||||||
defaultValue: "false",
|
defaultValue: "false",
|
||||||
},
|
},
|
||||||
|
"oidc-scope": {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "openid email profile",
|
||||||
|
},
|
||||||
"oidc-usernameClaim": {
|
"oidc-usernameClaim": {
|
||||||
type: "string",
|
type: "string",
|
||||||
defaultValue: "",
|
defaultValue: "",
|
||||||
@@ -309,6 +318,38 @@ const configVariables: ConfigVariables = {
|
|||||||
obscured: true,
|
obscured: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
s3: {
|
||||||
|
enabled: {
|
||||||
|
type: "boolean",
|
||||||
|
defaultValue: "false",
|
||||||
|
},
|
||||||
|
endpoint: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
region: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
bucketName: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
bucketPath: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
key: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
secret: true,
|
||||||
|
},
|
||||||
|
secret: {
|
||||||
|
type: "string",
|
||||||
|
defaultValue: "",
|
||||||
|
obscured: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
type ConfigVariables = {
|
type ConfigVariables = {
|
||||||
|
|||||||
@@ -368,4 +368,12 @@ export class AuthService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async verifyPassword(user: User, password: string) {
|
||||||
|
if (!user.password && this.config.get("ldap.enabled")) {
|
||||||
|
return !!this.ldapService.authenticateUser(user.username, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
return argon.verify(user.password, password);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import {
|
|||||||
UnauthorizedException,
|
UnauthorizedException,
|
||||||
} from "@nestjs/common";
|
} from "@nestjs/common";
|
||||||
import { User } from "@prisma/client";
|
import { User } from "@prisma/client";
|
||||||
import * as argon from "argon2";
|
|
||||||
import { authenticator, totp } from "otplib";
|
import { authenticator, totp } from "otplib";
|
||||||
import * as qrcode from "qrcode-svg";
|
import * as qrcode from "qrcode-svg";
|
||||||
import { ConfigService } from "src/config/config.service";
|
import { ConfigService } from "src/config/config.service";
|
||||||
@@ -65,7 +64,7 @@ export class AuthTotpService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async enableTotp(user: User, password: string) {
|
async enableTotp(user: User, password: string) {
|
||||||
if (!(await argon.verify(user.password, password)))
|
if (!this.authService.verifyPassword(user, password))
|
||||||
throw new ForbiddenException("Invalid password");
|
throw new ForbiddenException("Invalid password");
|
||||||
|
|
||||||
// Check if we have a secret already
|
// Check if we have a secret already
|
||||||
@@ -106,9 +105,8 @@ export class AuthTotpService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Maybe require a token to verify that the user who started enabling totp is the one who is verifying it?
|
|
||||||
async verifyTotp(user: User, password: string, code: string) {
|
async verifyTotp(user: User, password: string, code: string) {
|
||||||
if (!(await argon.verify(user.password, password)))
|
if (!this.authService.verifyPassword(user, password))
|
||||||
throw new ForbiddenException("Invalid password");
|
throw new ForbiddenException("Invalid password");
|
||||||
|
|
||||||
const { totpSecret } = await this.prisma.user.findUnique({
|
const { totpSecret } = await this.prisma.user.findUnique({
|
||||||
@@ -137,7 +135,7 @@ export class AuthTotpService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async disableTotp(user: User, password: string, code: string) {
|
async disableTotp(user: User, password: string, code: string) {
|
||||||
if (!(await argon.verify(user.password, password)))
|
if (!this.authService.verifyPassword(user, password))
|
||||||
throw new ForbiddenException("Invalid password");
|
throw new ForbiddenException("Invalid password");
|
||||||
|
|
||||||
const { totpSecret } = await this.prisma.user.findUnique({
|
const { totpSecret } = await this.prisma.user.findUnique({
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import {
|
|||||||
NotFoundException,
|
NotFoundException,
|
||||||
} from "@nestjs/common";
|
} from "@nestjs/common";
|
||||||
import { Config } from "@prisma/client";
|
import { Config } from "@prisma/client";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from "events";
|
||||||
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ConfigService extends EventEmitter to allow listening for config updates,
|
* ConfigService extends EventEmitter to allow listening for config updates,
|
||||||
@@ -100,6 +100,8 @@ export class ConfigService extends EventEmitter {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.validateConfigVariable(key, value);
|
||||||
|
|
||||||
const updatedVariable = await this.prisma.config.update({
|
const updatedVariable = await this.prisma.config.update({
|
||||||
where: {
|
where: {
|
||||||
name_category: {
|
name_category: {
|
||||||
@@ -116,4 +118,24 @@ export class ConfigService extends EventEmitter {
|
|||||||
|
|
||||||
return updatedVariable;
|
return updatedVariable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validateConfigVariable(key: string, value: string | number | boolean) {
|
||||||
|
const validations = [
|
||||||
|
{
|
||||||
|
key: "share.shareIdLength",
|
||||||
|
condition: (value: number) => value >= 2 && value <= 50,
|
||||||
|
message: "Share ID length must be between 2 and 50",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "share.zipCompressionLevel",
|
||||||
|
condition: (value: number) => value >= 0 && value <= 9,
|
||||||
|
message: "Zip compression level must be between 0 and 9",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const validation = validations.find((validation) => validation.key == key);
|
||||||
|
if (validation && !validation.condition(value as any)) {
|
||||||
|
throw new BadRequestException(validation.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { CreateShareGuard } from "src/share/guard/createShare.guard";
|
|||||||
import { ShareOwnerGuard } from "src/share/guard/shareOwner.guard";
|
import { ShareOwnerGuard } from "src/share/guard/shareOwner.guard";
|
||||||
import { FileService } from "./file.service";
|
import { FileService } from "./file.service";
|
||||||
import { FileSecurityGuard } from "./guard/fileSecurity.guard";
|
import { FileSecurityGuard } from "./guard/fileSecurity.guard";
|
||||||
|
import * as mime from "mime-types";
|
||||||
|
|
||||||
@Controller("shares/:shareId/files")
|
@Controller("shares/:shareId/files")
|
||||||
export class FileController {
|
export class FileController {
|
||||||
@@ -53,13 +54,14 @@ export class FileController {
|
|||||||
@Res({ passthrough: true }) res: Response,
|
@Res({ passthrough: true }) res: Response,
|
||||||
@Param("shareId") shareId: string,
|
@Param("shareId") shareId: string,
|
||||||
) {
|
) {
|
||||||
const zip = this.fileService.getZip(shareId);
|
const zipStream = this.fileService.getZip(shareId);
|
||||||
|
|
||||||
res.set({
|
res.set({
|
||||||
"Content-Type": "application/zip",
|
"Content-Type": "application/zip",
|
||||||
"Content-Disposition": contentDisposition(`${shareId}.zip`),
|
"Content-Disposition": contentDisposition(`${shareId}.zip`),
|
||||||
});
|
});
|
||||||
|
|
||||||
return new StreamableFile(zip);
|
return new StreamableFile(zipStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get(":fileId")
|
@Get(":fileId")
|
||||||
@@ -73,13 +75,18 @@ export class FileController {
|
|||||||
const file = await this.fileService.get(shareId, fileId);
|
const file = await this.fileService.get(shareId, fileId);
|
||||||
|
|
||||||
const headers = {
|
const headers = {
|
||||||
"Content-Type": file.metaData.mimeType,
|
"Content-Type":
|
||||||
|
mime?.lookup?.(file.metaData.name) || "application/octet-stream",
|
||||||
"Content-Length": file.metaData.size,
|
"Content-Length": file.metaData.size,
|
||||||
"Content-Security-Policy": "script-src 'none'",
|
"Content-Security-Policy": "script-src 'none'",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (download === "true") {
|
if (download === "true") {
|
||||||
headers["Content-Disposition"] = contentDisposition(file.metaData.name);
|
headers["Content-Disposition"] = contentDisposition(file.metaData.name);
|
||||||
|
} else {
|
||||||
|
headers["Content-Disposition"] = contentDisposition(file.metaData.name, {
|
||||||
|
type: "inline",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
res.set(headers);
|
res.set(headers);
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ import { ReverseShareModule } from "src/reverseShare/reverseShare.module";
|
|||||||
import { ShareModule } from "src/share/share.module";
|
import { ShareModule } from "src/share/share.module";
|
||||||
import { FileController } from "./file.controller";
|
import { FileController } from "./file.controller";
|
||||||
import { FileService } from "./file.service";
|
import { FileService } from "./file.service";
|
||||||
|
import { LocalFileService } from "./local.service";
|
||||||
|
import { S3FileService } from "./s3.service";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [JwtModule.register({}), ReverseShareModule, ShareModule],
|
imports: [JwtModule.register({}), ReverseShareModule, ShareModule],
|
||||||
controllers: [FileController],
|
controllers: [FileController],
|
||||||
providers: [FileService],
|
providers: [FileService, LocalFileService, S3FileService],
|
||||||
exports: [FileService],
|
exports: [FileService],
|
||||||
})
|
})
|
||||||
export class FileModule {}
|
export class FileModule {}
|
||||||
|
|||||||
@@ -1,162 +1,88 @@
|
|||||||
import {
|
import { Injectable } from "@nestjs/common";
|
||||||
BadRequestException,
|
import { LocalFileService } from "./local.service";
|
||||||
HttpException,
|
import { S3FileService } from "./s3.service";
|
||||||
HttpStatus,
|
|
||||||
Injectable,
|
|
||||||
InternalServerErrorException,
|
|
||||||
NotFoundException,
|
|
||||||
} from "@nestjs/common";
|
|
||||||
import { JwtService } from "@nestjs/jwt";
|
|
||||||
import * as crypto from "crypto";
|
|
||||||
import { createReadStream } from "fs";
|
|
||||||
import * as fs from "fs/promises";
|
|
||||||
import * as mime from "mime-types";
|
|
||||||
import { ConfigService } from "src/config/config.service";
|
import { ConfigService } from "src/config/config.service";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { Readable } from "stream";
|
||||||
import { validate as isValidUUID } from "uuid";
|
import { PrismaService } from "../prisma/prisma.service";
|
||||||
import { SHARE_DIRECTORY } from "../constants";
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FileService {
|
export class FileService {
|
||||||
constructor(
|
constructor(
|
||||||
private prisma: PrismaService,
|
private prisma: PrismaService,
|
||||||
private config: ConfigService,
|
private localFileService: LocalFileService,
|
||||||
|
private s3FileService: S3FileService,
|
||||||
|
private configService: ConfigService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
// Determine which service to use based on the current config value
|
||||||
|
// shareId is optional -> can be used to overwrite a storage provider
|
||||||
|
private getStorageService(
|
||||||
|
storageProvider?: string,
|
||||||
|
): S3FileService | LocalFileService {
|
||||||
|
if (storageProvider != undefined)
|
||||||
|
return storageProvider == "S3"
|
||||||
|
? this.s3FileService
|
||||||
|
: this.localFileService;
|
||||||
|
return this.configService.get("s3.enabled")
|
||||||
|
? this.s3FileService
|
||||||
|
: this.localFileService;
|
||||||
|
}
|
||||||
|
|
||||||
async create(
|
async create(
|
||||||
data: string,
|
data: string,
|
||||||
chunk: { index: number; total: number },
|
chunk: { index: number; total: number },
|
||||||
file: { id?: string; name: string },
|
file: {
|
||||||
|
id?: string;
|
||||||
|
name: string;
|
||||||
|
},
|
||||||
shareId: string,
|
shareId: string,
|
||||||
) {
|
) {
|
||||||
if (!file.id) {
|
const storageService = this.getStorageService();
|
||||||
file.id = crypto.randomUUID();
|
return storageService.create(data, chunk, file, shareId);
|
||||||
} else if (!isValidUUID(file.id)) {
|
|
||||||
throw new BadRequestException("Invalid file ID format");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const share = await this.prisma.share.findUnique({
|
async get(shareId: string, fileId: string): Promise<File> {
|
||||||
|
const share = await this.prisma.share.findFirst({
|
||||||
where: { id: shareId },
|
where: { id: shareId },
|
||||||
include: { files: true, reverseShare: true },
|
|
||||||
});
|
});
|
||||||
|
const storageService = this.getStorageService(share.storageProvider);
|
||||||
if (share.uploadLocked)
|
return storageService.get(shareId, fileId);
|
||||||
throw new BadRequestException("Share is already completed");
|
|
||||||
|
|
||||||
let diskFileSize: number;
|
|
||||||
try {
|
|
||||||
diskFileSize = (
|
|
||||||
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`)
|
|
||||||
).size;
|
|
||||||
} catch {
|
|
||||||
diskFileSize = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the sent chunk index and the expected chunk index doesn't match throw an error
|
|
||||||
const chunkSize = this.config.get("share.chunkSize");
|
|
||||||
const expectedChunkIndex = Math.ceil(diskFileSize / chunkSize);
|
|
||||||
|
|
||||||
if (expectedChunkIndex != chunk.index)
|
|
||||||
throw new BadRequestException({
|
|
||||||
message: "Unexpected chunk received",
|
|
||||||
error: "unexpected_chunk_index",
|
|
||||||
expectedChunkIndex,
|
|
||||||
});
|
|
||||||
|
|
||||||
const buffer = Buffer.from(data, "base64");
|
|
||||||
|
|
||||||
// Check if there is enough space on the server
|
|
||||||
const space = await fs.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),
|
|
||||||
0,
|
|
||||||
);
|
|
||||||
|
|
||||||
const shareSizeSum = fileSizeSum + diskFileSize + buffer.byteLength;
|
|
||||||
|
|
||||||
if (
|
|
||||||
shareSizeSum > this.config.get("share.maxSize") ||
|
|
||||||
(share.reverseShare?.maxShareSize &&
|
|
||||||
shareSizeSum > parseInt(share.reverseShare.maxShareSize))
|
|
||||||
) {
|
|
||||||
throw new HttpException(
|
|
||||||
"Max share size exceeded",
|
|
||||||
HttpStatus.PAYLOAD_TOO_LARGE,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
await fs.appendFile(
|
|
||||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
|
||||||
buffer,
|
|
||||||
);
|
|
||||||
|
|
||||||
const isLastChunk = chunk.index == chunk.total - 1;
|
|
||||||
if (isLastChunk) {
|
|
||||||
await fs.rename(
|
|
||||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
|
||||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}`,
|
|
||||||
);
|
|
||||||
const fileSize = (
|
|
||||||
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}`)
|
|
||||||
).size;
|
|
||||||
await this.prisma.file.create({
|
|
||||||
data: {
|
|
||||||
id: file.id,
|
|
||||||
name: file.name,
|
|
||||||
size: fileSize.toString(),
|
|
||||||
share: { connect: { id: shareId } },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
|
|
||||||
async get(shareId: string, fileId: string) {
|
|
||||||
const fileMetaData = await this.prisma.file.findUnique({
|
|
||||||
where: { id: fileId },
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!fileMetaData) throw new NotFoundException("File not found");
|
|
||||||
|
|
||||||
const file = createReadStream(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
|
||||||
|
|
||||||
return {
|
|
||||||
metaData: {
|
|
||||||
mimeType: mime.contentType(fileMetaData.name.split(".").pop()),
|
|
||||||
...fileMetaData,
|
|
||||||
size: fileMetaData.size,
|
|
||||||
},
|
|
||||||
file,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async remove(shareId: string, fileId: string) {
|
async remove(shareId: string, fileId: string) {
|
||||||
const fileMetaData = await this.prisma.file.findUnique({
|
const storageService = this.getStorageService();
|
||||||
where: { id: fileId },
|
return storageService.remove(shareId, fileId);
|
||||||
});
|
|
||||||
|
|
||||||
if (!fileMetaData) throw new NotFoundException("File not found");
|
|
||||||
|
|
||||||
await fs.unlink(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
|
||||||
|
|
||||||
await this.prisma.file.delete({ where: { id: fileId } });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteAllFiles(shareId: string) {
|
async deleteAllFiles(shareId: string) {
|
||||||
await fs.rm(`${SHARE_DIRECTORY}/${shareId}`, {
|
const storageService = this.getStorageService();
|
||||||
recursive: true,
|
return storageService.deleteAllFiles(shareId);
|
||||||
force: true,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getZip(shareId: string) {
|
getZip(shareId: string) {
|
||||||
return createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`);
|
const storageService = this.getStorageService();
|
||||||
|
return storageService.getZip(shareId) as Readable;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async streamToUint8Array(stream: Readable): Promise<Uint8Array> {
|
||||||
|
const chunks: Buffer[] = [];
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
|
||||||
|
stream.on("end", () => resolve(new Uint8Array(Buffer.concat(chunks))));
|
||||||
|
stream.on("error", reject);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface File {
|
||||||
|
metaData: {
|
||||||
|
id: string;
|
||||||
|
size: string;
|
||||||
|
createdAt: Date;
|
||||||
|
mimeType: string | false;
|
||||||
|
name: string;
|
||||||
|
shareId: string;
|
||||||
|
};
|
||||||
|
file: Readable;
|
||||||
|
}
|
||||||
|
|||||||
161
backend/src/file/local.service.ts
Normal file
161
backend/src/file/local.service.ts
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
import {
|
||||||
|
BadRequestException,
|
||||||
|
HttpException,
|
||||||
|
HttpStatus,
|
||||||
|
Injectable,
|
||||||
|
InternalServerErrorException,
|
||||||
|
NotFoundException,
|
||||||
|
} from "@nestjs/common";
|
||||||
|
import * as crypto from "crypto";
|
||||||
|
import { createReadStream } from "fs";
|
||||||
|
import * as fs from "fs/promises";
|
||||||
|
import * as mime from "mime-types";
|
||||||
|
import { ConfigService } from "src/config/config.service";
|
||||||
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
|
import { validate as isValidUUID } from "uuid";
|
||||||
|
import { SHARE_DIRECTORY } from "../constants";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class LocalFileService {
|
||||||
|
constructor(
|
||||||
|
private prisma: PrismaService,
|
||||||
|
private config: ConfigService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
async create(
|
||||||
|
data: string,
|
||||||
|
chunk: { index: number; total: number },
|
||||||
|
file: { id?: string; name: string },
|
||||||
|
shareId: string,
|
||||||
|
) {
|
||||||
|
if (!file.id) {
|
||||||
|
file.id = crypto.randomUUID();
|
||||||
|
} else if (!isValidUUID(file.id)) {
|
||||||
|
throw new BadRequestException("Invalid file ID format");
|
||||||
|
}
|
||||||
|
|
||||||
|
const share = await this.prisma.share.findUnique({
|
||||||
|
where: { id: shareId },
|
||||||
|
include: { files: true, reverseShare: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (share.uploadLocked)
|
||||||
|
throw new BadRequestException("Share is already completed");
|
||||||
|
|
||||||
|
let diskFileSize: number;
|
||||||
|
try {
|
||||||
|
diskFileSize = (
|
||||||
|
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`)
|
||||||
|
).size;
|
||||||
|
} catch {
|
||||||
|
diskFileSize = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the sent chunk index and the expected chunk index doesn't match throw an error
|
||||||
|
const chunkSize = this.config.get("share.chunkSize");
|
||||||
|
const expectedChunkIndex = Math.ceil(diskFileSize / chunkSize);
|
||||||
|
|
||||||
|
if (expectedChunkIndex != chunk.index)
|
||||||
|
throw new BadRequestException({
|
||||||
|
message: "Unexpected chunk received",
|
||||||
|
error: "unexpected_chunk_index",
|
||||||
|
expectedChunkIndex,
|
||||||
|
});
|
||||||
|
|
||||||
|
const buffer = Buffer.from(data, "base64");
|
||||||
|
|
||||||
|
// Check if there is enough space on the server
|
||||||
|
const space = await fs.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),
|
||||||
|
0,
|
||||||
|
);
|
||||||
|
|
||||||
|
const shareSizeSum = fileSizeSum + diskFileSize + buffer.byteLength;
|
||||||
|
|
||||||
|
if (
|
||||||
|
shareSizeSum > this.config.get("share.maxSize") ||
|
||||||
|
(share.reverseShare?.maxShareSize &&
|
||||||
|
shareSizeSum > parseInt(share.reverseShare.maxShareSize))
|
||||||
|
) {
|
||||||
|
throw new HttpException(
|
||||||
|
"Max share size exceeded",
|
||||||
|
HttpStatus.PAYLOAD_TOO_LARGE,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await fs.appendFile(
|
||||||
|
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
||||||
|
buffer,
|
||||||
|
);
|
||||||
|
|
||||||
|
const isLastChunk = chunk.index == chunk.total - 1;
|
||||||
|
if (isLastChunk) {
|
||||||
|
await fs.rename(
|
||||||
|
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
||||||
|
`${SHARE_DIRECTORY}/${shareId}/${file.id}`,
|
||||||
|
);
|
||||||
|
const fileSize = (
|
||||||
|
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}`)
|
||||||
|
).size;
|
||||||
|
await this.prisma.file.create({
|
||||||
|
data: {
|
||||||
|
id: file.id,
|
||||||
|
name: file.name,
|
||||||
|
size: fileSize.toString(),
|
||||||
|
share: { connect: { id: shareId } },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(shareId: string, fileId: string) {
|
||||||
|
const fileMetaData = await this.prisma.file.findUnique({
|
||||||
|
where: { id: fileId },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||||
|
|
||||||
|
const file = createReadStream(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
metaData: {
|
||||||
|
mimeType: mime.contentType(fileMetaData.name.split(".").pop()),
|
||||||
|
...fileMetaData,
|
||||||
|
size: fileMetaData.size,
|
||||||
|
},
|
||||||
|
file,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async remove(shareId: string, fileId: string) {
|
||||||
|
const fileMetaData = await this.prisma.file.findUnique({
|
||||||
|
where: { id: fileId },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||||
|
|
||||||
|
await fs.unlink(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||||
|
|
||||||
|
await this.prisma.file.delete({ where: { id: fileId } });
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteAllFiles(shareId: string) {
|
||||||
|
await fs.rm(`${SHARE_DIRECTORY}/${shareId}`, {
|
||||||
|
recursive: true,
|
||||||
|
force: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getZip(shareId: string) {
|
||||||
|
return createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`);
|
||||||
|
}
|
||||||
|
}
|
||||||
299
backend/src/file/s3.service.ts
Normal file
299
backend/src/file/s3.service.ts
Normal file
@@ -0,0 +1,299 @@
|
|||||||
|
import {
|
||||||
|
BadRequestException,
|
||||||
|
Injectable,
|
||||||
|
InternalServerErrorException,
|
||||||
|
NotFoundException,
|
||||||
|
Logger,
|
||||||
|
} from "@nestjs/common";
|
||||||
|
import {
|
||||||
|
AbortMultipartUploadCommand,
|
||||||
|
CompleteMultipartUploadCommand,
|
||||||
|
CreateMultipartUploadCommand,
|
||||||
|
DeleteObjectCommand,
|
||||||
|
DeleteObjectsCommand,
|
||||||
|
GetObjectCommand,
|
||||||
|
HeadObjectCommand,
|
||||||
|
ListObjectsV2Command,
|
||||||
|
S3Client,
|
||||||
|
UploadPartCommand,
|
||||||
|
UploadPartCommandOutput,
|
||||||
|
} from "@aws-sdk/client-s3";
|
||||||
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
|
import { ConfigService } from "src/config/config.service";
|
||||||
|
import * as crypto from "crypto";
|
||||||
|
import * as mime from "mime-types";
|
||||||
|
import { File } from "./file.service";
|
||||||
|
import { Readable } from "stream";
|
||||||
|
import { validate as isValidUUID } from "uuid";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class S3FileService {
|
||||||
|
private readonly logger = new Logger(S3FileService.name);
|
||||||
|
|
||||||
|
private multipartUploads: Record<
|
||||||
|
string,
|
||||||
|
{
|
||||||
|
uploadId: string;
|
||||||
|
parts: Array<{ ETag: string | undefined; PartNumber: number }>;
|
||||||
|
}
|
||||||
|
> = {};
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private prisma: PrismaService,
|
||||||
|
private config: ConfigService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
async create(
|
||||||
|
data: string,
|
||||||
|
chunk: { index: number; total: number },
|
||||||
|
file: { id?: string; name: string },
|
||||||
|
shareId: string,
|
||||||
|
) {
|
||||||
|
if (!file.id) {
|
||||||
|
file.id = crypto.randomUUID();
|
||||||
|
} else if (!isValidUUID(file.id)) {
|
||||||
|
throw new BadRequestException("Invalid file ID format");
|
||||||
|
}
|
||||||
|
|
||||||
|
const buffer = Buffer.from(data, "base64");
|
||||||
|
const key = `${this.getS3Path()}${shareId}/${file.name}`;
|
||||||
|
const bucketName = this.config.get("s3.bucketName");
|
||||||
|
const s3Instance = this.getS3Instance();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Initialize multipart upload if it's the first chunk
|
||||||
|
if (chunk.index === 0) {
|
||||||
|
const multipartInitResponse = await s3Instance.send(
|
||||||
|
new CreateMultipartUploadCommand({
|
||||||
|
Bucket: bucketName,
|
||||||
|
Key: key,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
const uploadId = multipartInitResponse.UploadId;
|
||||||
|
if (!uploadId) {
|
||||||
|
throw new Error("Failed to initialize multipart upload.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the uploadId and parts list in memory
|
||||||
|
this.multipartUploads[file.id] = {
|
||||||
|
uploadId,
|
||||||
|
parts: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the ongoing multipart upload
|
||||||
|
const multipartUpload = this.multipartUploads[file.id];
|
||||||
|
if (!multipartUpload) {
|
||||||
|
throw new InternalServerErrorException(
|
||||||
|
"Multipart upload session not found.",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const uploadId = multipartUpload.uploadId;
|
||||||
|
|
||||||
|
// Upload the current chunk
|
||||||
|
const partNumber = chunk.index + 1; // Part numbers start from 1
|
||||||
|
|
||||||
|
const uploadPartResponse: UploadPartCommandOutput = await s3Instance.send(
|
||||||
|
new UploadPartCommand({
|
||||||
|
Bucket: bucketName,
|
||||||
|
Key: key,
|
||||||
|
PartNumber: partNumber,
|
||||||
|
UploadId: uploadId,
|
||||||
|
Body: buffer,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Store the ETag and PartNumber for later completion
|
||||||
|
multipartUpload.parts.push({
|
||||||
|
ETag: uploadPartResponse.ETag,
|
||||||
|
PartNumber: partNumber,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Complete the multipart upload if it's the last chunk
|
||||||
|
if (chunk.index === chunk.total - 1) {
|
||||||
|
await s3Instance.send(
|
||||||
|
new CompleteMultipartUploadCommand({
|
||||||
|
Bucket: bucketName,
|
||||||
|
Key: key,
|
||||||
|
UploadId: uploadId,
|
||||||
|
MultipartUpload: {
|
||||||
|
Parts: multipartUpload.parts,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Remove the completed upload from memory
|
||||||
|
delete this.multipartUploads[file.id];
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Abort the multipart upload if it fails
|
||||||
|
const multipartUpload = this.multipartUploads[file.id];
|
||||||
|
if (multipartUpload) {
|
||||||
|
try {
|
||||||
|
await s3Instance.send(
|
||||||
|
new AbortMultipartUploadCommand({
|
||||||
|
Bucket: bucketName,
|
||||||
|
Key: key,
|
||||||
|
UploadId: multipartUpload.uploadId,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} catch (abortError) {
|
||||||
|
console.error("Error aborting multipart upload:", abortError);
|
||||||
|
}
|
||||||
|
delete this.multipartUploads[file.id];
|
||||||
|
}
|
||||||
|
this.logger.error(error);
|
||||||
|
throw new Error("Multipart upload failed. The upload has been aborted.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const isLastChunk = chunk.index == chunk.total - 1;
|
||||||
|
if (isLastChunk) {
|
||||||
|
const fileSize: number = await this.getFileSize(shareId, file.name);
|
||||||
|
|
||||||
|
await this.prisma.file.create({
|
||||||
|
data: {
|
||||||
|
id: file.id,
|
||||||
|
name: file.name,
|
||||||
|
size: fileSize.toString(),
|
||||||
|
share: { connect: { id: shareId } },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(shareId: string, fileId: string): Promise<File> {
|
||||||
|
const fileName = (
|
||||||
|
await this.prisma.file.findUnique({ where: { id: fileId } })
|
||||||
|
).name;
|
||||||
|
|
||||||
|
const s3Instance = this.getS3Instance();
|
||||||
|
const key = `${this.getS3Path()}${shareId}/${fileName}`;
|
||||||
|
const response = await s3Instance.send(
|
||||||
|
new GetObjectCommand({
|
||||||
|
Bucket: this.config.get("s3.bucketName"),
|
||||||
|
Key: key,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
metaData: {
|
||||||
|
id: fileId,
|
||||||
|
size: response.ContentLength?.toString() || "0",
|
||||||
|
name: fileName,
|
||||||
|
shareId: shareId,
|
||||||
|
createdAt: response.LastModified || new Date(),
|
||||||
|
mimeType:
|
||||||
|
mime.contentType(fileId.split(".").pop()) ||
|
||||||
|
"application/octet-stream",
|
||||||
|
},
|
||||||
|
file: response.Body as Readable,
|
||||||
|
} as File;
|
||||||
|
}
|
||||||
|
|
||||||
|
async remove(shareId: string, fileId: string) {
|
||||||
|
const fileMetaData = await this.prisma.file.findUnique({
|
||||||
|
where: { id: fileId },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||||
|
|
||||||
|
const key = `${this.getS3Path()}${shareId}/${fileMetaData.name}`;
|
||||||
|
const s3Instance = this.getS3Instance();
|
||||||
|
|
||||||
|
try {
|
||||||
|
await s3Instance.send(
|
||||||
|
new DeleteObjectCommand({
|
||||||
|
Bucket: this.config.get("s3.bucketName"),
|
||||||
|
Key: key,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error("Could not delete file from S3");
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.prisma.file.delete({ where: { id: fileId } });
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteAllFiles(shareId: string) {
|
||||||
|
const prefix = `${this.getS3Path()}${shareId}/`;
|
||||||
|
const s3Instance = this.getS3Instance();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// List all objects under the given prefix
|
||||||
|
const listResponse = await s3Instance.send(
|
||||||
|
new ListObjectsV2Command({
|
||||||
|
Bucket: this.config.get("s3.bucketName"),
|
||||||
|
Prefix: prefix,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!listResponse.Contents || listResponse.Contents.length === 0) {
|
||||||
|
throw new Error(`No files found for share ${shareId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract the keys of the files to be deleted
|
||||||
|
const objectsToDelete = listResponse.Contents.map((file) => ({
|
||||||
|
Key: file.Key!,
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Delete all files in a single request (up to 1000 objects at once)
|
||||||
|
await s3Instance.send(
|
||||||
|
new DeleteObjectsCommand({
|
||||||
|
Bucket: this.config.get("s3.bucketName"),
|
||||||
|
Delete: {
|
||||||
|
Objects: objectsToDelete,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error("Could not delete all files from S3");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getFileSize(shareId: string, fileName: string): Promise<number> {
|
||||||
|
const key = `${this.getS3Path()}${shareId}/${fileName}`;
|
||||||
|
const s3Instance = this.getS3Instance();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Get metadata of the file using HeadObjectCommand
|
||||||
|
const headObjectResponse = await s3Instance.send(
|
||||||
|
new HeadObjectCommand({
|
||||||
|
Bucket: this.config.get("s3.bucketName"),
|
||||||
|
Key: key,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Return ContentLength which is the file size in bytes
|
||||||
|
return headObjectResponse.ContentLength ?? 0;
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error("Could not retrieve file size");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getS3Instance(): S3Client {
|
||||||
|
return new S3Client({
|
||||||
|
endpoint: this.config.get("s3.endpoint"),
|
||||||
|
region: this.config.get("s3.region"),
|
||||||
|
credentials: {
|
||||||
|
accessKeyId: this.config.get("s3.key"),
|
||||||
|
secretAccessKey: this.config.get("s3.secret"),
|
||||||
|
},
|
||||||
|
forcePathStyle: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getZip() {
|
||||||
|
throw new BadRequestException(
|
||||||
|
"ZIP download is not supported with S3 storage",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getS3Path(): string {
|
||||||
|
const configS3Path = this.config.get("s3.bucketPath");
|
||||||
|
return configS3Path ? `${configS3Path}/` : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -70,7 +70,10 @@ export abstract class GenericOidcProvider implements OAuthProvider<OidcToken> {
|
|||||||
new URLSearchParams({
|
new URLSearchParams({
|
||||||
client_id: this.config.get(`oauth.${this.name}-clientId`),
|
client_id: this.config.get(`oauth.${this.name}-clientId`),
|
||||||
response_type: "code",
|
response_type: "code",
|
||||||
scope: "openid profile email",
|
scope:
|
||||||
|
this.name == "oidc"
|
||||||
|
? this.config.get(`oauth.oidc-scope`)
|
||||||
|
: "openid email profile",
|
||||||
redirect_uri: this.getRedirectUri(),
|
redirect_uri: this.getRedirectUri(),
|
||||||
state,
|
state,
|
||||||
nonce,
|
nonce,
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import { CreateShareDTO } from "./dto/createShare.dto";
|
|||||||
export class ShareService {
|
export class ShareService {
|
||||||
constructor(
|
constructor(
|
||||||
private prisma: PrismaService,
|
private prisma: PrismaService,
|
||||||
|
private configService: ConfigService,
|
||||||
private fileService: FileService,
|
private fileService: FileService,
|
||||||
private emailService: EmailService,
|
private emailService: EmailService,
|
||||||
private config: ConfigService,
|
private config: ConfigService,
|
||||||
@@ -86,6 +87,7 @@ export class ShareService {
|
|||||||
? share.recipients.map((email) => ({ email }))
|
? share.recipients.map((email) => ({ email }))
|
||||||
: [],
|
: [],
|
||||||
},
|
},
|
||||||
|
storageProvider: this.configService.get("s3.enabled") ? "S3" : "LOCAL",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -105,6 +107,8 @@ export class ShareService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async createZip(shareId: string) {
|
async createZip(shareId: string) {
|
||||||
|
if (this.config.get("s3.enabled")) return;
|
||||||
|
|
||||||
const path = `${SHARE_DIRECTORY}/${shareId}`;
|
const path = `${SHARE_DIRECTORY}/${shareId}`;
|
||||||
|
|
||||||
const files = await this.prisma.file.findMany({ where: { shareId } });
|
const files = await this.prisma.file.findMany({ where: { shareId } });
|
||||||
|
|||||||
@@ -49,8 +49,10 @@ For installation specific configuration, you can use environment variables. The
|
|||||||
| `PORT` | `3000` | The port on which the frontend listens. |
|
| `PORT` | `3000` | The port on which the frontend listens. |
|
||||||
| `API_URL` | `http://localhost:8080` | The URL of the backend for the frontend. |
|
| `API_URL` | `http://localhost:8080` | The URL of the backend for the frontend. |
|
||||||
|
|
||||||
#### Reverse Proxy (inside the Docker container)
|
#### Docker specific
|
||||||
|
Environment variables that are only available when running Pingvin Share with Docker.
|
||||||
|
|
||||||
| Variable | Default Value | Description |
|
| Variable | Default Value | Description |
|
||||||
| ------------- | ------------- | ----------------------------------------------------------------------------------------------------------- |
|
| ------------- | ------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||||
| `TRUST_PROXY` | `false` | Whether Pingvin Share is behind a reverse proxy. If set to `true`, the `X-Forwarded-For` header is trusted. |
|
| `TRUST_PROXY` | `false` | Whether Pingvin Share is behind a reverse proxy. If set to `true`, the `X-Forwarded-For` header is trusted. |
|
||||||
|
| `PUID` and `PGID` | `1000` | The user and group ID of the user who should run Pingvin Share inside the Docker container and owns the files that are mounted with the volume. You can get the `PUID` and `GUID` of your user on your host machine by using the command `id`. For more information see [this article](https://docs.linuxserver.io/general/understanding-puid-and-pgid/#using-the-variables). |
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ If our built-in providers don't meet your needs, you can create your own OAuth 2
|
|||||||
|
|
||||||
### 1. Create config
|
### 1. Create config
|
||||||
|
|
||||||
Add your config (client id, client secret, etc.) in [`config.seed.ts`](../backend/prisma/seed/config.seed.ts):
|
Add your config (client id, client secret, etc.) in [`config.seed.ts`](https://github.com/stonith404/pingvin-share/blob/main/backend/prisma/seed/config.seed.ts):
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
const configVariables: ConfigVariables = {
|
const configVariables: ConfigVariables = {
|
||||||
@@ -80,9 +80,9 @@ const configVariables: ConfigVariables = {
|
|||||||
|
|
||||||
#### Generic OpenID Connect
|
#### Generic OpenID Connect
|
||||||
|
|
||||||
If your provider supports OpenID connect, it's extremely easy to extend [`GenericOidcProvider`](../backend/src/oauth/provider/genericOidc.provider.ts) to add a new OpenID Connect provider.
|
If your provider supports OpenID connect, it's extremely easy to extend [`GenericOidcProvider`](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/genericOidc.provider.ts) to add a new OpenID Connect provider.
|
||||||
|
|
||||||
The [Google provider](../backend/src/oauth/provider/google.provider.ts) and [Microsoft provider](../backend/src/oauth/provider/microsoft.provider.ts) are good examples.
|
The [Google provider](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/google.provider.ts) and [Microsoft provider](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/microsoft.provider.ts) are good examples.
|
||||||
|
|
||||||
Here are some discovery URIs for popular providers:
|
Here are some discovery URIs for popular providers:
|
||||||
|
|
||||||
@@ -96,13 +96,13 @@ Here are some discovery URIs for popular providers:
|
|||||||
|
|
||||||
#### OAuth 2
|
#### OAuth 2
|
||||||
|
|
||||||
If your provider only supports OAuth 2, you can implement [`OAuthProvider`](../backend/src/oauth/provider/oauthProvider.interface.ts) interface to add a new OAuth 2 provider.
|
If your provider only supports OAuth 2, you can implement [`OAuthProvider`](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/oauthProvider.interface.ts) interface to add a new OAuth 2 provider.
|
||||||
|
|
||||||
The [GitHub provider](../backend/src/oauth/provider/github.provider.ts) and [Discord provider](../backend/src/oauth/provider/discord.provider.ts) are good examples.
|
The [GitHub provider](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/github.provider.ts) and [Discord provider](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/provider/discord.provider.ts) are good examples.
|
||||||
|
|
||||||
### 3. Register provider
|
### 3. Register provider
|
||||||
|
|
||||||
Register your provider in [`OAuthModule`](../backend/src/oauth/oauth.module.ts) and [`OAuthSignInDto`](../backend/src/oauth/dto/oauthSignIn.dto.ts):
|
Register your provider in [`OAuthModule`](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/oauth.module.ts) and [`OAuthSignInDto`](https://github.com/stonith404/pingvin-share/blob/main/backend/src/oauth/dto/oauthSignIn.dto.ts):
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
@Module({
|
@Module({
|
||||||
@@ -142,7 +142,7 @@ export interface OAuthSignInDto {
|
|||||||
|
|
||||||
### 4. Add frontend icon
|
### 4. Add frontend icon
|
||||||
|
|
||||||
Add an icon in [`oauth.util.tsx`](../frontend/src/utils/oauth.util.tsx).
|
Add an icon in [`oauth.util.tsx`](https://github.com/stonith404/pingvin-share/blob/main/frontend/src/utils/oauth.util.tsx).
|
||||||
|
|
||||||
```tsx
|
```tsx
|
||||||
const getOAuthIcon = (provider: string) => {
|
const getOAuthIcon = (provider: string) => {
|
||||||
@@ -155,7 +155,7 @@ const getOAuthIcon = (provider: string) => {
|
|||||||
|
|
||||||
### 5. Add i18n text
|
### 5. Add i18n text
|
||||||
|
|
||||||
Add keys below to your i18n text in [locale file](../frontend/src/i18n/translations/en-US.ts).
|
Add keys below to your i18n text in [locale file](https://github.com/stonith404/pingvin-share/blob/main/frontend/src/i18n/translations/en-US.ts).
|
||||||
|
|
||||||
- `signIn.oauth.YOUR_PROVIDER_NAME`
|
- `signIn.oauth.YOUR_PROVIDER_NAME`
|
||||||
- `account.card.oauth.YOUR_PROVIDER_NAME`
|
- `account.card.oauth.YOUR_PROVIDER_NAME`
|
||||||
|
|||||||
32
docs/docs/setup/s3.md
Normal file
32
docs/docs/setup/s3.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
id: s3
|
||||||
|
---
|
||||||
|
|
||||||
|
# S3
|
||||||
|
|
||||||
|
You are able to add your preferred S3 provider, like AWS, DigitalOcean, Exoscale or Infomaniak. However, if you don't
|
||||||
|
want to store your files on a S3 bucket, you don't have to. Consider that this feature is `DISABLED` per default.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
You can configure your S3 provider and bucket by going to the configuration page in your admin dashboard `/admin/config/s3`.
|
||||||
|
|
||||||
|
| Key | Description | Value |
|
||||||
|
|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------|
|
||||||
|
| enabled | This property enables the storage location on your configured S3 bucket. | `true` |
|
||||||
|
| endpoint | This property is the host from your S3 bucket. | `sos-ch-dk-2` |
|
||||||
|
| region | This property is the region where the bucket is located. | `sos-ch-dk-2.exo.io` |
|
||||||
|
| bucketName | This property is the name of your S3 bucket. | `my-bucket` |
|
||||||
|
| bucketPath | This property defines the folder where you want to store your files which are uploaded. Hint: Don't put a slash in the start or end. | `my/custom/path` (or leave it empty for root) |
|
||||||
|
| key | This is the access key you need to access to your bucket. | `key-asdf` |
|
||||||
|
| secret | This is the secret you need to access to your bucket. | `secret-asdf` |
|
||||||
|
|
||||||
|
Don't forget to save the configuration. :)
|
||||||
|
|
||||||
|
## ClamAV
|
||||||
|
|
||||||
|
Consider that ClamAV scans are not available at the moment if you store your files in a S3 bucket.
|
||||||
|
|
||||||
|
## ZIP
|
||||||
|
|
||||||
|
Creating ZIP archives is not currently supported if you store your files in an S3 bucket.
|
||||||
@@ -36,6 +36,10 @@ const sidebars: SidebarsConfig = {
|
|||||||
type: "doc",
|
type: "doc",
|
||||||
id: "setup/oauth2login",
|
id: "setup/oauth2login",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: "doc",
|
||||||
|
id: "setup/s3",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: "doc",
|
type: "doc",
|
||||||
id: "setup/upgrading",
|
id: "setup/upgrading",
|
||||||
|
|||||||
200
frontend/package-lock.json
generated
200
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "^11.13.3",
|
"@emotion/react": "^11.13.3",
|
||||||
"@emotion/server": "^11.11.0",
|
"@emotion/server": "^11.11.0",
|
||||||
@@ -2665,9 +2665,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.20.tgz",
|
||||||
"integrity": "sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q=="
|
"integrity": "sha512-JfDpuOCB0UBKlEgEy/H6qcBSzHimn/YWjUHzKl1jMeUO+QVRdzmTTl8gFJaNO87c8DXmVKhFCtwxQ9acqB3+Pw=="
|
||||||
},
|
},
|
||||||
"node_modules/@next/eslint-plugin-next": {
|
"node_modules/@next/eslint-plugin-next": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.12",
|
||||||
@@ -2725,9 +2725,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-darwin-arm64": {
|
"node_modules/@next/swc-darwin-arm64": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.20.tgz",
|
||||||
"integrity": "sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==",
|
"integrity": "sha512-WDfq7bmROa5cIlk6ZNonNdVhKmbCv38XteVFYsxea1vDJt3SnYGgxLGMTXQNfs5OkFvAhmfKKrwe7Y0Hs+rWOg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -2740,9 +2740,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-darwin-x64": {
|
"node_modules/@next/swc-darwin-x64": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.20.tgz",
|
||||||
"integrity": "sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==",
|
"integrity": "sha512-XIQlC+NAmJPfa2hruLvr1H1QJJeqOTDV+v7tl/jIdoFvqhoihvSNykLU/G6NMgoeo+e/H7p/VeWSOvMUHKtTIg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -2755,9 +2755,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.20.tgz",
|
||||||
"integrity": "sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==",
|
"integrity": "sha512-pnzBrHTPXIMm5QX3QC8XeMkpVuoAYOmyfsO4VlPn+0NrHraNuWjdhe+3xLq01xR++iCvX+uoeZmJDKcOxI201Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -2770,9 +2770,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-arm64-musl": {
|
"node_modules/@next/swc-linux-arm64-musl": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.20.tgz",
|
||||||
"integrity": "sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==",
|
"integrity": "sha512-WhJJAFpi6yqmUx1momewSdcm/iRXFQS0HU2qlUGlGE/+98eu7JWLD5AAaP/tkK1mudS/rH2f9E3WCEF2iYDydQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -2785,9 +2785,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-x64-gnu": {
|
"node_modules/@next/swc-linux-x64-gnu": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.20.tgz",
|
||||||
"integrity": "sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==",
|
"integrity": "sha512-ao5HCbw9+iG1Kxm8XsGa3X174Ahn17mSYBQlY6VGsdsYDAbz/ZP13wSLfvlYoIDn1Ger6uYA+yt/3Y9KTIupRg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -2800,9 +2800,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-x64-musl": {
|
"node_modules/@next/swc-linux-x64-musl": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.20.tgz",
|
||||||
"integrity": "sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==",
|
"integrity": "sha512-CXm/kpnltKTT7945np6Td3w7shj/92TMRPyI/VvveFe8+YE+/YOJ5hyAWK5rpx711XO1jBCgXl211TWaxOtkaA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -2815,9 +2815,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==",
|
"integrity": "sha512-upJn2HGQgKNDbXVfIgmqT2BN8f3z/mX8ddoyi1I565FHbfowVK5pnMEwauvLvaJf4iijvuKq3kw/b6E9oIVRWA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -2830,9 +2830,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-win32-ia32-msvc": {
|
"node_modules/@next/swc-win32-ia32-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==",
|
"integrity": "sha512-igQW/JWciTGJwj3G1ipalD2V20Xfx3ywQy17IV0ciOUBbFhNfyU1DILWsTi32c8KmqgIDviUEulW/yPb2FF90w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -2845,9 +2845,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-win32-x64-msvc": {
|
"node_modules/@next/swc-win32-x64-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==",
|
"integrity": "sha512-AFmqeLW6LtxeFTuoB+MXFeM5fm5052i3MU6xD0WzJDOwku6SkZaxb1bxjBaRC8uNqTRTSPl0yMFtjNowIVI67w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -4406,9 +4406,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^3.1.0",
|
"path-key": "^3.1.0",
|
||||||
@@ -7230,9 +7230,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.7",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
|
||||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -7259,11 +7259,11 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/next": {
|
"node_modules/next": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/next/-/next-14.2.20.tgz",
|
||||||
"integrity": "sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==",
|
"integrity": "sha512-yPvIiWsiyVYqJlSQxwmzMIReXn5HxFNq4+tlVQ812N1FbvhmE+fDpIAD7bcS2mGYQwPJ5vAsQouyme2eKsxaug==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@next/env": "14.2.12",
|
"@next/env": "14.2.20",
|
||||||
"@swc/helpers": "0.5.5",
|
"@swc/helpers": "0.5.5",
|
||||||
"busboy": "1.6.0",
|
"busboy": "1.6.0",
|
||||||
"caniuse-lite": "^1.0.30001579",
|
"caniuse-lite": "^1.0.30001579",
|
||||||
@@ -7278,15 +7278,15 @@
|
|||||||
"node": ">=18.17.0"
|
"node": ">=18.17.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@next/swc-darwin-arm64": "14.2.12",
|
"@next/swc-darwin-arm64": "14.2.20",
|
||||||
"@next/swc-darwin-x64": "14.2.12",
|
"@next/swc-darwin-x64": "14.2.20",
|
||||||
"@next/swc-linux-arm64-gnu": "14.2.12",
|
"@next/swc-linux-arm64-gnu": "14.2.20",
|
||||||
"@next/swc-linux-arm64-musl": "14.2.12",
|
"@next/swc-linux-arm64-musl": "14.2.20",
|
||||||
"@next/swc-linux-x64-gnu": "14.2.12",
|
"@next/swc-linux-x64-gnu": "14.2.20",
|
||||||
"@next/swc-linux-x64-musl": "14.2.12",
|
"@next/swc-linux-x64-musl": "14.2.20",
|
||||||
"@next/swc-win32-arm64-msvc": "14.2.12",
|
"@next/swc-win32-arm64-msvc": "14.2.20",
|
||||||
"@next/swc-win32-ia32-msvc": "14.2.12",
|
"@next/swc-win32-ia32-msvc": "14.2.20",
|
||||||
"@next/swc-win32-x64-msvc": "14.2.12"
|
"@next/swc-win32-x64-msvc": "14.2.20"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@opentelemetry/api": "^1.1.0",
|
"@opentelemetry/api": "^1.1.0",
|
||||||
@@ -11840,9 +11840,9 @@
|
|||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@next/env": {
|
"@next/env": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.20.tgz",
|
||||||
"integrity": "sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q=="
|
"integrity": "sha512-JfDpuOCB0UBKlEgEy/H6qcBSzHimn/YWjUHzKl1jMeUO+QVRdzmTTl8gFJaNO87c8DXmVKhFCtwxQ9acqB3+Pw=="
|
||||||
},
|
},
|
||||||
"@next/eslint-plugin-next": {
|
"@next/eslint-plugin-next": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.12",
|
||||||
@@ -11887,57 +11887,57 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@next/swc-darwin-arm64": {
|
"@next/swc-darwin-arm64": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.20.tgz",
|
||||||
"integrity": "sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==",
|
"integrity": "sha512-WDfq7bmROa5cIlk6ZNonNdVhKmbCv38XteVFYsxea1vDJt3SnYGgxLGMTXQNfs5OkFvAhmfKKrwe7Y0Hs+rWOg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-darwin-x64": {
|
"@next/swc-darwin-x64": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.20.tgz",
|
||||||
"integrity": "sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==",
|
"integrity": "sha512-XIQlC+NAmJPfa2hruLvr1H1QJJeqOTDV+v7tl/jIdoFvqhoihvSNykLU/G6NMgoeo+e/H7p/VeWSOvMUHKtTIg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-arm64-gnu": {
|
"@next/swc-linux-arm64-gnu": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.20.tgz",
|
||||||
"integrity": "sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==",
|
"integrity": "sha512-pnzBrHTPXIMm5QX3QC8XeMkpVuoAYOmyfsO4VlPn+0NrHraNuWjdhe+3xLq01xR++iCvX+uoeZmJDKcOxI201Q==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-arm64-musl": {
|
"@next/swc-linux-arm64-musl": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.20.tgz",
|
||||||
"integrity": "sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==",
|
"integrity": "sha512-WhJJAFpi6yqmUx1momewSdcm/iRXFQS0HU2qlUGlGE/+98eu7JWLD5AAaP/tkK1mudS/rH2f9E3WCEF2iYDydQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-x64-gnu": {
|
"@next/swc-linux-x64-gnu": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.20.tgz",
|
||||||
"integrity": "sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==",
|
"integrity": "sha512-ao5HCbw9+iG1Kxm8XsGa3X174Ahn17mSYBQlY6VGsdsYDAbz/ZP13wSLfvlYoIDn1Ger6uYA+yt/3Y9KTIupRg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-linux-x64-musl": {
|
"@next/swc-linux-x64-musl": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.20.tgz",
|
||||||
"integrity": "sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==",
|
"integrity": "sha512-CXm/kpnltKTT7945np6Td3w7shj/92TMRPyI/VvveFe8+YE+/YOJ5hyAWK5rpx711XO1jBCgXl211TWaxOtkaA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-arm64-msvc": {
|
"@next/swc-win32-arm64-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==",
|
"integrity": "sha512-upJn2HGQgKNDbXVfIgmqT2BN8f3z/mX8ddoyi1I565FHbfowVK5pnMEwauvLvaJf4iijvuKq3kw/b6E9oIVRWA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-ia32-msvc": {
|
"@next/swc-win32-ia32-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==",
|
"integrity": "sha512-igQW/JWciTGJwj3G1ipalD2V20Xfx3ywQy17IV0ciOUBbFhNfyU1DILWsTi32c8KmqgIDviUEulW/yPb2FF90w==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@next/swc-win32-x64-msvc": {
|
"@next/swc-win32-x64-msvc": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.20.tgz",
|
||||||
"integrity": "sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==",
|
"integrity": "sha512-AFmqeLW6LtxeFTuoB+MXFeM5fm5052i3MU6xD0WzJDOwku6SkZaxb1bxjBaRC8uNqTRTSPl0yMFtjNowIVI67w==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@nodelib/fs.scandir": {
|
"@nodelib/fs.scandir": {
|
||||||
@@ -13106,9 +13106,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cross-spawn": {
|
"cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"path-key": "^3.1.0",
|
"path-key": "^3.1.0",
|
||||||
@@ -15164,9 +15164,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nanoid": {
|
"nanoid": {
|
||||||
"version": "3.3.7",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
|
||||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
|
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="
|
||||||
},
|
},
|
||||||
"natural-compare": {
|
"natural-compare": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
@@ -15181,20 +15181,20 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"next": {
|
"next": {
|
||||||
"version": "14.2.12",
|
"version": "14.2.20",
|
||||||
"resolved": "https://registry.npmjs.org/next/-/next-14.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/next/-/next-14.2.20.tgz",
|
||||||
"integrity": "sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==",
|
"integrity": "sha512-yPvIiWsiyVYqJlSQxwmzMIReXn5HxFNq4+tlVQ812N1FbvhmE+fDpIAD7bcS2mGYQwPJ5vAsQouyme2eKsxaug==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@next/env": "14.2.12",
|
"@next/env": "14.2.20",
|
||||||
"@next/swc-darwin-arm64": "14.2.12",
|
"@next/swc-darwin-arm64": "14.2.20",
|
||||||
"@next/swc-darwin-x64": "14.2.12",
|
"@next/swc-darwin-x64": "14.2.20",
|
||||||
"@next/swc-linux-arm64-gnu": "14.2.12",
|
"@next/swc-linux-arm64-gnu": "14.2.20",
|
||||||
"@next/swc-linux-arm64-musl": "14.2.12",
|
"@next/swc-linux-arm64-musl": "14.2.20",
|
||||||
"@next/swc-linux-x64-gnu": "14.2.12",
|
"@next/swc-linux-x64-gnu": "14.2.20",
|
||||||
"@next/swc-linux-x64-musl": "14.2.12",
|
"@next/swc-linux-x64-musl": "14.2.20",
|
||||||
"@next/swc-win32-arm64-msvc": "14.2.12",
|
"@next/swc-win32-arm64-msvc": "14.2.20",
|
||||||
"@next/swc-win32-ia32-msvc": "14.2.12",
|
"@next/swc-win32-ia32-msvc": "14.2.20",
|
||||||
"@next/swc-win32-x64-msvc": "14.2.12",
|
"@next/swc-win32-x64-msvc": "14.2.20",
|
||||||
"@swc/helpers": "0.5.5",
|
"@swc/helpers": "0.5.5",
|
||||||
"busboy": "1.6.0",
|
"busboy": "1.6.0",
|
||||||
"caniuse-lite": "^1.0.30001579",
|
"caniuse-lite": "^1.0.30001579",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ const CreateEnableTotpModal = ({
|
|||||||
<Button
|
<Button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigator.clipboard.writeText(options.secret);
|
navigator.clipboard.writeText(options.secret);
|
||||||
toast.success("Copied to clipboard");
|
toast.success(t("common.notify.copied"));
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{options.secret}
|
{options.secret}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import {
|
|||||||
TbMail,
|
TbMail,
|
||||||
TbShare,
|
TbShare,
|
||||||
TbSocial,
|
TbSocial,
|
||||||
TbSquare,
|
TbBucket,
|
||||||
TbBinaryTree,
|
TbBinaryTree,
|
||||||
TbSettings,
|
TbSettings,
|
||||||
} from "react-icons/tb";
|
} from "react-icons/tb";
|
||||||
@@ -29,6 +29,7 @@ const categories = [
|
|||||||
{ name: "SMTP", icon: <TbAt /> },
|
{ name: "SMTP", icon: <TbAt /> },
|
||||||
{ name: "OAuth", icon: <TbSocial /> },
|
{ name: "OAuth", icon: <TbSocial /> },
|
||||||
{ name: "LDAP", icon: <TbBinaryTree /> },
|
{ name: "LDAP", icon: <TbBinaryTree /> },
|
||||||
|
{ name: "S3", icon: <TbBucket /> },
|
||||||
];
|
];
|
||||||
|
|
||||||
const useStyles = createStyles((theme) => ({
|
const useStyles = createStyles((theme) => ({
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ const ManageShareTable = ({
|
|||||||
clipboard.copy(
|
clipboard.copy(
|
||||||
`${window.location.origin}/s/${share.id}`,
|
`${window.location.origin}/s/${share.id}`,
|
||||||
);
|
);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(t("common.notify.copied-link"));
|
||||||
} else {
|
} else {
|
||||||
showShareLinkModal(modals, share.id);
|
showShareLinkModal(modals, share.id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ import { useClipboard } from "@mantine/hooks";
|
|||||||
import { useModals } from "@mantine/modals";
|
import { useModals } from "@mantine/modals";
|
||||||
import { Dispatch, SetStateAction, useEffect, useState } from "react";
|
import { Dispatch, SetStateAction, useEffect, useState } from "react";
|
||||||
import { TbDownload, TbEye, TbLink } from "react-icons/tb";
|
import { TbDownload, TbEye, TbLink } from "react-icons/tb";
|
||||||
|
import { FormattedMessage } from "react-intl";
|
||||||
import useConfig from "../../hooks/config.hook";
|
import useConfig from "../../hooks/config.hook";
|
||||||
|
import useTranslate from "../../hooks/useTranslate.hook";
|
||||||
import shareService from "../../services/share.service";
|
import shareService from "../../services/share.service";
|
||||||
import { FileMetaData } from "../../types/File.type";
|
import { FileMetaData } from "../../types/File.type";
|
||||||
import { Share } from "../../types/share.type";
|
import { Share } from "../../types/share.type";
|
||||||
@@ -19,8 +21,6 @@ import { byteToHumanSizeString } from "../../utils/fileSize.util";
|
|||||||
import toast from "../../utils/toast.util";
|
import toast from "../../utils/toast.util";
|
||||||
import TableSortIcon, { TableSort } from "../core/SortIcon";
|
import TableSortIcon, { TableSort } from "../core/SortIcon";
|
||||||
import showFilePreviewModal from "./modals/showFilePreviewModal";
|
import showFilePreviewModal from "./modals/showFilePreviewModal";
|
||||||
import useTranslate from "../../hooks/useTranslate.hook";
|
|
||||||
import { FormattedMessage } from "react-intl";
|
|
||||||
|
|
||||||
const FileList = ({
|
const FileList = ({
|
||||||
files,
|
files,
|
||||||
@@ -71,7 +71,7 @@ const FileList = ({
|
|||||||
|
|
||||||
if (window.isSecureContext) {
|
if (window.isSecureContext) {
|
||||||
clipboard.copy(link);
|
clipboard.copy(link);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(t("common.notify.copied-link"));
|
||||||
} else {
|
} else {
|
||||||
modals.openModal({
|
modals.openModal({
|
||||||
title: t("share.modal.file-link"),
|
title: t("share.modal.file-link"),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { ActionIcon, TextInput, Tooltip } from "@mantine/core";
|
import { ActionIcon, TextInput, Tooltip } from "@mantine/core";
|
||||||
import { useClipboard } from "@mantine/hooks";
|
import { useClipboard } from "@mantine/hooks";
|
||||||
import { useRef, useState } from "react";
|
import { useRef, useState } from "react";
|
||||||
import { TbCheck, TbCopy } from "react-icons/tb";
|
|
||||||
import { IoOpenOutline } from "react-icons/io5";
|
import { IoOpenOutline } from "react-icons/io5";
|
||||||
|
import { TbCheck, TbCopy } from "react-icons/tb";
|
||||||
import useTranslate from "../../hooks/useTranslate.hook";
|
import useTranslate from "../../hooks/useTranslate.hook";
|
||||||
import toast from "../../utils/toast.util";
|
import toast from "../../utils/toast.util";
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ function CopyTextField(props: { link: string }) {
|
|||||||
|
|
||||||
const copyLink = () => {
|
const copyLink = () => {
|
||||||
clipboard.copy(props.link);
|
clipboard.copy(props.link);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(t("common.notify.copied-link"));
|
||||||
if (timerRef.current) clearTimeout(timerRef.current);
|
if (timerRef.current) clearTimeout(timerRef.current);
|
||||||
timerRef.current = setTimeout(() => {
|
timerRef.current = setTimeout(() => {
|
||||||
setCheckState(false);
|
setCheckState(false);
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ const showCreateUploadModal = (
|
|||||||
allowUnauthenticatedShares: boolean;
|
allowUnauthenticatedShares: boolean;
|
||||||
enableEmailRecepients: boolean;
|
enableEmailRecepients: boolean;
|
||||||
maxExpirationInHours: number;
|
maxExpirationInHours: number;
|
||||||
|
shareIdLength: number;
|
||||||
simplified: boolean;
|
simplified: boolean;
|
||||||
},
|
},
|
||||||
files: FileUpload[],
|
files: FileUpload[],
|
||||||
@@ -72,18 +73,28 @@ const showCreateUploadModal = (
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const generateLink = () =>
|
const generateShareId = (length: number = 16) => {
|
||||||
Buffer.from(Math.random().toString(), "utf8")
|
const chars =
|
||||||
.toString("base64")
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||||
.substring(10, 17);
|
let result = "";
|
||||||
|
const randomArray = new Uint8Array(length >= 3 ? length : 3);
|
||||||
|
crypto.getRandomValues(randomArray);
|
||||||
|
randomArray.forEach((number) => {
|
||||||
|
result += chars[number % chars.length];
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
const generateAvailableLink = async (times = 10): Promise<string> => {
|
const generateAvailableLink = async (
|
||||||
|
shareIdLength: number,
|
||||||
|
times: number = 10,
|
||||||
|
): Promise<string> => {
|
||||||
if (times <= 0) {
|
if (times <= 0) {
|
||||||
throw new Error("Could not generate available link");
|
throw new Error("Could not generate available link");
|
||||||
}
|
}
|
||||||
const _link = generateLink();
|
const _link = generateShareId(shareIdLength);
|
||||||
if (!(await shareService.isShareIdAvailable(_link))) {
|
if (!(await shareService.isShareIdAvailable(_link))) {
|
||||||
return await generateAvailableLink(times - 1);
|
return await generateAvailableLink(shareIdLength, times - 1);
|
||||||
} else {
|
} else {
|
||||||
return _link;
|
return _link;
|
||||||
}
|
}
|
||||||
@@ -102,12 +113,13 @@ const CreateUploadModalBody = ({
|
|||||||
allowUnauthenticatedShares: boolean;
|
allowUnauthenticatedShares: boolean;
|
||||||
enableEmailRecepients: boolean;
|
enableEmailRecepients: boolean;
|
||||||
maxExpirationInHours: number;
|
maxExpirationInHours: number;
|
||||||
|
shareIdLength: number;
|
||||||
};
|
};
|
||||||
}) => {
|
}) => {
|
||||||
const modals = useModals();
|
const modals = useModals();
|
||||||
const t = useTranslate();
|
const t = useTranslate();
|
||||||
|
|
||||||
const generatedLink = generateLink();
|
const generatedLink = generateShareId(options.shareIdLength);
|
||||||
|
|
||||||
const [showNotSignedInAlert, setShowNotSignedInAlert] = useState(true);
|
const [showNotSignedInAlert, setShowNotSignedInAlert] = useState(true);
|
||||||
|
|
||||||
@@ -229,13 +241,19 @@ const CreateUploadModalBody = ({
|
|||||||
<Button
|
<Button
|
||||||
style={{ flex: "0 0 auto" }}
|
style={{ flex: "0 0 auto" }}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => form.setFieldValue("link", generateLink())}
|
onClick={() =>
|
||||||
|
form.setFieldValue(
|
||||||
|
"link",
|
||||||
|
generateShareId(options.shareIdLength),
|
||||||
|
)
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<FormattedMessage id="common.button.generate" />
|
<FormattedMessage id="common.button.generate" />
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Text
|
<Text
|
||||||
|
truncate
|
||||||
italic
|
italic
|
||||||
size="xs"
|
size="xs"
|
||||||
sx={(theme) => ({
|
sx={(theme) => ({
|
||||||
@@ -461,6 +479,7 @@ const SimplifiedCreateUploadModalModal = ({
|
|||||||
allowUnauthenticatedShares: boolean;
|
allowUnauthenticatedShares: boolean;
|
||||||
enableEmailRecepients: boolean;
|
enableEmailRecepients: boolean;
|
||||||
maxExpirationInHours: number;
|
maxExpirationInHours: number;
|
||||||
|
shareIdLength: number;
|
||||||
};
|
};
|
||||||
}) => {
|
}) => {
|
||||||
const modals = useModals();
|
const modals = useModals();
|
||||||
@@ -485,10 +504,12 @@ const SimplifiedCreateUploadModalModal = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = form.onSubmit(async (values) => {
|
const onSubmit = form.onSubmit(async (values) => {
|
||||||
const link = await generateAvailableLink().catch(() => {
|
const link = await generateAvailableLink(options.shareIdLength).catch(
|
||||||
|
() => {
|
||||||
toast.error(t("upload.modal.link.error.taken"));
|
toast.error(t("upload.modal.link.error.taken"));
|
||||||
return undefined;
|
return undefined;
|
||||||
});
|
},
|
||||||
|
);
|
||||||
|
|
||||||
if (!link) {
|
if (!link) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import arabic from "./translations/ar-EG";
|
import arabic from "./translations/ar-EG";
|
||||||
|
import czech from "./translations/cs-CZ";
|
||||||
import danish from "./translations/da-DK";
|
import danish from "./translations/da-DK";
|
||||||
import german from "./translations/de-DE";
|
import german from "./translations/de-DE";
|
||||||
import greek from "./translations/el-GR";
|
import greek from "./translations/el-GR";
|
||||||
@@ -6,6 +7,7 @@ import english from "./translations/en-US";
|
|||||||
import spanish from "./translations/es-ES";
|
import spanish from "./translations/es-ES";
|
||||||
import finnish from "./translations/fi-FI";
|
import finnish from "./translations/fi-FI";
|
||||||
import french from "./translations/fr-FR";
|
import french from "./translations/fr-FR";
|
||||||
|
import croatian from "./translations/hr-HR";
|
||||||
import hungarian from "./translations/hu-HU";
|
import hungarian from "./translations/hu-HU";
|
||||||
import italian from "./translations/it-IT";
|
import italian from "./translations/it-IT";
|
||||||
import japanese from "./translations/ja-JP";
|
import japanese from "./translations/ja-JP";
|
||||||
@@ -15,17 +17,15 @@ import polish from "./translations/pl-PL";
|
|||||||
import portuguese from "./translations/pt-BR";
|
import portuguese from "./translations/pt-BR";
|
||||||
import russian from "./translations/ru-RU";
|
import russian from "./translations/ru-RU";
|
||||||
import slovenian from "./translations/sl-SI";
|
import slovenian from "./translations/sl-SI";
|
||||||
|
import serbianLatin from "./translations/sr-CS";
|
||||||
import serbianCyrillic from "./translations/sr-SP";
|
import serbianCyrillic from "./translations/sr-SP";
|
||||||
import swedish from "./translations/sv-SE";
|
import swedish from "./translations/sv-SE";
|
||||||
import thai from "./translations/th-TH";
|
import thai from "./translations/th-TH";
|
||||||
|
import turkish from "./translations/tr-TR";
|
||||||
import ukrainian from "./translations/uk-UA";
|
import ukrainian from "./translations/uk-UA";
|
||||||
|
import viatnamese from "./translations/vi-VN";
|
||||||
import chineseSimplified from "./translations/zh-CN";
|
import chineseSimplified from "./translations/zh-CN";
|
||||||
import chineseTraditional from "./translations/zh-TW";
|
import chineseTraditional from "./translations/zh-TW";
|
||||||
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 serbianLatin from "./translations/sr-CS";
|
|
||||||
|
|
||||||
export const LOCALES = {
|
export const LOCALES = {
|
||||||
ENGLISH: {
|
ENGLISH: {
|
||||||
@@ -163,9 +163,9 @@ export const LOCALES = {
|
|||||||
code: "vi-VN",
|
code: "vi-VN",
|
||||||
messages: viatnamese,
|
messages: viatnamese,
|
||||||
},
|
},
|
||||||
BULGARIAN: {
|
CROATIAN: {
|
||||||
name: "Български",
|
name: "Hrvatski",
|
||||||
code: "bg-BG",
|
code: "hr-HR",
|
||||||
messages: bulgarian,
|
messages: croatian,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "عنوان الرسالة لمستلمي المشاركة",
|
"admin.config.email.share-recipients-subject": "عنوان الرسالة لمستلمي المشاركة",
|
||||||
"admin.config.email.share-recipients-subject.description": "عنوان البريد الذي سيُرسَل لمستقبِلي المشاركة.",
|
"admin.config.email.share-recipients-subject.description": "عنوان البريد الذي سيُرسَل لمستقبِلي المشاركة.",
|
||||||
"admin.config.email.share-recipients-message": "رسالتك لمستقبِلي المشاركة",
|
"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": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email 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": "عنوان المشاركة العكسية",
|
||||||
"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": "رسالة المشاركة العكسية",
|
"admin.config.email.reverse-share-message": "رسالة المشاركة العكسية",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "إتاحة إنشاء المشاركات للمستخدمين غير الموثقين",
|
"admin.config.share.allow-unauthenticated-shares.description": "إتاحة إنشاء المشاركات للمستخدمين غير الموثقين",
|
||||||
"admin.config.share.max-expiration": "أبعد زمن لانتهاء الصلاحية",
|
"admin.config.share.max-expiration": "أبعد زمن لانتهاء الصلاحية",
|
||||||
"admin.config.share.max-expiration.description": "أطول زمن لانتهاء صلاحية المشاركات بالساعات. الصفر يعني أن المشاركة لن تنتهي صلاحيتها.",
|
"admin.config.share.max-expiration.description": "أطول زمن لانتهاء صلاحية المشاركات بالساعات. الصفر يعني أن المشاركة لن تنتهي صلاحيتها.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "أكبر حجم",
|
"admin.config.share.max-size": "أكبر حجم",
|
||||||
"admin.config.share.max-size.description": "أكبر حجم للمشاركة مقيسًا بالبايت",
|
"admin.config.share.max-size.description": "أكبر حجم للمشاركة مقيسًا بالبايت",
|
||||||
"admin.config.share.zip-compression-level": "مستوى ضغط الZip",
|
"admin.config.share.zip-compression-level": "مستوى ضغط الZip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "رابط الاستكشاف لتطبيق OpenID Connect OAuth",
|
"admin.config.oauth.oidc-discovery-uri.description": "رابط الاستكشاف لتطبيق OpenID Connect OAuth",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "طلب اسم المستخدم في رمز معرف OpenID Connect. إذا كنت لا تعرف معنى هذا الإعداد، اتركه فارغًا.",
|
"admin.config.oauth.oidc-username-claim.description": "طلب اسم المستخدم في رمز معرف OpenID Connect. إذا كنت لا تعرف معنى هذا الإعداد، اتركه فارغًا.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "هذه الصفحة غير موجودة.",
|
"404.description": "هذه الصفحة غير موجودة.",
|
||||||
"404.button.home": "أعدني للصفحة الرئيسية",
|
"404.button.home": "أعدني للصفحة الرئيسية",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "العودة",
|
"common.button.go-back": "العودة",
|
||||||
"common.button.go-home": "العودة للصفحة الرئيسية",
|
"common.button.go-home": "العودة للصفحة الرئيسية",
|
||||||
"common.notify.copied": "تم نسخ الرابط إلى الحافظة",
|
"common.notify.copied": "تم نسخ الرابط إلى الحافظة",
|
||||||
|
"common.notify.copied-link": "تم نسخ الرابط إلى الحافظة",
|
||||||
"common.success": "تم",
|
"common.success": "تم",
|
||||||
"common.error": "خطأ",
|
"common.error": "خطأ",
|
||||||
"common.error.unknown": "حدث خطأ غير معروف",
|
"common.error.unknown": "حدث خطأ غير معروف",
|
||||||
|
|||||||
@@ -1,487 +0,0 @@
|
|||||||
export default {
|
|
||||||
// Navbar
|
|
||||||
"navbar.upload": "Upload",
|
|
||||||
"navbar.signin": "Sign in",
|
|
||||||
"navbar.home": "Home",
|
|
||||||
"navbar.signup": "Sign up",
|
|
||||||
"navbar.links.shares": "My shares",
|
|
||||||
"navbar.links.reverse": "Обратни споделяния",
|
|
||||||
"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.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.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.button.start": "Get started",
|
|
||||||
"home.button.source": "Source code",
|
|
||||||
// END /
|
|
||||||
// /auth/signin
|
|
||||||
"signin.title": "Welcome back",
|
|
||||||
"signin.description": "You don't have an account yet?",
|
|
||||||
"signin.button.signup": "Sign up",
|
|
||||||
"signin.input.email-or-username": "Email or username",
|
|
||||||
"signin.input.email-or-username.placeholder": "Your email or username",
|
|
||||||
"signin.input.password": "Password",
|
|
||||||
"signin.input.password.placeholder": "Your password",
|
|
||||||
"signin.button.submit": "Вписване",
|
|
||||||
"signIn.notify.totp-required.title": "Two-factor authentication required",
|
|
||||||
"signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
|
|
||||||
"signIn.oauth.or": "OR",
|
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
|
||||||
"signIn.oauth.github": "GitHub",
|
|
||||||
"signIn.oauth.google": "Google",
|
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
|
||||||
"signIn.oauth.discord": "Discord",
|
|
||||||
"signIn.oauth.oidc": "OpenID",
|
|
||||||
// END /auth/signin
|
|
||||||
// /auth/signup
|
|
||||||
"signup.title": "Create an account",
|
|
||||||
"signup.description": "Already have an account?",
|
|
||||||
"signup.button.signin": "Sign in",
|
|
||||||
"signup.input.username": "Username",
|
|
||||||
"signup.input.username.placeholder": "Your username",
|
|
||||||
"signup.input.email": "Email",
|
|
||||||
"signup.input.email.placeholder": "Your email",
|
|
||||||
"signup.button.submit": "Let's get started",
|
|
||||||
// END /auth/signup
|
|
||||||
// /auth/totp
|
|
||||||
"totp.title": "TOTP Authentication",
|
|
||||||
"totp.button.signIn": "Sign in",
|
|
||||||
// END /auth/totp
|
|
||||||
// /auth/reset-password
|
|
||||||
"resetPassword.title": "Forgot your password?",
|
|
||||||
"resetPassword.description": "Enter your email to reset your password.",
|
|
||||||
"resetPassword.notify.success": "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": "Въведете нова парола",
|
|
||||||
"resetPassword.input.password": "Нова парола",
|
|
||||||
"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.notify.password.success": "Password changed successfully",
|
|
||||||
"account.card.oauth.title": "Social login",
|
|
||||||
"account.card.oauth.github": "GitHub",
|
|
||||||
"account.card.oauth.google": "Google",
|
|
||||||
"account.card.oauth.microsoft": "Microsoft",
|
|
||||||
"account.card.oauth.discord": "Discord",
|
|
||||||
"account.card.oauth.oidc": "OpenID",
|
|
||||||
"account.card.oauth.link": "Link",
|
|
||||||
"account.card.oauth.unlink": "Unlink",
|
|
||||||
"account.card.oauth.unlinked": "Unlinked",
|
|
||||||
"account.modal.unlink.title": "Unlink account",
|
|
||||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your 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.button.start": "Start",
|
|
||||||
"account.modal.totp.title": "Enable TOTP",
|
|
||||||
"account.modal.totp.step1": "Step 1: Add your authenticator",
|
|
||||||
"account.modal.totp.step2": "Step 2: Validate your code",
|
|
||||||
"account.modal.totp.enterManually": "Enter manually",
|
|
||||||
"account.modal.totp.code": "Code",
|
|
||||||
"common.button.clickToCopy": "Click to copy",
|
|
||||||
"account.modal.totp.verify": "Verify",
|
|
||||||
"account.notify.totp.disable": "TOTP disabled successfully",
|
|
||||||
"account.notify.totp.enable": "TOTP enabled successfully",
|
|
||||||
"account.card.language.title": "Language",
|
|
||||||
"account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
|
|
||||||
"account.card.color.title": "Color scheme",
|
|
||||||
// ThemeSwitcher.tsx
|
|
||||||
"account.theme.dark": "Dark",
|
|
||||||
"account.theme.light": "Light",
|
|
||||||
"account.theme.system": "System",
|
|
||||||
"account.button.delete": "Delete Account",
|
|
||||||
"account.modal.delete.title": "Delete Account",
|
|
||||||
"account.modal.delete.description": "Do you really want to delete your account including all your active shares?",
|
|
||||||
// END /account
|
|
||||||
// /account/shares
|
|
||||||
"account.shares.title": "My shares",
|
|
||||||
"account.shares.title.empty": "It's empty here 👀",
|
|
||||||
"account.shares.description.empty": "You don't have any shares.",
|
|
||||||
"account.shares.button.create": "Create one",
|
|
||||||
"account.shares.info.title": "Share informations",
|
|
||||||
"account.shares.table.id": "ID",
|
|
||||||
"account.shares.table.name": "Име",
|
|
||||||
"account.shares.table.description": "Description",
|
|
||||||
"account.shares.table.visitors": "Посетители",
|
|
||||||
"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?",
|
|
||||||
// END /account/shares
|
|
||||||
// /account/reverseShares
|
|
||||||
"account.reverseShares.title": "Reverse shares",
|
|
||||||
"account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
|
|
||||||
"account.reverseShares.title.empty": "It's empty here 👀",
|
|
||||||
"account.reverseShares.description.empty": "You don't have any reverse shares.",
|
|
||||||
// showCreateReverseShareModal.tsx
|
|
||||||
"account.reverseShares.modal.title": "Create reverse share",
|
|
||||||
"account.reverseShares.modal.expiration.label": "Expiration",
|
|
||||||
"account.reverseShares.modal.expiration.minute-singular": "Minute",
|
|
||||||
"account.reverseShares.modal.expiration.minute-plural": "Minutes",
|
|
||||||
"account.reverseShares.modal.expiration.hour-singular": "Hour",
|
|
||||||
"account.reverseShares.modal.expiration.hour-plural": "Hours",
|
|
||||||
"account.reverseShares.modal.expiration.day-singular": "Day",
|
|
||||||
"account.reverseShares.modal.expiration.day-plural": "Days",
|
|
||||||
"account.reverseShares.modal.expiration.week-singular": "Week",
|
|
||||||
"account.reverseShares.modal.expiration.week-plural": "Weeks",
|
|
||||||
"account.reverseShares.modal.expiration.month-singular": "Month",
|
|
||||||
"account.reverseShares.modal.expiration.month-plural": "Months",
|
|
||||||
"account.reverseShares.modal.expiration.year-singular": "Year",
|
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Years",
|
|
||||||
"account.reverseShares.modal.max-size.label": "Max share size",
|
|
||||||
"account.reverseShares.modal.send-email": "Send email 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.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.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.max-use.label": "Max uses",
|
|
||||||
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
|
|
||||||
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
|
||||||
"account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
|
|
||||||
"account.reverseShares.table.no-shares": "No shares created yet",
|
|
||||||
"account.reverseShares.table.count.singular": "share",
|
|
||||||
"account.reverseShares.table.count.plural": "shares",
|
|
||||||
"account.reverseShares.table.shares": "Shares",
|
|
||||||
"account.reverseShares.table.remaining": "Remaining uses",
|
|
||||||
"account.reverseShares.table.max-size": "Max share size",
|
|
||||||
"account.reverseShares.table.expires": "Expires at",
|
|
||||||
"account.reverseShares.modal.reverse-share-link": "Reverse share link",
|
|
||||||
"account.reverseShares.modal.delete.title": "Delete reverse share",
|
|
||||||
"account.reverseShares.modal.delete.description": "Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
|
|
||||||
// END /account/reverseShares
|
|
||||||
// /admin
|
|
||||||
"admin.title": "Administration",
|
|
||||||
"admin.button.users": "User management",
|
|
||||||
"admin.button.shares": "Share management",
|
|
||||||
"admin.button.config": "Configuration",
|
|
||||||
"admin.version": "Version",
|
|
||||||
// END /admin
|
|
||||||
// /admin/users
|
|
||||||
"admin.users.title": "User management",
|
|
||||||
"admin.users.table.username": "Username",
|
|
||||||
"admin.users.table.email": "Email",
|
|
||||||
"admin.users.table.admin": "Admin",
|
|
||||||
"admin.users.edit.update.title": "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.delete.title": "Delete user: {username} ?",
|
|
||||||
"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.admin": "Admin privileges",
|
|
||||||
"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?",
|
|
||||||
// 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.",
|
|
||||||
"upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
|
|
||||||
// FileList.tsx
|
|
||||||
"upload.filelist.name": "Name",
|
|
||||||
"upload.filelist.size": "Size",
|
|
||||||
// showCreateUploadModal.tsx
|
|
||||||
"upload.modal.title": "Create Share",
|
|
||||||
"upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
|
|
||||||
"upload.modal.link.error.taken": "This link is already in use",
|
|
||||||
"upload.modal.not-signed-in": "You're not signed in",
|
|
||||||
"upload.modal.not-signed-in-description": "You will be unable to delete your share manually and view the visitor count.",
|
|
||||||
"upload.modal.expires.never": "never",
|
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
|
||||||
"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",
|
|
||||||
"upload.modal.expires.minute-plural": "Minutes",
|
|
||||||
"upload.modal.expires.hour-singular": "Hour",
|
|
||||||
"upload.modal.expires.hour-plural": "Hours",
|
|
||||||
"upload.modal.expires.day-singular": "Day",
|
|
||||||
"upload.modal.expires.day-plural": "Days",
|
|
||||||
"upload.modal.expires.week-singular": "Week",
|
|
||||||
"upload.modal.expires.week-plural": "Weeks",
|
|
||||||
"upload.modal.expires.month-singular": "Month",
|
|
||||||
"upload.modal.expires.month-plural": "Months",
|
|
||||||
"upload.modal.expires.year-singular": "Year",
|
|
||||||
"upload.modal.expires.year-plural": "Years",
|
|
||||||
"upload.modal.accordion.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": "Email recipients",
|
|
||||||
"upload.modal.accordion.email.placeholder": "Enter email recipients",
|
|
||||||
"upload.modal.accordion.email.invalid-email": "Invalid email address",
|
|
||||||
"upload.modal.accordion.security.title": "Security options",
|
|
||||||
"upload.modal.accordion.security.password.label": "Password protection",
|
|
||||||
"upload.modal.accordion.security.password.placeholder": "No password",
|
|
||||||
"upload.modal.accordion.security.max-views.label": "Maximum views",
|
|
||||||
"upload.modal.accordion.security.max-views.placeholder": "No limit",
|
|
||||||
// showCompletedUploadModal.tsx
|
|
||||||
"upload.modal.completed.never-expires": "This share will never expire.",
|
|
||||||
"upload.modal.completed.expires-on": "This share will expire on {expiration}.",
|
|
||||||
"upload.modal.completed.share-ready": "Share ready",
|
|
||||||
"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.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.access-denied.title": "Private 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": "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.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.",
|
|
||||||
// END /share/[id]
|
|
||||||
// /share/[id]/edit
|
|
||||||
"share.edit.title": "Edit {shareId}",
|
|
||||||
"share.edit.append-upload": "Append file",
|
|
||||||
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
|
|
||||||
"share.edit.notify.save-success": "Share updated successfully",
|
|
||||||
// END /share/[id]/edit
|
|
||||||
// /admin/config
|
|
||||||
"admin.config.title": "Configuration",
|
|
||||||
"admin.config.category.general": "General",
|
|
||||||
"admin.config.category.share": "Share",
|
|
||||||
"admin.config.category.email": "Email",
|
|
||||||
"admin.config.category.smtp": "SMTP",
|
|
||||||
"admin.config.category.oauth": "Social Login",
|
|
||||||
"admin.config.general.app-name": "App name",
|
|
||||||
"admin.config.general.app-name.description": "Name of the application",
|
|
||||||
"admin.config.general.app-url": "App URL",
|
|
||||||
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
|
|
||||||
"admin.config.general.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",
|
|
||||||
"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.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.share-recipients-subject": "Share recipients subject",
|
|
||||||
"admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
|
|
||||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
|
||||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n 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-message": "Reverse share message",
|
|
||||||
"admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
|
|
||||||
"admin.config.email.reset-password-subject": "Reset password subject",
|
|
||||||
"admin.config.email.reset-password-subject.description": "Subject of the 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.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-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.share.allow-registration": "Allow registration",
|
|
||||||
"admin.config.share.allow-registration.description": "Whether registration is allowed",
|
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
|
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
|
|
||||||
"admin.config.share.max-expiration": "Max expiration",
|
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
|
|
||||||
"admin.config.share.max-size": "Max size",
|
|
||||||
"admin.config.share.max-size.description": "Maximum share size in bytes",
|
|
||||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
|
||||||
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
|
||||||
"admin.config.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.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.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.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.oauth.allow-registration": "Allow registration",
|
|
||||||
"admin.config.oauth.allow-registration.description": "Allow users to register via social login",
|
|
||||||
"admin.config.oauth.ignore-totp": "Ignore TOTP",
|
|
||||||
"admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login",
|
|
||||||
"admin.config.oauth.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.github-enabled": "GitHub",
|
|
||||||
"admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled",
|
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
|
||||||
"admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app",
|
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
|
||||||
"admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app",
|
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
|
||||||
"admin.config.oauth.google-enabled.description": "Whether Google login is enabled",
|
|
||||||
"admin.config.oauth.google-client-id": "Google Client ID",
|
|
||||||
"admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app",
|
|
||||||
"admin.config.oauth.google-client-secret": "Google Client secret",
|
|
||||||
"admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app",
|
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled",
|
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
|
||||||
"admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
|
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app",
|
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
|
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
|
||||||
"admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled",
|
|
||||||
"admin.config.oauth.discord-limited-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-guild.description": "Limit signing in to users in a specific server. Leave it blank to disable.",
|
|
||||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
|
||||||
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
|
|
||||||
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
|
||||||
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
|
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
|
||||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
|
||||||
"admin.config.oauth.oidc-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": "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 user’s 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 user’s 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-secret": "OpenID Connect Client secret",
|
|
||||||
"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.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-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.",
|
|
||||||
// 404
|
|
||||||
"404.description": "Oops this page doesn't exist.",
|
|
||||||
"404.button.home": "Bring me back home",
|
|
||||||
// error
|
|
||||||
"error.title": "Error",
|
|
||||||
"error.description": "Oops!",
|
|
||||||
"error.button.back": "Go back",
|
|
||||||
"error.msg.default": "Something went wrong.",
|
|
||||||
"error.msg.access_denied": "You canceled the authentication process, please try again.",
|
|
||||||
"error.msg.expired_token": "The authentication process took too long, please try again.",
|
|
||||||
"error.msg.invalid_token": "Internal Error",
|
|
||||||
"error.msg.no_user": "User linked to this {0} account doesn't exist.",
|
|
||||||
"error.msg.no_email": "Can't get email address from this {0} account.",
|
|
||||||
"error.msg.already_linked": "This {0} account is already linked to another account.",
|
|
||||||
"error.msg.not_linked": "This {0} account 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.param.provider_github": "GitHub",
|
|
||||||
"error.param.provider_google": "Google",
|
|
||||||
"error.param.provider_microsoft": "Microsoft",
|
|
||||||
"error.param.provider_discord": "Discord",
|
|
||||||
"error.param.provider_oidc": "OpenID Connect",
|
|
||||||
// Common translations
|
|
||||||
"common.button.save": "Save",
|
|
||||||
"common.button.create": "Create",
|
|
||||||
"common.button.submit": "Submit",
|
|
||||||
"common.button.delete": "Delete",
|
|
||||||
"common.button.cancel": "Cancel",
|
|
||||||
"common.button.confirm": "Confirm",
|
|
||||||
"common.button.disable": "Disable",
|
|
||||||
"common.button.share": "Share",
|
|
||||||
"common.button.generate": "Generate",
|
|
||||||
"common.button.done": "Done",
|
|
||||||
"common.text.link": "Link",
|
|
||||||
"common.text.navigate-to-link": "Visit link",
|
|
||||||
"common.text.or": "or",
|
|
||||||
"common.text.redirecting": "Redirecting...",
|
|
||||||
"common.button.go-back": "Go back",
|
|
||||||
"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",
|
|
||||||
"common.error.too-short": "Must be at least {length} characters",
|
|
||||||
"common.error.too-long": "Must be at most {length} characters",
|
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
|
||||||
"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"
|
|
||||||
};
|
|
||||||
@@ -151,7 +151,7 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-plural": "Let",
|
"account.reverseShares.modal.expiration.year-plural": "Let",
|
||||||
"account.reverseShares.modal.max-size.label": "Max. velikost sdílení",
|
"account.reverseShares.modal.max-size.label": "Max. velikost sdílení",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"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": "Odešle vám e-mailové upozornění, až bude sdílení pomocí tohoto reverzního sdíleného odkazu vytvořeno.",
|
||||||
"account.reverseShares.modal.simplified": "Zjednodušený režim",
|
"account.reverseShares.modal.simplified": "Zjednodušený režim",
|
||||||
"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": "Veřejný přístup",
|
"account.reverseShares.modal.public-access": "Veřejný přístup",
|
||||||
@@ -303,7 +303,7 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Název aplikace",
|
"admin.config.general.app-name.description": "Název aplikace",
|
||||||
"admin.config.general.app-url": "URL 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.app-url.description": "Na kterém URL je Pingvin Share k dispozici",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "Bezpečné 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.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": "Zobrazit domovskou stránku",
|
||||||
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
|
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
"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": "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 {creatorEmail} - The email 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": "Předmět e-mailu o zpětném sdílení",
|
"admin.config.email.reverse-share-subject": "Předmět e-mailu o zpětném sdílení",
|
||||||
"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": "Zpráva o zpětném sdílení",
|
"admin.config.email.reverse-share-message": "Zpráva o zpětném sdílení",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Zda mohou neověření uživatelé vytvářet sdílení",
|
"admin.config.share.allow-unauthenticated-shares.description": "Zda mohou neověření uživatelé vytvářet sdílení",
|
||||||
"admin.config.share.max-expiration": "Max. platnost",
|
"admin.config.share.max-expiration": "Max. platnost",
|
||||||
"admin.config.share.max-expiration.description": "Maximální platnost sdílení v hodinách. Nastavte na 0 k povolení neomezené platnosti.",
|
"admin.config.share.max-expiration.description": "Maximální platnost sdílení v hodinách. Nastavte na 0 k povolení neomezené platnosti.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max. velikost",
|
"admin.config.share.max-size": "Max. velikost",
|
||||||
"admin.config.share.max-size.description": "Maximální velikost sdílení v bajtech",
|
"admin.config.share.max-size.description": "Maximální velikost sdílení v bajtech",
|
||||||
"admin.config.share.zip-compression-level": "Úroveň Zip komprese",
|
"admin.config.share.zip-compression-level": "Úroveň Zip komprese",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Jejda, tato stránka neexistuje.",
|
"404.description": "Jejda, tato stránka neexistuje.",
|
||||||
"404.button.home": "Bring me back home",
|
"404.button.home": "Bring me back home",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Vrátit se zpět",
|
"common.button.go-back": "Vrátit se zpět",
|
||||||
"common.button.go-home": "Jít domů",
|
"common.button.go-home": "Jít domů",
|
||||||
"common.notify.copied": "Váš odkaz byl zkopírován do schránky",
|
"common.notify.copied": "Váš odkaz byl zkopírován do schránky",
|
||||||
|
"common.notify.copied-link": "Váš odkaz byl zkopírován do schránky",
|
||||||
"common.success": "Úspěch",
|
"common.success": "Úspěch",
|
||||||
"common.error": "Chyba",
|
"common.error": "Chyba",
|
||||||
"common.error.unknown": "Došlo k neznámé chybě",
|
"common.error.unknown": "Došlo k neznámé chybě",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
"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": "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 {creatorEmail} - The email 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": "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": "Reverse share message",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
|
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
|
||||||
"admin.config.share.max-expiration": "Maks. udløb",
|
"admin.config.share.max-expiration": "Maks. udløb",
|
||||||
"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.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Maks. størrelse",
|
"admin.config.share.max-size": "Maks. størrelse",
|
||||||
"admin.config.share.max-size.description": "Maksimal filstørrelse i bytes",
|
"admin.config.share.max-size.description": "Maksimal filstørrelse i bytes",
|
||||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
"admin.config.share.zip-compression-level": "Zip compression level",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ups! Denne side findes ikke.",
|
"404.description": "Ups! Denne side findes ikke.",
|
||||||
"404.button.home": "Gå tilbage",
|
"404.button.home": "Gå tilbage",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Gå tilbage",
|
"common.button.go-back": "Gå tilbage",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Go home",
|
||||||
"common.notify.copied": "Linket blev kopieret til udklipsholderen",
|
"common.notify.copied": "Linket blev kopieret til udklipsholderen",
|
||||||
|
"common.notify.copied-link": "Linket blev kopieret til udklipsholderen",
|
||||||
"common.success": "Success",
|
"common.success": "Success",
|
||||||
"common.error": "Fejl",
|
"common.error": "Fejl",
|
||||||
"common.error.unknown": "En ukendt fejl opstod",
|
"common.error.unknown": "En ukendt fejl opstod",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "Hochladen",
|
"navbar.upload": "Hochladen",
|
||||||
"navbar.signin": "Anmelden",
|
"navbar.signin": "Anmelden",
|
||||||
"navbar.home": "Startseite",
|
"navbar.home": "Startseite",
|
||||||
"navbar.signup": "Anmelden",
|
"navbar.signup": "Registrieren",
|
||||||
"navbar.links.shares": "Meine Freigaben",
|
"navbar.links.shares": "Meine Freigaben",
|
||||||
"navbar.links.reverse": "Externe Freigaben",
|
"navbar.links.reverse": "Externe Freigaben",
|
||||||
"navbar.avatar.account": "Mein Konto",
|
"navbar.avatar.account": "Mein Konto",
|
||||||
@@ -16,9 +16,9 @@ export default {
|
|||||||
"home.bullet.a.name": "Selbst gehostet",
|
"home.bullet.a.name": "Selbst gehostet",
|
||||||
"home.bullet.a.description": "Betreibe Pingvin Share auf deinem eigenen Server.",
|
"home.bullet.a.description": "Betreibe Pingvin Share auf deinem eigenen Server.",
|
||||||
"home.bullet.b.name": "Privatsphäre",
|
"home.bullet.b.name": "Privatsphäre",
|
||||||
"home.bullet.b.description": "Ihre Dateien gehören Ihnen und sind niemals durch Dritte zugänglich.",
|
"home.bullet.b.description": "Deine Dateien gehören dir und sind niemals durch Dritte zugänglich.",
|
||||||
"home.bullet.c.name": "Keine lästige Dateigrößenbegrenzung",
|
"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": "Lade so große Dateien hoch, wie du willst. Nur deine Festplatte ist dein Limit.",
|
||||||
"home.button.start": "Lege los",
|
"home.button.start": "Lege los",
|
||||||
"home.button.source": "Quellcode",
|
"home.button.source": "Quellcode",
|
||||||
// END /
|
// END /
|
||||||
@@ -27,12 +27,12 @@ export default {
|
|||||||
"signin.description": "Du hast noch kein Konto?",
|
"signin.description": "Du hast noch kein Konto?",
|
||||||
"signin.button.signup": "Registrieren",
|
"signin.button.signup": "Registrieren",
|
||||||
"signin.input.email-or-username": "E-Mail oder Benutzername",
|
"signin.input.email-or-username": "E-Mail oder Benutzername",
|
||||||
"signin.input.email-or-username.placeholder": "Deine Email Adresse oder Benutzername",
|
"signin.input.email-or-username.placeholder": "Deine E-Mail-Adresse oder Benutzername",
|
||||||
"signin.input.password": "Passwort",
|
"signin.input.password": "Passwort",
|
||||||
"signin.input.password.placeholder": "Dein Passwort",
|
"signin.input.password.placeholder": "Dein Passwort",
|
||||||
"signin.button.submit": "Anmelden",
|
"signin.button.submit": "Anmelden",
|
||||||
"signIn.notify.totp-required.title": "Zwei-Faktor-Authentifizierung benötigt",
|
"signIn.notify.totp-required.title": "Zwei-Faktor-Authentifizierung benötigt",
|
||||||
"signIn.notify.totp-required.description": "Bitte gebe deinen Zwei-Faktor-Authentifizierungscode ein",
|
"signIn.notify.totp-required.description": "Bitte gib deinen Zwei-Faktor-Authentifizierungscode ein",
|
||||||
"signIn.oauth.or": "ODER",
|
"signIn.oauth.or": "ODER",
|
||||||
"signIn.oauth.signInWith": "Anmelden mit",
|
"signIn.oauth.signInWith": "Anmelden mit",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
@@ -63,7 +63,7 @@ export default {
|
|||||||
"resetPassword.text.resetPassword": "Passwort zurücksetzen",
|
"resetPassword.text.resetPassword": "Passwort zurücksetzen",
|
||||||
"resetPassword.text.enterNewPassword": "Gib dein neues Passwort ein",
|
"resetPassword.text.enterNewPassword": "Gib dein neues Passwort ein",
|
||||||
"resetPassword.input.password": "Neues Passwort",
|
"resetPassword.input.password": "Neues Passwort",
|
||||||
"resetPassword.notify.passwordReset": "Ihr Passwort wurde erfolgreich zurückgesetzt.",
|
"resetPassword.notify.passwordReset": "Dein Passwort wurde erfolgreich zurückgesetzt.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Mein Konto",
|
"account.title": "Mein Konto",
|
||||||
"account.card.info.title": "Kontoinformationen",
|
"account.card.info.title": "Kontoinformationen",
|
||||||
@@ -85,14 +85,14 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Verknüpfung aufheben",
|
"account.card.oauth.unlink": "Verknüpfung aufheben",
|
||||||
"account.card.oauth.unlinked": "Verknüpfung aufgehoben",
|
"account.card.oauth.unlinked": "Verknüpfung aufgehoben",
|
||||||
"account.modal.unlink.title": "Kontoverknüpfung aufheben",
|
"account.modal.unlink.title": "Kontoverknüpfung aufheben",
|
||||||
"account.modal.unlink.description": "Die Aufhebung der Verknüpfung mit Ihren sozialen Konten kann dazu führen, dass Sie Ihr Konto verlieren, wenn Sie sich nicht an Ihren Anmeldedaten erinnern",
|
"account.modal.unlink.description": "Die Aufhebung der Verknüpfung mit deinen sozialen Konten kann dazu führen, dass du dein Konto verlierst, wenn du dich nicht an deine Anmeldedaten erinnerst",
|
||||||
"account.notify.oauth.unlinked.success": "Verknüpfung erfolgreich aufgehoben",
|
"account.notify.oauth.unlinked.success": "Verknüpfung erfolgreich aufgehoben",
|
||||||
"account.card.security.title": "Sicherheit",
|
"account.card.security.title": "Sicherheit",
|
||||||
"account.card.security.totp.enable.description": "Gib dein aktuelles Passwort ein, um TOTP zu aktivieren",
|
"account.card.security.totp.enable.description": "Gib dein aktuelles Passwort ein, um TOTP zu aktivieren",
|
||||||
"account.card.security.totp.disable.description": "Gib dein aktuelles Passwort ein, um TOTP zu deaktivieren",
|
"account.card.security.totp.disable.description": "Gib dein aktuelles Passwort ein, um TOTP zu deaktivieren",
|
||||||
"account.card.security.totp.button.start": "Starten",
|
"account.card.security.totp.button.start": "Starten",
|
||||||
"account.modal.totp.title": "TOTP aktivieren",
|
"account.modal.totp.title": "TOTP aktivieren",
|
||||||
"account.modal.totp.step1": "Schritt 1: Füge deinen Authentifikator hinzu",
|
"account.modal.totp.step1": "Schritt 1: Füge deinen Authenticator hinzu",
|
||||||
"account.modal.totp.step2": "Schritt 2: Bestätige deinen Code",
|
"account.modal.totp.step2": "Schritt 2: Bestätige deinen Code",
|
||||||
"account.modal.totp.enterManually": "Manuell eingeben",
|
"account.modal.totp.enterManually": "Manuell eingeben",
|
||||||
"account.modal.totp.code": "Code",
|
"account.modal.totp.code": "Code",
|
||||||
@@ -127,13 +127,13 @@ export default {
|
|||||||
"account.shares.modal.share-informations": "Teile deine Information",
|
"account.shares.modal.share-informations": "Teile deine Information",
|
||||||
"account.shares.modal.share-link": "Freigabe teilen",
|
"account.shares.modal.share-link": "Freigabe teilen",
|
||||||
"account.shares.modal.delete.title": "Freigabe löschen: {share}",
|
"account.shares.modal.delete.title": "Freigabe löschen: {share}",
|
||||||
"account.shares.modal.delete.description": "Möchtest du wirklich diese Freigabe löschen?",
|
"account.shares.modal.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "Externe Freigaben",
|
"account.reverseShares.title": "Externe Freigaben",
|
||||||
"account.reverseShares.description": "Eine externe Freigabe erlaubt dir eine einzigartige URL zu erstellen, die externen Benutzern erlaubt, Dateien hochzuladen.",
|
"account.reverseShares.description": "Eine externe Freigabe erlaubt dir eine einzigartige URL zu erstellen, die externen Benutzern erlaubt, Dateien hochzuladen.",
|
||||||
"account.reverseShares.title.empty": "Es ist leer hier 👀",
|
"account.reverseShares.title.empty": "Es ist leer hier 👀",
|
||||||
"account.reverseShares.description.empty": "Du hast keine externen Freigaben erstellt.",
|
"account.reverseShares.description.empty": "Du hast keine externen Freigaben.",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
"account.reverseShares.modal.title": "Externe Freigabe erstellen",
|
"account.reverseShares.modal.title": "Externe Freigabe erstellen",
|
||||||
"account.reverseShares.modal.expiration.label": "Gültig bis",
|
"account.reverseShares.modal.expiration.label": "Gültig bis",
|
||||||
@@ -155,11 +155,11 @@ export default {
|
|||||||
"account.reverseShares.modal.simplified": "Einfacher Modus",
|
"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.",
|
"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.",
|
||||||
"account.reverseShares.modal.public-access": "Öffentlicher Zugriff",
|
"account.reverseShares.modal.public-access": "Öffentlicher Zugriff",
|
||||||
"account.reverseShares.modal.public-access.description": "Erstelle die Freigaben der externen Freigabe öffentlich. Wenn dies deaktiviert ist, haben nur Sie und der Ersteller der Freigabe Zugriff darauf.",
|
"account.reverseShares.modal.public-access.description": "Mache die Freigaben die mit dieser externen Freigabe erstellt werden öffentlich. Wenn dies deaktiviert ist, haben nur du und der Ersteller der Freigabe Zugriff darauf.",
|
||||||
"account.reverseShares.modal.max-use.label": "Maximale Nutzungen",
|
"account.reverseShares.modal.max-use.label": "Maximale Nutzungen",
|
||||||
"account.reverseShares.modal.max-use.description": "Die maximale Anzahl von Verwendungen der URL, um Dateien hochzuladen.",
|
"account.reverseShares.modal.max-use.description": "Die maximale Anzahl von Verwendungen der URL, um Dateien hochzuladen.",
|
||||||
"account.reverseShare.never-expires": "Diese externe Freigabe wird nicht ablaufen.",
|
"account.reverseShare.never-expires": "Diese externe Freigabe wird nicht ablaufen.",
|
||||||
"account.reverseShare.expires-on": "Diese Reverse Share läuft am {expiration} ab.",
|
"account.reverseShare.expires-on": "Diese externe Freigabe wird am {expiration} ablaufen.",
|
||||||
"account.reverseShares.table.no-shares": "Noch keine Freigaben erstellt",
|
"account.reverseShares.table.no-shares": "Noch keine Freigaben erstellt",
|
||||||
"account.reverseShares.table.count.singular": "Freigabe",
|
"account.reverseShares.table.count.singular": "Freigabe",
|
||||||
"account.reverseShares.table.count.plural": "Freigaben",
|
"account.reverseShares.table.count.plural": "Freigaben",
|
||||||
@@ -168,8 +168,8 @@ export default {
|
|||||||
"account.reverseShares.table.max-size": "Maximale Freigabegröße",
|
"account.reverseShares.table.max-size": "Maximale Freigabegröße",
|
||||||
"account.reverseShares.table.expires": "Läuft ab am",
|
"account.reverseShares.table.expires": "Läuft ab am",
|
||||||
"account.reverseShares.modal.reverse-share-link": "Link zu externer Freigabe",
|
"account.reverseShares.modal.reverse-share-link": "Link zu externer Freigabe",
|
||||||
"account.reverseShares.modal.delete.title": "Lösche externe Freigabe",
|
"account.reverseShares.modal.delete.title": "Externe Freigabe löschen",
|
||||||
"account.reverseShares.modal.delete.description": "Möchtest du wirklich diese externe Freigabe löschen? In diesem Falle werden auch hiermit verbundene Freigaben gelöscht.",
|
"account.reverseShares.modal.delete.description": "Möchtest du diese externe Freigabe wirklich löschen? In diesem Fall werden auch hiermit verbundene Freigaben gelöscht.",
|
||||||
// END /account/reverseShares
|
// END /account/reverseShares
|
||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Verwaltung",
|
"admin.title": "Verwaltung",
|
||||||
@@ -190,7 +190,7 @@ export default {
|
|||||||
"admin.users.edit.update.change-password.button": "Neues Passwort speichern",
|
"admin.users.edit.update.change-password.button": "Neues Passwort speichern",
|
||||||
"admin.users.edit.update.notify.password.success": "Passwort erfolgreich geändert",
|
"admin.users.edit.update.notify.password.success": "Passwort erfolgreich geändert",
|
||||||
"admin.users.edit.delete.title": "Benutzer löschen: {username}?",
|
"admin.users.edit.delete.title": "Benutzer löschen: {username}?",
|
||||||
"admin.users.edit.delete.description": "Möchtest du wirklich diesen Benutzer mit allen seinen Freigaben löschen?",
|
"admin.users.edit.delete.description": "Möchtest du wirklich diesen Benutzer und all seine Freigaben löschen?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Benutzer erstellen",
|
"admin.users.modal.create.title": "Benutzer erstellen",
|
||||||
"admin.users.modal.create.username": "Benutzername",
|
"admin.users.modal.create.username": "Benutzername",
|
||||||
@@ -203,20 +203,20 @@ export default {
|
|||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Freigaben Verwaltung",
|
"admin.shares.title": "Freigaben Verwaltung",
|
||||||
"admin.shares.table.id": "ID teilen",
|
"admin.shares.table.id": "Freigabe ID",
|
||||||
"admin.shares.table.username": "Ersteller",
|
"admin.shares.table.username": "Ersteller",
|
||||||
"admin.shares.table.visitors": "Besucher",
|
"admin.shares.table.visitors": "Besucher",
|
||||||
"admin.shares.table.expires": "Läuft ab am",
|
"admin.shares.table.expires": "Läuft ab am",
|
||||||
"admin.shares.edit.delete.title": "Freigabe löschen: {id}",
|
"admin.shares.edit.delete.title": "Freigabe löschen: {id}",
|
||||||
"admin.shares.edit.delete.description": "Möchtest du wirklich diese Freigabe löschen?",
|
"admin.shares.edit.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Upload",
|
"upload.title": "Upload",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Bist du sicher, dass du diese Seite verlassen willst? Dein Upload wird abgebrochen.",
|
||||||
"upload.notify.generic-error": "Während der Erstellung der Freigabe ist ein Fehler aufgetreten.",
|
"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.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.title": "Ungültiger Link zu externer Freigabe",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Diese externe Freigabe ist abgelaufen oder ungültig.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Dateien hochladen",
|
"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}.",
|
"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}.",
|
||||||
@@ -230,7 +230,7 @@ export default {
|
|||||||
"upload.modal.link.error.taken": "Dieser Link wird bereits verwendet",
|
"upload.modal.link.error.taken": "Dieser Link wird bereits verwendet",
|
||||||
"upload.modal.not-signed-in": "Du bist nicht angemeldet",
|
"upload.modal.not-signed-in": "Du bist nicht angemeldet",
|
||||||
"upload.modal.not-signed-in-description": "Du wirst deine Freigabe nicht löschen können oder die Besucheranzahl sehen.",
|
"upload.modal.not-signed-in-description": "Du wirst deine Freigabe nicht löschen können oder die Besucheranzahl sehen.",
|
||||||
"upload.modal.expires.never": "niemals",
|
"upload.modal.expires.never": "nie",
|
||||||
"upload.modal.expires.never-long": "Permanente Freigabe",
|
"upload.modal.expires.never-long": "Permanente Freigabe",
|
||||||
"upload.modal.expires.error.too-long": "Das Ablaufdatum überschreitet das Maximum von {max}.",
|
"upload.modal.expires.error.too-long": "Das Ablaufdatum überschreitet das Maximum von {max}.",
|
||||||
"upload.modal.link.label": "Link",
|
"upload.modal.link.label": "Link",
|
||||||
@@ -275,16 +275,16 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private Freigabe",
|
"share.error.access-denied.title": "Private Freigabe",
|
||||||
"share.error.access-denied.description": "Das aktuelle Konto hat keine Berechtigung, um auf diese Freigabe zuzugreifen",
|
"share.error.access-denied.description": "Das aktuelle Konto hat keine Berechtigung, um auf diese Freigabe zuzugreifen",
|
||||||
"share.modal.password.title": "Passwort erforderlich",
|
"share.modal.password.title": "Passwort erforderlich",
|
||||||
"share.modal.password.description": "Bitte geben Sie das Passwort ein, um auf diese Freigabe zuzugreifen.",
|
"share.modal.password.description": "Bitte gib das Passwort ein, um auf diese Freigabe zuzugreifen.",
|
||||||
"share.modal.password": "Passwort",
|
"share.modal.password": "Passwort",
|
||||||
"share.modal.error.invalid-password": "Ungültiges Passwort",
|
"share.modal.error.invalid-password": "Ungültiges Passwort",
|
||||||
"share.button.download-all": "Alles herunterladen",
|
"share.button.download-all": "Alles herunterladen",
|
||||||
"share.notify.download-all-preparing": "Die Freigabe wird vorbereitet. Bitte versuchen Sie es in ein paar Minuten erneut.",
|
"share.notify.download-all-preparing": "Die Freigabe wird vorbereitet. Bitte versuche es in ein paar Minuten erneut.",
|
||||||
"share.modal.file-link": "Dateilink",
|
"share.modal.file-link": "Dateilink",
|
||||||
"share.table.name": "Name",
|
"share.table.name": "Name",
|
||||||
"share.table.size": "Größe",
|
"share.table.size": "Größe",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Vorschau wird nicht unterstützt",
|
"share.modal.file-preview.error.not-supported.title": "Vorschau wird nicht unterstützt",
|
||||||
"share.modal.file-preview.error.not-supported.description": "Vorschaubilder werden für diesen Dateityp nicht unterstützt. Bitte laden Sie die Datei herunter, um sie anzuzeigen.",
|
"share.modal.file-preview.error.not-supported.description": "Vorschaubilder werden für diesen Dateityp nicht unterstützt. Bitte lade die Datei herunter, um sie anzuzeigen.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "{shareId} bearbeiten",
|
"share.edit.title": "{shareId} bearbeiten",
|
||||||
@@ -303,8 +303,8 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Name der Applikation",
|
"admin.config.general.app-name.description": "Name der Applikation",
|
||||||
"admin.config.general.app-url": "App-URL",
|
"admin.config.general.app-url": "App-URL",
|
||||||
"admin.config.general.app-url.description": "Auf welcher URL Pingvin Share verfügbar ist",
|
"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": "Sichere 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.secure-cookies.description": "Gibt an, ob die secure flag bei Cookies gesetzt werden soll. Falls aktiviert, wird die Seite nicht funktionieren, wenn sie über HTTP aufgerufen wird.",
|
||||||
"admin.config.general.show-home-page": "Startseite anzeigen",
|
"admin.config.general.show-home-page": "Startseite anzeigen",
|
||||||
"admin.config.general.show-home-page.description": "Ob die Startseite angezeigt werden soll",
|
"admin.config.general.show-home-page.description": "Ob die Startseite angezeigt werden soll",
|
||||||
"admin.config.general.session-duration": "Session-Dauer",
|
"admin.config.general.session-duration": "Session-Dauer",
|
||||||
@@ -313,11 +313,11 @@ export default {
|
|||||||
"admin.config.general.logo.description": "Ändere dein Logo durch Hochladen eines Bildes. Das Bild muss im PNG-Format vorliegen und sollte mit Seitenverhältnis 1:1 sein.",
|
"admin.config.general.logo.description": "Ändere dein Logo durch Hochladen eines Bildes. Das Bild muss im PNG-Format vorliegen und sollte mit Seitenverhältnis 1:1 sein.",
|
||||||
"admin.config.general.logo.placeholder": "Bild auswählen",
|
"admin.config.general.logo.placeholder": "Bild auswählen",
|
||||||
"admin.config.email.enable-share-email-recipients": "Erlaube das Teilen der Freigabe via E-Mail",
|
"admin.config.email.enable-share-email-recipients": "Erlaube das Teilen der Freigabe via E-Mail",
|
||||||
"admin.config.email.enable-share-email-recipients.description": "Gibt an, ob das Teilen von E-Mails mit Empfängern erlaubt werden soll. Aktivieren Sie dies nur, wenn SMTP aktiviert ist.",
|
"admin.config.email.enable-share-email-recipients.description": "Gibt an, ob das Teilen von E-Mails mit Empfängern erlaubt werden soll. Aktiviere dies nur, wenn SMTP aktiviert ist.",
|
||||||
"admin.config.email.share-recipients-subject": "Betreff für Freigabe-Empfänger",
|
"admin.config.email.share-recipients-subject": "Betreff für Freigabe-Empfänger",
|
||||||
"admin.config.email.share-recipients-subject.description": "Betreff der E-Mail, die an die Freigabe-Empfänger gesendet wird.",
|
"admin.config.email.share-recipients-subject.description": "Betreff der E-Mail, die an die Freigabe-Empfänger gesendet wird.",
|
||||||
"admin.config.email.share-recipients-message": "Nachricht für Freigabe-Empfänger",
|
"admin.config.email.share-recipients-message": "Nachricht für Freigabe-Empfänger",
|
||||||
"admin.config.email.share-recipients-message.description": "Nachricht, die an die Freigabe-Empfänger gesendet wird. Verfügbare Variablen:\n- {creator} - Der Benutzername des Erstellers der Freigabe\n- {shareUrl} - Die URL der Freigabe\n- {desc} - Die Beschreibung der Freigabe\n- {expires} - Das Ablaufdatum der Freigabe\nVariablen werden durch die aktuellen Werte ersetzt.",
|
"admin.config.email.share-recipients-message.description": "Nachricht, die an die Freigabe-Empfänger gesendet wird. Verfügbare Variablen:\n- {creator} - Der Benutzername des Erstellers der Freigabe\n- {creatorEmail} - E-Mail-Adresse des Erstellers der Freigabe\n- {shareUrl} - Die URL der Freigabe\n- {desc} - Die Beschreibung der Freigabe\n- {expires} - Das Ablaufdatum der Freigabe\nVariablen werden durch die tatsächlichen Werte ersetzt.",
|
||||||
"admin.config.email.reverse-share-subject": "Name der externen Freigabe",
|
"admin.config.email.reverse-share-subject": "Name der externen Freigabe",
|
||||||
"admin.config.email.reverse-share-subject.description": "Betreff der gesendeten E-Mail, wenn jemand eine Freigabe mit Ihrem externen Freigabe-Link erstellt hat.",
|
"admin.config.email.reverse-share-subject.description": "Betreff der gesendeten E-Mail, wenn jemand eine Freigabe mit Ihrem externen Freigabe-Link erstellt hat.",
|
||||||
"admin.config.email.reverse-share-message": "Nachricht für externe Freigabe",
|
"admin.config.email.reverse-share-message": "Nachricht für externe Freigabe",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Gibt an, ob nicht authentifizierte Benutzer Freigaben erstellen können",
|
"admin.config.share.allow-unauthenticated-shares.description": "Gibt an, ob nicht authentifizierte Benutzer Freigaben erstellen können",
|
||||||
"admin.config.share.max-expiration": "Max. Ablaufdatum",
|
"admin.config.share.max-expiration": "Max. Ablaufdatum",
|
||||||
"admin.config.share.max-expiration.description": "Maximale Ablaufzeit in Stunden. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
|
"admin.config.share.max-expiration.description": "Maximale Ablaufzeit in Stunden. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Maximale Größe",
|
"admin.config.share.max-size": "Maximale Größe",
|
||||||
"admin.config.share.max-size.description": "Maximale Größe einer Freigabe in Bytes",
|
"admin.config.share.max-size.description": "Maximale Größe einer Freigabe in Bytes",
|
||||||
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
|
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
|
||||||
@@ -358,7 +360,7 @@ export default {
|
|||||||
"admin.config.smtp.password.description": "Passwort des SMTP-Servers",
|
"admin.config.smtp.password.description": "Passwort des SMTP-Servers",
|
||||||
"admin.config.smtp.button.test": "Test-E-Mail senden",
|
"admin.config.smtp.button.test": "Test-E-Mail senden",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Vertrauen von nicht authentifizierten SMTP-Server-Zertifikaten",
|
"admin.config.smtp.allow-unauthorized-certificates": "Vertrauen von nicht authentifizierten SMTP-Server-Zertifikaten",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Verwenden Sie diese Option nur, wenn Sie selbst signierten Zertifikaten vertrauen müssen.",
|
"admin.config.smtp.allow-unauthorized-certificates.description": "Verwende diese Option nur, wenn du selbst signierten Zertifikaten vertrauen musst.",
|
||||||
"admin.config.oauth.allow-registration": "Registrierung erlauben",
|
"admin.config.oauth.allow-registration": "Registrierung erlauben",
|
||||||
"admin.config.oauth.allow-registration.description": "Benutzern erlauben, sich über soziale Netzwerke zu registrieren",
|
"admin.config.oauth.allow-registration.description": "Benutzern erlauben, sich über soziale Netzwerke zu registrieren",
|
||||||
"admin.config.oauth.ignore-totp": "TOTP ignorieren",
|
"admin.config.oauth.ignore-totp": "TOTP ignorieren",
|
||||||
@@ -369,22 +371,22 @@ export default {
|
|||||||
"admin.config.oauth.github-enabled.description": "GitHub Anmeldung erlaubt",
|
"admin.config.oauth.github-enabled.description": "GitHub Anmeldung erlaubt",
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client-ID",
|
"admin.config.oauth.github-client-id": "GitHub Client-ID",
|
||||||
"admin.config.oauth.github-client-id.description": "Client-ID der GitHub OAuth-App",
|
"admin.config.oauth.github-client-id.description": "Client-ID der GitHub OAuth-App",
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client Sekret",
|
"admin.config.oauth.github-client-secret": "GitHub Client Secret",
|
||||||
"admin.config.oauth.github-client-secret.description": "Client-Sekret der GitHub OAuth-App",
|
"admin.config.oauth.github-client-secret.description": "Client Secret der GitHub OAuth App",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "Google Anmeldung erlaubt",
|
"admin.config.oauth.google-enabled.description": "Google Anmeldung erlaubt",
|
||||||
"admin.config.oauth.google-client-id": "Google Client-ID",
|
"admin.config.oauth.google-client-id": "Google Client-ID",
|
||||||
"admin.config.oauth.google-client-id.description": "Client-ID der Google OAuth-App",
|
"admin.config.oauth.google-client-id.description": "Client-ID der Google OAuth-App",
|
||||||
"admin.config.oauth.google-client-secret": "Google Client Sekret",
|
"admin.config.oauth.google-client-secret": "Google Client Secret",
|
||||||
"admin.config.oauth.google-client-secret.description": "Client-Sekret der Google OAuth-App",
|
"admin.config.oauth.google-client-secret.description": "Client Secret der Google OAuth App",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Microsoft Anmeldung erlaubt",
|
"admin.config.oauth.microsoft-enabled.description": "Microsoft Anmeldung erlaubt",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Mandant",
|
"admin.config.oauth.microsoft-tenant": "Microsoft Mandant",
|
||||||
"admin.config.oauth.microsoft-tenant.description": "Mandant-ID der Microsoft OAuth App\ncommon: Benutzer mit einem persönlichen Microsoft-Konto und einem Arbeits- oder Schulkonto von Microsoft Entra ID können sich in der Anwendung anmelden.\norganizations: Nur Benutzer mit Arbeits- oder Schulkonten von Microsoft Entra ID können sich in der Anwendung anmelden.\nconsumers: Nur Benutzer mit einem persönlichen Microsoft-Konto können sich in der Anwendung anmelden.\nDomänenname des Microsoft Entra Mandanten oder die Mandanten-ID im GUID-Format: Nur Benutzer eines bestimmten Microsoft Entra Mandanten (Verzeichnismitglieder mit einem Arbeits- oder Schulkonto oder Verzeichnis Gäste mit einem persönlichen Microsoft-Konto) können sich anmelden.",
|
"admin.config.oauth.microsoft-tenant.description": "Mandant-ID der Microsoft OAuth App\ncommon: Benutzer mit einem persönlichen Microsoft-Konto und einem Arbeits- oder Schulkonto von Microsoft Entra ID können sich in der Anwendung anmelden.\norganizations: Nur Benutzer mit Arbeits- oder Schulkonten von Microsoft Entra ID können sich in der Anwendung anmelden.\nconsumers: Nur Benutzer mit einem persönlichen Microsoft-Konto können sich in der Anwendung anmelden.\nDomänenname des Microsoft Entra Mandanten oder die Mandanten-ID im GUID-Format: Nur Benutzer eines bestimmten Microsoft Entra Mandanten (Verzeichnismitglieder mit einem Arbeits- oder Schulkonto oder Verzeichnis Gäste mit einem persönlichen Microsoft-Konto) können sich anmelden.",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client-ID",
|
"admin.config.oauth.microsoft-client-id": "Microsoft Client-ID",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Client-ID der Microsoft OAuth-App",
|
"admin.config.oauth.microsoft-client-id.description": "Client-ID der Microsoft OAuth-App",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client Sekret",
|
"admin.config.oauth.microsoft-client-secret": "Microsoft Client Secret",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Client-Sekret der Microsoft OAuth-App",
|
"admin.config.oauth.microsoft-client-secret.description": "Client Secret der Microsoft OAuth App",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Discord Anmeldung erlaubt",
|
"admin.config.oauth.discord-enabled.description": "Discord Anmeldung erlaubt",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limitierte Benutzer",
|
"admin.config.oauth.discord-limited-users": "Discord limitierte Benutzer",
|
||||||
@@ -393,14 +395,16 @@ export default {
|
|||||||
"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-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",
|
"admin.config.oauth.discord-client-id": "Discord Client-ID",
|
||||||
"admin.config.oauth.discord-client-id.description": "Client-ID der Discord OAuth-App",
|
"admin.config.oauth.discord-client-id.description": "Client-ID der Discord OAuth-App",
|
||||||
"admin.config.oauth.discord-client-secret": "Discord Client Sekret",
|
"admin.config.oauth.discord-client-secret": "Discord Client Secret",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Client-Sekret der Discord OAuth-App",
|
"admin.config.oauth.discord-client-secret.description": "Client Secret der Discord OAuth App",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||||
"admin.config.oauth.oidc-enabled.description": "OpenID Connect Anmeldung erlaubt",
|
"admin.config.oauth.oidc-enabled.description": "OpenID Connect Anmeldung erlaubt",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Verbindung Discovery URL",
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Verbindung Discovery URL",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery-URL der OpenID OAuth App",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery-URL der OpenID OAuth App",
|
||||||
"admin.config.oauth.oidc-sign-out": "Abmelden von OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Abmelden von OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Wenn aktiviert, wird der Benutzer mit der „Abmelden“-Schaltfläche vom OpenID-Connect-Provider abgemeldet.",
|
"admin.config.oauth.oidc-sign-out.description": "Wenn aktiviert, wird der Benutzer mit der „Abmelden“-Schaltfläche vom OpenID-Connect-Provider abgemeldet.",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect Benutzername anfordern",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect Benutzername anfordern",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Benutzername im OpenID Token. Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
"admin.config.oauth.oidc-username-claim.description": "Benutzername im OpenID Token. Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||||
"admin.config.oauth.oidc-role-path": "Pfad zu den Rollen im OpenID Verbindungs-Token",
|
"admin.config.oauth.oidc-role-path": "Pfad zu den Rollen im OpenID Verbindungs-Token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "LDAP-Attributname für die Gruppen, in denen ein Benutzer Mitglied ist. Dies wird bei der Überprüfung der Admin-Gruppe verwendet.",
|
"admin.config.ldap.field-name-member-of.description": "LDAP-Attributname für die Gruppen, in denen ein Benutzer Mitglied ist. Dies wird bei der Überprüfung der Admin-Gruppe verwendet.",
|
||||||
"admin.config.ldap.field-name-email": "Attributname für die E-Mail-Adresse des Benutzers",
|
"admin.config.ldap.field-name-email": "Attributname für die E-Mail-Adresse des Benutzers",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP-Attributname für die E-Mail-Adresse eines Benutzers.",
|
"admin.config.ldap.field-name-email.description": "LDAP-Attributname für die E-Mail-Adresse eines Benutzers.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Aktiviert",
|
||||||
|
"admin.config.s3.enabled.description": "Ob S3 verwendet werden soll, um die freigegebenen Dateien anstelle des lokalen Dateisystems zu speichern.",
|
||||||
|
"admin.config.s3.endpoint": "Endpunkt",
|
||||||
|
"admin.config.s3.endpoint.description": "Die URL des S3-Buckets.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "Die Region des S3-Buckets.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket-Name",
|
||||||
|
"admin.config.s3.bucket-name.description": "Der Name des S3-Buckets.",
|
||||||
|
"admin.config.s3.bucket-path": "Pfad",
|
||||||
|
"admin.config.s3.bucket-path.description": "Der Standardpfad, der zum Speichern der Dateien im S3-Bucket verwendet werden soll.",
|
||||||
|
"admin.config.s3.key": "Schlüssel",
|
||||||
|
"admin.config.s3.key.description": "Der Schlüssel, der den Zugriff auf den S3-Bucket ermöglicht.",
|
||||||
|
"admin.config.s3.secret": "Geheimnis",
|
||||||
|
"admin.config.s3.secret.description": "Das Geheimnis, das den Zugriff auf den S3-Bucket ermöglicht.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ups, diese Seite existiert nicht.",
|
"404.description": "Ups, diese Seite existiert nicht.",
|
||||||
"404.button.home": "Zurück zur Startseite",
|
"404.button.home": "Zurück zur Startseite",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Zurück",
|
"common.button.go-back": "Zurück",
|
||||||
"common.button.go-home": "Zur Startseite",
|
"common.button.go-home": "Zur Startseite",
|
||||||
"common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert",
|
"common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert",
|
||||||
|
"common.notify.copied-link": "Dein Link wurde in die Zwischenablage kopiert",
|
||||||
"common.success": "Erfolg",
|
"common.success": "Erfolg",
|
||||||
"common.error": "Fehler",
|
"common.error": "Fehler",
|
||||||
"common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
|
"common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Θέμα στο email διαμοιρασμού",
|
"admin.config.email.share-recipients-subject": "Θέμα στο email διαμοιρασμού",
|
||||||
"admin.config.email.share-recipients-subject.description": "Το θέμα του email διαμοιρασμού που θα φτάσει στον παραλήπτη.",
|
"admin.config.email.share-recipients-subject.description": "Το θέμα του email διαμοιρασμού που θα φτάσει στον παραλήπτη.",
|
||||||
"admin.config.email.share-recipients-message": "Το θέμα του email για τον διαμοιρασμό που θα φτάσει στον παραλήπτη ",
|
"admin.config.email.share-recipients-message": "Το θέμα του email για τον διαμοιρασμό που θα φτάσει στον παραλήπτη ",
|
||||||
"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 {creatorEmail} - The email 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": "Θέμα email αντίστροφου διαμοιρασμού",
|
"admin.config.email.reverse-share-subject": "Θέμα email αντίστροφου διαμοιρασμού",
|
||||||
"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": "Μήνυμα email αντίστροφου διαμοιρασμού",
|
"admin.config.email.reverse-share-message": "Μήνυμα email αντίστροφου διαμοιρασμού",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Εάν οι χρήστες χωρίς έλεγχο ταυτότητας μπορούν να δημιουργήσουν κοινόχρηστα στοιχεία",
|
"admin.config.share.allow-unauthenticated-shares.description": "Εάν οι χρήστες χωρίς έλεγχο ταυτότητας μπορούν να δημιουργήσουν κοινόχρηστα στοιχεία",
|
||||||
"admin.config.share.max-expiration": "Μέγιστη λήξη",
|
"admin.config.share.max-expiration": "Μέγιστη λήξη",
|
||||||
"admin.config.share.max-expiration.description": "Μέγιστη λήξη κοινής χρήσης σε ώρες. Ορίστε το 0 για να επιτρέψετε απεριόριστη λήξη.",
|
"admin.config.share.max-expiration.description": "Μέγιστη λήξη κοινής χρήσης σε ώρες. Ορίστε το 0 για να επιτρέψετε απεριόριστη λήξη.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Μέγιστο μέγεθος",
|
"admin.config.share.max-size": "Μέγιστο μέγεθος",
|
||||||
"admin.config.share.max-size.description": "Μέγιστο μέγεθος κοινοποίησης σε bytes",
|
"admin.config.share.max-size.description": "Μέγιστο μέγεθος κοινοποίησης σε bytes",
|
||||||
"admin.config.share.zip-compression-level": "Βαθμός συμπίεσης ZIP",
|
"admin.config.share.zip-compression-level": "Βαθμός συμπίεσης ZIP",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Αφήστε κενό αν δε γνωρίζετε για αυτή τη ρύθμιση",
|
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Αφήστε κενό αν δε γνωρίζετε για αυτή τη ρύθμιση",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ουπς. Αυτή η σελίδα δεν υπάρχει.",
|
"404.description": "Ουπς. Αυτή η σελίδα δεν υπάρχει.",
|
||||||
"404.button.home": "Πήγαινέ με πίσω",
|
"404.button.home": "Πήγαινέ με πίσω",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Επιστροφή",
|
"common.button.go-back": "Επιστροφή",
|
||||||
"common.button.go-home": "Μετάβαση στην αρχική",
|
"common.button.go-home": "Μετάβαση στην αρχική",
|
||||||
"common.notify.copied": "Ο σύνδεσμος σας αντιγράφηκε στο πρόχειρο",
|
"common.notify.copied": "Ο σύνδεσμος σας αντιγράφηκε στο πρόχειρο",
|
||||||
|
"common.notify.copied-link": "Ο σύνδεσμος σας αντιγράφηκε στο πρόχειρο",
|
||||||
"common.success": "Επιτυχία",
|
"common.success": "Επιτυχία",
|
||||||
"common.error": "Σφάλμα",
|
"common.error": "Σφάλμα",
|
||||||
"common.error.unknown": "Προέκυψε άγνωστο σφάλμα",
|
"common.error.unknown": "Προέκυψε άγνωστο σφάλμα",
|
||||||
|
|||||||
@@ -468,6 +468,9 @@ export default {
|
|||||||
"admin.config.share.max-expiration": "Max expiration",
|
"admin.config.share.max-expiration": "Max expiration",
|
||||||
"admin.config.share.max-expiration.description":
|
"admin.config.share.max-expiration.description":
|
||||||
"Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
|
"Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description":
|
||||||
|
"Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max size",
|
"admin.config.share.max-size": "Max size",
|
||||||
"admin.config.share.max-size.description": "Maximum share size in bytes",
|
"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": "Zip compression level",
|
||||||
@@ -563,6 +566,9 @@ export default {
|
|||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description":
|
"admin.config.oauth.oidc-sign-out.description":
|
||||||
"Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
"Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description":
|
||||||
|
"Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description":
|
"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.",
|
"Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||||
@@ -615,6 +621,26 @@ export default {
|
|||||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||||
"admin.config.ldap.field-name-email.description":
|
"admin.config.ldap.field-name-email.description":
|
||||||
"LDAP attribute name for the email of an user.",
|
"LDAP attribute name for the email of an user.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success":
|
||||||
|
"Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
|
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oops this page doesn't exist.",
|
"404.description": "Oops this page doesn't exist.",
|
||||||
@@ -665,6 +691,7 @@ export default {
|
|||||||
"common.button.go-back": "Go back",
|
"common.button.go-back": "Go back",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Go home",
|
||||||
"common.notify.copied": "Your link was copied to the clipboard",
|
"common.notify.copied": "Your link was copied to the clipboard",
|
||||||
|
"common.notify.copied-link": "Your link was copied to the clipboard",
|
||||||
"common.success": "Success",
|
"common.success": "Success",
|
||||||
|
|
||||||
"common.error": "Error",
|
"common.error": "Error",
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Subir",
|
"upload.title": "Subir",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "¿Estás seguro de que quieres salir de esta página? Tu subida será cancelada.",
|
||||||
"upload.notify.generic-error": "Ha ocurrido un error mientras se compartía tu archivo.",
|
"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.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.title": "Enlace de uso compartido inverso inválido",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Este enlace de uso compartido inverso ha caducado o no es válido.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Subir archivos",
|
"upload.dropzone.title": "Subir archivos",
|
||||||
"upload.dropzone.description": "Arrastra y suelta los archivos aquí para crear tu enlace compartido. Solo aceptamos archivos de hasta {maxSize} en total.",
|
"upload.dropzone.description": "Arrastra y suelta los archivos aquí para crear tu enlace compartido. Solo aceptamos archivos de hasta {maxSize} en total.",
|
||||||
@@ -303,8 +303,8 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Nombre de la aplicación",
|
"admin.config.general.app-name.description": "Nombre de la aplicación",
|
||||||
"admin.config.general.app-url": "App URL",
|
"admin.config.general.app-url": "App URL",
|
||||||
"admin.config.general.app-url.description": "En cuál URL está disponible Pingvin Share",
|
"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": "Cookies seguras",
|
||||||
"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.secure-cookies.description": "Si se establece o no la bandera de seguridad en las cookies. Si se activa, el sitio no funcionará cuando se acceda a través de HTTP.",
|
||||||
"admin.config.general.show-home-page": "Mostrar página de inicio",
|
"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.show-home-page.description": "Mostrar o no la página de inicio",
|
||||||
"admin.config.general.session-duration": "Duración de la sesión",
|
"admin.config.general.session-duration": "Duración de la sesión",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Asunto destinatario",
|
"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-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": "Mensaje destinatario",
|
||||||
"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.share-recipients-message.description": "Mensaje que se envía a los destinatarios del enlace compartido. Variables disponibles:\n{creator} - El nombre de usuario del creador del enlace\n{creatorEmail} - El correo electrónico el 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": "Asunto de la compartición inversa",
|
||||||
"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-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": "Mensaje de la compartición inversa",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Si los usuarios que no han iniciado sesión pueden compartir",
|
"admin.config.share.allow-unauthenticated-shares.description": "Si los usuarios que no han iniciado sesión pueden compartir",
|
||||||
"admin.config.share.max-expiration": "Expiración máxima",
|
"admin.config.share.max-expiration": "Expiración máxima",
|
||||||
"admin.config.share.max-expiration.description": "Expiración máxima para compartir en horas. Establezca en 0 para permitir una expiración ilimitada.",
|
"admin.config.share.max-expiration.description": "Expiración máxima para compartir en horas. Establezca en 0 para permitir una expiración ilimitada.",
|
||||||
|
"admin.config.share.share-id-length": "Longitud de ID compartido por defecto",
|
||||||
|
"admin.config.share.share-id-length.description": "Longitud predeterminada para el ID generado de un compartido. Este valor también se usa para generar enlaces compartidos de uso inverso. Un valor inferior a 8 no se considera seguro.",
|
||||||
"admin.config.share.max-size": "Tamaño máximo",
|
"admin.config.share.max-size": "Tamaño máximo",
|
||||||
"admin.config.share.max-size.description": "Tamaño máximo de los archivos, en bytes",
|
"admin.config.share.max-size.description": "Tamaño máximo de los archivos, en bytes",
|
||||||
"admin.config.share.zip-compression-level": "Nivel de compresión del Zip",
|
"admin.config.share.zip-compression-level": "Nivel de compresión del Zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "URI de descubrimiento de la aplicación OAuth 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": "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-sign-out.description": "Si el botón \"Cerrar sesión\" cerrará la sesión del proveedor de OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "Ámbito de OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Ámbitos que se deberían solicitar al proveedor OpenID Connect.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Reclamo de nombre de usuario 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-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": "Ruta a los roles en el token de OpenID Connect",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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-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": "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.",
|
"admin.config.ldap.field-name-email.description": "Nombre del atributo LDAP para el correo electrónico de un usuario.",
|
||||||
|
"admin.config.notify.success": "Configuración actualizada correctamente.",
|
||||||
|
"admin.config.notify.logo-success": "Logo actualizado correctamente. Puede tardar unos minutos en actualizarse en el sitio web.",
|
||||||
|
"admin.config.notify.no-changes": "No hay cambios que guardar.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oops esta página no existe.",
|
"404.description": "Oops esta página no existe.",
|
||||||
"404.button.home": "Regrésame al inicio",
|
"404.button.home": "Regrésame al inicio",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Volver",
|
"common.button.go-back": "Volver",
|
||||||
"common.button.go-home": "Página de inicio",
|
"common.button.go-home": "Página de inicio",
|
||||||
"common.notify.copied": "Tu enlace se ha copiado al portapapeles",
|
"common.notify.copied": "Tu enlace se ha copiado al portapapeles",
|
||||||
|
"common.notify.copied-link": "Tu enlace se ha copiado al portapapeles",
|
||||||
"common.success": "Éxito",
|
"common.success": "Éxito",
|
||||||
"common.error": "Error",
|
"common.error": "Error",
|
||||||
"common.error.unknown": "Ocurrió un error desconocido",
|
"common.error.unknown": "Ocurrió un error desconocido",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Sähköpostijaon otsikko",
|
"admin.config.email.share-recipients-subject": "Sähköpostijaon otsikko",
|
||||||
"admin.config.email.share-recipients-subject.description": "Sähköpostin aihe, joka saa lähetetään jaon vastaanottajille.",
|
"admin.config.email.share-recipients-subject.description": "Sähköpostin aihe, joka saa lähetetään jaon vastaanottajille.",
|
||||||
"admin.config.email.share-recipients-message": "Sähköpostijaon viesti",
|
"admin.config.email.share-recipients-message": "Sähköpostijaon viesti",
|
||||||
"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 {creatorEmail} - The email 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": "Käänteisen jaon aihe",
|
"admin.config.email.reverse-share-subject": "Käänteisen jaon aihe",
|
||||||
"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": "Käänteisen jakoviestin viesti",
|
"admin.config.email.reverse-share-message": "Käänteisen jakoviestin viesti",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Voiko tunnistamattomat käyttäjät luoda jakoja",
|
"admin.config.share.allow-unauthenticated-shares.description": "Voiko tunnistamattomat käyttäjät luoda jakoja",
|
||||||
"admin.config.share.max-expiration": "Max expiration",
|
"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.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Maksimikoko",
|
"admin.config.share.max-size": "Maksimikoko",
|
||||||
"admin.config.share.max-size.description": "Jaon enimmäiskoko tavuissa (bytes)",
|
"admin.config.share.max-size.description": "Jaon enimmäiskoko tavuissa (bytes)",
|
||||||
"admin.config.share.zip-compression-level": "Zip puristustaso",
|
"admin.config.share.zip-compression-level": "Zip puristustaso",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Hups tätä sivua ei ole olemassa.",
|
"404.description": "Hups tätä sivua ei ole olemassa.",
|
||||||
"404.button.home": "Tuo minut takaisin kotiin",
|
"404.button.home": "Tuo minut takaisin kotiin",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Takaisin",
|
"common.button.go-back": "Takaisin",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Go home",
|
||||||
"common.notify.copied": "Linkki kopioitiin leikepöydälle",
|
"common.notify.copied": "Linkki kopioitiin leikepöydälle",
|
||||||
|
"common.notify.copied-link": "Linkki kopioitiin leikepöydälle",
|
||||||
"common.success": "Suoritettu",
|
"common.success": "Suoritettu",
|
||||||
"common.error": "Virhe",
|
"common.error": "Virhe",
|
||||||
"common.error.unknown": "Tapahtui tuntematon virhe",
|
"common.error.unknown": "Tapahtui tuntematon virhe",
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Envoyer",
|
"upload.title": "Envoyer",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Êtes-vous sûr de vouloir quitter cette page ? Votre envoi sera annulé.",
|
||||||
"upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
|
"upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
|
||||||
"upload.notify.count-failed": "{count} fichier(s) n’a(ont) pas pu être envoyé(s). Veuillez réessayer.",
|
"upload.notify.count-failed": "{count} fichier(s) n’a(ont) pas pu être envoyé(s). Veuillez réessayer.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Lien de partage inversé invalide",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Ce partage inversé a expiré ou n'est pas valide.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Téléverser des fichiers",
|
"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.",
|
"upload.dropzone.description": "Glisser-déposer les fichiers ici pour commencer votre partage. Nous n'acceptons que les fichiers jusqu'à {maxSize} au total.",
|
||||||
@@ -303,8 +303,8 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Le nom de l’application",
|
"admin.config.general.app-name.description": "Le nom de l’application",
|
||||||
"admin.config.general.app-url": "URL de l’appli",
|
"admin.config.general.app-url": "URL de l’appli",
|
||||||
"admin.config.general.app-url.description": "Depuis quel URL le partage Pingvin est disponible",
|
"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": "Cookies sécurisés",
|
||||||
"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.secure-cookies.description": "Définir ou non le marquage sécurisé sur les cookies. Si activé, le site ne fonctionnera pas lorsqu'il est accédé via HTTP.",
|
||||||
"admin.config.general.show-home-page": "Afficher la page d’accueil",
|
"admin.config.general.show-home-page": "Afficher la page d’accueil",
|
||||||
"admin.config.general.show-home-page.description": "Afficher ou non la page d’accueil",
|
"admin.config.general.show-home-page.description": "Afficher ou non la page d’accueil",
|
||||||
"admin.config.general.session-duration": "Durée de la session",
|
"admin.config.general.session-duration": "Durée de la session",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Sujet d’un partage",
|
"admin.config.email.share-recipients-subject": "Sujet d’un partage",
|
||||||
"admin.config.email.share-recipients-subject.description": "Intitulé du courriel envoyé aux destinataires d’un partage.",
|
"admin.config.email.share-recipients-subject.description": "Intitulé du courriel envoyé aux destinataires d’un partage.",
|
||||||
"admin.config.email.share-recipients-message": "Message d’un partage",
|
"admin.config.email.share-recipients-message": "Message d’un partage",
|
||||||
"admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage.\nVariables possibles :\n• {creator} : Le pseudo de l’auteur du partage\n• {shareUrl} : L’URL du partage\n• {desc} : La description du partage\n• {expires} : La date d'expiration du partage\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. Variables possibles :\n {creator} - Le nom d'utilisateur du créateur du partage\n {creatorEmail} - L'adresse mail du créateur du partage\n {shareUrl} - L'URL du partage\n {desc} - La description du partage\n {expires} - La date d'expiration du partage.\n Ces variables seront remplacées par leur valeur effective.",
|
||||||
"admin.config.email.reverse-share-subject": "Sujet d’un partage inversé",
|
"admin.config.email.reverse-share-subject": "Sujet d’un partage inversé",
|
||||||
"admin.config.email.reverse-share-subject.description": "Intitulé du courriel envoyé lorsque quelqu’un a partagé des fichiers depuis votre partage inversé.",
|
"admin.config.email.reverse-share-subject.description": "Intitulé du courriel envoyé lorsque quelqu’un a partagé des fichiers depuis votre partage inversé.",
|
||||||
"admin.config.email.reverse-share-message": "Message d’un partage inversé",
|
"admin.config.email.reverse-share-message": "Message d’un partage inversé",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Permet aux visiteurs de créer des partages",
|
"admin.config.share.allow-unauthenticated-shares.description": "Permet aux visiteurs de créer des partages",
|
||||||
"admin.config.share.max-expiration": "Échéance",
|
"admin.config.share.max-expiration": "Échéance",
|
||||||
"admin.config.share.max-expiration.description": "Échéance du partage en heures. Indiquez 0 pour qu’il n’expire jamais.",
|
"admin.config.share.max-expiration.description": "Échéance du partage en heures. Indiquez 0 pour qu’il n’expire jamais.",
|
||||||
|
"admin.config.share.share-id-length": "Taille de l'identifiant généré",
|
||||||
|
"admin.config.share.share-id-length.description": "Taille par défaut de l'identifiant généré pour un partage. Cette valeur est aussi utilisée pour générer les liens des partages inverses. Une valeur inférieure à 8 n'est pas considérée sûre.",
|
||||||
"admin.config.share.max-size": "Taille max",
|
"admin.config.share.max-size": "Taille max",
|
||||||
"admin.config.share.max-size.description": "Taille maximale du partage en octets",
|
"admin.config.share.max-size.description": "Taille maximale du partage en octets",
|
||||||
"admin.config.share.zip-compression-level": "Niveau de compression",
|
"admin.config.share.zip-compression-level": "Niveau de compression",
|
||||||
@@ -387,7 +389,7 @@ export default {
|
|||||||
"admin.config.oauth.microsoft-client-secret.description": "Le secret du client de l’application Microsoft OAuth",
|
"admin.config.oauth.microsoft-client-secret.description": "Le secret du client de l’application Microsoft OAuth",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Permettre la connexion via 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": "Utilisateurs limités sur Discord",
|
||||||
"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-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": "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-limited-guild.description": "Limiter la connexion aux utilisateurs sur un serveur spécifique. Laissez vide pour désactiver.",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "L’URI de découverte de la connexion à l'application OpenID OAuth",
|
"admin.config.oauth.oidc-discovery-uri.description": "L’URI de découverte de la connexion à l'application OpenID OAuth",
|
||||||
"admin.config.oauth.oidc-sign-out": "Déconnexion du fournisseur OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Déconnexion du fournisseur OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Si activé, le bouton \"Déconnexion\" vous déconnectera également du fournisseur d'identité OpenID Connect",
|
"admin.config.oauth.oidc-sign-out.description": "Si activé, le bouton \"Déconnexion\" vous déconnectera également du fournisseur d'identité OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Revendication du nom d’utilisateur OpenID",
|
"admin.config.oauth.oidc-username-claim": "Revendication du nom d’utilisateur OpenID",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Le champ contenant la revendication du nom d’utilisateur dans le jeton OpenID Connect. Laissez vide si vous ne savez pas quoi indiquer.",
|
"admin.config.oauth.oidc-username-claim.description": "Le champ contenant la revendication du nom d’utilisateur dans le jeton OpenID Connect. Laissez vide si vous ne savez pas quoi indiquer.",
|
||||||
"admin.config.oauth.oidc-role-path": "Chemin vers les rôles dans le jeton OpenID Connect",
|
"admin.config.oauth.oidc-role-path": "Chemin vers les rôles dans le jeton OpenID Connect",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "Nom d'attribut LDAP pour les groupes dont un utilisateur est membre. Il est utilisé lors de la vérification du groupe d'administrateurs.",
|
"admin.config.ldap.field-name-member-of.description": "Nom d'attribut LDAP pour les groupes dont un utilisateur est membre. Il est utilisé lors de la vérification du groupe d'administrateurs.",
|
||||||
"admin.config.ldap.field-name-email": "Nom d'attribut de l'e-mail de l'utilisateur",
|
"admin.config.ldap.field-name-email": "Nom d'attribut de l'e-mail de l'utilisateur",
|
||||||
"admin.config.ldap.field-name-email.description": "Nom d'attribut LDAP pour l'e-mail d'un utilisateur.",
|
"admin.config.ldap.field-name-email.description": "Nom d'attribut LDAP pour l'e-mail d'un utilisateur.",
|
||||||
|
"admin.config.notify.success": "Configuration mise à jour avec succès.",
|
||||||
|
"admin.config.notify.logo-success": "Logo mis à jour avec succès. La mise à jour sur le site peut prendre quelques minutes.",
|
||||||
|
"admin.config.notify.no-changes": "Aucune modification à enregistrer.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Activé",
|
||||||
|
"admin.config.s3.enabled.description": "Si S3 doit être utilisé pour stocker les fichiers partagés au lieu du système de fichiers local.",
|
||||||
|
"admin.config.s3.endpoint": "Point de terminaison",
|
||||||
|
"admin.config.s3.endpoint.description": "L'URL du bucket S3.",
|
||||||
|
"admin.config.s3.region": "Région",
|
||||||
|
"admin.config.s3.region.description": "La région du bucket S3.",
|
||||||
|
"admin.config.s3.bucket-name": "Nom du bucket",
|
||||||
|
"admin.config.s3.bucket-name.description": "Le nom du bucket S3.",
|
||||||
|
"admin.config.s3.bucket-path": "Chemin",
|
||||||
|
"admin.config.s3.bucket-path.description": "Le chemin par défaut qui doit être utilisé pour stocker les fichiers dans le bucket S3.",
|
||||||
|
"admin.config.s3.key": "Clé",
|
||||||
|
"admin.config.s3.key.description": "La clé qui vous permet d'accéder au bucket S3.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "Le secret qui vous permet d'accéder au bucket S3.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Désolé, mais cette page n’existe pas.",
|
"404.description": "Désolé, mais cette page n’existe pas.",
|
||||||
"404.button.home": "Retour à l’accueil",
|
"404.button.home": "Retour à l’accueil",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Précédent",
|
"common.button.go-back": "Précédent",
|
||||||
"common.button.go-home": "Accueil",
|
"common.button.go-home": "Accueil",
|
||||||
"common.notify.copied": "Votre lien a été copié dans le presse-papiers",
|
"common.notify.copied": "Votre lien a été copié dans le presse-papiers",
|
||||||
|
"common.notify.copied-link": "Votre lien a été copié dans le presse-papiers",
|
||||||
"common.success": "Opération réussie",
|
"common.success": "Opération réussie",
|
||||||
"common.error": "Erreur",
|
"common.error": "Erreur",
|
||||||
"common.error.unknown": "Une erreur inconnue est survenue",
|
"common.error.unknown": "Une erreur inconnue est survenue",
|
||||||
|
|||||||
510
frontend/src/i18n/translations/hr-HR.ts
Normal file
510
frontend/src/i18n/translations/hr-HR.ts
Normal file
@@ -0,0 +1,510 @@
|
|||||||
|
export default {
|
||||||
|
// Navbar
|
||||||
|
"navbar.upload": "Otpremi",
|
||||||
|
"navbar.signin": "Prijava",
|
||||||
|
"navbar.home": "Početna",
|
||||||
|
"navbar.signup": "Registracija",
|
||||||
|
"navbar.links.shares": "Moja dijeljenja",
|
||||||
|
"navbar.links.reverse": "Obrnuto dijeljenje",
|
||||||
|
"navbar.avatar.account": "Moj račun",
|
||||||
|
"navbar.avatar.admin": "Administracija",
|
||||||
|
"navbar.avatar.signout": "Odjavi se",
|
||||||
|
// END navbar
|
||||||
|
// /
|
||||||
|
"home.title": "<h>Samo-hostana</h> platforma za dijeljenje datoteka.",
|
||||||
|
"home.description": "Želite li zaista povjeriti svoje osobne datoteke trećim stranama poput WeTransfera?",
|
||||||
|
"home.bullet.a.name": "Samo-hostano",
|
||||||
|
"home.bullet.a.description": "Hostajte Pingvin Share na svom uređaju.",
|
||||||
|
"home.bullet.b.name": "Privatnost",
|
||||||
|
"home.bullet.b.description": "Vaše datoteke ostaju vaše i nikada neće biti dostupne trećim stranama.",
|
||||||
|
"home.bullet.c.name": "Bez dosadnog ograničenja veličine datoteka",
|
||||||
|
"home.bullet.c.description": "Otpremite datoteke bilo koje veličine koliko želite. Samo vaš tvrdi disk je granica.",
|
||||||
|
"home.button.start": "Započni",
|
||||||
|
"home.button.source": "Izvorni kod",
|
||||||
|
// END /
|
||||||
|
// /auth/signin
|
||||||
|
"signin.title": "Dobrodošli natrag",
|
||||||
|
"signin.description": "Još uvijek nemate račun?",
|
||||||
|
"signin.button.signup": "Registriraj se",
|
||||||
|
"signin.input.email-or-username": "Email ili korisničko ime",
|
||||||
|
"signin.input.email-or-username.placeholder": "Vaš email ili korisničko ime",
|
||||||
|
"signin.input.password": "Lozinka",
|
||||||
|
"signin.input.password.placeholder": "Vaša lozinka",
|
||||||
|
"signin.button.submit": "Prijavite se",
|
||||||
|
"signIn.notify.totp-required.title": "Potrebna je dvofaktorska autentifikacija",
|
||||||
|
"signIn.notify.totp-required.description": "Unesite svoj dvofaktorski kod za autentifikaciju",
|
||||||
|
"signIn.oauth.or": "Ili",
|
||||||
|
"signIn.oauth.signInWith": "Prijavite se sa",
|
||||||
|
"signIn.oauth.github": "GitHub",
|
||||||
|
"signIn.oauth.google": "Google",
|
||||||
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
|
"signIn.oauth.discord": "Discord",
|
||||||
|
"signIn.oauth.oidc": "OpenID",
|
||||||
|
// END /auth/signin
|
||||||
|
// /auth/signup
|
||||||
|
"signup.title": "Kreiraj račun",
|
||||||
|
"signup.description": "Već imate račun?",
|
||||||
|
"signup.button.signin": "Prijavite se",
|
||||||
|
"signup.input.username": "Korisničko ime",
|
||||||
|
"signup.input.username.placeholder": "Vaše korisničko ime",
|
||||||
|
"signup.input.email": "Email",
|
||||||
|
"signup.input.email.placeholder": "Vaš email",
|
||||||
|
"signup.button.submit": "Krenimo",
|
||||||
|
// END /auth/signup
|
||||||
|
// /auth/totp
|
||||||
|
"totp.title": "TOTP autentifikacija",
|
||||||
|
"totp.button.signIn": "Prijavite se",
|
||||||
|
// END /auth/totp
|
||||||
|
// /auth/reset-password
|
||||||
|
"resetPassword.title": "Zaboravili ste lozinku?",
|
||||||
|
"resetPassword.description": "Unesite svoj email kako biste resetirali lozinku.",
|
||||||
|
"resetPassword.notify.success": "Poruka s poveznicom za resetiranje lozinke je poslana ako unesena email adresa postoji.",
|
||||||
|
"resetPassword.button.back": "Natrag na stranicu za prijavu",
|
||||||
|
"resetPassword.text.resetPassword": "Obnovi lozinku",
|
||||||
|
"resetPassword.text.enterNewPassword": "Unesite svoju novu lozinku",
|
||||||
|
"resetPassword.input.password": "Nova lozinka",
|
||||||
|
"resetPassword.notify.passwordReset": "Vaša lozinka je uspješno resetirana.",
|
||||||
|
// /account
|
||||||
|
"account.title": "Moj račun",
|
||||||
|
"account.card.info.title": "Podaci o računu",
|
||||||
|
"account.card.info.username": "Korisničko ime",
|
||||||
|
"account.card.info.email": "Email",
|
||||||
|
"account.notify.info.success": "Račun je uspješno ažuriran",
|
||||||
|
"account.card.password.title": "Lozinka",
|
||||||
|
"account.card.password.old": "Stara lozinka",
|
||||||
|
"account.card.password.new": "Nova lozinka",
|
||||||
|
"account.card.password.noPasswordSet": "Nemate postavljenu lozinku. Za prijavu korištenjem emaila i lozinke potrebno je da postavite lozinku.",
|
||||||
|
"account.notify.password.success": "Lozinka je uspješno promijenjena",
|
||||||
|
"account.card.oauth.title": "Social login",
|
||||||
|
"account.card.oauth.github": "GitHub",
|
||||||
|
"account.card.oauth.google": "Google",
|
||||||
|
"account.card.oauth.microsoft": "Microsoft",
|
||||||
|
"account.card.oauth.discord": "Discord",
|
||||||
|
"account.card.oauth.oidc": "OpenID",
|
||||||
|
"account.card.oauth.link": "Poveži",
|
||||||
|
"account.card.oauth.unlink": "Prekini vezu",
|
||||||
|
"account.card.oauth.unlinked": "Veza je prekinuta",
|
||||||
|
"account.modal.unlink.title": "Prekini vezu s računom",
|
||||||
|
"account.modal.unlink.description": "Uklanjanje veze s vašim društvenim računima može dovesti do gubitka pristupa vašem računu ako se ne sjećate svojih pristupnih podataka.",
|
||||||
|
"account.notify.oauth.unlinked.success": "Veza je prekinuta",
|
||||||
|
"account.card.security.title": "Sigurnost",
|
||||||
|
"account.card.security.totp.enable.description": "Unesite svoju trenutnu lozinku kako biste započeli omogućavanje TOTP-a",
|
||||||
|
"account.card.security.totp.disable.description": "Unesite svoju trenutnu lozinku kako biste onemogućili TOTP",
|
||||||
|
"account.card.security.totp.button.start": "Započni",
|
||||||
|
"account.modal.totp.title": "Omogući TOTP",
|
||||||
|
"account.modal.totp.step1": "Korak 1: Dodajte svoj autentifikator",
|
||||||
|
"account.modal.totp.step2": "Korak 2: Potvrdite svoj kod",
|
||||||
|
"account.modal.totp.enterManually": "Unesite ručno",
|
||||||
|
"account.modal.totp.code": "Kod",
|
||||||
|
"common.button.clickToCopy": "Kliknite za kopiranje",
|
||||||
|
"account.modal.totp.verify": "Potvrdi",
|
||||||
|
"account.notify.totp.disable": "TOTP je uspješno onemogućen",
|
||||||
|
"account.notify.totp.enable": "TOTP je uspješno omogućen",
|
||||||
|
"account.card.language.title": "Jezik",
|
||||||
|
"account.card.language.description": "Projekt je preveden od strane zajednice. Neki jezici mogu biti nepotpuni.",
|
||||||
|
"account.card.color.title": "Shema boja",
|
||||||
|
// ThemeSwitcher.tsx
|
||||||
|
"account.theme.dark": "Tamna",
|
||||||
|
"account.theme.light": "Svijetla",
|
||||||
|
"account.theme.system": "Sustav",
|
||||||
|
"account.button.delete": "Izbriši račun",
|
||||||
|
"account.modal.delete.title": "Izbriši račun",
|
||||||
|
"account.modal.delete.description": "Jeste li sigurni da želite izbrisati svoj račun, uključujući sva vaša aktivna dijeljenja?",
|
||||||
|
// END /account
|
||||||
|
// /account/shares
|
||||||
|
"account.shares.title": "Moja dijeljenja",
|
||||||
|
"account.shares.title.empty": "Ovdje je prazno 👀",
|
||||||
|
"account.shares.description.empty": "Nemate nikakva dijeljenja.",
|
||||||
|
"account.shares.button.create": "Kreirajte",
|
||||||
|
"account.shares.info.title": "Informacije o dijeljenju",
|
||||||
|
"account.shares.table.id": "ID",
|
||||||
|
"account.shares.table.name": "Naziv",
|
||||||
|
"account.shares.table.description": "Opis",
|
||||||
|
"account.shares.table.visitors": "Posjetitelji",
|
||||||
|
"account.shares.table.expiresAt": "Istječe",
|
||||||
|
"account.shares.table.createdAt": "Kreirano",
|
||||||
|
"account.shares.table.size": "Veličina",
|
||||||
|
"account.shares.modal.share-informations": "Informacije o dijeljenju",
|
||||||
|
"account.shares.modal.share-link": "Podijelite poveznicu",
|
||||||
|
"account.shares.modal.delete.title": "Izbriši dijeljenje {share}",
|
||||||
|
"account.shares.modal.delete.description": "Jeste li sigurni da želite izbrisati ovo dijeljenje?",
|
||||||
|
// END /account/shares
|
||||||
|
// /account/reverseShares
|
||||||
|
"account.reverseShares.title": "Obrnuto dijeljenje",
|
||||||
|
"account.reverseShares.description": "Obrnuto dijeljenje omogućava vam da generirate jedinstveni URL koji omogućava vanjskim korisnicima kreiranje dijeljenja.",
|
||||||
|
"account.reverseShares.title.empty": "Ovdje je prazno 👀",
|
||||||
|
"account.reverseShares.description.empty": "Nemate obrnuta dijeljenja.",
|
||||||
|
// showCreateReverseShareModal.tsx
|
||||||
|
"account.reverseShares.modal.title": "Kreirajte obrnuto dijeljenje",
|
||||||
|
"account.reverseShares.modal.expiration.label": "Istječe",
|
||||||
|
"account.reverseShares.modal.expiration.minute-singular": "Minuta",
|
||||||
|
"account.reverseShares.modal.expiration.minute-plural": "Minute",
|
||||||
|
"account.reverseShares.modal.expiration.hour-singular": "Sat",
|
||||||
|
"account.reverseShares.modal.expiration.hour-plural": "Sati",
|
||||||
|
"account.reverseShares.modal.expiration.day-singular": "Dan",
|
||||||
|
"account.reverseShares.modal.expiration.day-plural": "Dani",
|
||||||
|
"account.reverseShares.modal.expiration.week-singular": "Tjedan",
|
||||||
|
"account.reverseShares.modal.expiration.week-plural": "Tjedni",
|
||||||
|
"account.reverseShares.modal.expiration.month-singular": "Mjesec",
|
||||||
|
"account.reverseShares.modal.expiration.month-plural": "Mjeseci",
|
||||||
|
"account.reverseShares.modal.expiration.year-singular": "Godina",
|
||||||
|
"account.reverseShares.modal.expiration.year-plural": "Godine",
|
||||||
|
"account.reverseShares.modal.max-size.label": "Maksimalna veličina dijeljenja",
|
||||||
|
"account.reverseShares.modal.send-email": "Pošalji obavijesti emailom",
|
||||||
|
"account.reverseShares.modal.send-email.description": "Pošaljite obavijest emailom kada se kreira dijeljenje pomoću ovog obrnutog linka za dijeljenje.",
|
||||||
|
"account.reverseShares.modal.simplified": "Jednostavni način",
|
||||||
|
"account.reverseShares.modal.simplified.description": "Olakšajte osobi koja prenosi datoteku da je podijeli s vama. Oni će moći prilagoditi samo naziv i opis dijeljenja.",
|
||||||
|
"account.reverseShares.modal.public-access": "Javni pristup",
|
||||||
|
"account.reverseShares.modal.public-access.description": "Omogućite da dijeljenja kreirana ovim obrnutim linkom budu javna. Ako je onemogućeno, samo vi i kreator dijeljenja ćete imati pristup pregledavanju.",
|
||||||
|
"account.reverseShares.modal.max-use.label": "Maksimalan broj korištenja",
|
||||||
|
"account.reverseShares.modal.max-use.description": "Maksimalan broj puta koji ovaj URL može biti korišten za kreiranje dijeljenja.",
|
||||||
|
"account.reverseShare.never-expires": "Ovo obrnuto dijeljenje nikada neće isteći.",
|
||||||
|
"account.reverseShare.expires-on": "Ovo obrnuto dijeljenje će isteći {expiration}.",
|
||||||
|
"account.reverseShares.table.no-shares": "Još nema kreiranih dijeljenja",
|
||||||
|
"account.reverseShares.table.count.singular": "dijeljenje",
|
||||||
|
"account.reverseShares.table.count.plural": "dijeljenja",
|
||||||
|
"account.reverseShares.table.shares": "Dijeljenja",
|
||||||
|
"account.reverseShares.table.remaining": "Preostalo korištenje",
|
||||||
|
"account.reverseShares.table.max-size": "Maksimalna veličina dijeljenja",
|
||||||
|
"account.reverseShares.table.expires": "Istječe",
|
||||||
|
"account.reverseShares.modal.reverse-share-link": "Link za obrnuto dijeljenje",
|
||||||
|
"account.reverseShares.modal.delete.title": "Obrišite obrnuto dijeljenje",
|
||||||
|
"account.reverseShares.modal.delete.description": "Jeste li sigurni da želite izbrisati ovo obrnuto dijeljenje? Ako to učinite, pridružena dijeljenja će također biti izbrisana.",
|
||||||
|
// END /account/reverseShares
|
||||||
|
// /admin
|
||||||
|
"admin.title": "Administracija",
|
||||||
|
"admin.button.users": "Upravljanje korisnicima",
|
||||||
|
"admin.button.shares": "Upravljanje dijeljenjima",
|
||||||
|
"admin.button.config": "Konfiguracija",
|
||||||
|
"admin.version": "Verzija",
|
||||||
|
// END /admin
|
||||||
|
// /admin/users
|
||||||
|
"admin.users.title": "Upravljanje korisnicima",
|
||||||
|
"admin.users.table.username": "Korisničko ime",
|
||||||
|
"admin.users.table.email": "Email",
|
||||||
|
"admin.users.table.admin": "Admin",
|
||||||
|
"admin.users.edit.update.title": "Uredi korisnika: {username}",
|
||||||
|
"admin.users.edit.update.admin-privileges": "Administratorske privilegije",
|
||||||
|
"admin.users.edit.update.change-password.title": "Promijenite lozinku",
|
||||||
|
"admin.users.edit.update.change-password.field": "Nova lozinka",
|
||||||
|
"admin.users.edit.update.change-password.button": "Spremite novu lozinku",
|
||||||
|
"admin.users.edit.update.notify.password.success": "Lozinka je uspješno promijenjena",
|
||||||
|
"admin.users.edit.delete.title": "Obrišite korisnika: {username}?",
|
||||||
|
"admin.users.edit.delete.description": "Jeste li sigurni da želite obrisati ovog korisnika i sva njegova dijeljenja?",
|
||||||
|
// showCreateUserModal.tsx
|
||||||
|
"admin.users.modal.create.title": "Kreiraj korisnika",
|
||||||
|
"admin.users.modal.create.username": "Korisničko ime",
|
||||||
|
"admin.users.modal.create.email": "Email",
|
||||||
|
"admin.users.modal.create.password": "Lozinka",
|
||||||
|
"admin.users.modal.create.manual-password": "Postavite lozinku ručno",
|
||||||
|
"admin.users.modal.create.manual-password.description": "Ako nije označeno, korisnik će dobiti email s poveznicom za postavljanje lozinke.",
|
||||||
|
"admin.users.modal.create.admin": "Administratorske privilegije",
|
||||||
|
"admin.users.modal.create.admin.description": "Ako je označeno, korisnik će moći pristupiti administratorskom panelu.",
|
||||||
|
// END /admin/users
|
||||||
|
// /admin/shares
|
||||||
|
"admin.shares.title": "Upravljanje dijeljenjima",
|
||||||
|
"admin.shares.table.id": "ID dijeljenja",
|
||||||
|
"admin.shares.table.username": "Kreator",
|
||||||
|
"admin.shares.table.visitors": "Posjetitelji",
|
||||||
|
"admin.shares.table.expires": "Istječe",
|
||||||
|
"admin.shares.edit.delete.title": "Obrišite dijeljenje: {id}",
|
||||||
|
"admin.shares.edit.delete.description": "Jeste li sigurni da želite obrisati ovo dijeljenje?",
|
||||||
|
// END /admin/shares
|
||||||
|
// /upload
|
||||||
|
"upload.title": "Pošalji",
|
||||||
|
"upload.notify.confirm-leave": "Jeste li sigurni da želite napustiti ovu stranicu? Vaše učitavanje će biti otkazano.",
|
||||||
|
"upload.notify.generic-error": "Došlo je do pogreške prilikom dovršavanja dijeljenja.",
|
||||||
|
"upload.notify.count-failed": "Učitavanje {count} datoteka nije uspjelo. Pokušavam ponovno.",
|
||||||
|
"upload.reverse-share.error.invalid.title": "Nevažeća poveznica za obrnuto dijeljenje",
|
||||||
|
"upload.reverse-share.error.invalid.description": "Ovo obrnuto dijeljenje je isteklo ili je nevažeće.",
|
||||||
|
// Dropzone.tsx
|
||||||
|
"upload.dropzone.title": "Pošaljite datoteke",
|
||||||
|
"upload.dropzone.description": "Povucite i ispustite datoteke ovdje kako biste započeli dijeljenje. Prihvaćamo samo datoteke ukupne veličine do {maxSize}.",
|
||||||
|
"upload.dropzone.notify.file-too-big": "Vaše datoteke premašuju maksimalnu veličinu dijeljenja od {maxSize}.",
|
||||||
|
// FileList.tsx
|
||||||
|
"upload.filelist.name": "Naziv",
|
||||||
|
"upload.filelist.size": "Veličina",
|
||||||
|
// showCreateUploadModal.tsx
|
||||||
|
"upload.modal.title": "Kreiraj dijeljenje",
|
||||||
|
"upload.modal.link.error.invalid": "Može sadržavati samo slova, brojeve, donje crte i crtice",
|
||||||
|
"upload.modal.link.error.taken": "Ova poveznica je već u upotrebi",
|
||||||
|
"upload.modal.not-signed-in": "Niste prijavljeni",
|
||||||
|
"upload.modal.not-signed-in-description": "Nećete moći ručno obrisati svoje dijeljenje niti vidjeti broj posjetitelja.",
|
||||||
|
"upload.modal.expires.never": "nikad",
|
||||||
|
"upload.modal.expires.never-long": "Trajno dijeljenje",
|
||||||
|
"upload.modal.expires.error.too-long": "Datum isteka premašuje maksimalnu vrijednost od {max}.",
|
||||||
|
"upload.modal.link.label": "Poveznica",
|
||||||
|
"upload.modal.expires.label": "Istječe",
|
||||||
|
"upload.modal.expires.minute-singular": "Minuta",
|
||||||
|
"upload.modal.expires.minute-plural": "Minute",
|
||||||
|
"upload.modal.expires.hour-singular": "Sat",
|
||||||
|
"upload.modal.expires.hour-plural": "Sati",
|
||||||
|
"upload.modal.expires.day-singular": "Dan",
|
||||||
|
"upload.modal.expires.day-plural": "Dani",
|
||||||
|
"upload.modal.expires.week-singular": "Tjedan",
|
||||||
|
"upload.modal.expires.week-plural": "Tjedni",
|
||||||
|
"upload.modal.expires.month-singular": "Mjesec",
|
||||||
|
"upload.modal.expires.month-plural": "Mjeseci",
|
||||||
|
"upload.modal.expires.year-singular": "Godina",
|
||||||
|
"upload.modal.expires.year-plural": "Godine",
|
||||||
|
"upload.modal.accordion.name-and-description.title": "Ime i opis",
|
||||||
|
"upload.modal.accordion.name-and-description.name.placeholder": "Ime",
|
||||||
|
"upload.modal.accordion.name-and-description.description.placeholder": "Napomena za primatelje ovog dijeljenja",
|
||||||
|
"upload.modal.accordion.email.title": "Primatelji emaila",
|
||||||
|
"upload.modal.accordion.email.placeholder": "Unesite primatelje emaila",
|
||||||
|
"upload.modal.accordion.email.invalid-email": "Neispravna email adresa",
|
||||||
|
"upload.modal.accordion.security.title": "Sigurnosne postavke",
|
||||||
|
"upload.modal.accordion.security.password.label": "Zaštita lozinkom",
|
||||||
|
"upload.modal.accordion.security.password.placeholder": "Bez lozinke",
|
||||||
|
"upload.modal.accordion.security.max-views.label": "Maksimalan broj pregleda",
|
||||||
|
"upload.modal.accordion.security.max-views.placeholder": "Bez ograničenja",
|
||||||
|
// showCompletedUploadModal.tsx
|
||||||
|
"upload.modal.completed.never-expires": "Ovo dijeljenje nikada neće isteći.",
|
||||||
|
"upload.modal.completed.expires-on": "Ovo dijeljenje će isteći {expiration}.",
|
||||||
|
"upload.modal.completed.share-ready": "Dijeljenje je spremno",
|
||||||
|
"upload.modal.completed.notified-reverse-share-creator": "Obavijestili smo kreatora obrnutog dijeljenja. Također možete ručno podijeliti ovu poveznicu s njima na druge načine.",
|
||||||
|
// END /upload
|
||||||
|
// /share/[id]
|
||||||
|
"share.title": "Dijeljenje {shareId}",
|
||||||
|
"share.description": "Pogledajte što sam podijelio s vama!",
|
||||||
|
"share.error.visitor-limit-exceeded.title": "Prekoračeno ograničenje posjetitelja",
|
||||||
|
"share.error.visitor-limit-exceeded.description": "Ograničenje broja posjetitelja za ovo dijeljenje je premašeno.",
|
||||||
|
"share.error.removed.title": "Dijeljenje je uklonjeno",
|
||||||
|
"share.error.not-found.title": "Dijeljenje nije pronađeno",
|
||||||
|
"share.error.not-found.description": "Dijeljenje koje tražite ne postoji.",
|
||||||
|
"share.error.access-denied.title": "Privatno dijeljenje",
|
||||||
|
"share.error.access-denied.description": "Trenutni račun nema dozvolu za pristup ovom dijeljenju.",
|
||||||
|
"share.modal.password.title": "Lozinka je potrebna",
|
||||||
|
"share.modal.password.description": "Molimo unesite lozinku za pristup ovom dijeljenju.",
|
||||||
|
"share.modal.password": "Lozinka",
|
||||||
|
"share.modal.error.invalid-password": "Neispravna lozinka",
|
||||||
|
"share.button.download-all": "Preuzmi sve",
|
||||||
|
"share.notify.download-all-preparing": "Dijeljenje se priprema. Molimo pokušajte ponovo za nekoliko minuta.",
|
||||||
|
"share.modal.file-link": "Poveznica datoteke",
|
||||||
|
"share.table.name": "Naziv",
|
||||||
|
"share.table.size": "Veličina",
|
||||||
|
"share.modal.file-preview.error.not-supported.title": "Pregled nije podržan",
|
||||||
|
"share.modal.file-preview.error.not-supported.description": "Pregledi nisu podržani za ovu vrstu datoteka. Molimo preuzmite datoteku za pregled.",
|
||||||
|
// END /share/[id]
|
||||||
|
// /share/[id]/edit
|
||||||
|
"share.edit.title": "Uredi {shareId}",
|
||||||
|
"share.edit.append-upload": "Dodaj datoteku",
|
||||||
|
"share.edit.notify.generic-error": "Došlo je do pogreške prilikom dovršavanja vašeg dijeljenja.",
|
||||||
|
"share.edit.notify.save-success": "Dijeljenje je uspješno ažurirano",
|
||||||
|
// END /share/[id]/edit
|
||||||
|
// /admin/config
|
||||||
|
"admin.config.title": "Konfiguracija",
|
||||||
|
"admin.config.category.general": "Opće",
|
||||||
|
"admin.config.category.share": "Dijeljenje",
|
||||||
|
"admin.config.category.email": "Email",
|
||||||
|
"admin.config.category.smtp": "SMTP",
|
||||||
|
"admin.config.category.oauth": "Social login",
|
||||||
|
"admin.config.general.app-name": "Naziv aplikacije",
|
||||||
|
"admin.config.general.app-name.description": "Naziv aplikacije",
|
||||||
|
"admin.config.general.app-url": "URL aplikacije",
|
||||||
|
"admin.config.general.app-url.description": "Na kojoj URL adresi je dostupan Pingvin Share",
|
||||||
|
"admin.config.general.secure-cookies": "Sigurni kolačići",
|
||||||
|
"admin.config.general.secure-cookies.description": "Želite li postaviti sigurnosni atribut na kolačiće? Ako je omogućeno, stranica neće raditi preko HTTP-a.",
|
||||||
|
"admin.config.general.show-home-page": "Prikaži početnu stranicu",
|
||||||
|
"admin.config.general.show-home-page.description": "Želite li prikazati početnu stranicu",
|
||||||
|
"admin.config.general.session-duration": "Trajanje sesije",
|
||||||
|
"admin.config.general.session-duration.description": "Vrijeme u satima nakon kojeg se korisnik mora ponovno prijaviti (zadano: 3 mjeseca).",
|
||||||
|
"admin.config.general.logo": "Logo",
|
||||||
|
"admin.config.general.logo.description": "Promijenite svoj logotip učitavanjem nove slike. Slika mora biti PNG i imati format 1:1.",
|
||||||
|
"admin.config.general.logo.placeholder": "Odaberite sliku",
|
||||||
|
"admin.config.email.enable-share-email-recipients": "Omogućite dijeljenje putem emaila",
|
||||||
|
"admin.config.email.enable-share-email-recipients.description": "Želite li omogućiti dijeljenje putem emaila. Omogućite ovo samo ako je SMTP aktiviran.",
|
||||||
|
"admin.config.email.share-recipients-subject": "Naslov emaila za primatelje dijeljenja",
|
||||||
|
"admin.config.email.share-recipients-subject.description": "Predmet emaila koji se šalje primateljima dijeljenja.",
|
||||||
|
"admin.config.email.share-recipients-message": "Poruka za primatelje dijeljenja",
|
||||||
|
"admin.config.email.share-recipients-message.description": "Poruka koja se šalje primateljima dijeljenja. Dostupne varijable:\n{creator} - Korisničko ime kreatora dijeljenja\n{creatorEmail} - Email kreatora dijeljenja\n{shareUrl} - URL dijeljenja\n{desc} - Opis dijeljenja\n{expires} - Datum isteka dijeljenja\nOve varijable će biti zamijenjene stvarnim vrijednostima.",
|
||||||
|
"admin.config.email.reverse-share-subject": "Predmet obrnutog dijeljenja",
|
||||||
|
"admin.config.email.reverse-share-subject.description": "Predmet emaila koji se šalje kada netko kreira dijeljenje s vašim obrnutim linkom za dijeljenje.",
|
||||||
|
"admin.config.email.reverse-share-message": "Poruka za obrnuto dijeljenje",
|
||||||
|
"admin.config.email.reverse-share-message.description": "Poruka koja se šalje kada netko kreira dijeljenje s vašom obrnutom poveznicom za dijeljenje. {shareUrl} će biti zamijenjen imenom kreatora i URL-om dijeljenja.",
|
||||||
|
"admin.config.email.reset-password-subject": "Predmet za resetiranje lozinke",
|
||||||
|
"admin.config.email.reset-password-subject.description": "Predmet emaila koji se šalje kada korisnik zatraži resetiranje lozinke.",
|
||||||
|
"admin.config.email.reset-password-message": "Poruka za resetiranje lozinke",
|
||||||
|
"admin.config.email.reset-password-message.description": "Poruka koja se šalje kada korisnik zatraži resetiranje lozinke. {url} će biti zamijenjen poveznicom za resetiranje lozinke.",
|
||||||
|
"admin.config.email.invite-subject": "Predmet pozivnice",
|
||||||
|
"admin.config.email.invite-subject.description": "Predmet emaila koji se šalje kada administrator pozove korisnika.",
|
||||||
|
"admin.config.email.invite-message": "Poruka pozivnice",
|
||||||
|
"admin.config.email.invite-message.description": "Poruka koja se šalje kada administrator pozove korisnika. {url} će biti zamijenjen poveznicom za poziv, {email} emailom, a {password} lozinkom korisnika.",
|
||||||
|
"admin.config.share.allow-registration": "Dozvoli registraciju",
|
||||||
|
"admin.config.share.allow-registration.description": "Je li registracija dozvoljena",
|
||||||
|
"admin.config.share.allow-unauthenticated-shares": "Dozvoli dijeljenje bez autentifikacije",
|
||||||
|
"admin.config.share.allow-unauthenticated-shares.description": "Mogu li korisnici bez autentifikacije kreirati dijeljenja",
|
||||||
|
"admin.config.share.max-expiration": "Maksimalno trajanje",
|
||||||
|
"admin.config.share.max-expiration.description": "Maksimalno trajanje dijeljenja u satima. Postavite na 0 za neograničeno trajanje.",
|
||||||
|
"admin.config.share.share-id-length": "Dužina zadano generiranog ID-a za dijeljenje",
|
||||||
|
"admin.config.share.share-id-length.description": "Zadana dužina generiranog ID-a za dijeljenje. Ova vrijednost se također koristi za generiranje poveznica za obrnuto dijeljenje. Vrijednost manja od 8 se ne smatra sigurnom.",
|
||||||
|
"admin.config.share.max-size": "Maksimalna veličina",
|
||||||
|
"admin.config.share.max-size.description": "Maksimalna veličina dijeljenja u bajtovima",
|
||||||
|
"admin.config.share.zip-compression-level": "Razina Zip kompresije",
|
||||||
|
"admin.config.share.zip-compression-level.description": "Postavite razinu za balansiranje između veličine datoteke i brzine kompresije. Važeće vrijednosti su od 0 do 9, gdje 0 znači bez kompresije, a 9 maksimalnu kompresiju.",
|
||||||
|
"admin.config.share.chunk-size": "Veličina dijela",
|
||||||
|
"admin.config.share.chunk-size.description": "Postavite veličinu dijela (u bajtovima) za učitavanja kako biste uravnotežili učinkovitost i pouzdanost prema vašoj internetskoj vezi. Manji dijelovi mogu poboljšati uspješnost za nestabilne veze, dok veći dijelovi omogućuju brže učitavanje za stabilne veze.",
|
||||||
|
"admin.config.share.auto-open-share-modal": "Automatski otvori modal za kreiranje dijeljenja",
|
||||||
|
"admin.config.share.auto-open-share-modal.description": "Modal za kreiranje dijeljenja automatski se pojavljuje kada korisnik odabere datoteke, eliminirajući potrebu za ručnim klikom na gumb.",
|
||||||
|
"admin.config.smtp.enabled": "Omogući",
|
||||||
|
"admin.config.smtp.enabled.description": "Je li SMTP omogućen. Postavite na 'točno' samo ako ste unijeli host, port, email, korisničko ime i lozinku vašeg SMTP servera.",
|
||||||
|
"admin.config.smtp.host": "Domaćin",
|
||||||
|
"admin.config.smtp.host.description": "Domaćin SMTP servera",
|
||||||
|
"admin.config.smtp.port": "Port",
|
||||||
|
"admin.config.smtp.port.description": "Port domaćina SMTP servera",
|
||||||
|
"admin.config.smtp.email": "Email",
|
||||||
|
"admin.config.smtp.email.description": "Email adresa s koje se poruke šalju",
|
||||||
|
"admin.config.smtp.username": "Korisničko ime",
|
||||||
|
"admin.config.smtp.username.description": "Korisničko ime SMTP servera",
|
||||||
|
"admin.config.smtp.password": "Lozinka",
|
||||||
|
"admin.config.smtp.password.description": "Lozinka SMTP servera",
|
||||||
|
"admin.config.smtp.button.test": "Pošaljite testni email",
|
||||||
|
"admin.config.smtp.allow-unauthorized-certificates": "Dopuštanje neautoriziranih SMTP certifikata",
|
||||||
|
"admin.config.smtp.allow-unauthorized-certificates.description": "Postavite ovo na \"točno\" samo ako je potrebno vjerovati samo-potpisanim certifikatima.",
|
||||||
|
"admin.config.oauth.allow-registration": "Dozvoli registraciju",
|
||||||
|
"admin.config.oauth.allow-registration.description": "Dozvolite korisnicima da se registriraju putem društvene prijave",
|
||||||
|
"admin.config.oauth.ignore-totp": "Zanemari TOTP",
|
||||||
|
"admin.config.oauth.ignore-totp.description": "Želite li zanemariti TOTP kada korisnik koristi društvenu prijavu",
|
||||||
|
"admin.config.oauth.disable-password": "Onemogućite prijavu lozinkom",
|
||||||
|
"admin.config.oauth.disable-password.description": "Omogućiti prijavu lozinkom ili ne.\nProvjerite je li OAuth pružatelj usluga ispravno konfiguriran prije aktiviranja ove opcije kako biste izbjegli zaključavanje računa.",
|
||||||
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
|
"admin.config.oauth.github-enabled.description": "Je li omogućena prijava putem GitHuba",
|
||||||
|
"admin.config.oauth.github-client-id": "GitHub ID klijenta",
|
||||||
|
"admin.config.oauth.github-client-id.description": "ID klijenta GitHub OAuth aplikacije",
|
||||||
|
"admin.config.oauth.github-client-secret": "Tajna GitHub klijenta",
|
||||||
|
"admin.config.oauth.github-client-secret.description": "Tajna klijenta GitHub OAuth aplikacije",
|
||||||
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
|
"admin.config.oauth.google-enabled.description": "Je li omogućena prijava putem Googlea",
|
||||||
|
"admin.config.oauth.google-client-id": "Google ID klijenta",
|
||||||
|
"admin.config.oauth.google-client-id.description": "ID klijenta Google OAuth aplikacije",
|
||||||
|
"admin.config.oauth.google-client-secret": "Tajna Google klijenta",
|
||||||
|
"admin.config.oauth.google-client-secret.description": "Tajna klijenta Google OAuth aplikacije",
|
||||||
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
|
"admin.config.oauth.microsoft-enabled.description": "Je li omogućena prijava putem Microsofta",
|
||||||
|
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||||
|
"admin.config.oauth.microsoft-tenant.description": "ID stanara za Microsoft OAuth aplikaciju:\n- `common`: Korisnici s osobnim Microsoft računom i poslovnim ili školskim računom s Microsoft Entra ID-a mogu se prijaviti u aplikaciju.\n- `organizations`: Samo korisnici s poslovnim ili školskim računima s Microsoft Entra ID-a mogu se prijaviti u aplikaciju.\n- `consumers`: Samo korisnici s osobnim Microsoft računom mogu se prijaviti u aplikaciju.\n- Naziv domene stanara Microsoft Entra ID ili ID stanara u GUID formatu: Samo korisnici iz određenog Microsoft Entra ID stanara (članovi direktorija s poslovnim ili školskim računom ili gosti direktorija s osobnim Microsoft računom) mogu se prijaviti u aplikaciju.",
|
||||||
|
"admin.config.oauth.microsoft-client-id": "Microsoft ID klijenta",
|
||||||
|
"admin.config.oauth.microsoft-client-id.description": "ID klijenta Microsoft OAuth aplikacije",
|
||||||
|
"admin.config.oauth.microsoft-client-secret": "Tajna Microsoft klijenta",
|
||||||
|
"admin.config.oauth.microsoft-client-secret.description": "Tajna klijenta za Microsoft OAuth aplikaciju",
|
||||||
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
|
"admin.config.oauth.discord-enabled.description": "Je li omogućena prijava putem Discorda",
|
||||||
|
"admin.config.oauth.discord-limited-users": "Ograničenje za Discord korisnike",
|
||||||
|
"admin.config.oauth.discord-limited-users.description": "Ograničite prijavljivanje na određene korisnike pomoću njihovog Discord ID-a. Ostavite prazno kako biste onemogućili.",
|
||||||
|
"admin.config.oauth.discord-limited-guild": "Ograničenje za Discord server",
|
||||||
|
"admin.config.oauth.discord-limited-guild.description": "Ograničite prijavljivanje na korisnike određenog servera. Ostavite prazno kako biste onemogućili.",
|
||||||
|
"admin.config.oauth.discord-client-id": "Discord ID klijenta",
|
||||||
|
"admin.config.oauth.discord-client-id.description": "ID klijenta Discord OAuth aplikacije",
|
||||||
|
"admin.config.oauth.discord-client-secret": "Discord klijent tajna",
|
||||||
|
"admin.config.oauth.discord-client-secret.description": "Tajna klijenta Discord OAuth aplikacije",
|
||||||
|
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-enabled.description": "Omogućiti prijavu putem OpenID Connect-a ili ne",
|
||||||
|
"admin.config.oauth.oidc-discovery-uri": "URI za OpenID Connect Discovery",
|
||||||
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI za otkrivanje OpenID Connect OAuth aplikacije",
|
||||||
|
"admin.config.oauth.oidc-sign-out": "Odjava s OpenID Connect-a",
|
||||||
|
"admin.config.oauth.oidc-sign-out.description": "Hoće li gumb 'Odjava' također odjaviti korisnika s OpenID Connect pružatelja usluge",
|
||||||
|
"admin.config.oauth.oidc-scope": "Opseg OpenID Connect-a",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Opsezi koji bi trebali biti zatraženi od OpenID Connect pružatelja usluge.",
|
||||||
|
"admin.config.oauth.oidc-username-claim": "Potraživanje korisničkog imena u OpenID Connect-u",
|
||||||
|
"admin.config.oauth.oidc-username-claim.description": "Potraživanje korisničkog imena u OpenID Connect ID tokenu. Ostavite prazno ako niste sigurni što je ova konfiguracija.",
|
||||||
|
"admin.config.oauth.oidc-role-path": "Putanja do uloga u OpenID Connect tokenu",
|
||||||
|
"admin.config.oauth.oidc-role-path.description": "Mora biti valjana JMES putanja koja referencira niz uloga. " + "Upravljanje pravima pristupa pomoću uloga u OpenID Connect-u preporučuje se samo ako nijedan drugi pružatelj identiteta nije konfiguriran i ako je prijava lozinkom onemogućena. " + "Ostavite prazno ako niste sigurni što je ova konfiguracija.",
|
||||||
|
"admin.config.oauth.oidc-role-general-access": "Uloga u OpenID Connect-u za opći pristup",
|
||||||
|
"admin.config.oauth.oidc-role-general-access.description": "Uloga potrebna za opći pristup. Mora biti prisutna u ulogama korisnika kako bi se mogao prijaviti. " + "Ostavite prazno ako niste sigurni što je ova konfiguracija.",
|
||||||
|
"admin.config.oauth.oidc-role-admin-access": "Uloga u OpenID Connect-u za administratorski pristup",
|
||||||
|
"admin.config.oauth.oidc-role-admin-access.description": "Uloga potrebna za administratorski pristup. Mora biti prisutna u ulogama korisnika kako bi mogli pristupiti administratorskom panelu. " + "Ostavite prazno ako niste sigurni što je ova konfiguracija.",
|
||||||
|
"admin.config.oauth.oidc-client-id": "OpenID Connect ID klijenta",
|
||||||
|
"admin.config.oauth.oidc-client-id.description": "ID klijenta OpenID Connect OAuth aplikacije",
|
||||||
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect tajna klijenta",
|
||||||
|
"admin.config.oauth.oidc-client-secret.description": "Tajna klijenta OpenID Connect OAuth aplikacije",
|
||||||
|
"admin.config.category.ldap": "LDAP",
|
||||||
|
"admin.config.ldap.enabled": "Omogući LDAP",
|
||||||
|
"admin.config.ldap.enabled.description": "Koristi LDAP autentifikaciju za prijavu korisnika",
|
||||||
|
"admin.config.ldap.url": "URL poslužitelja",
|
||||||
|
"admin.config.ldap.url.description": "URL LDAP poslužitelja",
|
||||||
|
"admin.config.ldap.bind-dn": "DN za vezivanje",
|
||||||
|
"admin.config.ldap.bind-dn.description": "Zadani korisnik koji se koristi za pretragu korisnika",
|
||||||
|
"admin.config.ldap.bind-password": "Lozinka za vezivanje",
|
||||||
|
"admin.config.ldap.bind-password.description": "Lozinka koja se koristi za izvršavanje pretrage korisnika",
|
||||||
|
"admin.config.ldap.search-base": "Baza korisnika",
|
||||||
|
"admin.config.ldap.search-base.description": "Lokacija baze, mjesto gdje će se izvršiti pretraga korisnika",
|
||||||
|
"admin.config.ldap.search-query": "Upit za korisnika",
|
||||||
|
"admin.config.ldap.search-query.description": "Upit za korisnika koji će se koristiti za pretragu 'Baze korisnika' za LDAP korisnika. %username% se može koristiti kao oznaka za unos korisnika.",
|
||||||
|
"admin.config.ldap.admin-groups": "Administratorska grupa",
|
||||||
|
"admin.config.ldap.admin-groups.description": "Grupa koja je potrebna za administratorski pristup.",
|
||||||
|
"admin.config.ldap.field-name-member-of": "Naziv atributa korisničkih grupa",
|
||||||
|
"admin.config.ldap.field-name-member-of.description": "LDAP naziv atributa za grupe čiji je korisnik član. Ovo se koristi pri provjeri administratorske grupe.",
|
||||||
|
"admin.config.ldap.field-name-email": "Naziv atributa za email korisnika",
|
||||||
|
"admin.config.ldap.field-name-email.description": "LDAP naziv atributa za email korisnika.",
|
||||||
|
"admin.config.notify.success": "Konfiguracija je uspješno ažurirana.",
|
||||||
|
"admin.config.notify.logo-success": "Logo je uspješno ažuriran. Može potrajati nekoliko minuta dok se promjena ne prikaže na web stranici.",
|
||||||
|
"admin.config.notify.no-changes": "Nema promjena za spremanje.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
|
// 404
|
||||||
|
"404.description": "Ups - Ova stranica ne postoji.",
|
||||||
|
"404.button.home": "Vrati me na početnu stranicu",
|
||||||
|
// error
|
||||||
|
"error.title": "Greška",
|
||||||
|
"error.description": "Ups!",
|
||||||
|
"error.button.back": "Idi natrag",
|
||||||
|
"error.msg.default": "Nešto je pošlo po zlu.",
|
||||||
|
"error.msg.access_denied": "Otkazali ste proces autentifikacije, pokušajte ponovno.",
|
||||||
|
"error.msg.expired_token": "Proces autentifikacije je trajao predugo, pokušajte ponovno.",
|
||||||
|
"error.msg.invalid_token": "Interna greška",
|
||||||
|
"error.msg.no_user": "Korisnik povezan s ovim {0} računom ne postoji.",
|
||||||
|
"error.msg.no_email": "Nije moguće dobiti adresu emaila s ovog {0} računa.",
|
||||||
|
"error.msg.already_linked": "Ovaj {0} račun je već povezan s drugim računom.",
|
||||||
|
"error.msg.not_linked": "Ovaj {0} račun još uvijek nije povezan ni s jednim računom.",
|
||||||
|
"error.msg.unverified_account": "Ovaj {0} račun je nepotvrđen, molimo pokušajte ponovno nakon verifikacije.",
|
||||||
|
"error.msg.user_not_allowed": "Nemate dozvolu za prijavu.",
|
||||||
|
"error.msg.cannot_get_user_info": "Nije moguće dohvatiti vaše korisničke informacije s ovog {0} računa.",
|
||||||
|
"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": "Spremi",
|
||||||
|
"common.button.create": "Kreiraj",
|
||||||
|
"common.button.submit": "Pošalji",
|
||||||
|
"common.button.delete": "Obriši",
|
||||||
|
"common.button.cancel": "Otkaži",
|
||||||
|
"common.button.confirm": "Potvrdi",
|
||||||
|
"common.button.disable": "Onemogući",
|
||||||
|
"common.button.share": "Podijeli",
|
||||||
|
"common.button.generate": "Generiraj",
|
||||||
|
"common.button.done": "Gotovo",
|
||||||
|
"common.text.link": "Poveznica",
|
||||||
|
"common.text.navigate-to-link": "Posjetite poveznicu",
|
||||||
|
"common.text.or": "ili",
|
||||||
|
"common.text.redirecting": "Preusmjeravanje...",
|
||||||
|
"common.button.go-back": "Idi natrag",
|
||||||
|
"common.button.go-home": "Početna stranica",
|
||||||
|
"common.notify.copied": "Vaša poveznica je kopirana u međuspremnik",
|
||||||
|
"common.notify.copied-link": "Vaša poveznica je kopirana u međuspremnik",
|
||||||
|
"common.success": "Uspješno",
|
||||||
|
"common.error": "Greška",
|
||||||
|
"common.error.unknown": "Došlo je do nepoznate greške",
|
||||||
|
"common.error.invalid-email": "Neispravna email adresa",
|
||||||
|
"common.error.too-short": "Mora imati najmanje {length} znakova",
|
||||||
|
"common.error.too-long": "Mora imati najviše {length} znakova",
|
||||||
|
"common.error.number-too-small": "Mora biti najmanje {min}",
|
||||||
|
"common.error.number-too-large": "Mora biti najviše {max}",
|
||||||
|
"common.error.exact-length": "Mora imati točno {length} znakova",
|
||||||
|
"common.error.invalid-number": "Mora biti broj",
|
||||||
|
"common.error.field-required": "Polje je obavezno"
|
||||||
|
};
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Megosztási email tárgya",
|
"admin.config.email.share-recipients-subject": "Megosztási email tárgya",
|
||||||
"admin.config.email.share-recipients-subject.description": "A megosztások címzettjeinek küldött email tárgya.",
|
"admin.config.email.share-recipients-subject.description": "A megosztások címzettjeinek küldött email tárgya.",
|
||||||
"admin.config.email.share-recipients-message": "Megosztási email szövege",
|
"admin.config.email.share-recipients-message": "Megosztási email szövege",
|
||||||
"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 {creatorEmail} - The email 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": "Fordított megosztás tárgya",
|
"admin.config.email.reverse-share-subject": "Fordított megosztás tárgya",
|
||||||
"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": "Fordított megosztás üzenete",
|
"admin.config.email.reverse-share-message": "Fordított megosztás üzenete",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Hitelesítés nélküli felhasználók létre hozhatnak-e megosztásokat",
|
"admin.config.share.allow-unauthenticated-shares.description": "Hitelesítés nélküli felhasználók létre hozhatnak-e megosztásokat",
|
||||||
"admin.config.share.max-expiration": "Max lejárat",
|
"admin.config.share.max-expiration": "Max lejárat",
|
||||||
"admin.config.share.max-expiration.description": "A megosztások megengedett leghosszabb lejárata órában. 0 értékkel a lejárat kikapcsolható.",
|
"admin.config.share.max-expiration.description": "A megosztások megengedett leghosszabb lejárata órában. 0 értékkel a lejárat kikapcsolható.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max méret",
|
"admin.config.share.max-size": "Max méret",
|
||||||
"admin.config.share.max-size.description": "A megosztások megengedett legnagyobb mérete bájtban",
|
"admin.config.share.max-size.description": "A megosztások megengedett legnagyobb mérete bájtban",
|
||||||
"admin.config.share.zip-compression-level": "Zip tömörítési szint",
|
"admin.config.share.zip-compression-level": "Zip tömörítési szint",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "Az OpenID Connect OAuth applikáció Discovery URI azonosítója",
|
"admin.config.oauth.oidc-discovery-uri.description": "Az OpenID Connect OAuth applikáció Discovery URI azonosítója",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect felhasználónév igény",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect felhasználónév igény",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Az OpenID Connect ID token felhasználónév igénye. Hagyja üresen ha nincs információja a beállításról.",
|
"admin.config.oauth.oidc-username-claim.description": "Az OpenID Connect ID token felhasználónév igénye. Hagyja üresen ha nincs információja a beállításról.",
|
||||||
"admin.config.oauth.oidc-role-path": "Az OpenID Connect token szerepeinek elérési útvonala",
|
"admin.config.oauth.oidc-role-path": "Az OpenID Connect token szerepeinek elérési útvonala",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Hoppá - ez az oldal nem létezik.",
|
"404.description": "Hoppá - ez az oldal nem létezik.",
|
||||||
"404.button.home": "Vissza a Kezdőlapra",
|
"404.button.home": "Vissza a Kezdőlapra",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Vissza",
|
"common.button.go-back": "Vissza",
|
||||||
"common.button.go-home": "Kezdőlap",
|
"common.button.go-home": "Kezdőlap",
|
||||||
"common.notify.copied": "A hivatkozást a Vágólapra másoltuk",
|
"common.notify.copied": "A hivatkozást a Vágólapra másoltuk",
|
||||||
|
"common.notify.copied-link": "A hivatkozást a Vágólapra másoltuk",
|
||||||
"common.success": "Siker",
|
"common.success": "Siker",
|
||||||
"common.error": "Hiba",
|
"common.error": "Hiba",
|
||||||
"common.error.unknown": "Ismeretlen hiba lépett fel",
|
"common.error.unknown": "Ismeretlen hiba lépett fel",
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Carica",
|
"upload.title": "Carica",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Sei sicuro di voler lasciare questa pagina? Il tuo caricamento verrà annullato.",
|
||||||
"upload.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.",
|
"upload.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.",
|
||||||
"upload.notify.count-failed": "Impossibile caricare {count} file. Riprovare.",
|
"upload.notify.count-failed": "Impossibile caricare {count} file. Riprovare.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Link di condivisione inversa non valido",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Questa condivisione inversa è scaduta o non è valida.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Carica File",
|
"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.",
|
"upload.dropzone.description": "Trascina qui i file per iniziare la tua condivisione. Possiamo accettare solo i file che sono inferiori a {maxSize} in totale.",
|
||||||
@@ -303,8 +303,8 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Nome dell' applicazione",
|
"admin.config.general.app-name.description": "Nome dell' applicazione",
|
||||||
"admin.config.general.app-url": "URL dell'App",
|
"admin.config.general.app-url": "URL dell'App",
|
||||||
"admin.config.general.app-url.description": "Su quale URL Pingvin Share è pubblicato",
|
"admin.config.general.app-url.description": "Su quale URL Pingvin Share è pubblicato",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "Cookie sicuri",
|
||||||
"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.secure-cookies.description": "Indica se impostare il contrassegno sicuro sui cookie. Se abilitato, il sito non funzionerà quando si accede tramite HTTP.",
|
||||||
"admin.config.general.show-home-page": "Visualizza Home Page",
|
"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.show-home-page.description": "Indica se mostrare la home page",
|
||||||
"admin.config.general.session-duration": "Durata della sessione",
|
"admin.config.general.session-duration": "Durata della sessione",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Oggetto dell'email di condivisione",
|
"admin.config.email.share-recipients-subject": "Oggetto dell'email di condivisione",
|
||||||
"admin.config.email.share-recipients-subject.description": "Oggetto dell'email che viene inviata ai destinatari della condivisione.",
|
"admin.config.email.share-recipients-subject.description": "Oggetto dell'email che viene inviata ai destinatari della condivisione.",
|
||||||
"admin.config.email.share-recipients-message": "Testo dell'email di condivisione",
|
"admin.config.email.share-recipients-message": "Testo dell'email di condivisione",
|
||||||
"admin.config.email.share-recipients-message.description": "Messaggio che viene inviato ai destinatari della condivisione. Variabili disponibili:\n {creator} - Il nome utente del creatore della condivisione\n {shareUrl} - L'URL della condivisione\n {desc} - La descrizione della condivisione\n {expires} - La data di scadenza della condivisione\n Le variabili saranno sostituite con il valore effettivo.",
|
"admin.config.email.share-recipients-message.description": "Messaggio che viene inviato ai destinatari della condivisione. Variabili disponibili:\n {creator} - Il nome utente del creatore della condivisione\n {creatorEmail} - L' email del creatore della condivisione\n {shareUrl} - L'URL della condivisione\n {desc} - La descrizione della condivisione\n {expires} - La data di scadenza della condivisione\n Le variabili saranno sostituite con il valore effettivo.",
|
||||||
"admin.config.email.reverse-share-subject": "Oggetto dell'email di condivisione inversa",
|
"admin.config.email.reverse-share-subject": "Oggetto dell'email di condivisione inversa",
|
||||||
"admin.config.email.reverse-share-subject.description": "Oggetto dell'email che viene inviata quando qualcuno ha creato una condivisione con il tuo link di condivisione inversa.",
|
"admin.config.email.reverse-share-subject.description": "Oggetto dell'email che viene inviata quando qualcuno ha creato una condivisione con il tuo link di condivisione inversa.",
|
||||||
"admin.config.email.reverse-share-message": "Testo dell'email di condivisione inversa",
|
"admin.config.email.reverse-share-message": "Testo dell'email di condivisione inversa",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni",
|
"admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni",
|
||||||
"admin.config.share.max-expiration": "Scadenza massima",
|
"admin.config.share.max-expiration": "Scadenza massima",
|
||||||
"admin.config.share.max-expiration.description": "Scadenza massima di condivisione in ore. Impostare a 0 per consentire la scadenza illimitata.",
|
"admin.config.share.max-expiration.description": "Scadenza massima di condivisione in ore. Impostare a 0 per consentire la scadenza illimitata.",
|
||||||
|
"admin.config.share.share-id-length": "Lunghezza ID condivisione predefinita",
|
||||||
|
"admin.config.share.share-id-length.description": "Lunghezza predefinita dell'ID generato per una condivisione. Questo valore viene utilizzato anche per generare collegamenti per condivisioni inverse. Un valore inferiore a 8 non è considerato sicuro.",
|
||||||
"admin.config.share.max-size": "Dim. massima",
|
"admin.config.share.max-size": "Dim. massima",
|
||||||
"admin.config.share.max-size.description": "Dimensione massima di condivisione in byte",
|
"admin.config.share.max-size.description": "Dimensione massima di condivisione in byte",
|
||||||
"admin.config.share.zip-compression-level": "Livello di compressione Zip",
|
"admin.config.share.zip-compression-level": "Livello di compressione Zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "URI di scoperta dell'app OAuth di OpenID Connect",
|
"admin.config.oauth.oidc-discovery-uri.description": "URI di scoperta dell'app OAuth di OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out": "Esci da OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Esci da OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Se premuto, il pulsante “Disconnettersi” disconnetterà dal provider OpenID Connect",
|
"admin.config.oauth.oidc-sign-out.description": "Se premuto, il pulsante “Disconnettersi” disconnetterà dal provider OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "Ambito di OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Ambiti che dovrebbero essere richiesti al provider OpenID.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Richiesta nome utente OpenID Connect",
|
"admin.config.oauth.oidc-username-claim": "Richiesta nome utente OpenID Connect",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Nome utente nel token OpenID Connect. Lascialo vuoto se non sai cos'è questa configurazione.",
|
"admin.config.oauth.oidc-username-claim.description": "Nome utente nel token OpenID Connect. Lascialo vuoto se non sai cos'è questa configurazione.",
|
||||||
"admin.config.oauth.oidc-role-path": "Percorso verso i ruoli in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Percorso verso i ruoli in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "Nome attributo LDAP per i gruppi, di cui un utente è membro. Questo viene utilizzato per controllare il gruppo amministratore.",
|
"admin.config.ldap.field-name-member-of.description": "Nome attributo LDAP per i gruppi, di cui un utente è membro. Questo viene utilizzato per controllare il gruppo amministratore.",
|
||||||
"admin.config.ldap.field-name-email": "Nome dell'attributo email dell'utente",
|
"admin.config.ldap.field-name-email": "Nome dell'attributo email dell'utente",
|
||||||
"admin.config.ldap.field-name-email.description": "Nome attributo LDAP per l'email di un utente.",
|
"admin.config.ldap.field-name-email.description": "Nome attributo LDAP per l'email di un utente.",
|
||||||
|
"admin.config.notify.success": "Configurazione aggiornata correttamente.",
|
||||||
|
"admin.config.notify.logo-success": "Logo aggiornato con successo. Potrebbe volerci qualche minuto per aggiornare sul sito.",
|
||||||
|
"admin.config.notify.no-changes": "Nessuna modifica da salvare.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Abilitato",
|
||||||
|
"admin.config.s3.enabled.description": "Indica se S3 debba essere usato per memorizzare i file condivisi invece che il file system locale.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "L'URL del bucket S3.",
|
||||||
|
"admin.config.s3.region": "Regione",
|
||||||
|
"admin.config.s3.region.description": "La regione del bucket S3.",
|
||||||
|
"admin.config.s3.bucket-name": "Nome del bucket",
|
||||||
|
"admin.config.s3.bucket-name.description": "Il nome del bucket S3.",
|
||||||
|
"admin.config.s3.bucket-path": "Percorso",
|
||||||
|
"admin.config.s3.bucket-path.description": "Il percorso predefinito che dovrebbe essere usato per memorizzare i file nel bucket S3.",
|
||||||
|
"admin.config.s3.key": "Chiave",
|
||||||
|
"admin.config.s3.key.description": "La chiave che consente di accedere al bucket S3.",
|
||||||
|
"admin.config.s3.secret": "Parola chiave",
|
||||||
|
"admin.config.s3.secret.description": "La parola chiave che consente di accedere al bucket S3.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ops, questa pagina non esiste.",
|
"404.description": "Ops, questa pagina non esiste.",
|
||||||
"404.button.home": "Riportami a casa",
|
"404.button.home": "Riportami a casa",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Torna indietro",
|
"common.button.go-back": "Torna indietro",
|
||||||
"common.button.go-home": "Vai alla Home Page",
|
"common.button.go-home": "Vai alla Home Page",
|
||||||
"common.notify.copied": "Il tuo collegamento e' stato copiato negli appunti",
|
"common.notify.copied": "Il tuo collegamento e' stato copiato negli appunti",
|
||||||
|
"common.notify.copied-link": "Il tuo collegamento è stato copiato negli appunti",
|
||||||
"common.success": "Successo",
|
"common.success": "Successo",
|
||||||
"common.error": "Errore",
|
"common.error": "Errore",
|
||||||
"common.error.unknown": "Si è verificato un errore sconosciuto",
|
"common.error.unknown": "Si è verificato un errore sconosciuto",
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "アップロード",
|
"upload.title": "アップロード",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "このページから離れますか?アップロードはキャンセルされます。",
|
||||||
"upload.notify.generic-error": "共有を仕上げている最中にエラーが発生しました。",
|
"upload.notify.generic-error": "共有を仕上げている最中にエラーが発生しました。",
|
||||||
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
|
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "無効なファイルリクエストリンク",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "このファイルリクエストは期限が切れているか無効です。",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "ファイルをアップロード",
|
"upload.dropzone.title": "ファイルをアップロード",
|
||||||
"upload.dropzone.description": "共有を開始するにはここにファイルをドラッグ&ドロップしてください。受け入れ可能なファイルの合計サイズは{maxSize}までです。",
|
"upload.dropzone.description": "共有を開始するにはここにファイルをドラッグ&ドロップしてください。受け入れ可能なファイルの合計サイズは{maxSize}までです。",
|
||||||
@@ -301,10 +301,10 @@ export default {
|
|||||||
"admin.config.category.oauth": "ソーシャルログイン",
|
"admin.config.category.oauth": "ソーシャルログイン",
|
||||||
"admin.config.general.app-name": "アプリ名",
|
"admin.config.general.app-name": "アプリ名",
|
||||||
"admin.config.general.app-name.description": "アプリの名前",
|
"admin.config.general.app-name.description": "アプリの名前",
|
||||||
"admin.config.general.app-url": "アプリ名",
|
"admin.config.general.app-url": "アプリのURL",
|
||||||
"admin.config.general.app-url.description": "Pingvin Shareで利用できるURL",
|
"admin.config.general.app-url.description": "Pingvin Shareで利用できるURL",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.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.secure-cookies.description": "クッキーにセキュアフラグを設定するか。有効にすると、HTTP 経由でアクセスしたときにサイトが機能しなくなります。",
|
||||||
"admin.config.general.show-home-page": "ホームページを表示する",
|
"admin.config.general.show-home-page": "ホームページを表示する",
|
||||||
"admin.config.general.show-home-page.description": "ホームページを表示するかどうか選択",
|
"admin.config.general.show-home-page.description": "ホームページを表示するかどうか選択",
|
||||||
"admin.config.general.session-duration": "セッション期間",
|
"admin.config.general.session-duration": "セッション期間",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "宛先への件名",
|
"admin.config.email.share-recipients-subject": "宛先への件名",
|
||||||
"admin.config.email.share-recipients-subject.description": "メールで共有された相手に送信メールの件名です。",
|
"admin.config.email.share-recipients-subject.description": "メールで共有された相手に送信メールの件名です。",
|
||||||
"admin.config.email.share-recipients-message": "宛先への本文",
|
"admin.config.email.share-recipients-message": "宛先への本文",
|
||||||
"admin.config.email.share-recipients-message.description": "共有受信者に送信されるメッセージ。使用可能な変数:\n {creator} - 共有の作成者のユーザー名\n {shareUrl} - 共有の URL\n {desc} - 共有の説明\n {expires} - 共有の有効期限\n これらの変数は実際の値に置き換えられます。",
|
"admin.config.email.share-recipients-message.description": "共有の受信者に送信されるメッセージ。使用可能な変数:\n{creator} - 共有の作成者のユーザー名\n{creatorEmail} - 共有の作成者のメール アドレス\n{shareUrl} - 共有の URL\n{desc} - 共有の説明\n{expires} - 共有の有効期限\nこれらの変数は実際の値に置き換えられます。",
|
||||||
"admin.config.email.reverse-share-subject": "ファイルリクエストの件名",
|
"admin.config.email.reverse-share-subject": "ファイルリクエストの件名",
|
||||||
"admin.config.email.reverse-share-subject.description": "誰かがあなたのファイルリクエストリンクを使用して共有を作成したときに送信されるメールの件名。",
|
"admin.config.email.reverse-share-subject.description": "誰かがあなたのファイルリクエストリンクを使用して共有を作成したときに送信されるメールの件名。",
|
||||||
"admin.config.email.reverse-share-message": "ファイルリクエストの本文",
|
"admin.config.email.reverse-share-message": "ファイルリクエストの本文",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "ログインしていないユーザーに共有の作成を許可するかどうかを選択してください。",
|
"admin.config.share.allow-unauthenticated-shares.description": "ログインしていないユーザーに共有の作成を許可するかどうかを選択してください。",
|
||||||
"admin.config.share.max-expiration": "有効期限の上限",
|
"admin.config.share.max-expiration": "有効期限の上限",
|
||||||
"admin.config.share.max-expiration.description": "共有に設定可能な有効期限の上限を時間単位で設定できます。0を設定すると、有効期限が無制限になります。",
|
"admin.config.share.max-expiration.description": "共有に設定可能な有効期限の上限を時間単位で設定できます。0を設定すると、有効期限が無制限になります。",
|
||||||
|
"admin.config.share.share-id-length": "デフォルトの共有IDの長さ",
|
||||||
|
"admin.config.share.share-id-length.description": "共有の生成されたIDのデフォルトの長さ。この値はファイルリクエストのリンクを生成するためにも使用されます。8未満の値は安全ではないと見なされます。",
|
||||||
"admin.config.share.max-size": "最大ファイルサイズ",
|
"admin.config.share.max-size": "最大ファイルサイズ",
|
||||||
"admin.config.share.max-size.description": "最大ファイルサイズ(byte単位)",
|
"admin.config.share.max-size.description": "最大ファイルサイズ(byte単位)",
|
||||||
"admin.config.share.zip-compression-level": "Zip圧縮レベル",
|
"admin.config.share.zip-compression-level": "Zip圧縮レベル",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID OAuthアプリのDiscovery URI",
|
"admin.config.oauth.oidc-discovery-uri.description": "OpenID OAuthアプリのDiscovery URI",
|
||||||
"admin.config.oauth.oidc-sign-out": "OpenID Connectからサインアウト",
|
"admin.config.oauth.oidc-sign-out": "OpenID Connectからサインアウト",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "「サインアウト」ボタンがOpenID Connectプロバイダーからサインアウトするかどうか",
|
"admin.config.oauth.oidc-sign-out.description": "「サインアウト」ボタンがOpenID Connectプロバイダーからサインアウトするかどうか",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect スコープ",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "OpenID Connect プロバイダーから要求する必要があるスコープ。",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect ユーザー名の要求",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect ユーザー名の要求",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID トークンのユーザー名要求。この設定が何かわからない場合は空白のままにしてください。",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID トークンのユーザー名要求。この設定が何かわからない場合は空白のままにしてください。",
|
||||||
"admin.config.oauth.oidc-role-path": "OpenID Connectトークンのロールへのパス",
|
"admin.config.oauth.oidc-role-path": "OpenID Connectトークンのロールへのパス",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "ユーザーがメンバーであるグループのLDAP属性名。これは、管理者グループを確認するときに使用されます。",
|
"admin.config.ldap.field-name-member-of.description": "ユーザーがメンバーであるグループのLDAP属性名。これは、管理者グループを確認するときに使用されます。",
|
||||||
"admin.config.ldap.field-name-email": "ユーザーのメール属性名",
|
"admin.config.ldap.field-name-email": "ユーザーのメール属性名",
|
||||||
"admin.config.ldap.field-name-email.description": "ユーザーのメールのLDAP属性名。",
|
"admin.config.ldap.field-name-email.description": "ユーザーのメールのLDAP属性名。",
|
||||||
|
"admin.config.notify.success": "設定が正常に更新されました。",
|
||||||
|
"admin.config.notify.logo-success": "ロゴが正常に更新されました。Web サイトで更新されるまでに数分かかる場合があります。",
|
||||||
|
"admin.config.notify.no-changes": "保存する変更がありません。",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "有効",
|
||||||
|
"admin.config.s3.enabled.description": "S3を使用して、ローカルファイルシステムの代わりに共有ファイルを保存するかどうか。",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "S3 バケットの URL",
|
||||||
|
"admin.config.s3.region": "地域",
|
||||||
|
"admin.config.s3.region.description": "S3バケットの地域。",
|
||||||
|
"admin.config.s3.bucket-name": "バケット名",
|
||||||
|
"admin.config.s3.bucket-name.description": "S3バケットの名前。",
|
||||||
|
"admin.config.s3.bucket-path": "パス",
|
||||||
|
"admin.config.s3.bucket-path.description": "S3バケットにファイルを格納するために使用されるデフォルトのパス。",
|
||||||
|
"admin.config.s3.key": "キー",
|
||||||
|
"admin.config.s3.key.description": "S3バケットにアクセスするためのキー。",
|
||||||
|
"admin.config.s3.secret": "秘密",
|
||||||
|
"admin.config.s3.secret.description": "S3バケットにアクセスするための秘密。",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "ページが見つかりません。",
|
"404.description": "ページが見つかりません。",
|
||||||
"404.button.home": "ホームに戻る",
|
"404.button.home": "ホームに戻る",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "戻る",
|
"common.button.go-back": "戻る",
|
||||||
"common.button.go-home": "ホームに戻る",
|
"common.button.go-home": "ホームに戻る",
|
||||||
"common.notify.copied": "リンクをクリップボードにコピーしました",
|
"common.notify.copied": "リンクをクリップボードにコピーしました",
|
||||||
|
"common.notify.copied-link": "リンクをクリップボードにコピーしました",
|
||||||
"common.success": "成功",
|
"common.success": "成功",
|
||||||
"common.error": "エラー",
|
"common.error": "エラー",
|
||||||
"common.error.unknown": "不明なエラーが発生しました",
|
"common.error.unknown": "不明なエラーが発生しました",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "공유 제목",
|
"admin.config.email.share-recipients-subject": "공유 제목",
|
||||||
"admin.config.email.share-recipients-subject.description": "공유 수신자에게 전송되는 이메일의 제목입니다.",
|
"admin.config.email.share-recipients-subject.description": "공유 수신자에게 전송되는 이메일의 제목입니다.",
|
||||||
"admin.config.email.share-recipients-message": "수신자 메시지 공유",
|
"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": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email 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": "역방향 공유 제목",
|
||||||
"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": "역방향 공유 메시지",
|
"admin.config.email.reverse-share-message": "역방향 공유 메시지",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "인증되지 않은 사용자가 공유를 생성할 수 있는지 여부",
|
"admin.config.share.allow-unauthenticated-shares.description": "인증되지 않은 사용자가 공유를 생성할 수 있는지 여부",
|
||||||
"admin.config.share.max-expiration": "최대 만료 시간",
|
"admin.config.share.max-expiration": "최대 만료 시간",
|
||||||
"admin.config.share.max-expiration.description": "공유의 최대 만료 시간. 무제한 만료를 허용하려면 0으로 설정하세요.",
|
"admin.config.share.max-expiration.description": "공유의 최대 만료 시간. 무제한 만료를 허용하려면 0으로 설정하세요.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "최대 크기",
|
"admin.config.share.max-size": "최대 크기",
|
||||||
"admin.config.share.max-size.description": "공유의 최대 크기 (바이트)",
|
"admin.config.share.max-size.description": "공유의 최대 크기 (바이트)",
|
||||||
"admin.config.share.zip-compression-level": "Zip 압축 레벨",
|
"admin.config.share.zip-compression-level": "Zip 압축 레벨",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID 토큰의 Username claim 입니다. 이 구성이 무엇인지 모르면 비워 둡니다.",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID 토큰의 Username claim 입니다. 이 구성이 무엇인지 모르면 비워 둡니다.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "이런, 이 페이지는 존재하지 않습니다.",
|
"404.description": "이런, 이 페이지는 존재하지 않습니다.",
|
||||||
"404.button.home": "나를 집으로 데려다 줘",
|
"404.button.home": "나를 집으로 데려다 줘",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "뒤로 가기",
|
"common.button.go-back": "뒤로 가기",
|
||||||
"common.button.go-home": "첫 페이지",
|
"common.button.go-home": "첫 페이지",
|
||||||
"common.notify.copied": "당신의 링크가 클립보드에 복사되었습니다.",
|
"common.notify.copied": "당신의 링크가 클립보드에 복사되었습니다.",
|
||||||
|
"common.notify.copied-link": "당신의 링크가 클립보드에 복사되었습니다.",
|
||||||
"common.success": "성공",
|
"common.success": "성공",
|
||||||
"common.error": "에러",
|
"common.error": "에러",
|
||||||
"common.error.unknown": "알 수 없는 오류가 발생했습니다.",
|
"common.error.unknown": "알 수 없는 오류가 발생했습니다.",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "Delen",
|
"navbar.upload": "Delen",
|
||||||
"navbar.signin": "Aanmelden",
|
"navbar.signin": "Aanmelden",
|
||||||
"navbar.home": "Startpagina",
|
"navbar.home": "Startpagina",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "Registreren",
|
||||||
"navbar.links.shares": "Mijn gedeelde bestanden",
|
"navbar.links.shares": "Mijn gedeelde bestanden",
|
||||||
"navbar.links.reverse": "Omgekeerd delen",
|
"navbar.links.reverse": "Omgekeerd delen",
|
||||||
"navbar.avatar.account": "Mijn account",
|
"navbar.avatar.account": "Mijn account",
|
||||||
@@ -16,9 +16,9 @@ export default {
|
|||||||
"home.bullet.a.name": "Zelfgehost",
|
"home.bullet.a.name": "Zelfgehost",
|
||||||
"home.bullet.a.description": "Host Pingvin Share op uw eigen machine.",
|
"home.bullet.a.description": "Host Pingvin Share op uw eigen machine.",
|
||||||
"home.bullet.b.name": "Privacy",
|
"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": "Je bestanden zijn van jou en zullen nooit toegankelijk zijn voor derden.",
|
||||||
"home.bullet.c.name": "Geen vervelende limiet voor bestandsgrootte",
|
"home.bullet.c.name": "Geen vervelende limiet voor bestandsgrootte",
|
||||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
"home.bullet.c.description": "Upload bestanden zo groot als je wilt. Je harde schijf is de enige limiet.",
|
||||||
"home.button.start": "Aan de slag",
|
"home.button.start": "Aan de slag",
|
||||||
"home.button.source": "Broncode",
|
"home.button.source": "Broncode",
|
||||||
// END /
|
// END /
|
||||||
@@ -58,12 +58,12 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Wachtwoord vergeten?",
|
"resetPassword.title": "Wachtwoord vergeten?",
|
||||||
"resetPassword.description": "Voer uw e-mailadres in om uw wachtwoord opnieuw in te stellen.",
|
"resetPassword.description": "Voer uw e-mailadres in om uw wachtwoord opnieuw in te stellen.",
|
||||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
"resetPassword.notify.success": "Er is een bericht verzonden met een link om je wachtwoord opnieuw in te stellen, als het opgegeven e-mailadres bestaat.",
|
||||||
"resetPassword.button.back": "Terug naar login pagina",
|
"resetPassword.button.back": "Terug naar login pagina",
|
||||||
"resetPassword.text.resetPassword": "Wachtwoord opnieuw instellen",
|
"resetPassword.text.resetPassword": "Wachtwoord opnieuw instellen",
|
||||||
"resetPassword.text.enterNewPassword": "Voer uw nieuwe wachtwoord in",
|
"resetPassword.text.enterNewPassword": "Voer uw nieuwe wachtwoord in",
|
||||||
"resetPassword.input.password": "Nieuw wachtwoord",
|
"resetPassword.input.password": "Nieuw wachtwoord",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "Je wachtwoord is succesvol gereset.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Mijn account",
|
"account.title": "Mijn account",
|
||||||
"account.card.info.title": "Accountinformatie",
|
"account.card.info.title": "Accountinformatie",
|
||||||
@@ -73,7 +73,7 @@ export default {
|
|||||||
"account.card.password.title": "Wachtwoord",
|
"account.card.password.title": "Wachtwoord",
|
||||||
"account.card.password.old": "Oude wachtwoord",
|
"account.card.password.old": "Oude wachtwoord",
|
||||||
"account.card.password.new": "Nieuw wachtwoord",
|
"account.card.password.new": "Nieuw wachtwoord",
|
||||||
"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": "Er is geen wachtwoord ingesteld. Om in te loggen met je e-mailadres en wachtwoord, moet je een wachtwoord aanmaken.",
|
||||||
"account.notify.password.success": "Wachtwoord succesvol gewijzigd!",
|
"account.notify.password.success": "Wachtwoord succesvol gewijzigd!",
|
||||||
"account.card.oauth.title": "Social login",
|
"account.card.oauth.title": "Social login",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Ontkoppel",
|
"account.card.oauth.unlink": "Ontkoppel",
|
||||||
"account.card.oauth.unlinked": "Niet-gekoppeld",
|
"account.card.oauth.unlinked": "Niet-gekoppeld",
|
||||||
"account.modal.unlink.title": "Ontkoppel account",
|
"account.modal.unlink.title": "Ontkoppel 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": "Het ontkoppelen van sociale accounts kan leiden tot verlies van je account als je de inloggegevens bent vergeten",
|
||||||
"account.notify.oauth.unlinked.success": "Ontkoppelen succesvol",
|
"account.notify.oauth.unlinked.success": "Ontkoppelen succesvol",
|
||||||
"account.card.security.title": "Beveiliging",
|
"account.card.security.title": "Beveiliging",
|
||||||
"account.card.security.totp.enable.description": "Voer uw huidige wachtwoord in om TOTP in te schakelen",
|
"account.card.security.totp.enable.description": "Voer uw huidige wachtwoord in om TOTP in te schakelen",
|
||||||
@@ -121,12 +121,12 @@ export default {
|
|||||||
"account.shares.table.name": "Naam",
|
"account.shares.table.name": "Naam",
|
||||||
"account.shares.table.description": "Beschrijving",
|
"account.shares.table.description": "Beschrijving",
|
||||||
"account.shares.table.visitors": "Bezoekers",
|
"account.shares.table.visitors": "Bezoekers",
|
||||||
"account.shares.table.expiresAt": "Expires on",
|
"account.shares.table.expiresAt": "Verloopt op",
|
||||||
"account.shares.table.createdAt": "Created on",
|
"account.shares.table.createdAt": "Gemaakt op",
|
||||||
"account.shares.table.size": "Grootte",
|
"account.shares.table.size": "Grootte",
|
||||||
"account.shares.modal.share-informations": "Gegevens delen",
|
"account.shares.modal.share-informations": "Gegevens delen",
|
||||||
"account.shares.modal.share-link": "Deel link",
|
"account.shares.modal.share-link": "Deel link",
|
||||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
"account.shares.modal.delete.title": "Share verwijderd: {share}",
|
||||||
"account.shares.modal.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
"account.shares.modal.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
@@ -206,7 +206,7 @@ export default {
|
|||||||
"admin.shares.table.id": "Share ID",
|
"admin.shares.table.id": "Share ID",
|
||||||
"admin.shares.table.username": "Auteur",
|
"admin.shares.table.username": "Auteur",
|
||||||
"admin.shares.table.visitors": "Bezoekers",
|
"admin.shares.table.visitors": "Bezoekers",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "Verloopt op",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||||
"admin.shares.edit.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
"admin.shares.edit.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Onderwerp van ontvangers' share",
|
"admin.config.email.share-recipients-subject": "Onderwerp van ontvangers' share",
|
||||||
"admin.config.email.share-recipients-subject.description": "Het onderwerp van de e-mail die wordt verzonden naar de share-ontvangers.",
|
"admin.config.email.share-recipients-subject.description": "Het onderwerp van de e-mail die wordt verzonden naar de share-ontvangers.",
|
||||||
"admin.config.email.share-recipients-message": "Bericht voor ontvangers van de share",
|
"admin.config.email.share-recipients-message": "Bericht voor ontvangers van de share",
|
||||||
"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 {creatorEmail} - The email 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": "Omgekeerde share email onderwerp",
|
"admin.config.email.reverse-share-subject": "Omgekeerde share email onderwerp",
|
||||||
"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": "Omgekeerde share-bericht",
|
"admin.config.email.reverse-share-message": "Omgekeerde share-bericht",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Sta niet-geverifieerde gebruikers toe shares te kunnen aanmaken",
|
"admin.config.share.allow-unauthenticated-shares.description": "Sta niet-geverifieerde gebruikers toe shares te kunnen aanmaken",
|
||||||
"admin.config.share.max-expiration": "Max. vervaldatum",
|
"admin.config.share.max-expiration": "Max. vervaldatum",
|
||||||
"admin.config.share.max-expiration.description": "Maximale verval tijd van de share in uren. Stel in op 0 om onbeperkte vervaldatum toe te staan.",
|
"admin.config.share.max-expiration.description": "Maximale verval tijd van de share in uren. Stel in op 0 om onbeperkte vervaldatum toe te staan.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max. grootte",
|
"admin.config.share.max-size": "Max. grootte",
|
||||||
"admin.config.share.max-size.description": "Maximale share grootte in bytes",
|
"admin.config.share.max-size.description": "Maximale share grootte in bytes",
|
||||||
"admin.config.share.zip-compression-level": "Zip compressie niveau",
|
"admin.config.share.zip-compression-level": "Zip compressie niveau",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI van de OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI van de OpenID Connect OAuth app",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Gebruikersnaam claim in OpenID Connect-ID-token. Laat het leeg als u niet weet wat deze configuratie is.",
|
"admin.config.oauth.oidc-username-claim.description": "Gebruikersnaam claim in OpenID Connect-ID-token. Laat het leeg als u niet weet wat deze configuratie is.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oeps, deze pagina bestaat niet.",
|
"404.description": "Oeps, deze pagina bestaat niet.",
|
||||||
"404.button.home": "Breng me terug naar huis",
|
"404.button.home": "Breng me terug naar huis",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Ga terug",
|
"common.button.go-back": "Ga terug",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Go home",
|
||||||
"common.notify.copied": "Uw link is gekopieerd naar het klembord",
|
"common.notify.copied": "Uw link is gekopieerd naar het klembord",
|
||||||
|
"common.notify.copied-link": "Uw link is gekopieerd naar het klembord",
|
||||||
"common.success": "Succes",
|
"common.success": "Succes",
|
||||||
"common.error": "Fout",
|
"common.error": "Fout",
|
||||||
"common.error.unknown": "Er is een onbekende fout opgetreden",
|
"common.error.unknown": "Er is een onbekende fout opgetreden",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Temat dla odbiorców udziału",
|
"admin.config.email.share-recipients-subject": "Temat dla odbiorców udziału",
|
||||||
"admin.config.email.share-recipients-subject.description": "Temat wiadomości e-mail, która zostanie wysłana do odbiorców udziału.",
|
"admin.config.email.share-recipients-subject.description": "Temat wiadomości e-mail, która zostanie wysłana do odbiorców udziału.",
|
||||||
"admin.config.email.share-recipients-message": "Wiadomość dla odbiorców udziału",
|
"admin.config.email.share-recipients-message": "Wiadomość dla odbiorców udziału",
|
||||||
"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 {creatorEmail} - The email 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": "Temat udziału odwrotnego",
|
"admin.config.email.reverse-share-subject": "Temat udziału odwrotnego",
|
||||||
"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": "Wiadomość udziału odwrotnego",
|
"admin.config.email.reverse-share-message": "Wiadomość udziału odwrotnego",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Czy nieautoryzowani użytkownicy mogą tworzyć udostępnienia",
|
"admin.config.share.allow-unauthenticated-shares.description": "Czy nieautoryzowani użytkownicy mogą tworzyć udostępnienia",
|
||||||
"admin.config.share.max-expiration": "Maksymalny okres ważności",
|
"admin.config.share.max-expiration": "Maksymalny okres ważności",
|
||||||
"admin.config.share.max-expiration.description": "Maksymalny okres ważności udziału w godzinach. Ustaw na 0, aby zezwolić na nieograniczony okres ważności.",
|
"admin.config.share.max-expiration.description": "Maksymalny okres ważności udziału w godzinach. Ustaw na 0, aby zezwolić na nieograniczony okres ważności.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Rozmiar maksymalny",
|
"admin.config.share.max-size": "Rozmiar maksymalny",
|
||||||
"admin.config.share.max-size.description": "Maksymalny rozmiar udziału w bajtach",
|
"admin.config.share.max-size.description": "Maksymalny rozmiar udziału w bajtach",
|
||||||
"admin.config.share.zip-compression-level": "Poziom kompresji Zip",
|
"admin.config.share.zip-compression-level": "Poziom kompresji Zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "Wykrywanie URI OAuth aplikacji OpenID Connect",
|
"admin.config.oauth.oidc-discovery-uri.description": "Wykrywanie URI OAuth aplikacji OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out": "Wylogowanie z OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Wylogowanie z OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Czy przycisk „Wyloguj się” spowoduje wylogowanie z dostawcy OpenID Connect",
|
"admin.config.oauth.oidc-sign-out.description": "Czy przycisk „Wyloguj się” spowoduje wylogowanie z dostawcy OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Żądanie nazwy użytkownika OpenID Connect",
|
"admin.config.oauth.oidc-username-claim": "Żądanie nazwy użytkownika OpenID Connect",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Żądanie nazwy użytkownika w tokenie identyfikatora OpenID Connect. Jeśli nie wiesz, czym jest ta konfiguracja, pozostaw pustą.",
|
"admin.config.oauth.oidc-username-claim.description": "Żądanie nazwy użytkownika w tokenie identyfikatora OpenID Connect. Jeśli nie wiesz, czym jest ta konfiguracja, pozostaw pustą.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ups! Ta strona nie istnieje.",
|
"404.description": "Ups! Ta strona nie istnieje.",
|
||||||
"404.button.home": "Wróć do strony domowej",
|
"404.button.home": "Wróć do strony domowej",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Wróć",
|
"common.button.go-back": "Wróć",
|
||||||
"common.button.go-home": "Wróć do ekranu głównego",
|
"common.button.go-home": "Wróć do ekranu głównego",
|
||||||
"common.notify.copied": "Link został skopiowany do schowka",
|
"common.notify.copied": "Link został skopiowany do schowka",
|
||||||
|
"common.notify.copied-link": "Link został skopiowany do schowka",
|
||||||
"common.success": "Zakończono pomyślnie",
|
"common.success": "Zakończono pomyślnie",
|
||||||
"common.error": "Błąd",
|
"common.error": "Błąd",
|
||||||
"common.error.unknown": "Wystąpił nieznany błąd",
|
"common.error.unknown": "Wystąpił nieznany błąd",
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Carregar",
|
"upload.title": "Carregar",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Você tem certeza que deseja sair desta página? Seu envio será cancelado.",
|
||||||
"upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
|
"upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
|
||||||
"upload.notify.count-failed": "Falha ao enviar {count} arquivos. Tentando novamente.",
|
"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.title": "Link de compartilhamento reverso inválido",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Este compartilhamento reverso expirou ou é inválido.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Carregar arquivos",
|
"upload.dropzone.title": "Carregar arquivos",
|
||||||
"upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Aceitamos apenas arquivos até {maxSize} no total.",
|
"upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Aceitamos apenas arquivos até {maxSize} no total.",
|
||||||
@@ -303,8 +303,8 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Nome da aplicação",
|
"admin.config.general.app-name.description": "Nome da aplicação",
|
||||||
"admin.config.general.app-url": "URL do Aplicativo",
|
"admin.config.general.app-url": "URL do Aplicativo",
|
||||||
"admin.config.general.app-url.description": "Em qual URL o Pingvin Share está disponível",
|
"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": "Cookies seguros",
|
||||||
"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.secure-cookies.description": "Se definir a bandeira segura nos cookies. Se habilitado, o site não funcionará quando acessado por HTTP.",
|
||||||
"admin.config.general.show-home-page": "Mostrar a página inicial",
|
"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.show-home-page.description": "Mostrar ou não a página inicial",
|
||||||
"admin.config.general.session-duration": "Duração de sessão",
|
"admin.config.general.session-duration": "Duração de sessão",
|
||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Assunto dos destinatários do compartilhamento",
|
"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-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": "Assunto dos destinatários do compartilhamento",
|
||||||
"admin.config.email.share-recipients-message.description": "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
|
"admin.config.email.share-recipients-message.description": "Mensagem que é enviada para os destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {creatorEmail} - O e-mail do criador do compartilhamento\n {shareUrl} - A URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n Essas 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": "Assunto do compartilhamento reverso",
|
||||||
"admin.config.email.reverse-share-subject.description": "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
|
"admin.config.email.reverse-share-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": "Mensagem do compartilhamento reverso",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
|
"admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
|
||||||
"admin.config.share.max-expiration": "Expiração máxima",
|
"admin.config.share.max-expiration": "Expiração máxima",
|
||||||
"admin.config.share.max-expiration.description": "Validade máxima de ações em horas. Defina 0 para permitir expiração ilimitada.",
|
"admin.config.share.max-expiration.description": "Validade máxima de ações em horas. Defina 0 para permitir expiração ilimitada.",
|
||||||
|
"admin.config.share.share-id-length": "Comprimento da ID do compartilhamento padrão",
|
||||||
|
"admin.config.share.share-id-length.description": "Comprimento padrão para a ID gerada de um compartilhamento. Este valor também é usado para gerar links para ações reversas. Um valor abaixo de 8 não é considerado seguro.",
|
||||||
"admin.config.share.max-size": "Tamanho máximo",
|
"admin.config.share.max-size": "Tamanho máximo",
|
||||||
"admin.config.share.max-size.description": "Tamanho máximo do compartilhamento em bytes",
|
"admin.config.share.max-size.description": "Tamanho máximo do compartilhamento em bytes",
|
||||||
"admin.config.share.zip-compression-level": "Nível de compressão",
|
"admin.config.share.zip-compression-level": "Nível de compressão",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "URI da descoberta do aplicativo OpenID Connect OAuth",
|
"admin.config.oauth.oidc-discovery-uri.description": "URI da descoberta do aplicativo OpenID Connect OAuth",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sair do OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Sair do OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Se o botão “Sair” fará o logout do provedor OpenID Connect",
|
"admin.config.oauth.oidc-sign-out.description": "Se o botão “Sair” fará o logout do provedor OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "Escopo OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Escopos que devem ser solicitados a partir do provedor OpenID Connect.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Reivindicação de nome de usuário OpenID Connect",
|
"admin.config.oauth.oidc-username-claim": "Reivindicação de nome de usuário OpenID Connect",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Nome de usuário no token de ID OpenID Connect. Deixe em branco se você não sabe o que é esta configuração.",
|
"admin.config.oauth.oidc-username-claim.description": "Nome de usuário no token de ID OpenID Connect. Deixe em branco se você não sabe o que é esta configuração.",
|
||||||
"admin.config.oauth.oidc-role-path": "Caminho para as funções no token OpenID Connect",
|
"admin.config.oauth.oidc-role-path": "Caminho para as funções no token OpenID Connect",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "Nome do atributo LDAP para os grupos, de um usuário é membro. Isto é usado ao verificar para o grupo de administração.",
|
"admin.config.ldap.field-name-member-of.description": "Nome do atributo LDAP para os grupos, de um usuário é membro. Isto é usado ao verificar para o grupo de administração.",
|
||||||
"admin.config.ldap.field-name-email": "Nome do atributo do grupo de usuários",
|
"admin.config.ldap.field-name-email": "Nome do atributo do grupo de usuários",
|
||||||
"admin.config.ldap.field-name-email.description": "Nome do atributo LDAP para o email de um usuário.",
|
"admin.config.ldap.field-name-email.description": "Nome do atributo LDAP para o email de um usuário.",
|
||||||
|
"admin.config.notify.success": "Configuração atualizada com sucesso.",
|
||||||
|
"admin.config.notify.logo-success": "Logo atualizado com sucesso. Pode levar alguns minutos para ser atualizado no site.",
|
||||||
|
"admin.config.notify.no-changes": "Nenhuma alteração para salvar.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Habilitado",
|
||||||
|
"admin.config.s3.enabled.description": "Se o S3 deve ser usado para armazenar os arquivos compartilhados em vez do sistema de arquivo local.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "A URL do bucket S3.",
|
||||||
|
"admin.config.s3.region": "Região",
|
||||||
|
"admin.config.s3.region.description": "A região do bucket S3.",
|
||||||
|
"admin.config.s3.bucket-name": "Nome do Bucket",
|
||||||
|
"admin.config.s3.bucket-name.description": "O nome do bucket S3.",
|
||||||
|
"admin.config.s3.bucket-path": "Caminho",
|
||||||
|
"admin.config.s3.bucket-path.description": "O caminho padrão que deve ser usado para armazenar os arquivos no bucket S3.",
|
||||||
|
"admin.config.s3.key": "Chave",
|
||||||
|
"admin.config.s3.key.description": "A chave que permite a você acessar o bucket S3.",
|
||||||
|
"admin.config.s3.secret": "Segredo",
|
||||||
|
"admin.config.s3.secret.description": "O segredo que permite a você acessar o bucket S3.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ops, esta página não existe.",
|
"404.description": "Ops, esta página não existe.",
|
||||||
"404.button.home": "Me traga de volta para casa",
|
"404.button.home": "Me traga de volta para casa",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Voltar",
|
"common.button.go-back": "Voltar",
|
||||||
"common.button.go-home": "Voltar para o Início",
|
"common.button.go-home": "Voltar para o Início",
|
||||||
"common.notify.copied": "O seu link foi copiado para a área de transferência",
|
"common.notify.copied": "O seu link foi copiado para a área de transferência",
|
||||||
|
"common.notify.copied-link": "O seu link foi copiado para a área de transferência",
|
||||||
"common.success": "Sucesso",
|
"common.success": "Sucesso",
|
||||||
"common.error": "Erro",
|
"common.error": "Erro",
|
||||||
"common.error.unknown": "Ocorreu um erro desconhecido",
|
"common.error.unknown": "Ocorreu um erro desconhecido",
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ export default {
|
|||||||
"home.bullet.a.name": "На собственном сервере",
|
"home.bullet.a.name": "На собственном сервере",
|
||||||
"home.bullet.a.description": "Pingvin Share работает на вашей машине.",
|
"home.bullet.a.description": "Pingvin Share работает на вашей машине.",
|
||||||
"home.bullet.b.name": "Конфиденциальность",
|
"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.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.start": "Начнем",
|
||||||
"home.button.source": "Исходный код",
|
"home.button.source": "Исходный код",
|
||||||
// END /
|
// END /
|
||||||
@@ -58,12 +58,12 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Забыли пароль?",
|
"resetPassword.title": "Забыли пароль?",
|
||||||
"resetPassword.description": "Введите ваш email для восстановления пароля.",
|
"resetPassword.description": "Введите ваш email для восстановления пароля.",
|
||||||
"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.button.back": "Вернуться на страницу входа",
|
||||||
"resetPassword.text.resetPassword": "Сбросить пароль",
|
"resetPassword.text.resetPassword": "Сбросить пароль",
|
||||||
"resetPassword.text.enterNewPassword": "Введите новый пароль",
|
"resetPassword.text.enterNewPassword": "Введите новый пароль",
|
||||||
"resetPassword.input.password": "Новый пароль",
|
"resetPassword.input.password": "Новый пароль",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "Ваш пароль успешно изменён.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Мой аккаунт",
|
"account.title": "Мой аккаунт",
|
||||||
"account.card.info.title": "Информация об аккаунте",
|
"account.card.info.title": "Информация об аккаунте",
|
||||||
@@ -73,7 +73,7 @@ export default {
|
|||||||
"account.card.password.title": "Пароль",
|
"account.card.password.title": "Пароль",
|
||||||
"account.card.password.old": "Старый пароль",
|
"account.card.password.old": "Старый пароль",
|
||||||
"account.card.password.new": "Новый пароль",
|
"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.notify.password.success": "Пароль успешно изменён",
|
||||||
"account.card.oauth.title": "Авторизация через социальные сети",
|
"account.card.oauth.title": "Авторизация через социальные сети",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Отключить",
|
"account.card.oauth.unlink": "Отключить",
|
||||||
"account.card.oauth.unlinked": "Отключен",
|
"account.card.oauth.unlinked": "Отключен",
|
||||||
"account.modal.unlink.title": "Отключить связь с учетной записью",
|
"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.notify.oauth.unlinked.success": "Отключение прошло успешно",
|
||||||
"account.card.security.title": "Безопасность",
|
"account.card.security.title": "Безопасность",
|
||||||
"account.card.security.totp.enable.description": "Введите ваш текущий пароль для начала включения TOTP",
|
"account.card.security.totp.enable.description": "Введите ваш текущий пароль для начала включения TOTP",
|
||||||
@@ -150,12 +150,12 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "Год",
|
"account.reverseShares.modal.expiration.year-singular": "Год",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Года (лет)",
|
"account.reverseShares.modal.expiration.year-plural": "Года (лет)",
|
||||||
"account.reverseShares.modal.max-size.label": "Макс. размер загрузки",
|
"account.reverseShares.modal.max-size.label": "Макс. размер загрузки",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "Отправлять уведомления по эл. почте",
|
||||||
"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": "Отправлять уведомление по электронной почте, когда загрузка создается с помощью этой обратной ссылки.",
|
||||||
"account.reverseShares.modal.simplified": "Simple mode",
|
"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": "Public access",
|
"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.label": "Максимум использований",
|
||||||
"account.reverseShares.modal.max-use.description": "Максимальное количество раз, когда URL может быть использован для создания загрузки.",
|
"account.reverseShares.modal.max-use.description": "Максимальное количество раз, когда URL может быть использован для создания загрузки.",
|
||||||
"account.reverseShare.never-expires": "Эта обратная загрузка никогда не устареет.",
|
"account.reverseShare.never-expires": "Эта обратная загрузка никогда не устареет.",
|
||||||
@@ -183,14 +183,14 @@ export default {
|
|||||||
"admin.users.table.username": "Логин",
|
"admin.users.table.username": "Логин",
|
||||||
"admin.users.table.email": "Электронная почта",
|
"admin.users.table.email": "Электронная почта",
|
||||||
"admin.users.table.admin": "Администратор",
|
"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.admin-privileges": "Права администратора",
|
||||||
"admin.users.edit.update.change-password.title": "Изменить пароль",
|
"admin.users.edit.update.change-password.title": "Изменить пароль",
|
||||||
"admin.users.edit.update.change-password.field": "Новый пароль",
|
"admin.users.edit.update.change-password.field": "Новый пароль",
|
||||||
"admin.users.edit.update.change-password.button": "Сохранить новый пароль",
|
"admin.users.edit.update.change-password.button": "Сохранить новый пароль",
|
||||||
"admin.users.edit.update.notify.password.success": "Пароль успешно изменён",
|
"admin.users.edit.update.notify.password.success": "Пароль успешно изменён",
|
||||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
"admin.users.edit.delete.title": "Удалить пользователя {username} ?",
|
||||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
"admin.users.edit.delete.description": "Вы действительно хотите удалить этого пользователя и все его загрузки?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Создать пользователя",
|
"admin.users.modal.create.title": "Создать пользователя",
|
||||||
"admin.users.modal.create.username": "Логин",
|
"admin.users.modal.create.username": "Логин",
|
||||||
@@ -202,25 +202,25 @@ export default {
|
|||||||
"admin.users.modal.create.admin.description": "Если отмечено, пользователь будет иметь доступ к панели администратора.",
|
"admin.users.modal.create.admin.description": "Если отмечено, пользователь будет иметь доступ к панели администратора.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Share management",
|
"admin.shares.title": "Управление Share",
|
||||||
"admin.shares.table.id": "Share ID",
|
"admin.shares.table.id": "Share ID",
|
||||||
"admin.shares.table.username": "Creator",
|
"admin.shares.table.username": "Автор",
|
||||||
"admin.shares.table.visitors": "Visitors",
|
"admin.shares.table.visitors": "Посетители",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "Срок действия до",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"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": "Вы действительно хотите удалить эту загрузку?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Загрузить",
|
"upload.title": "Загрузить",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Вы уверены, что хотите покинуть эту страницу? Загрузка будет отменена.",
|
||||||
"upload.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.",
|
"upload.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.",
|
||||||
"upload.notify.count-failed": "Не удалось загрузить файлы {count}. Повтор попытки.",
|
"upload.notify.count-failed": "Не удалось загрузить файлы {count}. Повтор попытки.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Неверная обратная ссылка",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Эта обратная доля устарела или является недействительной.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Загрузить файлы",
|
"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}.",
|
"upload.dropzone.notify.file-too-big": "Ваши файлы превышают максимальный размер {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Название",
|
"upload.filelist.name": "Название",
|
||||||
"upload.filelist.size": "Размер",
|
"upload.filelist.size": "Размер",
|
||||||
@@ -231,8 +231,8 @@ export default {
|
|||||||
"upload.modal.not-signed-in": "Вы не авторизованы",
|
"upload.modal.not-signed-in": "Вы не авторизованы",
|
||||||
"upload.modal.not-signed-in-description": "Вы не сможете удалить свои файлы вручную и просмотреть количество посетителей.",
|
"upload.modal.not-signed-in-description": "Вы не сможете удалить свои файлы вручную и просмотреть количество посетителей.",
|
||||||
"upload.modal.expires.never": "никогда",
|
"upload.modal.expires.never": "никогда",
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
"upload.modal.expires.never-long": "Постоянный доступ",
|
||||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
"upload.modal.expires.error.too-long": "Срок действия превышает максимальный предел {max}.",
|
||||||
"upload.modal.link.label": "Ссылка",
|
"upload.modal.link.label": "Ссылка",
|
||||||
"upload.modal.expires.label": "Истекает",
|
"upload.modal.expires.label": "Истекает",
|
||||||
"upload.modal.expires.minute-singular": "Минута",
|
"upload.modal.expires.minute-singular": "Минута",
|
||||||
@@ -249,7 +249,7 @@ export default {
|
|||||||
"upload.modal.expires.year-plural": "Года (лет)",
|
"upload.modal.expires.year-plural": "Года (лет)",
|
||||||
"upload.modal.accordion.name-and-description.title": "Имя и описание",
|
"upload.modal.accordion.name-and-description.title": "Имя и описание",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Имя",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Имя",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Примечание для получателей этой загрузки",
|
||||||
"upload.modal.accordion.email.title": "Получатели письма",
|
"upload.modal.accordion.email.title": "Получатели письма",
|
||||||
"upload.modal.accordion.email.placeholder": "Получатели e-mail",
|
"upload.modal.accordion.email.placeholder": "Получатели e-mail",
|
||||||
"upload.modal.accordion.email.invalid-email": "Недопустимый адрес электронной почты",
|
"upload.modal.accordion.email.invalid-email": "Недопустимый адрес электронной почты",
|
||||||
@@ -262,7 +262,7 @@ export default {
|
|||||||
"upload.modal.completed.never-expires": "Эта загрузка никогда не устареет.",
|
"upload.modal.completed.never-expires": "Эта загрузка никогда не устареет.",
|
||||||
"upload.modal.completed.expires-on": "Эта загрузка устареет {expiration}.",
|
"upload.modal.completed.expires-on": "Эта загрузка устареет {expiration}.",
|
||||||
"upload.modal.completed.share-ready": "Готово",
|
"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
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Загрузка {shareId}",
|
"share.title": "Загрузка {shareId}",
|
||||||
@@ -272,19 +272,19 @@ export default {
|
|||||||
"share.error.removed.title": "Загрузка удалена",
|
"share.error.removed.title": "Загрузка удалена",
|
||||||
"share.error.not-found.title": "Загрузка не найдена",
|
"share.error.not-found.title": "Загрузка не найдена",
|
||||||
"share.error.not-found.description": "Страница, которую вы ищете, не существует.",
|
"share.error.not-found.description": "Страница, которую вы ищете, не существует.",
|
||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Приватное доступ",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "У текущей учетной записи нет разрешения на доступ к этому ресурсу",
|
||||||
"share.modal.password.title": "Требуется пароль",
|
"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.password": "Пароль",
|
||||||
"share.modal.error.invalid-password": "Неверный пароль",
|
"share.modal.error.invalid-password": "Неверный пароль",
|
||||||
"share.button.download-all": "Скачать все",
|
"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.modal.file-link": "Ссылка на файл",
|
||||||
"share.table.name": "Название",
|
"share.table.name": "Название",
|
||||||
"share.table.size": "Размер",
|
"share.table.size": "Размер",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Предпросмотр не поддерживается",
|
"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]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Редактировать {shareId}",
|
"share.edit.title": "Редактировать {shareId}",
|
||||||
@@ -303,48 +303,50 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Видимое название приложения",
|
"admin.config.general.app-name.description": "Видимое название приложения",
|
||||||
"admin.config.general.app-url": "URL-адрес приложения",
|
"admin.config.general.app-url": "URL-адрес приложения",
|
||||||
"admin.config.general.app-url.description": "Адрес на котором доступен Pingvin Share",
|
"admin.config.general.app-url.description": "Адрес на котором доступен Pingvin Share",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.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.secure-cookies.description": "Установите флаг безопасности на cookies. Если включено, сайт не будет работать при доступе по HTTP.",
|
||||||
"admin.config.general.show-home-page": "Показывать домашнюю страницу",
|
"admin.config.general.show-home-page": "Показывать домашнюю страницу",
|
||||||
"admin.config.general.show-home-page.description": "Показывать ли домашнюю страницу или нет",
|
"admin.config.general.show-home-page.description": "Показывать ли домашнюю страницу или нет",
|
||||||
"admin.config.general.session-duration": "Session Duration",
|
"admin.config.general.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": "Время в часах, после которого пользователь должен снова войти (по умолчанию: 3 месяца).",
|
||||||
"admin.config.general.logo": "Логотип",
|
"admin.config.general.logo": "Логотип",
|
||||||
"admin.config.general.logo.description": "Измените свой логотип, загрузив новое изображение. Изображение должно быть PNG и должно иметь формат 1:1.",
|
"admin.config.general.logo.description": "Измените свой логотип, загрузив новое изображение. Изображение должно быть PNG и должно иметь формат 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Выберите изображение",
|
"admin.config.general.logo.placeholder": "Выберите изображение",
|
||||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
"admin.config.email.enable-share-email-recipients": "Включить отправку email получателю",
|
||||||
"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.description": "Разрешить ли обмен электронной почтой с получателями. Включите, только если включен SMTP.",
|
||||||
"admin.config.email.share-recipients-subject": "Заголовок письма (загрузка)",
|
"admin.config.email.share-recipients-subject": "Заголовок письма (загрузка)",
|
||||||
"admin.config.email.share-recipients-subject.description": "Тема письма, которое отправляется получателям акции.",
|
"admin.config.email.share-recipients-subject.description": "Тема письма, которое отправляется получателям акции.",
|
||||||
"admin.config.email.share-recipients-message": "Сообщение письма загрузки",
|
"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": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email 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": "Заголовок письма (обратная загрузка)",
|
||||||
"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": "Сообщение письма обратной загрузки",
|
||||||
"admin.config.email.reverse-share-message.description": "Сообщение, которое отправляется, когда кто-то создал загрузку с вашей обратной ссылкой. {shareUrl} будет заменен именем создателя и URL-адресом общего доступа.",
|
"admin.config.email.reverse-share-message.description": "Сообщение, которое отправляется, когда кто-то создал загрузку с вашей обратной ссылкой. {shareUrl} будет заменен именем создателя и URL-адресом общего доступа.",
|
||||||
"admin.config.email.reset-password-subject": "Тема сброса пароля",
|
"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": "Сообщение о сбросе пароля",
|
||||||
"admin.config.email.reset-password-message.description": "Сообщение, которое отправляется при запросе сброса пароля. {url} будет заменён ссылкой.",
|
"admin.config.email.reset-password-message.description": "Сообщение, которое отправляется при запросе сброса пароля. {url} будет заменён ссылкой.",
|
||||||
"admin.config.email.invite-subject": "Тема приглашения",
|
"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": "Сообщение с приглашением",
|
||||||
"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} будет заменён ссылкой приглашения, а {password} паролем.",
|
||||||
"admin.config.share.allow-registration": "Разрешить регистрацию",
|
"admin.config.share.allow-registration": "Разрешить регистрацию",
|
||||||
"admin.config.share.allow-registration.description": "Разрешена ли регистрация",
|
"admin.config.share.allow-registration.description": "Разрешена ли регистрация",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Разрешить неавторизованные загрузки",
|
"admin.config.share.allow-unauthenticated-shares": "Разрешить неавторизованные загрузки",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Могут ли неавторизованные пользователи создавать загрузки",
|
"admin.config.share.allow-unauthenticated-shares.description": "Могут ли неавторизованные пользователи создавать загрузки",
|
||||||
"admin.config.share.max-expiration": "Максимальная срок действия",
|
"admin.config.share.max-expiration": "Максимальная срок действия",
|
||||||
"admin.config.share.max-expiration.description": "Максимальный срок действия общего доступа в часах. Установите значение 0, чтобы разрешить неограниченный срок действия.",
|
"admin.config.share.max-expiration.description": "Максимальный срок действия общего доступа в часах. Установите значение 0, чтобы разрешить неограниченный срок действия.",
|
||||||
|
"admin.config.share.share-id-length": "Длина идентификатора по умолчанию",
|
||||||
|
"admin.config.share.share-id-length.description": "Длина по умолчанию для сгенерированного ID ресурса. Это значение также используется для генерации ссылок для обратных акций. Значение ниже 8 не считается безопасным.",
|
||||||
"admin.config.share.max-size": "Максимальный размер",
|
"admin.config.share.max-size": "Максимальный размер",
|
||||||
"admin.config.share.max-size.description": "Максимальный размер файла в байтах",
|
"admin.config.share.max-size.description": "Максимальный размер файла в байтах",
|
||||||
"admin.config.share.zip-compression-level": "Уровень сжатия Zip",
|
"admin.config.share.zip-compression-level": "Уровень сжатия Zip",
|
||||||
"admin.config.share.zip-compression-level.description": "Регулировка уровня баланса между размером файла и скоростью сжатия. Допустимые значения от 0 до 9, с 0 без сжатия, а 9 - максимальное сжатие. ",
|
"admin.config.share.zip-compression-level.description": "Регулировка уровня баланса между размером файла и скоростью сжатия. Допустимые значения от 0 до 9, с 0 без сжатия, а 9 - максимальное сжатие. ",
|
||||||
"admin.config.share.chunk-size": "Размер чанка",
|
"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": "Auto open create share modal",
|
"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.share.auto-open-share-modal.description": "Модуль создания общего доступа автоматически появляется, когда пользователь выбирает файлы, устраняя необходимость вручную нажать кнопку.",
|
||||||
"admin.config.smtp.enabled": "Enable",
|
"admin.config.smtp.enabled": "Включено",
|
||||||
"admin.config.smtp.enabled.description": "Включено ли SMTP. Установите значение true только если вы ввели хост, порт, email, пользователь и пароль вашего SMTP-сервера.",
|
"admin.config.smtp.enabled.description": "Включено ли SMTP. Установите значение true только если вы ввели хост, порт, email, пользователь и пароль вашего SMTP-сервера.",
|
||||||
"admin.config.smtp.host": "Хост",
|
"admin.config.smtp.host": "Хост",
|
||||||
"admin.config.smtp.host.description": "Сервер SMTP сервера",
|
"admin.config.smtp.host.description": "Сервер SMTP сервера",
|
||||||
@@ -357,14 +359,14 @@ export default {
|
|||||||
"admin.config.smtp.password": "Пароль",
|
"admin.config.smtp.password": "Пароль",
|
||||||
"admin.config.smtp.password.description": "Пароль SMTP-сервера",
|
"admin.config.smtp.password.description": "Пароль SMTP-сервера",
|
||||||
"admin.config.smtp.button.test": "Отправить тестовое письмо",
|
"admin.config.smtp.button.test": "Отправить тестовое письмо",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "Доверять несанкционированным сертификатам SMTP-сервера",
|
||||||
"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.description": "Установите это значение только в том случае, если вам нужно доверять самоподписанным сертификатам.",
|
||||||
"admin.config.oauth.allow-registration": "Разрешить регистрацию",
|
"admin.config.oauth.allow-registration": "Разрешить регистрацию",
|
||||||
"admin.config.oauth.allow-registration.description": "Разрешить пользователям регистрироваться используя учетные записи социальных сетей",
|
"admin.config.oauth.allow-registration.description": "Разрешить пользователям регистрироваться используя учетные записи социальных сетей",
|
||||||
"admin.config.oauth.ignore-totp": "Игнорировать TOTP",
|
"admin.config.oauth.ignore-totp": "Игнорировать TOTP",
|
||||||
"admin.config.oauth.ignore-totp.description": "Игнорировать TOTP при использовании социальной авторизации",
|
"admin.config.oauth.ignore-totp.description": "Игнорировать TOTP при использовании социальной авторизации",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "Отключить логин и пароль",
|
||||||
"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": "Следует ли отключать вход по паролю? \nПеред активацией этой конфигурации убедитесь, что поставщик OAuth настроен должным образом, чтобы избежать блокировки.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "Включен ли логин на GitHub",
|
"admin.config.oauth.github-enabled.description": "Включен ли логин на GitHub",
|
||||||
"admin.config.oauth.github-client-id": "ID клиента GitHub",
|
"admin.config.oauth.github-client-id": "ID клиента GitHub",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Упс, этой страницы не существует.",
|
"404.description": "Упс, этой страницы не существует.",
|
||||||
"404.button.home": "Верните меня домой",
|
"404.button.home": "Верните меня домой",
|
||||||
@@ -473,14 +495,15 @@ export default {
|
|||||||
"common.button.go-back": "Назад",
|
"common.button.go-back": "Назад",
|
||||||
"common.button.go-home": "Домой",
|
"common.button.go-home": "Домой",
|
||||||
"common.notify.copied": "Ваша ссылка скопирована в буфер обмена",
|
"common.notify.copied": "Ваша ссылка скопирована в буфер обмена",
|
||||||
"common.success": "Успешно",
|
"common.notify.copied-link": "Ваша ссылка скопирована в буфер обмена",
|
||||||
|
"common.success": "Успех",
|
||||||
"common.error": "Ошибочка",
|
"common.error": "Ошибочка",
|
||||||
"common.error.unknown": "Произошла неизвестная ошибка",
|
"common.error.unknown": "Произошла неизвестная ошибка",
|
||||||
"common.error.invalid-email": "Недопустимый адрес электронной почты",
|
"common.error.invalid-email": "Недопустимый адрес электронной почты",
|
||||||
"common.error.too-short": "Должно быть не менее {length} символов",
|
"common.error.too-short": "Должно быть не менее {length} символов",
|
||||||
"common.error.too-long": "Должно быть не больше {length} символов",
|
"common.error.too-long": "Должно быть не больше {length} символов",
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
"common.error.number-too-small": "Должно быть не меньше {min}",
|
||||||
"common.error.number-too-large": "Must be at most {max}",
|
"common.error.number-too-large": "Должно быть не больше {max}",
|
||||||
"common.error.exact-length": "Должно быть ровно {length} символов",
|
"common.error.exact-length": "Должно быть ровно {length} символов",
|
||||||
"common.error.invalid-number": "Должно быть числом",
|
"common.error.invalid-number": "Должно быть числом",
|
||||||
"common.error.field-required": "Поле обязательно для заполнения"
|
"common.error.field-required": "Поле обязательно для заполнения"
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Zadeva poslane delitve",
|
"admin.config.email.share-recipients-subject": "Zadeva poslane delitve",
|
||||||
"admin.config.email.share-recipients-subject.description": "Zadeva e-poštnega sporočila, ki bo poslan prejemnikom delitve.",
|
"admin.config.email.share-recipients-subject.description": "Zadeva e-poštnega sporočila, ki bo poslan prejemnikom delitve.",
|
||||||
"admin.config.email.share-recipients-message": "Vsebina poslane delitve",
|
"admin.config.email.share-recipients-message": "Vsebina poslane delitve",
|
||||||
"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 {creatorEmail} - The email 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": "Zadeva delitve v obratni smeri",
|
"admin.config.email.reverse-share-subject": "Zadeva delitve v obratni smeri",
|
||||||
"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": "Vsebina delitve v obratni smeri",
|
"admin.config.email.reverse-share-message": "Vsebina delitve v obratni smeri",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Če lahko neprijavljeni uporabniki ustvarijo delitve",
|
"admin.config.share.allow-unauthenticated-shares.description": "Če lahko neprijavljeni uporabniki ustvarijo delitve",
|
||||||
"admin.config.share.max-expiration": "Najvišja zapadlost",
|
"admin.config.share.max-expiration": "Najvišja zapadlost",
|
||||||
"admin.config.share.max-expiration.description": "Najvišja zapadlost delitve v urah. Nastavljeno na 0 pomeni brez zapadlosti.",
|
"admin.config.share.max-expiration.description": "Najvišja zapadlost delitve v urah. Nastavljeno na 0 pomeni brez zapadlosti.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Največja velikost",
|
"admin.config.share.max-size": "Največja velikost",
|
||||||
"admin.config.share.max-size.description": "Največja velikost delitve v bytih",
|
"admin.config.share.max-size.description": "Največja velikost delitve v bytih",
|
||||||
"admin.config.share.zip-compression-level": "Nivo Zip stiskanja",
|
"admin.config.share.zip-compression-level": "Nivo Zip stiskanja",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "URI za odkrivanje OpenID Connect OAuth aplikacije",
|
"admin.config.oauth.oidc-discovery-uri.description": "URI za odkrivanje OpenID Connect OAuth aplikacije",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect zahteva za uporabniško ime",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect zahteva za uporabniško ime",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Zahteva za uporabniško ime za OpenID Connect ID žetona. Pustite prazno, če ne poznate te nastavitve.",
|
"admin.config.oauth.oidc-username-claim.description": "Zahteva za uporabniško ime za OpenID Connect ID žetona. Pustite prazno, če ne poznate te nastavitve.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ups! Ta stran ne obstaja.",
|
"404.description": "Ups! Ta stran ne obstaja.",
|
||||||
"404.button.home": "Pelji me domov",
|
"404.button.home": "Pelji me domov",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Nazaj",
|
"common.button.go-back": "Nazaj",
|
||||||
"common.button.go-home": "Pojdi domov",
|
"common.button.go-home": "Pojdi domov",
|
||||||
"common.notify.copied": "Povezava je bila kopirana v odložišče",
|
"common.notify.copied": "Povezava je bila kopirana v odložišče",
|
||||||
|
"common.notify.copied-link": "Povezava je bila kopirana v odložišče",
|
||||||
"common.success": "Uspešno",
|
"common.success": "Uspešno",
|
||||||
"common.error": "Napaka",
|
"common.error": "Napaka",
|
||||||
"common.error.unknown": "Prišlo je do neznane napake",
|
"common.error.unknown": "Prišlo je do neznane napake",
|
||||||
|
|||||||
@@ -1,40 +1,40 @@
|
|||||||
export default {
|
export default {
|
||||||
// Navbar
|
// Navbar
|
||||||
"navbar.upload": "Upload",
|
"navbar.upload": "Otpremi",
|
||||||
"navbar.signin": "Sign in",
|
"navbar.signin": "Prijava",
|
||||||
"navbar.home": "Home",
|
"navbar.home": "Početna",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "Registracija",
|
||||||
"navbar.links.shares": "My shares",
|
"navbar.links.shares": "Moja deljenja",
|
||||||
"navbar.links.reverse": "Reverse shares",
|
"navbar.links.reverse": "Obrnuto deljenje",
|
||||||
"navbar.avatar.account": "My account",
|
"navbar.avatar.account": "Moj nalog",
|
||||||
"navbar.avatar.admin": "Administration",
|
"navbar.avatar.admin": "Administracija",
|
||||||
"navbar.avatar.signout": "Sign out",
|
"navbar.avatar.signout": "Odjavi se",
|
||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "A <h>self-hosted</h> file sharing platform.",
|
"home.title": "<h>Samo-hostovana</h> platforma za deljenje fajlova.",
|
||||||
"home.description": "Do you really want to give your personal files in the hand of third parties like WeTransfer?",
|
"home.description": "Da li zaista želite da date svoje lične datoteke u ruke trećih strana kao što je WeTransfer?",
|
||||||
"home.bullet.a.name": "Self-Hosted",
|
"home.bullet.a.name": "Samo-hostovano",
|
||||||
"home.bullet.a.description": "Host Pingvin Share on your own machine.",
|
"home.bullet.a.description": "Hostujte Pingvin Share na svojoj mašini.",
|
||||||
"home.bullet.b.name": "Privacy",
|
"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": "Vaše datoteke su vaše i nikada neće biti dostupne trećim stranama.",
|
||||||
"home.bullet.c.name": "No annoying file size limit",
|
"home.bullet.c.name": "Nema dosadnog ograničenja veličine datoteke",
|
||||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
"home.bullet.c.description": "Otpremite onoliko velikih datoteka koliko želite. Samo vaš čvrsti disk je granica.",
|
||||||
"home.button.start": "Get started",
|
"home.button.start": "Započni",
|
||||||
"home.button.source": "Source code",
|
"home.button.source": "Izvorni kod",
|
||||||
// END /
|
// END /
|
||||||
// /auth/signin
|
// /auth/signin
|
||||||
"signin.title": "Welcome back",
|
"signin.title": "Dobrodošli nazad",
|
||||||
"signin.description": "You don't have an account yet?",
|
"signin.description": "Još uvek nemate nalog?",
|
||||||
"signin.button.signup": "Sign up",
|
"signin.button.signup": "Registruj se",
|
||||||
"signin.input.email-or-username": "Email or username",
|
"signin.input.email-or-username": "Imejl ili korisničko ime",
|
||||||
"signin.input.email-or-username.placeholder": "Your email or username",
|
"signin.input.email-or-username.placeholder": "Vaš imejl ili korisničko ime",
|
||||||
"signin.input.password": "Password",
|
"signin.input.password": "Lozinka",
|
||||||
"signin.input.password.placeholder": "Your password",
|
"signin.input.password.placeholder": "Vaša lozinka",
|
||||||
"signin.button.submit": "Sign in",
|
"signin.button.submit": "Prijavite se",
|
||||||
"signIn.notify.totp-required.title": "Two-factor authentication required",
|
"signIn.notify.totp-required.title": "Potrebna je dvofaktorska autentifikacija",
|
||||||
"signIn.notify.totp-required.description": "Please enter your two-factor authentication code",
|
"signIn.notify.totp-required.description": "Unesite svoj dvofaktorski kod za autentifikaciju",
|
||||||
"signIn.oauth.or": "OR",
|
"signIn.oauth.or": "Ili",
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
"signIn.oauth.signInWith": "Prijavite se sa",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -42,39 +42,39 @@ export default {
|
|||||||
"signIn.oauth.oidc": "OpenID",
|
"signIn.oauth.oidc": "OpenID",
|
||||||
// END /auth/signin
|
// END /auth/signin
|
||||||
// /auth/signup
|
// /auth/signup
|
||||||
"signup.title": "Create an account",
|
"signup.title": "Napravi nalog",
|
||||||
"signup.description": "Already have an account?",
|
"signup.description": "Već imate nalog?",
|
||||||
"signup.button.signin": "Sign in",
|
"signup.button.signin": "Prijavite se",
|
||||||
"signup.input.username": "Username",
|
"signup.input.username": "Korisničko ime",
|
||||||
"signup.input.username.placeholder": "Your username",
|
"signup.input.username.placeholder": "Vaše korisničko ime",
|
||||||
"signup.input.email": "Email",
|
"signup.input.email": "Imejl",
|
||||||
"signup.input.email.placeholder": "Your email",
|
"signup.input.email.placeholder": "Vaš imejl",
|
||||||
"signup.button.submit": "Let's get started",
|
"signup.button.submit": "Hajde da počnemo",
|
||||||
// END /auth/signup
|
// END /auth/signup
|
||||||
// /auth/totp
|
// /auth/totp
|
||||||
"totp.title": "TOTP Authentication",
|
"totp.title": "TOTP autentifikacija",
|
||||||
"totp.button.signIn": "Sign in",
|
"totp.button.signIn": "Prijavite se",
|
||||||
// END /auth/totp
|
// END /auth/totp
|
||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Forgot your password?",
|
"resetPassword.title": "Zaboravili ste lozinku?",
|
||||||
"resetPassword.description": "Enter your email to reset your password.",
|
"resetPassword.description": "Unesite svoj imejl da biste resetovali lozinku.",
|
||||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
"resetPassword.notify.success": "Poruka sa linkom za resetovanje lozinke je poslata ako uneta i-mejl adresa postoji.",
|
||||||
"resetPassword.button.back": "Back to sign in page",
|
"resetPassword.button.back": "Nazad na stranicu za prijavu",
|
||||||
"resetPassword.text.resetPassword": "Reset password",
|
"resetPassword.text.resetPassword": "Obnovi lozinku",
|
||||||
"resetPassword.text.enterNewPassword": "Enter your new password",
|
"resetPassword.text.enterNewPassword": "Unesite vašu novu lozinku",
|
||||||
"resetPassword.input.password": "New password",
|
"resetPassword.input.password": "Nova lozinka",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "Vaša lozinka je uspešno resetovana.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "My account",
|
"account.title": "Moj nalog",
|
||||||
"account.card.info.title": "Account info",
|
"account.card.info.title": "Podaci o nalogu",
|
||||||
"account.card.info.username": "Username",
|
"account.card.info.username": "Korisničko ime",
|
||||||
"account.card.info.email": "Email",
|
"account.card.info.email": "Imejl",
|
||||||
"account.notify.info.success": "Account updated successfully",
|
"account.notify.info.success": "Nalog je uspešno ažuriran",
|
||||||
"account.card.password.title": "Password",
|
"account.card.password.title": "Lozinka",
|
||||||
"account.card.password.old": "Old password",
|
"account.card.password.old": "Stara lozinka",
|
||||||
"account.card.password.new": "New password",
|
"account.card.password.new": "Nova lozinka",
|
||||||
"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": "Nemate postavljenu lozinku. Da biste se prijavili koristeći i-mejl i lozinku, potrebno je da napravite lozinku.",
|
||||||
"account.notify.password.success": "Password changed successfully",
|
"account.notify.password.success": "Lozinka je uspešno promenjena",
|
||||||
"account.card.oauth.title": "Social login",
|
"account.card.oauth.title": "Social login",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
"account.card.oauth.google": "Google",
|
"account.card.oauth.google": "Google",
|
||||||
@@ -82,406 +82,429 @@ export default {
|
|||||||
"account.card.oauth.discord": "Discord",
|
"account.card.oauth.discord": "Discord",
|
||||||
"account.card.oauth.oidc": "OpenID",
|
"account.card.oauth.oidc": "OpenID",
|
||||||
"account.card.oauth.link": "Link",
|
"account.card.oauth.link": "Link",
|
||||||
"account.card.oauth.unlink": "Unlink",
|
"account.card.oauth.unlink": "Prekini vezu",
|
||||||
"account.card.oauth.unlinked": "Unlinked",
|
"account.card.oauth.unlinked": "Veza je prekinuta",
|
||||||
"account.modal.unlink.title": "Unlink account",
|
"account.modal.unlink.title": "Prekini vezu sa nalogom",
|
||||||
"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": "Uklanjanje veze sa vašim društvenim nalozima može dovesti do gubitka vašeg naloga ako se ne sećate svojih pristupnih podataka",
|
||||||
"account.notify.oauth.unlinked.success": "Unlinked successfully",
|
"account.notify.oauth.unlinked.success": "Veza je prekinuta",
|
||||||
"account.card.security.title": "Security",
|
"account.card.security.title": "Bezbednost",
|
||||||
"account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
|
"account.card.security.totp.enable.description": "Unesite svoju trenutnu lozinku da biste počeli da omogućavate TOTP",
|
||||||
"account.card.security.totp.disable.description": "Enter your current password to disable TOTP",
|
"account.card.security.totp.disable.description": "Unesite svoju trenutnu lozinku da biste onemogućili TOTP",
|
||||||
"account.card.security.totp.button.start": "Start",
|
"account.card.security.totp.button.start": "Započni",
|
||||||
"account.modal.totp.title": "Enable TOTP",
|
"account.modal.totp.title": "Omogući TOTP",
|
||||||
"account.modal.totp.step1": "Step 1: Add your authenticator",
|
"account.modal.totp.step1": "Korak 1: Dodajte svoj autentifikator",
|
||||||
"account.modal.totp.step2": "Step 2: Validate your code",
|
"account.modal.totp.step2": "Korak 2: Potvrdite svoj kod",
|
||||||
"account.modal.totp.enterManually": "Enter manually",
|
"account.modal.totp.enterManually": "Unesite ručno",
|
||||||
"account.modal.totp.code": "Code",
|
"account.modal.totp.code": "Kod",
|
||||||
"common.button.clickToCopy": "Click to copy",
|
"common.button.clickToCopy": "Kliknite za kopiranje",
|
||||||
"account.modal.totp.verify": "Verify",
|
"account.modal.totp.verify": "Verifikuj",
|
||||||
"account.notify.totp.disable": "TOTP disabled successfully",
|
"account.notify.totp.disable": "TOTP je uspešno onemogućen",
|
||||||
"account.notify.totp.enable": "TOTP enabled successfully",
|
"account.notify.totp.enable": "TOTP je uspešno omogućen",
|
||||||
"account.card.language.title": "Language",
|
"account.card.language.title": "Jezik",
|
||||||
"account.card.language.description": "The project is translated by the community. Some languages might be incomplete.",
|
"account.card.language.description": "Projekat je preveden od strane zajednice. Neki jezici mogu biti nepotpuni.",
|
||||||
"account.card.color.title": "Color scheme",
|
"account.card.color.title": "Šema boja",
|
||||||
// ThemeSwitcher.tsx
|
// ThemeSwitcher.tsx
|
||||||
"account.theme.dark": "Dark",
|
"account.theme.dark": "Tamno",
|
||||||
"account.theme.light": "Light",
|
"account.theme.light": "Svetlo",
|
||||||
"account.theme.system": "System",
|
"account.theme.system": "Sistem",
|
||||||
"account.button.delete": "Delete Account",
|
"account.button.delete": "Izbriši Nalog",
|
||||||
"account.modal.delete.title": "Delete Account",
|
"account.modal.delete.title": "Izbriši Nalog",
|
||||||
"account.modal.delete.description": "Do you really want to delete your account including all your active shares?",
|
"account.modal.delete.description": "Da li zaista želite da izbrišete svoj nalog uključujući sve vaše aktivne deljenja?",
|
||||||
// END /account
|
// END /account
|
||||||
// /account/shares
|
// /account/shares
|
||||||
"account.shares.title": "My shares",
|
"account.shares.title": "Moja deljenja",
|
||||||
"account.shares.title.empty": "It's empty here 👀",
|
"account.shares.title.empty": "Ovde je prazno 👀",
|
||||||
"account.shares.description.empty": "You don't have any shares.",
|
"account.shares.description.empty": "Nemate nikakva deljenja.",
|
||||||
"account.shares.button.create": "Create one",
|
"account.shares.button.create": "Napravite",
|
||||||
"account.shares.info.title": "Share informations",
|
"account.shares.info.title": "Delite informacije",
|
||||||
"account.shares.table.id": "ID",
|
"account.shares.table.id": "ID",
|
||||||
"account.shares.table.name": "Name",
|
"account.shares.table.name": "Naziv",
|
||||||
"account.shares.table.description": "Description",
|
"account.shares.table.description": "Opis",
|
||||||
"account.shares.table.visitors": "Visitors",
|
"account.shares.table.visitors": "Posetioci",
|
||||||
"account.shares.table.expiresAt": "Expires on",
|
"account.shares.table.expiresAt": "Ističe",
|
||||||
"account.shares.table.createdAt": "Created on",
|
"account.shares.table.createdAt": "Napravljeno",
|
||||||
"account.shares.table.size": "Size",
|
"account.shares.table.size": "Veličina",
|
||||||
"account.shares.modal.share-informations": "Share informations",
|
"account.shares.modal.share-informations": "Delite informacije",
|
||||||
"account.shares.modal.share-link": "Share link",
|
"account.shares.modal.share-link": "Deli vezu",
|
||||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
"account.shares.modal.delete.title": "Izbriši deljenje {share}",
|
||||||
"account.shares.modal.delete.description": "Do you really want to delete this share?",
|
"account.shares.modal.delete.description": "Da li zaista želite da izbrišete ovo deljenje?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "Reverse shares",
|
"account.reverseShares.title": "Obrnuto deljenje",
|
||||||
"account.reverseShares.description": "A reverse share allows you to generate a unique URL that allows external users to create a share.",
|
"account.reverseShares.description": "Obrnuto deljenje vam omogućava da generišete jedinstveni URL koji omogućava spoljnim korisnicima da kreiraju deljenje.",
|
||||||
"account.reverseShares.title.empty": "It's empty here 👀",
|
"account.reverseShares.title.empty": "Ovde je prazno 👀",
|
||||||
"account.reverseShares.description.empty": "You don't have any reverse shares.",
|
"account.reverseShares.description.empty": "Nemate obrnutih deljenja.",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
"account.reverseShares.modal.title": "Create reverse share",
|
"account.reverseShares.modal.title": "Kreirajte obrnuto deljenje",
|
||||||
"account.reverseShares.modal.expiration.label": "Expiration",
|
"account.reverseShares.modal.expiration.label": "Ističe",
|
||||||
"account.reverseShares.modal.expiration.minute-singular": "Minute",
|
"account.reverseShares.modal.expiration.minute-singular": "Minut",
|
||||||
"account.reverseShares.modal.expiration.minute-plural": "Minutes",
|
"account.reverseShares.modal.expiration.minute-plural": "Minute",
|
||||||
"account.reverseShares.modal.expiration.hour-singular": "Hour",
|
"account.reverseShares.modal.expiration.hour-singular": "Sat",
|
||||||
"account.reverseShares.modal.expiration.hour-plural": "Hours",
|
"account.reverseShares.modal.expiration.hour-plural": "Sati",
|
||||||
"account.reverseShares.modal.expiration.day-singular": "Day",
|
"account.reverseShares.modal.expiration.day-singular": "Dan",
|
||||||
"account.reverseShares.modal.expiration.day-plural": "Days",
|
"account.reverseShares.modal.expiration.day-plural": "Dani",
|
||||||
"account.reverseShares.modal.expiration.week-singular": "Week",
|
"account.reverseShares.modal.expiration.week-singular": "Sedmica",
|
||||||
"account.reverseShares.modal.expiration.week-plural": "Weeks",
|
"account.reverseShares.modal.expiration.week-plural": "Sedmice",
|
||||||
"account.reverseShares.modal.expiration.month-singular": "Month",
|
"account.reverseShares.modal.expiration.month-singular": "Mesec",
|
||||||
"account.reverseShares.modal.expiration.month-plural": "Months",
|
"account.reverseShares.modal.expiration.month-plural": "Meseci",
|
||||||
"account.reverseShares.modal.expiration.year-singular": "Year",
|
"account.reverseShares.modal.expiration.year-singular": "Godina",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Years",
|
"account.reverseShares.modal.expiration.year-plural": "Godine",
|
||||||
"account.reverseShares.modal.max-size.label": "Max share size",
|
"account.reverseShares.modal.max-size.label": "Maksimalna veličina deljenja",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "Pošalji obaveštenja i-mejlom",
|
||||||
"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": "Pošalji obaveštenje imejlom kada se kreira deljenje pomoću ove obrnute veze za deljenje.",
|
||||||
"account.reverseShares.modal.simplified": "Simple mode",
|
"account.reverseShares.modal.simplified": "Jednostavan režim",
|
||||||
"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": "Olakšajte osobi koja otprema fajl da ga podeli sa vama. Oni će moći da prilagode samo ime i opis deljenja.",
|
||||||
"account.reverseShares.modal.public-access": "Public access",
|
"account.reverseShares.modal.public-access": "Javni pristup",
|
||||||
"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": "Učini da deljenja kreirana ovim reverznim linkom za deljenje budu javna. Ako je onemogućeno, samo vi i kreator deljenja ćete imati pristup za pregled.",
|
||||||
"account.reverseShares.modal.max-use.label": "Max uses",
|
"account.reverseShares.modal.max-use.label": "Maksimalan broj korišćenja",
|
||||||
"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": "Maksimalan broj puta koji ovaj URL može da se koristi za pravljenje deljenja.",
|
||||||
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
"account.reverseShare.never-expires": "Ovo obrnuto deljenje nikada neće isteći.",
|
||||||
"account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
|
"account.reverseShare.expires-on": "Ovo obrnuto deljenje će isteći {expiration}.",
|
||||||
"account.reverseShares.table.no-shares": "No shares created yet",
|
"account.reverseShares.table.no-shares": "Još nema kreiranih deljenja",
|
||||||
"account.reverseShares.table.count.singular": "share",
|
"account.reverseShares.table.count.singular": "deljenje",
|
||||||
"account.reverseShares.table.count.plural": "shares",
|
"account.reverseShares.table.count.plural": "deljenja",
|
||||||
"account.reverseShares.table.shares": "Shares",
|
"account.reverseShares.table.shares": "Deljenja",
|
||||||
"account.reverseShares.table.remaining": "Remaining uses",
|
"account.reverseShares.table.remaining": "Preostala upotreba",
|
||||||
"account.reverseShares.table.max-size": "Max share size",
|
"account.reverseShares.table.max-size": "Maksimalna veličina deljenja",
|
||||||
"account.reverseShares.table.expires": "Expires at",
|
"account.reverseShares.table.expires": "Ističe u",
|
||||||
"account.reverseShares.modal.reverse-share-link": "Reverse share link",
|
"account.reverseShares.modal.reverse-share-link": "Link za obrnuto deljenje",
|
||||||
"account.reverseShares.modal.delete.title": "Delete reverse share",
|
"account.reverseShares.modal.delete.title": "Obrišite obrnuto deljenje",
|
||||||
"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": "Da li zaista želite da izbrišete ovo obrnuto deljenje? Ako to učinite, pridružena deljenja će takođe biti izbrisana.",
|
||||||
// END /account/reverseShares
|
// END /account/reverseShares
|
||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Administration",
|
"admin.title": "Administracija",
|
||||||
"admin.button.users": "User management",
|
"admin.button.users": "Upravljanje korisnicima",
|
||||||
"admin.button.shares": "Share management",
|
"admin.button.shares": "Upravljanje deljenjem",
|
||||||
"admin.button.config": "Configuration",
|
"admin.button.config": "Konfiguracija",
|
||||||
"admin.version": "Version",
|
"admin.version": "Verzija",
|
||||||
// END /admin
|
// END /admin
|
||||||
// /admin/users
|
// /admin/users
|
||||||
"admin.users.title": "User management",
|
"admin.users.title": "Upravljanje korisnicima",
|
||||||
"admin.users.table.username": "Username",
|
"admin.users.table.username": "Korisničko ime",
|
||||||
"admin.users.table.email": "Email",
|
"admin.users.table.email": "Imejl",
|
||||||
"admin.users.table.admin": "Admin",
|
"admin.users.table.admin": "Admin",
|
||||||
"admin.users.edit.update.title": "Edit user: {username}",
|
"admin.users.edit.update.title": "Uredite korisnika: {username}",
|
||||||
"admin.users.edit.update.admin-privileges": "Admin privileges",
|
"admin.users.edit.update.admin-privileges": "Administratorske privilegije",
|
||||||
"admin.users.edit.update.change-password.title": "Change password",
|
"admin.users.edit.update.change-password.title": "Promenite lozinku",
|
||||||
"admin.users.edit.update.change-password.field": "New password",
|
"admin.users.edit.update.change-password.field": "Nova lozinka",
|
||||||
"admin.users.edit.update.change-password.button": "Save new password",
|
"admin.users.edit.update.change-password.button": "Snimite novu lozinku",
|
||||||
"admin.users.edit.update.notify.password.success": "Password changed successfully",
|
"admin.users.edit.update.notify.password.success": "Lozinka je uspešno promenjena",
|
||||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
"admin.users.edit.delete.title": "Obrišite korisnika: {username} ?",
|
||||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
"admin.users.edit.delete.description": "Da li zaista želite da obrišete ovog korisnika i sva njegova deljenja?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Create user",
|
"admin.users.modal.create.title": "Kreiraj korisnika",
|
||||||
"admin.users.modal.create.username": "Username",
|
"admin.users.modal.create.username": "Korisničko ime",
|
||||||
"admin.users.modal.create.email": "Email",
|
"admin.users.modal.create.email": "Imejl",
|
||||||
"admin.users.modal.create.password": "Password",
|
"admin.users.modal.create.password": "Lozinka",
|
||||||
"admin.users.modal.create.manual-password": "Set password manually",
|
"admin.users.modal.create.manual-password": "Postavite lozinku ručno",
|
||||||
"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": "Ako nije označeno, korisnik će dobiti imejl sa vezom za postavljanje lozinke.",
|
||||||
"admin.users.modal.create.admin": "Admin privileges",
|
"admin.users.modal.create.admin": "Administratorske privilegije",
|
||||||
"admin.users.modal.create.admin.description": "If checked, the user will be able to access the admin panel.",
|
"admin.users.modal.create.admin.description": "Ako je označeno, korisnik će moći da pristupi administrativnom panelu.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Share management",
|
"admin.shares.title": "Upravljanje deljenjem",
|
||||||
"admin.shares.table.id": "Share ID",
|
"admin.shares.table.id": "ID deljenja",
|
||||||
"admin.shares.table.username": "Creator",
|
"admin.shares.table.username": "Kreator",
|
||||||
"admin.shares.table.visitors": "Visitors",
|
"admin.shares.table.visitors": "Posetioci",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "Ističe",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"admin.shares.edit.delete.title": "Obriši deljenje: {id}",
|
||||||
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
|
"admin.shares.edit.delete.description": "Da li zaista želite da obrišete ovo deljenje?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Upload",
|
"upload.title": "Pošalji",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Da li ste sigurni da želite da napustite ovu stranicu? Vaše otpremanje će biti otkazano.",
|
||||||
"upload.notify.generic-error": "An error occurred while finishing your share.",
|
"upload.notify.generic-error": "Došlo je do greške pri dovršavanju deljenja.",
|
||||||
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
|
"upload.notify.count-failed": "Otpremanje {count} datoteka nije uspelo. Pokušavam ponovo.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Nepravilan link za obrnuto deljenje",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Ovo obrnuto deljenje je isteklo ili je nevažeće.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Upload files",
|
"upload.dropzone.title": "Pošalji datoteke",
|
||||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
"upload.dropzone.description": "Prevucite i otpustite datoteke ovde da biste započeli deljenje. Prihvatamo samo fajlove ukupne veličine do {maxSize}.",
|
||||||
"upload.dropzone.notify.file-too-big": "Your files exceed the maximum share size of {maxSize}.",
|
"upload.dropzone.notify.file-too-big": "Vaše datoteke premašuju maksimalnu veličinu deljenja od {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Name",
|
"upload.filelist.name": "Naziv",
|
||||||
"upload.filelist.size": "Size",
|
"upload.filelist.size": "Veličina",
|
||||||
// showCreateUploadModal.tsx
|
// showCreateUploadModal.tsx
|
||||||
"upload.modal.title": "Create Share",
|
"upload.modal.title": "Napravi deljenje",
|
||||||
"upload.modal.link.error.invalid": "Can only contain letters, numbers, underscores, and hyphens",
|
"upload.modal.link.error.invalid": "Može da sadrži samo slova, brojeve, donje crte i crtice",
|
||||||
"upload.modal.link.error.taken": "This link is already in use",
|
"upload.modal.link.error.taken": "Ovaj link je već u upotrebi",
|
||||||
"upload.modal.not-signed-in": "You're not signed in",
|
"upload.modal.not-signed-in": "Niste prijavljeni",
|
||||||
"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": "Nećete moći ručno da izbrišete svoje deljenje i vidite broj posetilaca.",
|
||||||
"upload.modal.expires.never": "never",
|
"upload.modal.expires.never": "nikad",
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
"upload.modal.expires.never-long": "Trajno deljenje",
|
||||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
"upload.modal.expires.error.too-long": "Datum isteka prevazilazi maksimalnu vrednost od {max}.",
|
||||||
"upload.modal.link.label": "Link",
|
"upload.modal.link.label": "Link",
|
||||||
"upload.modal.expires.label": "Expiration",
|
"upload.modal.expires.label": "Ističe",
|
||||||
"upload.modal.expires.minute-singular": "Minute",
|
"upload.modal.expires.minute-singular": "Minut",
|
||||||
"upload.modal.expires.minute-plural": "Minutes",
|
"upload.modal.expires.minute-plural": "Minute",
|
||||||
"upload.modal.expires.hour-singular": "Hour",
|
"upload.modal.expires.hour-singular": "Sat",
|
||||||
"upload.modal.expires.hour-plural": "Hours",
|
"upload.modal.expires.hour-plural": "Sati",
|
||||||
"upload.modal.expires.day-singular": "Day",
|
"upload.modal.expires.day-singular": "Dan",
|
||||||
"upload.modal.expires.day-plural": "Days",
|
"upload.modal.expires.day-plural": "Dani",
|
||||||
"upload.modal.expires.week-singular": "Week",
|
"upload.modal.expires.week-singular": "Sedmica",
|
||||||
"upload.modal.expires.week-plural": "Weeks",
|
"upload.modal.expires.week-plural": "Sedmice",
|
||||||
"upload.modal.expires.month-singular": "Month",
|
"upload.modal.expires.month-singular": "Mesec",
|
||||||
"upload.modal.expires.month-plural": "Months",
|
"upload.modal.expires.month-plural": "Meseci",
|
||||||
"upload.modal.expires.year-singular": "Year",
|
"upload.modal.expires.year-singular": "Godina",
|
||||||
"upload.modal.expires.year-plural": "Years",
|
"upload.modal.expires.year-plural": "Godine",
|
||||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
"upload.modal.accordion.name-and-description.title": "Ime i opis",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Ime",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Napomena za primaoce ovog deljenja",
|
||||||
"upload.modal.accordion.email.title": "Email recipients",
|
"upload.modal.accordion.email.title": "Primaoci imejla",
|
||||||
"upload.modal.accordion.email.placeholder": "Enter email recipients",
|
"upload.modal.accordion.email.placeholder": "Unesite primaoce imejla",
|
||||||
"upload.modal.accordion.email.invalid-email": "Invalid email address",
|
"upload.modal.accordion.email.invalid-email": "Neispravna adresa imejla",
|
||||||
"upload.modal.accordion.security.title": "Security options",
|
"upload.modal.accordion.security.title": "Sigurnosna podešavanja",
|
||||||
"upload.modal.accordion.security.password.label": "Password protection",
|
"upload.modal.accordion.security.password.label": "Zaštita lozinkom",
|
||||||
"upload.modal.accordion.security.password.placeholder": "No password",
|
"upload.modal.accordion.security.password.placeholder": "Nema lozinke",
|
||||||
"upload.modal.accordion.security.max-views.label": "Maximum views",
|
"upload.modal.accordion.security.max-views.label": "Maksimalan broj pregleda",
|
||||||
"upload.modal.accordion.security.max-views.placeholder": "No limit",
|
"upload.modal.accordion.security.max-views.placeholder": "Bez limita",
|
||||||
// showCompletedUploadModal.tsx
|
// showCompletedUploadModal.tsx
|
||||||
"upload.modal.completed.never-expires": "This share will never expire.",
|
"upload.modal.completed.never-expires": "Ovo deljenje nikada neće isteći.",
|
||||||
"upload.modal.completed.expires-on": "This share will expire on {expiration}.",
|
"upload.modal.completed.expires-on": "Ovo deljenje će isteći {expiration}.",
|
||||||
"upload.modal.completed.share-ready": "Share ready",
|
"upload.modal.completed.share-ready": "Deljenje je spremno",
|
||||||
"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": "Obavestili smo kreatora reverznog deljenja. Takođe možete ručno podeliti ovaj link sa njima na druge načine.",
|
||||||
// END /upload
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Share {shareId}",
|
"share.title": "Deljenje {shareId}",
|
||||||
"share.description": "Look what I've shared with you!",
|
"share.description": "Pogledajte šta sam podelio sa vama!",
|
||||||
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
"share.error.visitor-limit-exceeded.title": "Prekoračeno je ograničenje posetilaca",
|
||||||
"share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
|
"share.error.visitor-limit-exceeded.description": "Ograničenje posetilaca iz ovog deljenja je premašeno.",
|
||||||
"share.error.removed.title": "Share removed",
|
"share.error.removed.title": "Deljenje je uklonjeno",
|
||||||
"share.error.not-found.title": "Share not found",
|
"share.error.not-found.title": "Deljenje nije pronađeno",
|
||||||
"share.error.not-found.description": "The share you're looking for doesn't exist.",
|
"share.error.not-found.description": "Udeo koji tražite ne postoji.",
|
||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Privatno deljenje",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "Trenutni nalog nema dozvolu za pristup ovom deljenju",
|
||||||
"share.modal.password.title": "Password required",
|
"share.modal.password.title": "Obavezna lozinka",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Molimo unesite lozinku za pristup ovom deljenju.",
|
||||||
"share.modal.password": "Password",
|
"share.modal.password": "Lozinka",
|
||||||
"share.modal.error.invalid-password": "Invalid password",
|
"share.modal.error.invalid-password": "Neispravna lozinka",
|
||||||
"share.button.download-all": "Download all",
|
"share.button.download-all": "Preuzmi sve",
|
||||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
"share.notify.download-all-preparing": "Deljenje se priprema. Molimo pokušajte ponovo za nekoliko minuta.",
|
||||||
"share.modal.file-link": "File link",
|
"share.modal.file-link": "Veza datoteke",
|
||||||
"share.table.name": "Name",
|
"share.table.name": "Naziv",
|
||||||
"share.table.size": "Size",
|
"share.table.size": "Veličina",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Preview not supported",
|
"share.modal.file-preview.error.not-supported.title": "Pregled nije podržan",
|
||||||
"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": "Pregledi nisu podržani za ovaj tip datoteka. Molimo preuzmite fajl da biste ga pregledali.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Edit {shareId}",
|
"share.edit.title": "Uredi {shareId}",
|
||||||
"share.edit.append-upload": "Append file",
|
"share.edit.append-upload": "Nadodaj fajl",
|
||||||
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
|
"share.edit.notify.generic-error": "Došlo je do greške prilikom završetka vašeg deljenja.",
|
||||||
"share.edit.notify.save-success": "Share updated successfully",
|
"share.edit.notify.save-success": "Deljenje je uspešno ažurirano",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Configuration",
|
"admin.config.title": "Konfiguracija",
|
||||||
"admin.config.category.general": "General",
|
"admin.config.category.general": "Opšte",
|
||||||
"admin.config.category.share": "Share",
|
"admin.config.category.share": "Deljenje",
|
||||||
"admin.config.category.email": "Email",
|
"admin.config.category.email": "Imejl",
|
||||||
"admin.config.category.smtp": "SMTP",
|
"admin.config.category.smtp": "SMTP",
|
||||||
"admin.config.category.oauth": "Social Login",
|
"admin.config.category.oauth": "Social login",
|
||||||
"admin.config.general.app-name": "App name",
|
"admin.config.general.app-name": "Naziv aplikacije",
|
||||||
"admin.config.general.app-name.description": "Name of the application",
|
"admin.config.general.app-name.description": "Naziv aplikacije",
|
||||||
"admin.config.general.app-url": "App URL",
|
"admin.config.general.app-url": "URL aplikacije",
|
||||||
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
|
"admin.config.general.app-url.description": "Na kojoj URL adresi je dostupan Pingvin Share",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "Bezbedni kolačići",
|
||||||
"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.secure-cookies.description": "Da li želite da postavite zastavicu za bezbednost na kolačiće? Ako je omogućeno, sajt neće funkcionisati kada mu pristupate preko HTTP-a.",
|
||||||
"admin.config.general.show-home-page": "Show home page",
|
"admin.config.general.show-home-page": "Prikaži početnu stranicu",
|
||||||
"admin.config.general.show-home-page.description": "Whether to show the home page",
|
"admin.config.general.show-home-page.description": "Da li da se prikaže početna stranica",
|
||||||
"admin.config.general.session-duration": "Session Duration",
|
"admin.config.general.session-duration": "Trajanje sesije",
|
||||||
"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": "Vreme u satima nakon kojeg korisnik mora ponovo da se prijavi (podrazumevano: 3 meseca).",
|
||||||
"admin.config.general.logo": "Logo",
|
"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": "Promenite svoj logotip tako što ćete otpremiti novu sliku. Slika mora da bude PNG i treba da ima format 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Pick image",
|
"admin.config.general.logo.placeholder": "Izaberi sliku",
|
||||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
"admin.config.email.enable-share-email-recipients": "Omogući deljenje sa primaocima imejlom",
|
||||||
"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.description": "Da li dozvoliti deljenje sa primaocima putem imejla. Omogućite ovo samo ako je SMTP aktiviran.",
|
||||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
"admin.config.email.share-recipients-subject": "Podelite naslov primaoca",
|
||||||
"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": "Tema imejla koja se šalje primaocima deljenja.",
|
||||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
"admin.config.email.share-recipients-message": "Delite poruku primaoca",
|
||||||
"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": "Poruka koja se šalje primaocima deljenja. Dostupne promenljive:\n{creator} - Korisničko ime kreatora deljenja\n{creatorEmail} - Imejl kreatora deljenja\n{shareUrl} - URL deljenja\n{desc} - Opis deljenja\n{expires} - Datum isteka deljenja\nOve promenljive će biti zamenjene stvarnim vrednostima.",
|
||||||
"admin.config.email.reverse-share-subject": "Reverse share subject",
|
"admin.config.email.reverse-share-subject": "Tema obrnutog deljenja",
|
||||||
"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": "Naslov imejla koji se šalje kada neko kreira deljenje sa vašim reverznim linkom za deljenje.",
|
||||||
"admin.config.email.reverse-share-message": "Reverse share message",
|
"admin.config.email.reverse-share-message": "Obrnuto deljenje poruka",
|
||||||
"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": "Poruka koja se šalje kada je neko napravio deljenje sa vašom obrnutom vezom za deljenje. {shareUrl} će biti zamenjen imenom kreatora i URL-om za deljenje.",
|
||||||
"admin.config.email.reset-password-subject": "Reset password subject",
|
"admin.config.email.reset-password-subject": "Resetujte temu lozinke",
|
||||||
"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": "Naslov imejla koji se šalje kada korisnik zatraži resetovanje lozinke.",
|
||||||
"admin.config.email.reset-password-message": "Reset password message",
|
"admin.config.email.reset-password-message": "Poruka za resetovanje lozinke",
|
||||||
"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": "Poruka koja se šalje kada korisnik zatraži resetovanje lozinke. {url} će biti zamenjen linkom za resetovanje lozinke.",
|
||||||
"admin.config.email.invite-subject": "Invite subject",
|
"admin.config.email.invite-subject": "Pozivna tema",
|
||||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
"admin.config.email.invite-subject.description": "Naslov e-pošte koja se šalje kada administrator pozove korisnika.",
|
||||||
"admin.config.email.invite-message": "Invite message",
|
"admin.config.email.invite-message": "Pozivna poruka",
|
||||||
"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": "Poruka koja se šalje kada administrator pozove korisnika. {url} će biti zamenjen linkom za poziv, {email} imejlom, a {password} lozinkom korisnika.",
|
||||||
"admin.config.share.allow-registration": "Allow registration",
|
"admin.config.share.allow-registration": "Dozvoli registraciju",
|
||||||
"admin.config.share.allow-registration.description": "Whether registration is allowed",
|
"admin.config.share.allow-registration.description": "Da li je registracija dozvoljena",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
|
"admin.config.share.allow-unauthenticated-shares": "Dozvoli deljenje bez autentifikacije",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares",
|
"admin.config.share.allow-unauthenticated-shares.description": "Da li korisnici bez autentifikacije mogu da kreiraju deljenja",
|
||||||
"admin.config.share.max-expiration": "Max expiration",
|
"admin.config.share.max-expiration": "Maksimalni rok trajanja",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Maksimalni rok trajanja deljenja u satima. Postavite na 0 da biste omogućili neograničeno trajanje.",
|
||||||
"admin.config.share.max-size": "Max size",
|
"admin.config.share.share-id-length": "Dužina podrazumevanog ID-a za deljenje",
|
||||||
"admin.config.share.max-size.description": "Maximum share size in bytes",
|
"admin.config.share.share-id-length.description": "Podrazumevana dužina generisanog ID-a za deljenje. Ova vrednost se takođe koristi za generisanje linkova za obrnuto deljenje. Vrednost ispod 8 se ne smatra bezbednom.",
|
||||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
"admin.config.share.max-size": "Maksimalna veličina",
|
||||||
"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.max-size.description": "Maksimalna veličina deljenja u bajtovima",
|
||||||
"admin.config.share.chunk-size": "Chunk size",
|
"admin.config.share.zip-compression-level": "Nivo Zip kompresije",
|
||||||
"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.zip-compression-level.description": "Podesite nivo da biste balansirali između veličine datoteke i brzine kompresije. Važeće vrednosti se kreću od 0 do 9, pri čemu je 0 bez kompresije, a 9 je maksimalna kompresija. ",
|
||||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
"admin.config.share.chunk-size": "Veličina komada",
|
||||||
"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.chunk-size.description": "Podesite veličinu dela (u bajtovima) za vaša otpremanje kako biste uravnotežili efikasnost i pouzdanost u skladu sa vašom internet vezom. Manji delovi mogu poboljšati stopu uspeha za nestabilne veze, dok veći delovi omogućavaju brže otpremanje za stabilne veze.",
|
||||||
"admin.config.smtp.enabled": "Enable",
|
"admin.config.share.auto-open-share-modal": "Automatski otvori stvaranje modala deljenja",
|
||||||
"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.share.auto-open-share-modal.description": "Modal za kreiranje deljenja automatski se pojavljuje kada korisnik izabere datoteke, eliminišući potrebu za ručnim klikom na dugme.",
|
||||||
"admin.config.smtp.host": "Host",
|
"admin.config.smtp.enabled": "Omogući",
|
||||||
"admin.config.smtp.host.description": "Host of the SMTP server",
|
"admin.config.smtp.enabled.description": "Da li je SMTP omogućen. Postavite ovo na tačno samo ako ste uneli host, port, imejl, korisnika i lozinku vašeg SMTP servera.",
|
||||||
|
"admin.config.smtp.host": "Domaćin",
|
||||||
|
"admin.config.smtp.host.description": "Domaćin SMTP servera",
|
||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "Port",
|
||||||
"admin.config.smtp.port.description": "Port of the SMTP server",
|
"admin.config.smtp.port.description": "Port domaćina SMTP servera",
|
||||||
"admin.config.smtp.email": "Email",
|
"admin.config.smtp.email": "Imejl",
|
||||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
"admin.config.smtp.email.description": "Adresa imejla sa kojeg se poruke šalju",
|
||||||
"admin.config.smtp.username": "Username",
|
"admin.config.smtp.username": "Korisničko ime",
|
||||||
"admin.config.smtp.username.description": "Username of the SMTP server",
|
"admin.config.smtp.username.description": "Korisničko ime SMTP servera",
|
||||||
"admin.config.smtp.password": "Password",
|
"admin.config.smtp.password": "Lozinka",
|
||||||
"admin.config.smtp.password.description": "Password of the SMTP server",
|
"admin.config.smtp.password.description": "Lozinka SMTP servera",
|
||||||
"admin.config.smtp.button.test": "Send test email",
|
"admin.config.smtp.button.test": "Pošalji testni imejl",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "Verovanje neautorizovanim SMTP serverskim sertifikatima",
|
||||||
"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.description": "Ovo postavite na \"istina\" samo ako je potrebno verovati samo-potpisanim sertifikatima.",
|
||||||
"admin.config.oauth.allow-registration": "Allow registration",
|
"admin.config.oauth.allow-registration": "Dozvoli registraciju",
|
||||||
"admin.config.oauth.allow-registration.description": "Allow users to register via social login",
|
"admin.config.oauth.allow-registration.description": "Dozvolite korisnicima da se registruju putem društvene prijave",
|
||||||
"admin.config.oauth.ignore-totp": "Ignore TOTP",
|
"admin.config.oauth.ignore-totp": "Zanemari TOTP",
|
||||||
"admin.config.oauth.ignore-totp.description": "Whether to ignore TOTP when user using social login",
|
"admin.config.oauth.ignore-totp.description": "Da li da ignorišete TOTP kada korisnik koristi prijavu na društvenim mrežama",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "Onemogućite prijavu lozinkom",
|
||||||
"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": "Omogućiti prijavu lozinkom ili ne\nUverite se da je provajder za OAuth pravilno konfigurisan pre aktiviranja ove konfiguracije kako biste izbegli zaključavanje naloga.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled",
|
"admin.config.oauth.github-enabled.description": "Da li je prijavljivanje na GitHub omogućeno",
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
"admin.config.oauth.github-client-id": "GitHub ID klijenta",
|
||||||
"admin.config.oauth.github-client-id.description": "Client ID of the GitHub OAuth app",
|
"admin.config.oauth.github-client-id.description": "ID klijenta GitHub OAuth aplikacije",
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
"admin.config.oauth.github-client-secret": "Tajna GitHub klijenta",
|
||||||
"admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app",
|
"admin.config.oauth.github-client-secret.description": "Tajna klijenta GitHub OAuth aplikacije",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "Whether Google login is enabled",
|
"admin.config.oauth.google-enabled.description": "Da li je prijavljivanje na Google omogućeno",
|
||||||
"admin.config.oauth.google-client-id": "Google Client ID",
|
"admin.config.oauth.google-client-id": "ID Google klijenta",
|
||||||
"admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app",
|
"admin.config.oauth.google-client-id.description": "ID klijenta Google OAuth aplikacije",
|
||||||
"admin.config.oauth.google-client-secret": "Google Client secret",
|
"admin.config.oauth.google-client-secret": "Tajna Google klijenta",
|
||||||
"admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app",
|
"admin.config.oauth.google-client-secret.description": "Tajna klijenta Google OAuth aplikacije",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Whether Microsoft login is enabled",
|
"admin.config.oauth.microsoft-enabled.description": "Da li je prijavljivanje na Microsoft omogućeno",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
"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": "ID zakupca za Microsoft OAuth aplikaciju\nuobičajeno: Korisnici sa ličnim Microsoft nalogom i poslovnim ili školskim nalogom sa Microsoft Entra ID-a mogu da se prijave u aplikaciju. organizacije: Samo korisnici sa poslovnim ili školskim nalozima sa Microsoft Entra ID-a mogu da se prijave u aplikaciju.\npotrošači: Samo korisnici sa ličnim Microsoft nalogom mogu da se prijave u aplikaciju.\nime domena zakupca Microsoft Entra ID ili ID zakupca u GUID formatu: Samo korisnici iz određenog Microsoft Entra ID stanara (članovi direktorijuma sa poslovnim ili školskim nalogom ili gosti direktorijuma sa ličnim Microsoft nalogom) mogu da se prijave u aplikaciju.",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
"admin.config.oauth.microsoft-client-id": "Microsoft ID klijenta",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app",
|
"admin.config.oauth.microsoft-client-id.description": "ID klijenta Microsoft OAuth aplikacije",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
"admin.config.oauth.microsoft-client-secret": "Tajna Microsoft klijenta",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
|
"admin.config.oauth.microsoft-client-secret.description": "Tajna klijenta za Microsot OAuth aplikaciju",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Whether Discord login is enabled",
|
"admin.config.oauth.discord-enabled.description": "Da li je prijavljivanje na Discord omogućeno",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
"admin.config.oauth.discord-limited-users": "Ograničenje po Discord korisnicima",
|
||||||
"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": "Ograničite prijavljivanje na određene korisnike pomoću njihovog Discord ID-a. Ostavite prazno da biste onemogućili.",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
"admin.config.oauth.discord-limited-guild": "Ograničenje po Discord serveru",
|
||||||
"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": "Ograničite prijavljivanje na korisnike određenog servera. Ostavite prazno da biste onemogućili.",
|
||||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
"admin.config.oauth.discord-client-id": "Discord ID klijenta",
|
||||||
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
|
"admin.config.oauth.discord-client-id.description": "ID klijenta Discord OAuth aplikacije",
|
||||||
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
"admin.config.oauth.discord-client-secret": "Discord klijent tajna",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
|
"admin.config.oauth.discord-client-secret.description": "Tajna klijenta Discord OAuth aplikacije",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
"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": "Omogućiti prijavu OpenID Connect-om ili ne",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
"admin.config.oauth.oidc-discovery-uri": "URI za OpenID Connect Discovery",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI za otkrivanje OpenID Connect OAuth aplikacije",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Odjavljivanje sa OpenID Connect-a",
|
||||||
"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": "Da li će dugme „Odjavi se“ odjaviti korisnika i sa OpenID Connect provajdera",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-scope": "Opseg OpenID Connect-a",
|
||||||
"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-scope.description": "Opsezi koji bi trebalo da budu zatraženi od OpenID Connect provajdera.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-username-claim": "Potraživanje korisničkog imena u OpenID Connect",
|
||||||
"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-username-claim.description": "Potraživanje korisničkog imena u OpenID Connect ID tokenu. Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
"admin.config.oauth.oidc-role-path": "Putanja do uloga u OpenID Connect tokenu",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-path.description": "Mora biti validna JMES putanja koja referencira niz uloga. " + "Upravljanje pravima pristupa pomoću uloga u OpenID Connect-u se preporučuje samo ako nijedan drugi provajder identiteta nije konfigurisan i ako je prijava lozinkom onemogućena. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
"admin.config.oauth.oidc-role-general-access": "Uloga u OpenID Connect-u za opšti pristup",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s 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-general-access.description": "Uloga potrebna za opšti pristup. Mora biti prisutna u ulogama korisnika kako bi se mogao prijaviti. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
"admin.config.oauth.oidc-role-admin-access": "Uloga u OpenID Connect-u za administratorski pristup",
|
||||||
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-role-admin-access.description": "Uloga potrebna za administratorski pristup. Mora biti prisutna u ulogama korisnika kako bi mogli pristupiti administratorskom panelu. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
"admin.config.oauth.oidc-client-id": "OpenID Connect ID klijenta",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-client-id.description": "ID klijenta OpenID Connect OAuth aplikacije",
|
||||||
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect tajna klijenta",
|
||||||
|
"admin.config.oauth.oidc-client-secret.description": "Tajna klijenta OpenID Connect OAuth aplikacije",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Enable LDAP",
|
"admin.config.ldap.enabled": "Omogući LDAP",
|
||||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
"admin.config.ldap.enabled.description": "Koristi LDAP autentifikaciju za prijavu korisnika",
|
||||||
"admin.config.ldap.url": "Server URL",
|
"admin.config.ldap.url": "URL servera",
|
||||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
"admin.config.ldap.url.description": "URL LDAP servera",
|
||||||
"admin.config.ldap.bind-dn": "Bind DN",
|
"admin.config.ldap.bind-dn": "DN vezivanje",
|
||||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
"admin.config.ldap.bind-dn.description": "Podrazumevani korisnik koji se koristi za pretragu korisnika",
|
||||||
"admin.config.ldap.bind-password": "Bind password",
|
"admin.config.ldap.bind-password": "Lozinka za vezivanje",
|
||||||
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
|
"admin.config.ldap.bind-password.description": "Lozinka koja se koristi za izvršavanje pretrage korisnika",
|
||||||
"admin.config.ldap.search-base": "User base",
|
"admin.config.ldap.search-base": "Baza korisnika",
|
||||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
"admin.config.ldap.search-base.description": "Lokacija baze, mesto gde će se izvršiti pretraga korisnika",
|
||||||
"admin.config.ldap.search-query": "User query",
|
"admin.config.ldap.search-query": "Upit za korisnika",
|
||||||
"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": "Upit za korisnika koji će se koristiti za pretragu „Baze korisnika“ za LDAP korisnika. %username% se može koristiti kao oznaka za unos korisnika.",
|
||||||
"admin.config.ldap.admin-groups": "Admin group",
|
"admin.config.ldap.admin-groups": "Administratorska grupa",
|
||||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
"admin.config.ldap.admin-groups.description": "Grupa koja je potrebna za administratorski pristup.",
|
||||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
"admin.config.ldap.field-name-member-of": "Naziv atributa korisničkih grupa",
|
||||||
"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 naziv atributa za grupe čiji je korisnik član. Ovo se koristi pri proveri administratorske grupe.",
|
||||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
"admin.config.ldap.field-name-email": "Naziv atributa za imejl korisnika",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
"admin.config.ldap.field-name-email.description": "LDAP naziv atributa za imejl korisnika.",
|
||||||
|
"admin.config.notify.success": "Konfiguracija je uspešno ažurirana.",
|
||||||
|
"admin.config.notify.logo-success": "Logo je uspešno ažuriran. Može biti potrebno nekoliko minuta da se ažurira na vebsajtu.",
|
||||||
|
"admin.config.notify.no-changes": "Nema promena za čuvanje.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oops this page doesn't exist.",
|
"404.description": "Opa - Ova strana ne postoji.",
|
||||||
"404.button.home": "Bring me back home",
|
"404.button.home": "Vrati me na početak",
|
||||||
// error
|
// error
|
||||||
"error.title": "Error",
|
"error.title": "Greška",
|
||||||
"error.description": "Oops!",
|
"error.description": "Ups!",
|
||||||
"error.button.back": "Go back",
|
"error.button.back": "Idi nazad",
|
||||||
"error.msg.default": "Something went wrong.",
|
"error.msg.default": "Nešto je pošlo naopako.",
|
||||||
"error.msg.access_denied": "You canceled the authentication process, please try again.",
|
"error.msg.access_denied": "Otkazali ste proces autentifikacije, pokušajte ponovo.",
|
||||||
"error.msg.expired_token": "The authentication process took too long, please try again.",
|
"error.msg.expired_token": "Proces autentifikacije je trajao predugo, pokušajte ponovo.",
|
||||||
"error.msg.invalid_token": "Internal Error",
|
"error.msg.invalid_token": "Interna greška",
|
||||||
"error.msg.no_user": "User linked to this {0} account doesn't exist.",
|
"error.msg.no_user": "Korisnik povezan sa ovim {0} nalogom ne postoji.",
|
||||||
"error.msg.no_email": "Can't get email address from this {0} account.",
|
"error.msg.no_email": "Ne mogu da dobijem adresu imejla sa ovog {0} naloga.",
|
||||||
"error.msg.already_linked": "This {0} account is already linked to another account.",
|
"error.msg.already_linked": "Ovaj {0} nalog je već povezan sa drugim nalogom.",
|
||||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
"error.msg.not_linked": "Ovaj {0} nalog još uvek nije povezan ni sa jednim nalogom.",
|
||||||
"error.msg.unverified_account": "This {0} account is unverified, please try again after verification.",
|
"error.msg.unverified_account": "Ovaj {0} nalog je nepotvrđen, molimo pokušajte ponovo nakon verifikacije.",
|
||||||
"error.msg.user_not_allowed": "You are not allowed to sign in.",
|
"error.msg.user_not_allowed": "Nije vam dozvoljeno da se prijavite.",
|
||||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
"error.msg.cannot_get_user_info": "Ne mogu da dobijem vaše korisničke informacije sa ovog {0} naloga.",
|
||||||
"error.param.provider_github": "GitHub",
|
"error.param.provider_github": "GitHub",
|
||||||
"error.param.provider_google": "Google",
|
"error.param.provider_google": "Google",
|
||||||
"error.param.provider_microsoft": "Microsoft",
|
"error.param.provider_microsoft": "Microsoft",
|
||||||
"error.param.provider_discord": "Discord",
|
"error.param.provider_discord": "Discord",
|
||||||
"error.param.provider_oidc": "OpenID Connect",
|
"error.param.provider_oidc": "OpenId Connect",
|
||||||
// Common translations
|
// Common translations
|
||||||
"common.button.save": "Save",
|
"common.button.save": "Sačuvaj",
|
||||||
"common.button.create": "Create",
|
"common.button.create": "Napravi",
|
||||||
"common.button.submit": "Submit",
|
"common.button.submit": "Pošalji",
|
||||||
"common.button.delete": "Delete",
|
"common.button.delete": "Obriši",
|
||||||
"common.button.cancel": "Cancel",
|
"common.button.cancel": "Otkaži",
|
||||||
"common.button.confirm": "Confirm",
|
"common.button.confirm": "Potvrdi",
|
||||||
"common.button.disable": "Disable",
|
"common.button.disable": "Onemogući",
|
||||||
"common.button.share": "Share",
|
"common.button.share": "Deljenje",
|
||||||
"common.button.generate": "Generate",
|
"common.button.generate": "Generiši",
|
||||||
"common.button.done": "Done",
|
"common.button.done": "Gotovo",
|
||||||
"common.text.link": "Link",
|
"common.text.link": "Link",
|
||||||
"common.text.navigate-to-link": "Visit link",
|
"common.text.navigate-to-link": "Posetite link",
|
||||||
"common.text.or": "or",
|
"common.text.or": "ili",
|
||||||
"common.text.redirecting": "Redirecting...",
|
"common.text.redirecting": "Preusmeravanje...",
|
||||||
"common.button.go-back": "Go back",
|
"common.button.go-back": "Idi nazad",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Početna stranica",
|
||||||
"common.notify.copied": "Your link was copied to the clipboard",
|
"common.notify.copied": "Vaša veza je kopirana u međuspremnik",
|
||||||
"common.success": "Success",
|
"common.notify.copied-link": "Vaša veza je kopirana u međuspremnik",
|
||||||
"common.error": "Error",
|
"common.success": "Uspešno",
|
||||||
"common.error.unknown": "An unknown error occurred",
|
"common.error": "Greška",
|
||||||
"common.error.invalid-email": "Invalid email address",
|
"common.error.unknown": "Došlo je do nepoznate greške",
|
||||||
"common.error.too-short": "Must be at least {length} characters",
|
"common.error.invalid-email": "Neispravna adresa imejla",
|
||||||
"common.error.too-long": "Must be at most {length} characters",
|
"common.error.too-short": "Mora da ima najmanje {length} znakova",
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
"common.error.too-long": "Mora da ima najviše {length} znakova",
|
||||||
"common.error.number-too-large": "Must be at most {max}",
|
"common.error.number-too-small": "Mora biti najmanje {min}",
|
||||||
"common.error.exact-length": "Must be exactly {length} characters",
|
"common.error.number-too-large": "Mora biti najviše {max}",
|
||||||
"common.error.invalid-number": "Must be a number",
|
"common.error.exact-length": "Mora da ima tačno {length} znakova",
|
||||||
"common.error.field-required": "This field is required"
|
"common.error.invalid-number": "Mora biti broj",
|
||||||
|
"common.error.field-required": "Polje je obavezno"
|
||||||
};
|
};
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
export default {
|
export default {
|
||||||
// Navbar
|
// Navbar
|
||||||
"navbar.upload": "Пошаљи",
|
"navbar.upload": "Отпреми",
|
||||||
"navbar.signin": "Пријавите се",
|
"navbar.signin": "Пријава",
|
||||||
"navbar.home": "Почетна",
|
"navbar.home": "Почетна",
|
||||||
"navbar.signup": "Региструј се",
|
"navbar.signup": "Регистрација",
|
||||||
"navbar.links.shares": "Moja дељења",
|
"navbar.links.shares": "Моја дељења",
|
||||||
"navbar.links.reverse": "Обрнуто дељење",
|
"navbar.links.reverse": "Обрнуто дељење",
|
||||||
"navbar.avatar.account": "Мој налог",
|
"navbar.avatar.account": "Мој налог",
|
||||||
"navbar.avatar.admin": "Администрација",
|
"navbar.avatar.admin": "Администрација",
|
||||||
@@ -12,22 +12,22 @@ export default {
|
|||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "<h>Само-хостована</h> платформа за дељење фајлова.",
|
"home.title": "<h>Само-хостована</h> платформа за дељење фајлова.",
|
||||||
"home.description": "Да ли заиста желите да дате своје личне фајлове у руке трећих страна као што је WeTransfer?",
|
"home.description": "Да ли заиста желите да дате своје личне датотеке у руке трећих страна као што је WeTransfer?",
|
||||||
"home.bullet.a.name": "Личан хостинг",
|
"home.bullet.a.name": "Само-хостовано",
|
||||||
"home.bullet.a.description": "Хостујте Pingvin Share на својој машини.",
|
"home.bullet.a.description": "Хостујте Pingvin Share на својој машини.",
|
||||||
"home.bullet.b.name": "Privatnost",
|
"home.bullet.b.name": "Privatnost",
|
||||||
"home.bullet.b.description": "Ваши фајлови су ваши и никада неће бити доступни трећим странама.",
|
"home.bullet.b.description": "Ваше датотеке су ваше и никада неће бити доступне трећим странама.",
|
||||||
"home.bullet.c.name": "Нема досадног ограничења величине датотеке",
|
"home.bullet.c.name": "Нема досадног ограничења величине датотеке",
|
||||||
"home.bullet.c.description": "Отпремите онолико великих датотека колико желите. Само ваш чврсти диск је ваша граница.",
|
"home.bullet.c.description": "Отпремите онолико великих датотека колико желите. Само ваш чврсти диск је граница.",
|
||||||
"home.button.start": "Почети",
|
"home.button.start": "Започни",
|
||||||
"home.button.source": "Изворни код",
|
"home.button.source": "Изворни код",
|
||||||
// END /
|
// END /
|
||||||
// /auth/signin
|
// /auth/signin
|
||||||
"signin.title": "Добродошли назад",
|
"signin.title": "Добродошли назад",
|
||||||
"signin.description": "Још увек немате налог?",
|
"signin.description": "Још увек немате налог?",
|
||||||
"signin.button.signup": "Региструј се",
|
"signin.button.signup": "Региструј се",
|
||||||
"signin.input.email-or-username": "Е-пошта или корисничко име",
|
"signin.input.email-or-username": "Имејл или корисничко име",
|
||||||
"signin.input.email-or-username.placeholder": "Ваша Е-пошта или корисничко име",
|
"signin.input.email-or-username.placeholder": "Ваш имејл или корисничко име",
|
||||||
"signin.input.password": "Лозинка",
|
"signin.input.password": "Лозинка",
|
||||||
"signin.input.password.placeholder": "Ваша лозинка",
|
"signin.input.password.placeholder": "Ваша лозинка",
|
||||||
"signin.button.submit": "Пријавите се",
|
"signin.button.submit": "Пријавите се",
|
||||||
@@ -47,8 +47,8 @@ export default {
|
|||||||
"signup.button.signin": "Пријавите се",
|
"signup.button.signin": "Пријавите се",
|
||||||
"signup.input.username": "Корисничко име",
|
"signup.input.username": "Корисничко име",
|
||||||
"signup.input.username.placeholder": "Ваше корисничко име",
|
"signup.input.username.placeholder": "Ваше корисничко име",
|
||||||
"signup.input.email": "E-пошта",
|
"signup.input.email": "Имејл",
|
||||||
"signup.input.email.placeholder": "Ваш и-мејл",
|
"signup.input.email.placeholder": "Ваш имејл",
|
||||||
"signup.button.submit": "Хајде да почнемо",
|
"signup.button.submit": "Хајде да почнемо",
|
||||||
// END /auth/signup
|
// END /auth/signup
|
||||||
// /auth/totp
|
// /auth/totp
|
||||||
@@ -57,8 +57,8 @@ export default {
|
|||||||
// END /auth/totp
|
// END /auth/totp
|
||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Заборавили сте лозинку?",
|
"resetPassword.title": "Заборавили сте лозинку?",
|
||||||
"resetPassword.description": "Унесите своју е-пошту да бисте ресетовали лозинку.",
|
"resetPassword.description": "Унесите свој имејл да бисте ресетовали лозинку.",
|
||||||
"resetPassword.notify.success": "Порука са линком за ресетовање лозинке је послата ако унета имејл адреса постоји.",
|
"resetPassword.notify.success": "Порука са линком за ресетовање лозинке је послата ако унета и-мејл адреса постоји.",
|
||||||
"resetPassword.button.back": "Назад на страницу за пријаву",
|
"resetPassword.button.back": "Назад на страницу за пријаву",
|
||||||
"resetPassword.text.resetPassword": "Обнови лозинку",
|
"resetPassword.text.resetPassword": "Обнови лозинку",
|
||||||
"resetPassword.text.enterNewPassword": "Унесите вашу нову лозинку",
|
"resetPassword.text.enterNewPassword": "Унесите вашу нову лозинку",
|
||||||
@@ -68,12 +68,12 @@ export default {
|
|||||||
"account.title": "Мој налог",
|
"account.title": "Мој налог",
|
||||||
"account.card.info.title": "Подаци о налогу",
|
"account.card.info.title": "Подаци о налогу",
|
||||||
"account.card.info.username": "Корисничко име",
|
"account.card.info.username": "Корисничко име",
|
||||||
"account.card.info.email": "E-пошта",
|
"account.card.info.email": "Имејл",
|
||||||
"account.notify.info.success": "Налог је успешно ажуриран",
|
"account.notify.info.success": "Налог је успешно ажуриран",
|
||||||
"account.card.password.title": "Лозинка",
|
"account.card.password.title": "Лозинка",
|
||||||
"account.card.password.old": "Стара лозинка",
|
"account.card.password.old": "Стара лозинка",
|
||||||
"account.card.password.new": "Нова лозинка",
|
"account.card.password.new": "Нова лозинка",
|
||||||
"account.card.password.noPasswordSet": "Немате постављену лозинку. Да бисте се пријавили користећи имејл и лозинку, потребно је да направите лозинку.",
|
"account.card.password.noPasswordSet": "Немате постављену лозинку. Да бисте се пријавили користећи и-мејл и лозинку, потребно је да направите лозинку.",
|
||||||
"account.notify.password.success": "Лозинка је успешно промењена",
|
"account.notify.password.success": "Лозинка је успешно промењена",
|
||||||
"account.card.oauth.title": "Социал логин",
|
"account.card.oauth.title": "Социал логин",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -112,15 +112,15 @@ export default {
|
|||||||
"account.modal.delete.description": "Да ли заиста желите да избришете свој налог укључујући све ваше активне дељења?",
|
"account.modal.delete.description": "Да ли заиста желите да избришете свој налог укључујући све ваше активне дељења?",
|
||||||
// END /account
|
// END /account
|
||||||
// /account/shares
|
// /account/shares
|
||||||
"account.shares.title": "Moja дељења",
|
"account.shares.title": "Моја дељења",
|
||||||
"account.shares.title.empty": "Овде је празно 👀",
|
"account.shares.title.empty": "Овде је празно 👀",
|
||||||
"account.shares.description.empty": "Немате никаква дељења.",
|
"account.shares.description.empty": "Немате никаква дељења.",
|
||||||
"account.shares.button.create": "Направите",
|
"account.shares.button.create": "Направите",
|
||||||
"account.shares.info.title": "Делите информације",
|
"account.shares.info.title": "Делите информације",
|
||||||
"account.shares.table.id": "ИД",
|
"account.shares.table.id": "ID",
|
||||||
"account.shares.table.name": "Назив",
|
"account.shares.table.name": "Назив",
|
||||||
"account.shares.table.description": "Опис",
|
"account.shares.table.description": "Опис",
|
||||||
"account.shares.table.visitors": "Посетици",
|
"account.shares.table.visitors": "Посетиоци",
|
||||||
"account.shares.table.expiresAt": "Истиче",
|
"account.shares.table.expiresAt": "Истиче",
|
||||||
"account.shares.table.createdAt": "Направљено",
|
"account.shares.table.createdAt": "Направљено",
|
||||||
"account.shares.table.size": "Величина",
|
"account.shares.table.size": "Величина",
|
||||||
@@ -150,8 +150,8 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "Година",
|
"account.reverseShares.modal.expiration.year-singular": "Година",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Године",
|
"account.reverseShares.modal.expiration.year-plural": "Године",
|
||||||
"account.reverseShares.modal.max-size.label": "Максимална величина дељења",
|
"account.reverseShares.modal.max-size.label": "Максимална величина дељења",
|
||||||
"account.reverseShares.modal.send-email": "Пошаљи обавештења е-поштом",
|
"account.reverseShares.modal.send-email": "Пошаљи обавештења и-мејлом",
|
||||||
"account.reverseShares.modal.send-email.description": "Пошаљи обавештење е-поштом када се креира дељење помоћу ове обрнуте везе за дељење.",
|
"account.reverseShares.modal.send-email.description": "Пошаљи обавештење имејлом када се креира дељење помоћу ове обрнуте везе за дељење.",
|
||||||
"account.reverseShares.modal.simplified": "Једноставан режим",
|
"account.reverseShares.modal.simplified": "Једноставан режим",
|
||||||
"account.reverseShares.modal.simplified.description": "Олакшајте особи која отпрема фајл да га подели са вама. Они ће моћи да прилагоде само име и опис дељења.",
|
"account.reverseShares.modal.simplified.description": "Олакшајте особи која отпрема фајл да га подели са вама. Они ће моћи да прилагоде само име и опис дељења.",
|
||||||
"account.reverseShares.modal.public-access": "Јавни приступ",
|
"account.reverseShares.modal.public-access": "Јавни приступ",
|
||||||
@@ -174,14 +174,14 @@ export default {
|
|||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Администрација",
|
"admin.title": "Администрација",
|
||||||
"admin.button.users": "Управљање корисницима",
|
"admin.button.users": "Управљање корисницима",
|
||||||
"admin.button.shares": "Управљање deljenjima",
|
"admin.button.shares": "Управљање дељењем",
|
||||||
"admin.button.config": "Конфигурација",
|
"admin.button.config": "Конфигурација",
|
||||||
"admin.version": "Верзија",
|
"admin.version": "Верзија",
|
||||||
// END /admin
|
// END /admin
|
||||||
// /admin/users
|
// /admin/users
|
||||||
"admin.users.title": "Управљање корисницима",
|
"admin.users.title": "Управљање корисницима",
|
||||||
"admin.users.table.username": "Корисничко име",
|
"admin.users.table.username": "Корисничко име",
|
||||||
"admin.users.table.email": "E-пошта",
|
"admin.users.table.email": "Имејл",
|
||||||
"admin.users.table.admin": "Админ",
|
"admin.users.table.admin": "Админ",
|
||||||
"admin.users.edit.update.title": "Уредите корисника: {username}",
|
"admin.users.edit.update.title": "Уредите корисника: {username}",
|
||||||
"admin.users.edit.update.admin-privileges": "Администраторске привилегије",
|
"admin.users.edit.update.admin-privileges": "Администраторске привилегије",
|
||||||
@@ -194,10 +194,10 @@ export default {
|
|||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Креирај корисника",
|
"admin.users.modal.create.title": "Креирај корисника",
|
||||||
"admin.users.modal.create.username": "Корисничко име",
|
"admin.users.modal.create.username": "Корисничко име",
|
||||||
"admin.users.modal.create.email": "E-пошта",
|
"admin.users.modal.create.email": "Имејл",
|
||||||
"admin.users.modal.create.password": "Лозинка",
|
"admin.users.modal.create.password": "Лозинка",
|
||||||
"admin.users.modal.create.manual-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": "Администраторске привилегије",
|
||||||
"admin.users.modal.create.admin.description": "Ако је означено, корисник ће моћи да приступи административном панелу.",
|
"admin.users.modal.create.admin.description": "Ако је означено, корисник ће моћи да приступи административном панелу.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
@@ -212,14 +212,14 @@ export default {
|
|||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Пошаљи",
|
"upload.title": "Пошаљи",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Да ли сте сигурни да желите да напустите ову страницу? Ваше отпремање ће бити отказано.",
|
||||||
"upload.notify.generic-error": "Дошло је до грешке при довршавању дељења.",
|
"upload.notify.generic-error": "Дошло је до грешке при довршавању дељења.",
|
||||||
"upload.notify.count-failed": "Отпремање {count} датотека није успело. Покушавам поново.",
|
"upload.notify.count-failed": "Отпремање {count} датотека није успело. Покушавам поново.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Неправилан линк за обрнуто дељење",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Ово обрнуто дељење је истекло или је неважеће.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Пошаљи датотеке",
|
"upload.dropzone.title": "Пошаљи датотеке",
|
||||||
"upload.dropzone.description": "Превуците и отпустите фајлове овде да бисте започели дељење. Прихватамо само фајлове укупне величине до {maxSize}.",
|
"upload.dropzone.description": "Превуците и отпустите датотеке овде да бисте започели дељење. Прихватамо само фајлове укупне величине до {maxSize}.",
|
||||||
"upload.dropzone.notify.file-too-big": "Ваше датотеке премашују максималну величину дељења од {maxSize}.",
|
"upload.dropzone.notify.file-too-big": "Ваше датотеке премашују максималну величину дељења од {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Назив",
|
"upload.filelist.name": "Назив",
|
||||||
@@ -250,9 +250,9 @@ export default {
|
|||||||
"upload.modal.accordion.name-and-description.title": "Име и опис",
|
"upload.modal.accordion.name-and-description.title": "Име и опис",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Име",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Име",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Напомена за примаоце овог дељења",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Напомена за примаоце овог дељења",
|
||||||
"upload.modal.accordion.email.title": "Примаоци е-поште",
|
"upload.modal.accordion.email.title": "Примаоци имејла",
|
||||||
"upload.modal.accordion.email.placeholder": "Унесите примаоце е-поште",
|
"upload.modal.accordion.email.placeholder": "Унесите примаоце имејла",
|
||||||
"upload.modal.accordion.email.invalid-email": "Неисправна адреса е-поште",
|
"upload.modal.accordion.email.invalid-email": "Неисправна адреса имејла",
|
||||||
"upload.modal.accordion.security.title": "Сигурносна подешавања",
|
"upload.modal.accordion.security.title": "Сигурносна подешавања",
|
||||||
"upload.modal.accordion.security.password.label": "Заштита лозинком",
|
"upload.modal.accordion.security.password.label": "Заштита лозинком",
|
||||||
"upload.modal.accordion.security.password.placeholder": "Нема лозинке",
|
"upload.modal.accordion.security.password.placeholder": "Нема лозинке",
|
||||||
@@ -284,7 +284,7 @@ export default {
|
|||||||
"share.table.name": "Назив",
|
"share.table.name": "Назив",
|
||||||
"share.table.size": "Величина",
|
"share.table.size": "Величина",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Преглед није подржан",
|
"share.modal.file-preview.error.not-supported.title": "Преглед није подржан",
|
||||||
"share.modal.file-preview.error.not-supported.description": "Прегледи нису подржани за овај тип фајлова. Молимо преузмите фајл да бисте га прегледали.",
|
"share.modal.file-preview.error.not-supported.description": "Прегледи нису подржани за овај тип датотека. Молимо преузмите фајл да бисте га прегледали.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Уреди {shareId}",
|
"share.edit.title": "Уреди {shareId}",
|
||||||
@@ -296,15 +296,15 @@ export default {
|
|||||||
"admin.config.title": "Конфигурација",
|
"admin.config.title": "Конфигурација",
|
||||||
"admin.config.category.general": "Опште",
|
"admin.config.category.general": "Опште",
|
||||||
"admin.config.category.share": "Дељење",
|
"admin.config.category.share": "Дељење",
|
||||||
"admin.config.category.email": "E-пошта",
|
"admin.config.category.email": "Имејл",
|
||||||
"admin.config.category.smtp": "SMTP",
|
"admin.config.category.smtp": "SMTP",
|
||||||
"admin.config.category.oauth": "Социал Логин",
|
"admin.config.category.oauth": "Social Login",
|
||||||
"admin.config.general.app-name": "Назив апликације",
|
"admin.config.general.app-name": "Назив апликације",
|
||||||
"admin.config.general.app-name.description": "Назив апликације",
|
"admin.config.general.app-name.description": "Назив апликације",
|
||||||
"admin.config.general.app-url": "URL апликације",
|
"admin.config.general.app-url": "URL апликације",
|
||||||
"admin.config.general.app-url.description": "На којој URL адреси је доступан Pingvin Share",
|
"admin.config.general.app-url.description": "На којој URL адреси је доступан Pingvin Share",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.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.secure-cookies.description": "Да ли желите да поставите заставицу за безбедност на колачиће? Ако је омогућено, сајт неће функционисати када му приступате преко HTTP-а.",
|
||||||
"admin.config.general.show-home-page": "Прикажи почетну страницу",
|
"admin.config.general.show-home-page": "Прикажи почетну страницу",
|
||||||
"admin.config.general.show-home-page.description": "Да ли да се прикаже почетна страница",
|
"admin.config.general.show-home-page.description": "Да ли да се прикаже почетна страница",
|
||||||
"admin.config.general.session-duration": "Трајање сесије",
|
"admin.config.general.session-duration": "Трајање сесије",
|
||||||
@@ -312,139 +312,161 @@ export default {
|
|||||||
"admin.config.general.logo": "Лого",
|
"admin.config.general.logo": "Лого",
|
||||||
"admin.config.general.logo.description": "Промените свој логотип тако што ћете отпремити нову слику. Слика мора да буде PNG и треба да има формат 1:1.",
|
"admin.config.general.logo.description": "Промените свој логотип тако што ћете отпремити нову слику. Слика мора да буде PNG и треба да има формат 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Изабери слику",
|
"admin.config.general.logo.placeholder": "Изабери слику",
|
||||||
"admin.config.email.enable-share-email-recipients": "Омогући дељење са примаоцима е-поштом",
|
"admin.config.email.enable-share-email-recipients": "Омогући дељење са примаоцима имејлом",
|
||||||
"admin.config.email.enable-share-email-recipients.description": "Да ли дозволити дељење са примаоцима путем е-поште. Омогућите ово само ако је SMTP активиран.",
|
"admin.config.email.enable-share-email-recipients.description": "Да ли дозволити дељење са примаоцима путем имејла. Омогућите ово само ако је SMTP активиран.",
|
||||||
"admin.config.email.share-recipients-subject": "Поделите наслов примаоца",
|
"admin.config.email.share-recipients-subject": "Поделите наслов примаоца",
|
||||||
"admin.config.email.share-recipients-subject.description": "Тема е-поруке која се шаље примаоцима дељења.",
|
"admin.config.email.share-recipients-subject.description": "Тема имејла која се шаље примаоцима дељења.",
|
||||||
"admin.config.email.share-recipients-message": "Делите поруку примаоца",
|
"admin.config.email.share-recipients-message": "Делите поруку примаоца",
|
||||||
"admin.config.email.share-recipients-message.description": "Порука која се шаље примаоцима дељења. Доступне променљиве:\n{creator} - Корисничко име креатора дељења\n{shareUrl} - URL дељења\n{desc} - Опис дељења\n{expires} - Датум истека дељења\nОве променљиве ће бити замењене стварним вредностима.",
|
"admin.config.email.share-recipients-message.description": "Порука која се шаље примаоцима дељења. Доступне променљиве:\n{creator} - Корисничко име креатора дељења\n{creatorEmail} - Имејл креатора дељења\n{shareUrl} - URL дељења\n{desc} - Опис дељења\n{expires} - Датум истека дељења\nОве променљиве ће бити замењене стварним вредностима.",
|
||||||
"admin.config.email.reverse-share-subject": "Тема обрнутог дељења",
|
"admin.config.email.reverse-share-subject": "Тема обрнутог дељења",
|
||||||
"admin.config.email.reverse-share-subject.description": "Наслов е-поште која се шаље када неко креира дељење са вашим реверзним линком за дељење.",
|
"admin.config.email.reverse-share-subject.description": "Наслов имејла који се шаље када неко креира дељење са вашим реверзним линком за дељење.",
|
||||||
"admin.config.email.reverse-share-message": "Обрнуто дељење порука",
|
"admin.config.email.reverse-share-message": "Обрнуто дељење порука",
|
||||||
"admin.config.email.reverse-share-message.description": "Порука која се шаље када је неко направио дељење са вашом обрнутом везом за дељење. {shareUrl} ће бити замењен именом креатора и УРЛ-ом за дељење.",
|
"admin.config.email.reverse-share-message.description": "Порука која се шаље када је неко направио дељење са вашом обрнутом везом за дељење. {shareUrl} ће бити замењен именом креатора и URL-ом за дељење.",
|
||||||
"admin.config.email.reset-password-subject": "Ресетујте тему лозинке",
|
"admin.config.email.reset-password-subject": "Ресетујте тему лозинке",
|
||||||
"admin.config.email.reset-password-subject.description": "Наслов е-поште која се шаље када корисник затражи ресетовање лозинке.",
|
"admin.config.email.reset-password-subject.description": "Наслов имејла који се шаље када корисник затражи ресетовање лозинке.",
|
||||||
"admin.config.email.reset-password-message": "Порука за ресетовање лозинке",
|
"admin.config.email.reset-password-message": "Порука за ресетовање лозинке",
|
||||||
"admin.config.email.reset-password-message.description": "Порука која се шаље када корисник затражи ресетовање лозинке. {url} ће бити замењен УРЛ-ом за ресетовање лозинке.",
|
"admin.config.email.reset-password-message.description": "Порука која се шаље када корисник затражи ресетовање лозинке. {url} ће бити замењен линком за ресетовање лозинке.",
|
||||||
"admin.config.email.invite-subject": "Позивна тема",
|
"admin.config.email.invite-subject": "Позивна тема",
|
||||||
"admin.config.email.invite-subject.description": "Наслов е-поште која се шаље када администратор позове корисника.",
|
"admin.config.email.invite-subject.description": "Наслов е-поште која се шаље када администратор позове корисника.",
|
||||||
"admin.config.email.invite-message": "Позивна порука",
|
"admin.config.email.invite-message": "Позивна порука",
|
||||||
"admin.config.email.invite-message.description": "Порука која се шаље када администратор позове корисника. {url} ће бити замењен линком за позив, {email} е-поштом, а {password} лозинком корисника.",
|
"admin.config.email.invite-message.description": "Порука која се шаље када администратор позове корисника. {url} ће бити замењен линком за позив, {email} имејлом, а {password} лозинком корисника.",
|
||||||
"admin.config.share.allow-registration": "Дозволи регистрацију",
|
"admin.config.share.allow-registration": "Дозволи регистрацију",
|
||||||
"admin.config.share.allow-registration.description": "Да ли је регистрација дозвољена",
|
"admin.config.share.allow-registration.description": "Да ли је регистрација дозвољена",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Дозволи дељење без аутентификације",
|
"admin.config.share.allow-unauthenticated-shares": "Дозволи дељење без аутентификације",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Да ли корисници без аутентификације могу да креирају дељења",
|
"admin.config.share.allow-unauthenticated-shares.description": "Да ли корисници без аутентификације могу да креирају дељења",
|
||||||
"admin.config.share.max-expiration": "Максимални рок трајања",
|
"admin.config.share.max-expiration": "Максимални рок трајања",
|
||||||
"admin.config.share.max-expiration.description": "Максимални рок трајања дељења у сатима. Поставите на 0 да бисте омогућили неограничено трајање.",
|
"admin.config.share.max-expiration.description": "Максимални рок трајања дељења у сатима. Поставите на 0 да бисте омогућили неограничено трајање.",
|
||||||
|
"admin.config.share.share-id-length": "Дужина подразумеваног ID-а за дељење",
|
||||||
|
"admin.config.share.share-id-length.description": "Подразумевана дужина генерисаног ID-а за дељење. Ова вредност се такође користи за генерисање линкова за обрнуто дељење. Вредност испод 8 се не сматра безбедном.",
|
||||||
"admin.config.share.max-size": "Максимална величина",
|
"admin.config.share.max-size": "Максимална величина",
|
||||||
"admin.config.share.max-size.description": "Максимална величина дељења у бајтовима",
|
"admin.config.share.max-size.description": "Максимална величина дељења у бајтовима",
|
||||||
"admin.config.share.zip-compression-level": "Ниво zip компресије",
|
"admin.config.share.zip-compression-level": "Ниво Zip компресије",
|
||||||
"admin.config.share.zip-compression-level.description": "Подесите ниво да бисте балансирали између величине датотеке и брзине компресије. Важеће вредности се крећу од 0 до 9, при чему је 0 без компресије, а 9 је максимална компресија. ",
|
"admin.config.share.zip-compression-level.description": "Подесите ниво да бисте балансирали између величине датотеке и брзине компресије. Важеће вредности се крећу од 0 до 9, при чему је 0 без компресије, а 9 је максимална компресија. ",
|
||||||
"admin.config.share.chunk-size": "Величина комада",
|
"admin.config.share.chunk-size": "Величина комада",
|
||||||
"admin.config.share.chunk-size.description": "Подесите величину дела (у бајтовима) за ваша отпремање како бисте уравнотежили ефикасност и поузданост у складу са вашом интернет везом. Мањи делови могу побољшати стопу успеха за нестабилне везе, док већи делови омогућавају брже отпремање за стабилне везе.",
|
"admin.config.share.chunk-size.description": "Подесите величину дела (у бајтовима) за ваша отпремање како бисте уравнотежили ефикасност и поузданост у складу са вашом интернет везом. Мањи делови могу побољшати стопу успеха за нестабилне везе, док већи делови омогућавају брже отпремање за стабилне везе.",
|
||||||
"admin.config.share.auto-open-share-modal": "",
|
"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.share.auto-open-share-modal.description": "Модал за креирање дељења аутоматски се појављује када корисник изабере датотеке, елиминишући потребу за ручним кликом на дугме.",
|
||||||
"admin.config.smtp.enabled": "Омогући",
|
"admin.config.smtp.enabled": "Омогући",
|
||||||
"admin.config.smtp.enabled.description": "Да ли је SMTP омогућен. Поставите ово на тачно само ако сте унели хост, порт, е-пошту, корисника и лозинку вашег SMTP сервера.",
|
"admin.config.smtp.enabled.description": "Да ли је SMTP омогућен. Поставите ово на тачно само ако сте унели хост, порт, имејл, корисника и лозинку вашег SMTP сервера.",
|
||||||
"admin.config.smtp.host": "Домаћин",
|
"admin.config.smtp.host": "Домаћин",
|
||||||
"admin.config.smtp.host.description": "Домаћин SMTP сервера",
|
"admin.config.smtp.host.description": "Домаћин SMTP сервера",
|
||||||
"admin.config.smtp.port": "Порт",
|
"admin.config.smtp.port": "Порт",
|
||||||
"admin.config.smtp.port.description": "Порт домаћина SMTP сервера",
|
"admin.config.smtp.port.description": "Порт домаћина SMTP сервера",
|
||||||
"admin.config.smtp.email": "E-пошта",
|
"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": "Корисничко име",
|
||||||
"admin.config.smtp.username.description": "Корисничко име SMTP сервера",
|
"admin.config.smtp.username.description": "Корисничко име SMTP сервера",
|
||||||
"admin.config.smtp.password": "Лозинка",
|
"admin.config.smtp.password": "Лозинка",
|
||||||
"admin.config.smtp.password.description": "Лозинка SMTP сервера",
|
"admin.config.smtp.password.description": "Лозинка SMTP сервера",
|
||||||
"admin.config.smtp.button.test": "Пошаљи тестну е-пошту",
|
"admin.config.smtp.button.test": "Пошаљи тестни имејл",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "Веровање неауторизованим SMTP серверским сертификатима",
|
||||||
"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.description": "Ово поставите на \"истина\" само ако је потребно веровати само-потписаним сертификатима.",
|
||||||
"admin.config.oauth.allow-registration": "Дозволи регистрацију",
|
"admin.config.oauth.allow-registration": "Дозволи регистрацију",
|
||||||
"admin.config.oauth.allow-registration.description": "Дозволите корисницима да се региструју путем друштвене пријаве",
|
"admin.config.oauth.allow-registration.description": "Дозволите корисницима да се региструју путем друштвене пријаве",
|
||||||
"admin.config.oauth.ignore-totp": "Занемари ТОТП",
|
"admin.config.oauth.ignore-totp": "Занемари ТОТП",
|
||||||
"admin.config.oauth.ignore-totp.description": "Да ли да игноришете ТОТП када корисник користи пријаву на друштвеним мрежама",
|
"admin.config.oauth.ignore-totp.description": "Да ли да игноришете ТОТП када корисник користи пријаву на друштвеним мрежама",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "Онемогућите пријаву лозинком",
|
||||||
"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": "Омогућити пријаву лозинком или не\nУверите се да је провајдер за OAuth правилно конфигурисан пре активирања ове конфигурације како бисте избегли закључавање налога.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "Да ли је пријављивање на GitHub омогућено",
|
"admin.config.oauth.github-enabled.description": "Да ли је пријављивање на GitHub омогућено",
|
||||||
"admin.config.oauth.github-client-id": "GitHub ИД клијента",
|
"admin.config.oauth.github-client-id": "GitHub ID клијента",
|
||||||
"admin.config.oauth.github-client-id.description": "ИД клијента GitHub OAuth апликације",
|
"admin.config.oauth.github-client-id.description": "ID клијента GitHub OAuth апликације",
|
||||||
"admin.config.oauth.github-client-secret": "Тајна GitHub клијента",
|
"admin.config.oauth.github-client-secret": "Тајна GitHub клијента",
|
||||||
"admin.config.oauth.github-client-secret.description": "Тајна клијента GitHub OAuth апликације",
|
"admin.config.oauth.github-client-secret.description": "Тајна клијента GitHub OAuth апликације",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "Да ли је пријављивање на Google омогућено",
|
"admin.config.oauth.google-enabled.description": "Да ли је пријављивање на Google омогућено",
|
||||||
"admin.config.oauth.google-client-id": "ИД Google клијента",
|
"admin.config.oauth.google-client-id": "ID Google клијента",
|
||||||
"admin.config.oauth.google-client-id.description": "ИД клијента Google OAuth апликације",
|
"admin.config.oauth.google-client-id.description": "ID клијента Google OAuth апликације",
|
||||||
"admin.config.oauth.google-client-secret": "Тајна Google клијента",
|
"admin.config.oauth.google-client-secret": "Тајна Google клијента",
|
||||||
"admin.config.oauth.google-client-secret.description": "Тајна клијента Google OAuth апликације",
|
"admin.config.oauth.google-client-secret.description": "Тајна клијента Google OAuth апликације",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Да ли је пријављивање на Microsoft омогућено",
|
"admin.config.oauth.microsoft-enabled.description": "Да ли је пријављивање на Microsoft омогућено",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||||
"admin.config.oauth.microsoft-tenant.description": "ИД закупца за Microsoft OAuth апликацију\nуобичајено: Корисници са личним Microsoft налогом и пословним или школским налогом са Microsoft Entra ID-а могу да се пријаве у апликацију. организације: Само корисници са пословним или школским налозима са Microsoft Entra ID-а могу да се пријаве у апликацију.\nпотрошачи: Само корисници са личним Microsoft налогом могу да се пријаве у апликацију.\nиме домена закупца Microsoft Entra ID или ИД закупца у ГУИД формату: Само корисници из одређеног Microsoft Entra ID станара (чланови директоријума са пословним или школским налогом или гости директоријума са личним Microsoft налогом) могу да се пријаве у апликацију.",
|
"admin.config.oauth.microsoft-tenant.description": "ID закупца за Microsoft OAuth апликацију\nуобичајено: Корисници са личним Microsoft налогом и пословним или школским налогом са Microsoft Entra ID-а могу да се пријаве у апликацију. организације: Само корисници са пословним или школским налозима са Microsoft Entra ID-а могу да се пријаве у апликацију.\nпотрошачи: Само корисници са личним Microsoft налогом могу да се пријаве у апликацију.\nиме домена закупца Microsoft Entra ID или ИД закупца у ГУИД формату: Само корисници из одређеног Microsoft Entra ID станара (чланови директоријума са пословним или школским налогом или гости директоријума са личним Microsoft налогом) могу да се пријаве у апликацију.",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsotf Цлиент ИД",
|
"admin.config.oauth.microsoft-client-id": "Microsoft ID клијента",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "ИД клијента Microsoft OAuth апликације",
|
"admin.config.oauth.microsoft-client-id.description": "ID клијента Microsoft OAuth апликације",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Тајна Microsoft клијента",
|
"admin.config.oauth.microsoft-client-secret": "Тајна Microsoft клијента",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Тајна клијента за Microsot OAuth апликацију",
|
"admin.config.oauth.microsoft-client-secret.description": "Тајна клијента за Microsot OAuth апликацију",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Да ли је пријављивање на Discord омогућено",
|
"admin.config.oauth.discord-enabled.description": "Да ли је пријављивање на Discord омогућено",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
"admin.config.oauth.discord-limited-users": "Ограничење по Discord корисницима",
|
||||||
"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": "Ограничите пријављивање на одређене кориснике помоћу њиховог Discord ID-а. Оставите празно да бисте онемогућили.",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
"admin.config.oauth.discord-limited-guild": "Ограничење по Discord серверу",
|
||||||
"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": "Ограничите пријављивање на кориснике одређеног сервера. Оставите празно да бисте онемогућили.",
|
||||||
"admin.config.oauth.discord-client-id": "Discord ИД клијента",
|
"admin.config.oauth.discord-client-id": "Discord ID клијента",
|
||||||
"admin.config.oauth.discord-client-id.description": "ИД клијента Discord OAuth апликације",
|
"admin.config.oauth.discord-client-id.description": "ID клијента Discord OAuth апликације",
|
||||||
"admin.config.oauth.discord-client-secret": "Discord клијент тајна",
|
"admin.config.oauth.discord-client-secret": "Discord клијент тајна",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Тајна клијента Discord OAuth апликације",
|
"admin.config.oauth.discord-client-secret.description": "Тајна клијента Discord OAuth апликације",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
"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": "Омогућити пријаву OpenID Connect-ом или не",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
"admin.config.oauth.oidc-discovery-uri": "URI за OpenID Connect Discovery",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI за откривање OpenID Connect OAuth апликације",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Одјављивање са OpenID Connect-a",
|
||||||
"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": "Да ли ће дугме „Одјави се“ одјавити корисника и са OpenID Connect провајдера",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"admin.config.oauth.oidc-scope": "Опсег OpenID Connect-а",
|
||||||
"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-scope.description": "Опсези који би требало да буду затражени од OpenID Connect провајдера.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-username-claim": "Потраживање корисничког имена у OpenID Connect",
|
||||||
"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-username-claim.description": "Потраживање корисничког имена у OpenID Connect ID токену. Оставите празно ако не знате шта је ова конфигурација.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
"admin.config.oauth.oidc-role-path": "Путања до улога у OpenID Connect токену",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-path.description": "Мора бити валидна JMES путања која референцира низ улога. " + "Управљање правима приступа помоћу улога у OpenID Connect-у се препоручује само ако ниједан други провајдер идентитета није конфигурисан и ако је пријава лозинком онемогућена. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
"admin.config.oauth.oidc-role-general-access": "Улога у OpenID Connect-у за општи приступ",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s 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-general-access.description": "Улога потребна за општи приступ. Мора бити присутна у улогама корисника како би се могао пријавити. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
"admin.config.oauth.oidc-role-admin-access": "Улога у OpenID Connect-у за администраторски приступ",
|
||||||
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-role-admin-access.description": "Улога потребна за администраторски приступ. Мора бити присутна у улогама корисника како би могли приступити администраторском панелу. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
"admin.config.oauth.oidc-client-id": "OpenID Connect ID клијента",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
|
"admin.config.oauth.oidc-client-id.description": "ID клијента OpenID Connect OAuth апликације",
|
||||||
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect тајна клијента",
|
||||||
|
"admin.config.oauth.oidc-client-secret.description": "Тајна клијента OpenID Connect OAuth апликације",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Enable LDAP",
|
"admin.config.ldap.enabled": "Омогући LDAP",
|
||||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
"admin.config.ldap.enabled.description": "Користи LDAP аутентификацију за пријаву корисника",
|
||||||
"admin.config.ldap.url": "Server URL",
|
"admin.config.ldap.url": "URL сервера",
|
||||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
"admin.config.ldap.url.description": "URL LDAP сервера",
|
||||||
"admin.config.ldap.bind-dn": "Bind DN",
|
"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": "Bind password",
|
"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": "User base",
|
"admin.config.ldap.search-base": "База корисника",
|
||||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
"admin.config.ldap.search-base.description": "Локација базе, место где ће се извршити претрага корисника",
|
||||||
"admin.config.ldap.search-query": "User query",
|
"admin.config.ldap.search-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": "Упит за корисника који ће се користити за претрагу „Базе корисника“ за LDAP корисника. %username% се може користити као ознака за унос корисника.",
|
||||||
"admin.config.ldap.admin-groups": "Admin group",
|
"admin.config.ldap.admin-groups": "Администраторска група",
|
||||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
"admin.config.ldap.admin-groups.description": "Група која је потребна за администраторски приступ.",
|
||||||
"admin.config.ldap.field-name-member-of": "Назив атрибута корисничких група",
|
"admin.config.ldap.field-name-member-of": "Назив атрибута корисничких група",
|
||||||
"admin.config.ldap.field-name-member-of.description": "LDAP назив атрибута за групе чији је корисник члан. Ово се користи при провери администраторске групе.",
|
"admin.config.ldap.field-name-member-of.description": "LDAP назив атрибута за групе чији је корисник члан. Ово се користи при провери администраторске групе.",
|
||||||
"admin.config.ldap.field-name-email": "Назив атрибута за е-пошту корисника",
|
"admin.config.ldap.field-name-email": "Назив атрибута за имејл корисника",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP назив атрибута за е-пошту корисника.",
|
"admin.config.ldap.field-name-email.description": "LDAP назив атрибута за имејл корисника.",
|
||||||
|
"admin.config.notify.success": "Конфигурација је успешно ажурирана.",
|
||||||
|
"admin.config.notify.logo-success": "Лого је успешно ажуриран. Може бити потребно неколико минута да се ажурира на вебсајту.",
|
||||||
|
"admin.config.notify.no-changes": "Нема промена за чување.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Опа - Ова страна не постоји.",
|
"404.description": "Опа - Ова страна не постоји.",
|
||||||
"404.button.home": "Врати ме на почетак",
|
"404.button.home": "Врати ме на почетак",
|
||||||
// error
|
// error
|
||||||
"error.title": "Грешка",
|
"error.title": "Грешка",
|
||||||
"error.description": "Ooпс!",
|
"error.description": "Упс!",
|
||||||
"error.button.back": "Иди назад",
|
"error.button.back": "Иди назад",
|
||||||
"error.msg.default": "Нешто је пошло наопако.",
|
"error.msg.default": "Нешто је пошло наопако.",
|
||||||
"error.msg.access_denied": "Отказали сте процес аутентификације, покушајте поново.",
|
"error.msg.access_denied": "Отказали сте процес аутентификације, покушајте поново.",
|
||||||
"error.msg.expired_token": "Процес аутентификације је трајао предуго, покушајте поново.",
|
"error.msg.expired_token": "Процес аутентификације је трајао предуго, покушајте поново.",
|
||||||
"error.msg.invalid_token": "Интерна грешка",
|
"error.msg.invalid_token": "Интерна грешка",
|
||||||
"error.msg.no_user": "Корисник повезан са овим {0} налогом не постоји.",
|
"error.msg.no_user": "Корисник повезан са овим {0} налогом не постоји.",
|
||||||
"error.msg.no_email": "Не могу да добијем адресу е-поште са овог {0} налога.",
|
"error.msg.no_email": "Не могу да добијем адресу имејла са овог {0} налога.",
|
||||||
"error.msg.already_linked": "Овај {0} налог је већ повезан са другим налогом.",
|
"error.msg.already_linked": "Овај {0} налог је већ повезан са другим налогом.",
|
||||||
"error.msg.not_linked": "Овај {0} налог још увек није повезан ни са једним налогом.",
|
"error.msg.not_linked": "Овај {0} налог још увек није повезан ни са једним налогом.",
|
||||||
"error.msg.unverified_account": "Овај {0} налог је непотврђен, молимо покушајте поново након верификације.",
|
"error.msg.unverified_account": "Овај {0} налог је непотврђен, молимо покушајте поново након верификације.",
|
||||||
@@ -472,11 +494,12 @@ export default {
|
|||||||
"common.text.redirecting": "Преусмеравање...",
|
"common.text.redirecting": "Преусмеравање...",
|
||||||
"common.button.go-back": "Иди назад",
|
"common.button.go-back": "Иди назад",
|
||||||
"common.button.go-home": "Почетна страница",
|
"common.button.go-home": "Почетна страница",
|
||||||
"common.notify.copied": "Ваша веза је копирана у clipboard",
|
"common.notify.copied": "Ваша веза је копирана у међуспремник",
|
||||||
|
"common.notify.copied-link": "Ваша веза је копирана у међуспремник",
|
||||||
"common.success": "Успешно",
|
"common.success": "Успешно",
|
||||||
"common.error": "Грешка",
|
"common.error": "Грешка",
|
||||||
"common.error.unknown": "Дошло је до непознате грешке",
|
"common.error.unknown": "Дошло је до непознате грешке",
|
||||||
"common.error.invalid-email": "Неисправна адреса е-поште",
|
"common.error.invalid-email": "Неисправна адреса имејла",
|
||||||
"common.error.too-short": "Мора да има најмање {length} знакова",
|
"common.error.too-short": "Мора да има најмање {length} знакова",
|
||||||
"common.error.too-long": "Мора да има највише {length} знакова",
|
"common.error.too-long": "Мора да има највише {length} знакова",
|
||||||
"common.error.number-too-small": "Мора бити најмање {min}",
|
"common.error.number-too-small": "Мора бити најмање {min}",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Delning ämne",
|
"admin.config.email.share-recipients-subject": "Delning ämne",
|
||||||
"admin.config.email.share-recipients-subject.description": "Ämne för e-postmeddelandet som skickas till delningsmottagarna.",
|
"admin.config.email.share-recipients-subject.description": "Ämne för e-postmeddelandet som skickas till delningsmottagarna.",
|
||||||
"admin.config.email.share-recipients-message": "Delning meddelande",
|
"admin.config.email.share-recipients-message": "Delning meddelande",
|
||||||
"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 {creatorEmail} - The email 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": "Omvänd delning ämne",
|
"admin.config.email.reverse-share-subject": "Omvänd delning ämne",
|
||||||
"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": "Omvänd delning meddelande",
|
"admin.config.email.reverse-share-message": "Omvänd delning meddelande",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Om oautentiserade användare kan skapa delningar",
|
"admin.config.share.allow-unauthenticated-shares.description": "Om oautentiserade användare kan skapa delningar",
|
||||||
"admin.config.share.max-expiration": "Max utgångsdatum",
|
"admin.config.share.max-expiration": "Max utgångsdatum",
|
||||||
"admin.config.share.max-expiration.description": "Max längd innan en delning förfaller i timmar. Sätt till 0 för att tillåta obegränsad förfallotid.",
|
"admin.config.share.max-expiration.description": "Max längd innan en delning förfaller i timmar. Sätt till 0 för att tillåta obegränsad förfallotid.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max storlek",
|
"admin.config.share.max-size": "Max storlek",
|
||||||
"admin.config.share.max-size.description": "Maximal storlek för delning i bytes",
|
"admin.config.share.max-size.description": "Maximal storlek för delning i bytes",
|
||||||
"admin.config.share.zip-compression-level": "Komprimeringsnivå för zip",
|
"admin.config.share.zip-compression-level": "Komprimeringsnivå för zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamnsanspråk",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamnsanspråk",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.",
|
"admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Hoppsan den här sidan finns inte.",
|
"404.description": "Hoppsan den här sidan finns inte.",
|
||||||
"404.button.home": "Ta mig tillbaka hem",
|
"404.button.home": "Ta mig tillbaka hem",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Gå tillbaka",
|
"common.button.go-back": "Gå tillbaka",
|
||||||
"common.button.go-home": "Gå hem",
|
"common.button.go-home": "Gå hem",
|
||||||
"common.notify.copied": "Din länk har kopierats till urklipp",
|
"common.notify.copied": "Din länk har kopierats till urklipp",
|
||||||
|
"common.notify.copied-link": "Din länk har kopierats till urklipp",
|
||||||
"common.success": "Slutförd",
|
"common.success": "Slutförd",
|
||||||
"common.error": "Fel",
|
"common.error": "Fel",
|
||||||
"common.error.unknown": "Ett okänt fel har uppstått",
|
"common.error.unknown": "Ett okänt fel har uppstått",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมลของการแชร์",
|
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมลของการแชร์",
|
||||||
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมลที่ส่งไปยังผู้รับอีเมลของการแชร์",
|
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมลที่ส่งไปยังผู้รับอีเมลของการแชร์",
|
||||||
"admin.config.email.share-recipients-message": "ข้อความผู้รับอีเมลของการแชร์",
|
"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": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email 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": "หัวเรื่องการแชร์รีเวิร์ส",
|
||||||
"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": "ข้อความการแชร์รีเวิร์ส",
|
"admin.config.email.reverse-share-message": "ข้อความการแชร์รีเวิร์ส",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "อนุญาตให้ผู้ใช้ที่ไม่ได้เข้าสู่ระบบสร้างแชร์",
|
"admin.config.share.allow-unauthenticated-shares.description": "อนุญาตให้ผู้ใช้ที่ไม่ได้เข้าสู่ระบบสร้างแชร์",
|
||||||
"admin.config.share.max-expiration": "Max expiration",
|
"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.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "ขนาดสูงสุด",
|
"admin.config.share.max-size": "ขนาดสูงสุด",
|
||||||
"admin.config.share.max-size.description": "ขนาดสูงสุดของแชร์",
|
"admin.config.share.max-size.description": "ขนาดสูงสุดของแชร์",
|
||||||
"admin.config.share.zip-compression-level": "ระดับการบีบอัดไฟล์ Zip",
|
"admin.config.share.zip-compression-level": "ระดับการบีบอัดไฟล์ Zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "ไม่พบหน้าที่คุณกำลังมองหา",
|
"404.description": "ไม่พบหน้าที่คุณกำลังมองหา",
|
||||||
"404.button.home": "หน้าแรก",
|
"404.button.home": "หน้าแรก",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "ย้อนกลับ",
|
"common.button.go-back": "ย้อนกลับ",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "Go home",
|
||||||
"common.notify.copied": "คัดลอกไปยังคลิปบอร์ดแล้ว",
|
"common.notify.copied": "คัดลอกไปยังคลิปบอร์ดแล้ว",
|
||||||
|
"common.notify.copied-link": "คัดลอกไปยังคลิปบอร์ดแล้ว",
|
||||||
"common.success": "สำเร็จ",
|
"common.success": "สำเร็จ",
|
||||||
"common.error": "เกิดข้อผิดพลาด",
|
"common.error": "เกิดข้อผิดพลาด",
|
||||||
"common.error.unknown": "เกิดข้อผิดพลาดที่ไม่รู้จัก",
|
"common.error.unknown": "เกิดข้อผิดพลาดที่ไม่รู้จัก",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Paylaşım alıcılarının konusu",
|
"admin.config.email.share-recipients-subject": "Paylaşım alıcılarının konusu",
|
||||||
"admin.config.email.share-recipients-subject.description": "Paylaşım alıcılarına gönderilecek e-postanın konusu.",
|
"admin.config.email.share-recipients-subject.description": "Paylaşım alıcılarına gönderilecek e-postanın konusu.",
|
||||||
"admin.config.email.share-recipients-message": "Paylaşım alıcılarının mesajı",
|
"admin.config.email.share-recipients-message": "Paylaşım alıcılarının mesajı",
|
||||||
"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 {creatorEmail} - The email 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": "Tersine paylaşım konusu",
|
"admin.config.email.reverse-share-subject": "Tersine paylaşım konusu",
|
||||||
"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": "Tersine paylaşım mesajı",
|
"admin.config.email.reverse-share-message": "Tersine paylaşım mesajı",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Giriş yapmamış kullanıcıların paylaşım oluşturup oluşturamayacağı",
|
"admin.config.share.allow-unauthenticated-shares.description": "Giriş yapmamış kullanıcıların paylaşım oluşturup oluşturamayacağı",
|
||||||
"admin.config.share.max-expiration": "Maks sona erme",
|
"admin.config.share.max-expiration": "Maks sona erme",
|
||||||
"admin.config.share.max-expiration.description": "Saat üzerinden maksimum paylaşım sona ermesi. Sınırsız için 0 yapın.",
|
"admin.config.share.max-expiration.description": "Saat üzerinden maksimum paylaşım sona ermesi. Sınırsız için 0 yapın.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Maks boyut",
|
"admin.config.share.max-size": "Maks boyut",
|
||||||
"admin.config.share.max-size.description": "Byte üzerinden maks paylaşım boyutu",
|
"admin.config.share.max-size.description": "Byte üzerinden maks paylaşım boyutu",
|
||||||
"admin.config.share.zip-compression-level": "Zip sıkıştırma seviyesi",
|
"admin.config.share.zip-compression-level": "Zip sıkıştırma seviyesi",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth uygulamasının Keşfetme URI'si",
|
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth uygulamasının Keşfetme URI'si",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı sahiplenme",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı sahiplenme",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID belirtecinde kullanıcı adı sahiplenme. Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID belirtecinde kullanıcı adı sahiplenme. Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Haydaa, böyle bir sayfa yok.",
|
"404.description": "Haydaa, böyle bir sayfa yok.",
|
||||||
"404.button.home": "Beni eve götür",
|
"404.button.home": "Beni eve götür",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Geri dön",
|
"common.button.go-back": "Geri dön",
|
||||||
"common.button.go-home": "Ana sayfaya dön",
|
"common.button.go-home": "Ana sayfaya dön",
|
||||||
"common.notify.copied": "Bağlantınız kopyalandı",
|
"common.notify.copied": "Bağlantınız kopyalandı",
|
||||||
|
"common.notify.copied-link": "Bağlantınız kopyalandı",
|
||||||
"common.success": "Başarılı",
|
"common.success": "Başarılı",
|
||||||
"common.error": "Hata",
|
"common.error": "Hata",
|
||||||
"common.error.unknown": "Bilinmeyen hata meydana geldi",
|
"common.error.unknown": "Bilinmeyen hata meydana geldi",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "Завантажити",
|
"navbar.upload": "Завантажити",
|
||||||
"navbar.signin": "Вхід",
|
"navbar.signin": "Вхід",
|
||||||
"navbar.home": "Головна",
|
"navbar.home": "Головна",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "Реєстрація",
|
||||||
"navbar.links.shares": "Мої завантаження",
|
"navbar.links.shares": "Мої завантаження",
|
||||||
"navbar.links.reverse": "Зворотні завантаження",
|
"navbar.links.reverse": "Зворотні завантаження",
|
||||||
"navbar.avatar.account": "Мій аккаунт",
|
"navbar.avatar.account": "Мій аккаунт",
|
||||||
@@ -12,13 +12,13 @@ export default {
|
|||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "Платформа для обміну файлами із <h>власного хостингу</h>.",
|
"home.title": "Платформа для обміну файлами із <h>власного хостингу</h>.",
|
||||||
"home.description": "Ви дійсно бажаєте надати свої особисті файли У руки третіх осіб, таких як WeTransfer?",
|
"home.description": "Ви дійсно ви хочете передати свої особисті файли в руки третіх осіб, таких як WeTransfer?",
|
||||||
"home.bullet.a.name": "На власному сервері",
|
"home.bullet.a.name": "На власному сервері",
|
||||||
"home.bullet.a.description": "Pingvin Share працює на вашій машині.",
|
"home.bullet.a.description": "Pingvin Share працює на вашій машині.",
|
||||||
"home.bullet.b.name": "Конфіденційність",
|
"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.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.start": "Почнемо",
|
||||||
"home.button.source": "Вихідний код",
|
"home.button.source": "Вихідний код",
|
||||||
// END /
|
// END /
|
||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
"signIn.notify.totp-required.title": "Потрібна двофакторна аутентифікація",
|
"signIn.notify.totp-required.title": "Потрібна двофакторна аутентифікація",
|
||||||
"signIn.notify.totp-required.description": "Будь ласка, введіть код Вашої 2-х факторної аутентифікації",
|
"signIn.notify.totp-required.description": "Будь ласка, введіть код Вашої 2-х факторної аутентифікації",
|
||||||
"signIn.oauth.or": "АБО",
|
"signIn.oauth.or": "АБО",
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
"signIn.oauth.signInWith": "Увійти з",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -58,12 +58,12 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Забули пароль?",
|
"resetPassword.title": "Забули пароль?",
|
||||||
"resetPassword.description": "Введіть ваш email для відновлення пароля.",
|
"resetPassword.description": "Введіть ваш email для відновлення пароля.",
|
||||||
"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.button.back": "Повернутися на сторінку входу",
|
||||||
"resetPassword.text.resetPassword": "Скинути пароль",
|
"resetPassword.text.resetPassword": "Скинути пароль",
|
||||||
"resetPassword.text.enterNewPassword": "Введіть новий пароль",
|
"resetPassword.text.enterNewPassword": "Введіть новий пароль",
|
||||||
"resetPassword.input.password": "Новий пароль",
|
"resetPassword.input.password": "Новий пароль",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "Ваш пароль успішно скинуто.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Мій акаунт",
|
"account.title": "Мій акаунт",
|
||||||
"account.card.info.title": "Інформація про акаунт",
|
"account.card.info.title": "Інформація про акаунт",
|
||||||
@@ -73,9 +73,9 @@ export default {
|
|||||||
"account.card.password.title": "Пароль",
|
"account.card.password.title": "Пароль",
|
||||||
"account.card.password.old": "Старий пароль",
|
"account.card.password.old": "Старий пароль",
|
||||||
"account.card.password.new": "Новий пароль",
|
"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.notify.password.success": "Пароль успішно змінено",
|
||||||
"account.card.oauth.title": "Авторизація через соціальні мережі",
|
"account.card.oauth.title": "Вхід через соцмережі",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
"account.card.oauth.google": "Google",
|
"account.card.oauth.google": "Google",
|
||||||
"account.card.oauth.microsoft": "Microsoft",
|
"account.card.oauth.microsoft": "Microsoft",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Відключити",
|
"account.card.oauth.unlink": "Відключити",
|
||||||
"account.card.oauth.unlinked": "Відключено",
|
"account.card.oauth.unlinked": "Відключено",
|
||||||
"account.modal.unlink.title": "Відключити зв'язок з обліковим записом",
|
"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.notify.oauth.unlinked.success": "Відключення пройшло успішно",
|
||||||
"account.card.security.title": "Безпека",
|
"account.card.security.title": "Безпека",
|
||||||
"account.card.security.totp.enable.description": "Введіть ваш поточний пароль для початку увімкнення TOTP",
|
"account.card.security.totp.enable.description": "Введіть ваш поточний пароль для початку увімкнення TOTP",
|
||||||
@@ -121,12 +121,12 @@ export default {
|
|||||||
"account.shares.table.name": "Назва",
|
"account.shares.table.name": "Назва",
|
||||||
"account.shares.table.description": "Опис",
|
"account.shares.table.description": "Опис",
|
||||||
"account.shares.table.visitors": "Відвідувачів",
|
"account.shares.table.visitors": "Відвідувачів",
|
||||||
"account.shares.table.expiresAt": "Expires on",
|
"account.shares.table.expiresAt": "Діє до",
|
||||||
"account.shares.table.createdAt": "Created on",
|
"account.shares.table.createdAt": "Створено",
|
||||||
"account.shares.table.size": "Розмір",
|
"account.shares.table.size": "Розмір",
|
||||||
"account.shares.modal.share-informations": "Відомості",
|
"account.shares.modal.share-informations": "Відомості",
|
||||||
"account.shares.modal.share-link": "Поділитися посиланням",
|
"account.shares.modal.share-link": "Поділитися посиланням",
|
||||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
"account.shares.modal.delete.title": "Видалити завантаження: {share}",
|
||||||
"account.shares.modal.delete.description": "Ви дійсно хочете видалити це завантаження?",
|
"account.shares.modal.delete.description": "Ви дійсно хочете видалити це завантаження?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
@@ -150,12 +150,12 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "Рік",
|
"account.reverseShares.modal.expiration.year-singular": "Рік",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Роки (роки)",
|
"account.reverseShares.modal.expiration.year-plural": "Роки (роки)",
|
||||||
"account.reverseShares.modal.max-size.label": "Макс. розмір завантаження",
|
"account.reverseShares.modal.max-size.label": "Макс. розмір завантаження",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "Надсилати сповіщення ел. поштою",
|
||||||
"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": "Надсилає вам сповіщення на ел. пошту, коли створюється завантаження за цим зворотнім посиланням.",
|
||||||
"account.reverseShares.modal.simplified": "Simple mode",
|
"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": "Public access",
|
"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.label": "Максимум використань",
|
||||||
"account.reverseShares.modal.max-use.description": "Максимальна кількість разів, коли URL може бути використаний для створення завантаження.",
|
"account.reverseShares.modal.max-use.description": "Максимальна кількість разів, коли URL може бути використаний для створення завантаження.",
|
||||||
"account.reverseShare.never-expires": "Це зворотне завантаження ніколи не застаріє.",
|
"account.reverseShare.never-expires": "Це зворотне завантаження ніколи не застаріє.",
|
||||||
@@ -174,7 +174,7 @@ export default {
|
|||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Адміністрування",
|
"admin.title": "Адміністрування",
|
||||||
"admin.button.users": "Управління користувачами",
|
"admin.button.users": "Управління користувачами",
|
||||||
"admin.button.shares": "Share management",
|
"admin.button.shares": "Управління поширенням",
|
||||||
"admin.button.config": "Конфігурація",
|
"admin.button.config": "Конфігурація",
|
||||||
"admin.version": "Версія",
|
"admin.version": "Версія",
|
||||||
// END /admin
|
// END /admin
|
||||||
@@ -183,14 +183,14 @@ export default {
|
|||||||
"admin.users.table.username": "Логін",
|
"admin.users.table.username": "Логін",
|
||||||
"admin.users.table.email": "Електронна пошта",
|
"admin.users.table.email": "Електронна пошта",
|
||||||
"admin.users.table.admin": "Адміністратор",
|
"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.admin-privileges": "Права адміністратора",
|
||||||
"admin.users.edit.update.change-password.title": "Змінити пароль",
|
"admin.users.edit.update.change-password.title": "Змінити пароль",
|
||||||
"admin.users.edit.update.change-password.field": "Новий пароль",
|
"admin.users.edit.update.change-password.field": "Новий пароль",
|
||||||
"admin.users.edit.update.change-password.button": "Зберегти новий пароль",
|
"admin.users.edit.update.change-password.button": "Зберегти новий пароль",
|
||||||
"admin.users.edit.update.notify.password.success": "Пароль успішно змінено",
|
"admin.users.edit.update.notify.password.success": "Пароль успішно змінено",
|
||||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
"admin.users.edit.delete.title": "Видалити користувача: {username}?",
|
||||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
"admin.users.edit.delete.description": "Ви дійсно хочете видалити цього користувача та всі його поширення?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Створити користувача",
|
"admin.users.modal.create.title": "Створити користувача",
|
||||||
"admin.users.modal.create.username": "Логін",
|
"admin.users.modal.create.username": "Логін",
|
||||||
@@ -202,24 +202,24 @@ export default {
|
|||||||
"admin.users.modal.create.admin.description": "Якщо зазначено, користувач матиме доступ до панелі адміністратора.",
|
"admin.users.modal.create.admin.description": "Якщо зазначено, користувач матиме доступ до панелі адміністратора.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Share management",
|
"admin.shares.title": "Керування завантаженнями",
|
||||||
"admin.shares.table.id": "Share ID",
|
"admin.shares.table.id": "ID Завантаження",
|
||||||
"admin.shares.table.username": "Creator",
|
"admin.shares.table.username": "Автор",
|
||||||
"admin.shares.table.visitors": "Visitors",
|
"admin.shares.table.visitors": "Відвідувачі",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "Діє до",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"admin.shares.edit.delete.title": "Видалити завантаження: {id}",
|
||||||
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
|
"admin.shares.edit.delete.description": "Ви дійсно хочете видалити це завантаження?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Завантажити",
|
"upload.title": "Завантажити",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Ви впевнені, що хочете залишити цю сторінку? Ваше завантаження буде скасовано.",
|
||||||
"upload.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.",
|
"upload.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.",
|
||||||
"upload.notify.count-failed": "Не вдалося завантажити файли {count}. Повтор спроби.",
|
"upload.notify.count-failed": "Не вдалося завантажити файли {count}. Повтор спроби.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Недійсне посилання на завантаження",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Зворотне завантаження вже закінчилося або недійсне.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Завантажити файли",
|
"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}.",
|
"upload.dropzone.notify.file-too-big": "Ваші файли перевищують максимальний розмір у {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Назва",
|
"upload.filelist.name": "Назва",
|
||||||
@@ -231,8 +231,8 @@ export default {
|
|||||||
"upload.modal.not-signed-in": "Ви не авторизовані",
|
"upload.modal.not-signed-in": "Ви не авторизовані",
|
||||||
"upload.modal.not-signed-in-description": "Ви не зможете видалити свої файли вручну і переглянути кількість відвідувачів.",
|
"upload.modal.not-signed-in-description": "Ви не зможете видалити свої файли вручну і переглянути кількість відвідувачів.",
|
||||||
"upload.modal.expires.never": "ніколи",
|
"upload.modal.expires.never": "ніколи",
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
"upload.modal.expires.never-long": "Постійне завантаження",
|
||||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
"upload.modal.expires.error.too-long": "Термін дії перевищує ліміт по {max}.",
|
||||||
"upload.modal.link.label": "Посилання",
|
"upload.modal.link.label": "Посилання",
|
||||||
"upload.modal.expires.label": "Закінчується",
|
"upload.modal.expires.label": "Закінчується",
|
||||||
"upload.modal.expires.minute-singular": "Хвилина",
|
"upload.modal.expires.minute-singular": "Хвилина",
|
||||||
@@ -247,9 +247,9 @@ export default {
|
|||||||
"upload.modal.expires.month-plural": "Місяця(-ів)",
|
"upload.modal.expires.month-plural": "Місяця(-ів)",
|
||||||
"upload.modal.expires.year-singular": "Рік",
|
"upload.modal.expires.year-singular": "Рік",
|
||||||
"upload.modal.expires.year-plural": "Роки (роки)",
|
"upload.modal.expires.year-plural": "Роки (роки)",
|
||||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
"upload.modal.accordion.name-and-description.title": "Назва та опис",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Назва",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Примітка для отримувачів цього завантаження",
|
||||||
"upload.modal.accordion.email.title": "Одержувачі листа",
|
"upload.modal.accordion.email.title": "Одержувачі листа",
|
||||||
"upload.modal.accordion.email.placeholder": "Одержувачі e-mail",
|
"upload.modal.accordion.email.placeholder": "Одержувачі e-mail",
|
||||||
"upload.modal.accordion.email.invalid-email": "Неприпустима адреса електронної пошти",
|
"upload.modal.accordion.email.invalid-email": "Неприпустима адреса електронної пошти",
|
||||||
@@ -262,7 +262,7 @@ export default {
|
|||||||
"upload.modal.completed.never-expires": "Це завантаження ніколи не застаріє.",
|
"upload.modal.completed.never-expires": "Це завантаження ніколи не застаріє.",
|
||||||
"upload.modal.completed.expires-on": "Це завантаження застаріє {expiration}.",
|
"upload.modal.completed.expires-on": "Це завантаження застаріє {expiration}.",
|
||||||
"upload.modal.completed.share-ready": "Готово",
|
"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
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Завантаження {shareId}",
|
"share.title": "Завантаження {shareId}",
|
||||||
@@ -272,19 +272,19 @@ export default {
|
|||||||
"share.error.removed.title": "Завантаження видалено",
|
"share.error.removed.title": "Завантаження видалено",
|
||||||
"share.error.not-found.title": "Завантаження не знайдено",
|
"share.error.not-found.title": "Завантаження не знайдено",
|
||||||
"share.error.not-found.description": "Сторінка, яку ви шукаєте, не існує.",
|
"share.error.not-found.description": "Сторінка, яку ви шукаєте, не існує.",
|
||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Приватне завантаження",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "Поточний акаунт не має дозволу на доступ до цього завантаження",
|
||||||
"share.modal.password.title": "Потрібен пароль",
|
"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.password": "Пароль",
|
||||||
"share.modal.error.invalid-password": "Невірний пароль",
|
"share.modal.error.invalid-password": "Невірний пароль",
|
||||||
"share.button.download-all": "Завантажити все",
|
"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.modal.file-link": "Посилання на файл",
|
||||||
"share.table.name": "Назва",
|
"share.table.name": "Назва",
|
||||||
"share.table.size": "Розмір",
|
"share.table.size": "Розмір",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Попередній перегляд не підтримується",
|
"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]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Редагувати {shareId}",
|
"share.edit.title": "Редагувати {shareId}",
|
||||||
@@ -298,73 +298,75 @@ export default {
|
|||||||
"admin.config.category.share": "Завантаження",
|
"admin.config.category.share": "Завантаження",
|
||||||
"admin.config.category.email": "Електронна пошта",
|
"admin.config.category.email": "Електронна пошта",
|
||||||
"admin.config.category.smtp": "SMTP",
|
"admin.config.category.smtp": "SMTP",
|
||||||
"admin.config.category.oauth": "Авторизація через соціальні мережі",
|
"admin.config.category.oauth": "Вхід через соцмережі",
|
||||||
"admin.config.general.app-name": "Назва програми",
|
"admin.config.general.app-name": "Назва програми",
|
||||||
"admin.config.general.app-name.description": "Видима назва додатка",
|
"admin.config.general.app-name.description": "Видима назва додатка",
|
||||||
"admin.config.general.app-url": "URL-адреса програми",
|
"admin.config.general.app-url": "URL-адреса програми",
|
||||||
"admin.config.general.app-url.description": "Адреса, на якій доступний Pingvin Share",
|
"admin.config.general.app-url.description": "Адреса, на якій доступний Pingvin Share",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "Безпечні 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.secure-cookies.description": "Чи встановлювати прапор безпеки для cookies. Якщо увімкнено, сайт не працюватиме при доступі через HTTP.",
|
||||||
"admin.config.general.show-home-page": "Показувати домашню сторінку",
|
"admin.config.general.show-home-page": "Показувати домашню сторінку",
|
||||||
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
|
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
|
||||||
"admin.config.general.session-duration": "Session Duration",
|
"admin.config.general.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": "Час у годинах, після якого користувач повинен знову увійти в систему (за замовчуванням: 3 місяці).",
|
||||||
"admin.config.general.logo": "Логотип",
|
"admin.config.general.logo": "Логотип",
|
||||||
"admin.config.general.logo.description": "Змініть свій логотип, завантаживши нове зображення. Зображення має бути PNG і повинно мати формат 1:1.",
|
"admin.config.general.logo.description": "Змініть свій логотип, завантаживши нове зображення. Зображення має бути PNG і повинно мати формат 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Виберіть зображення",
|
"admin.config.general.logo.placeholder": "Виберіть зображення",
|
||||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
"admin.config.email.enable-share-email-recipients": "Увімкнути спільний доступ для отримувачів через ел. пошту",
|
||||||
"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.description": "Чи дозволяти спільний доступ через ел. пошту для отримувачів. Увімкніть це тільки, якщо SMTP активовано.",
|
||||||
"admin.config.email.share-recipients-subject": "Заголовок листа (завантаження)",
|
"admin.config.email.share-recipients-subject": "Заголовок листа (завантаження)",
|
||||||
"admin.config.email.share-recipients-subject.description": "Тема листа, який надсилається одержувачам акції.",
|
"admin.config.email.share-recipients-subject.description": "Тема листа, який надсилається одержувачам акції.",
|
||||||
"admin.config.email.share-recipients-message": "Повідомлення листа завантаження",
|
"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 {creatorEmail} - Ел. пошта користувача, який створив спільний доступ \n {shareUrl} - URL спільного доступу \n {desc} - Опис спільного доступу \n {expires} - Дата закінчення терміну дії спільного доступу \nЦі змінні будуть замінені на фактичні значення.",
|
||||||
"admin.config.email.reverse-share-subject": "Заголовок листа (зворотне завантаження)",
|
"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": "Повідомлення листа зворотного завантаження",
|
||||||
"admin.config.email.reverse-share-message.description": "Повідомлення, яке надсилається, коли хтось створив завантаження з вашим зворотним посиланням. {shareUrl} буде замінено ім'ям творця та URL-адресою загального доступу.",
|
"admin.config.email.reverse-share-message.description": "Повідомлення, яке надсилається, коли хтось створив завантаження з вашим зворотним посиланням. {shareUrl} буде замінено ім'ям творця та URL-адресою загального доступу.",
|
||||||
"admin.config.email.reset-password-subject": "Тема скидання пароля",
|
"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": "Повідомлення про скидання пароля",
|
||||||
"admin.config.email.reset-password-message.description": "Повідомлення, яке надсилається при запиті скидання пароля. {url} буде замінено посиланням.",
|
"admin.config.email.reset-password-message.description": "Повідомлення, яке надсилається при запиті скидання пароля. {url} буде замінено посиланням.",
|
||||||
"admin.config.email.invite-subject": "Тема запрошення",
|
"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": "Повідомлення із запрошенням",
|
||||||
"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": "Дозволити реєстрацію",
|
||||||
"admin.config.share.allow-registration.description": "Чи дозволена реєстрація",
|
"admin.config.share.allow-registration.description": "Чи дозволена реєстрація",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Дозволити неавторизовані завантаження",
|
"admin.config.share.allow-unauthenticated-shares": "Дозволити неавторизовані завантаження",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Чи можуть неавторизовані користувачі створювати завантаження",
|
"admin.config.share.allow-unauthenticated-shares.description": "Чи можуть неавторизовані користувачі створювати завантаження",
|
||||||
"admin.config.share.max-expiration": "Максимальний термін дії",
|
"admin.config.share.max-expiration": "Максимальний термін дії",
|
||||||
"admin.config.share.max-expiration.description": "Максимальний термін дії загального доступу в годинах. Встановіть значення 0, щоб дозволити необмежений термін дії.",
|
"admin.config.share.max-expiration.description": "Максимальний термін дії загального доступу в годинах. Встановіть значення 0, щоб дозволити необмежений термін дії.",
|
||||||
|
"admin.config.share.share-id-length": "Стандартна довжина ID завантаження",
|
||||||
|
"admin.config.share.share-id-length.description": "Стандартна довжина для згенерованого ID завантаження. Це значення також використовується для створення посилань для зворотних завантажень. Значення менше 8 не вважається безпечним.",
|
||||||
"admin.config.share.max-size": "Максимальний розмір",
|
"admin.config.share.max-size": "Максимальний розмір",
|
||||||
"admin.config.share.max-size.description": "Максимальний розмір файлу в байтах",
|
"admin.config.share.max-size.description": "Максимальний розмір файлу в байтах",
|
||||||
"admin.config.share.zip-compression-level": "Рівень стиснення Zip",
|
"admin.config.share.zip-compression-level": "Рівень стиснення Zip",
|
||||||
"admin.config.share.zip-compression-level.description": "Регулювання рівня балансу між розміром файлу і швидкістю стиснення. Допустимі значення від 0 до 9, з 0 без стиснення, а 9 - максимальне стиснення. ",
|
"admin.config.share.zip-compression-level.description": "Регулювання рівня балансу між розміром файлу і швидкістю стиснення. Допустимі значення від 0 до 9, з 0 без стиснення, а 9 - максимальне стиснення. ",
|
||||||
"admin.config.share.chunk-size": "Chunk size",
|
"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": "Auto open create share modal",
|
"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.share.auto-open-share-modal.description": "Модальне вікно для створення завантаження автоматично з'являється, коли користувач вибирає файли, що усуває необхідність вручну натискати кнопку.",
|
||||||
"admin.config.smtp.enabled": "Enable",
|
"admin.config.smtp.enabled": "Увімкнути",
|
||||||
"admin.config.smtp.enabled.description": "Чи увімкнено SMTP. Встановіть значення true тільки якщо ви ввели хост, порт, email, користувач і пароль вашого SMTP-сервера.",
|
"admin.config.smtp.enabled.description": "Чи увімкнено SMTP. Встановіть значення true тільки якщо ви ввели хост, порт, email, користувач і пароль вашого SMTP-сервера.",
|
||||||
"admin.config.smtp.host": "Хост",
|
"admin.config.smtp.host": "Хост",
|
||||||
"admin.config.smtp.host.description": "Сервер SMTP-сервера",
|
"admin.config.smtp.host.description": "Сервер SMTP-сервера",
|
||||||
"admin.config.smtp.port": "Порт",
|
"admin.config.smtp.port": "Порт",
|
||||||
"admin.config.smtp.port.description": "Порт SMTP сервера",
|
"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.email.description": "Ел. пошта, з якої надсилаються листи",
|
||||||
"admin.config.smtp.username": "Логін",
|
"admin.config.smtp.username": "Логін",
|
||||||
"admin.config.smtp.username.description": "Ім'я користувача SMTP-сервера",
|
"admin.config.smtp.username.description": "Ім'я користувача SMTP-сервера",
|
||||||
"admin.config.smtp.password": "Пароль",
|
"admin.config.smtp.password": "Пароль",
|
||||||
"admin.config.smtp.password.description": "Пароль SMTP-сервера",
|
"admin.config.smtp.password.description": "Пароль SMTP-сервера",
|
||||||
"admin.config.smtp.button.test": "Відправити тестовий лист",
|
"admin.config.smtp.button.test": "Відправити тестовий лист",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "Довіряти сертифікатам SMTP серверів без авторизації",
|
||||||
"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.description": "Увімкніть це тільки тоді, якщо потрібно довіряти самопідписаним сертифікатам.",
|
||||||
"admin.config.oauth.allow-registration": "Дозволити реєстрацію",
|
"admin.config.oauth.allow-registration": "Дозволити реєстрацію",
|
||||||
"admin.config.oauth.allow-registration.description": "Дозволити користувачам реєструватися, використовуючи облікові записи соціальних мереж",
|
"admin.config.oauth.allow-registration.description": "Дозволити користувачам реєструватися, використовуючи облікові записи соціальних мереж",
|
||||||
"admin.config.oauth.ignore-totp": "Ігнорувати TOTP",
|
"admin.config.oauth.ignore-totp": "Ігнорувати TOTP",
|
||||||
"admin.config.oauth.ignore-totp.description": "Ігнорувати TOTP при використанні соціальної авторизації",
|
"admin.config.oauth.ignore-totp.description": "Ігнорувати TOTP при використанні соціальної авторизації",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "Вимкнути вхід за паролем",
|
||||||
"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": "Чи вимкнути вхід за паролем. \nПереконайтеся, що постачальник OAuth налаштований правильно, перед активацією цієї конфігурації, щоб уникнути блокування доступу.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "Чи ввімкнено логін на GitHub",
|
"admin.config.oauth.github-enabled.description": "Чи ввімкнено логін на GitHub",
|
||||||
"admin.config.oauth.github-client-id": "ID клієнта GitHub",
|
"admin.config.oauth.github-client-id": "ID клієнта GitHub",
|
||||||
@@ -387,51 +389,71 @@ export default {
|
|||||||
"admin.config.oauth.microsoft-client-secret.description": "Секретний ключ клієнта в додатку Microsoft OAuth",
|
"admin.config.oauth.microsoft-client-secret.description": "Секретний ключ клієнта в додатку Microsoft OAuth",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Чи увімкнено логін Discord",
|
"admin.config.oauth.discord-enabled.description": "Чи увімкнено логін Discord",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
"admin.config.oauth.discord-limited-users": "Обмежені користувачі Discord",
|
||||||
"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": "Обмежити вхід для конкретних користувачів за їх Discord ID. Залиште поле порожнім, щоб вимкнути.",
|
||||||
"admin.config.oauth.discord-limited-guild": "ID обмеженого сервера Discord",
|
"admin.config.oauth.discord-limited-guild": "ID обмеженого сервера Discord",
|
||||||
"admin.config.oauth.discord-limited-guild.description": "Обмеження входу для користувачів певного сервера. Залиште порожнім, щоб відключити.",
|
"admin.config.oauth.discord-limited-guild.description": "Обмеження входу для користувачів певного сервера. Залиште порожнім, щоб відключити.",
|
||||||
"admin.config.oauth.discord-client-id": "ID клієнта Discord",
|
"admin.config.oauth.discord-client-id": "ID клієнта Discord",
|
||||||
"admin.config.oauth.discord-client-id.description": "ID клієнта в додатку Discord OAuth",
|
"admin.config.oauth.discord-client-id.description": "ID клієнта в додатку Discord OAuth",
|
||||||
"admin.config.oauth.discord-client-secret": "Секретний ключ клієнта Discord",
|
"admin.config.oauth.discord-client-secret": "Секретний ключ клієнта Discord",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Секретний ключ клієнта в додатку Discord OAuth",
|
"admin.config.oauth.discord-client-secret.description": "Секретний ключ клієнта в додатку Discord OAuth",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
"admin.config.oauth.oidc-enabled": "OpenID підключення",
|
||||||
"admin.config.oauth.oidc-enabled.description": "Чи ввімкнено логін OpenID Connect",
|
"admin.config.oauth.oidc-enabled.description": "Чи ввімкнено логін OpenID Connect",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "URI Discovery URI додатка OpenID Connect OAuth",
|
"admin.config.oauth.oidc-discovery-uri.description": "URI Discovery URI додатка OpenID Connect OAuth",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Вийти з 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": "Чи буде кнопка \"Вийти\" виводити користувача з постачальника OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope": "Область OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Області (scopes), які слід запитати у постачальника OpenID Connect.",
|
||||||
"admin.config.oauth.oidc-username-claim": "Заява на ім'я користувача OpenID Connect",
|
"admin.config.oauth.oidc-username-claim": "Заява на ім'я користувача OpenID Connect",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Заява про ім'я користувача в токені OpenID Connect ID. Залиште порожнім, якщо не знаєте, що це за конфіг.",
|
"admin.config.oauth.oidc-username-claim.description": "Заява про ім'я користувача в токені OpenID Connect ID. Залиште порожнім, якщо не знаєте, що це за конфіг.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Шлях до ролей у токені OpenID Connect",
|
||||||
"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-path.description": "Повинен бути дійсним шляхом JMES, який посилається на масив ролей. " + "Управління правами доступу за допомогою ролей OpenID Connect рекомендується лише в тому випадку, якщо не налаштований інший постачальник ідентифікації та вхід за паролем вимкнено. " + "Залиште це поле порожнім, якщо ви не знаєте, для чого призначена ця конфігурація.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
"admin.config.oauth.oidc-role-general-access": "Роль OpenID Connect для загального доступу",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-general-access.description": "Роль, необхідна для загального доступу. Має бути присутня в ролях користувача, щоб він міг увійти в систему. " + "Залиште це поле порожнім, якщо ви не знаєте, для чого призначена ця конфігурація.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
"admin.config.oauth.oidc-role-admin-access": "Роль OpenID Connect для адміністративного доступу",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s 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-admin-access.description": "Роль, необхідна для адміністративного доступу. Має бути присутня в ролях користувача, щоб він міг отримати доступ до адміністративної панелі. " + "Залиште це поле порожнім, якщо ви не знаєте, для чого призначена ця конфігурація.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
"admin.config.oauth.oidc-client-id": "Client ID для OpenID Connect",
|
||||||
"admin.config.oauth.oidc-client-id.description": "Клієнтський ідентифікатор додатка OpenID Connect OAuth",
|
"admin.config.oauth.oidc-client-id.description": "Клієнтський ідентифікатор додатка OpenID Connect OAuth",
|
||||||
"admin.config.oauth.oidc-client-secret": "Секрет клієнта OpenID Connect",
|
"admin.config.oauth.oidc-client-secret": "Секрет клієнта OpenID Connect",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "Клієнтський секрет програми OpenID Connect OAuth",
|
"admin.config.oauth.oidc-client-secret.description": "Клієнтський секрет програми OpenID Connect OAuth",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Enable LDAP",
|
"admin.config.ldap.enabled": "Увімкнути LDAP",
|
||||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
"admin.config.ldap.enabled.description": "Використовувати LDAP автентифікацію для входу користувача",
|
||||||
"admin.config.ldap.url": "Server URL",
|
"admin.config.ldap.url": "URL сервера",
|
||||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
"admin.config.ldap.url.description": "URL сервера LDAP",
|
||||||
"admin.config.ldap.bind-dn": "Bind DN",
|
"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": "Bind password",
|
"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": "User base",
|
"admin.config.ldap.search-base": "База користувачів",
|
||||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
"admin.config.ldap.search-base.description": "Базове розташування, де буде виконано пошук користувача",
|
||||||
"admin.config.ldap.search-query": "User query",
|
"admin.config.ldap.search-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": "Запит користувача буде використовуватися для пошуку користувача LDAP в \"Базі користувачів\". %username% можна використовувати як заповнювач для введених користувачем даних.",
|
||||||
"admin.config.ldap.admin-groups": "Admin group",
|
"admin.config.ldap.admin-groups": "Адмін-група",
|
||||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
"admin.config.ldap.admin-groups.description": "Група, необхідна для адміністративного доступу.",
|
||||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
"admin.config.ldap.field-name-member-of": "Назва атрибута груп користувачів",
|
||||||
"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 для груп, до яких належить користувач. Це використовується при перевірці адміністративної групи.",
|
||||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
"admin.config.ldap.field-name-email": "Назва атрибута ел. пошти користувача",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
"admin.config.ldap.field-name-email.description": "Назва атрибута LDAP для ел. пошти користувача.",
|
||||||
|
"admin.config.notify.success": "Конфігурацію оновлено успішно.",
|
||||||
|
"admin.config.notify.logo-success": "Логотип успішно оновлено. Це може зайняти кілька хвилин, щоб оновлення відобразилось на вебсайті.",
|
||||||
|
"admin.config.notify.no-changes": "Змін не потрібно зберігати.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Увімкнено",
|
||||||
|
"admin.config.s3.enabled.description": "Чи S3 буде використовуватися для зберігання спільних файлів замість локальної файлової системи.",
|
||||||
|
"admin.config.s3.endpoint": "Точка підключення",
|
||||||
|
"admin.config.s3.endpoint.description": "URL сховища S3.",
|
||||||
|
"admin.config.s3.region": "Область",
|
||||||
|
"admin.config.s3.region.description": "Регион облачного хранилища S3.",
|
||||||
|
"admin.config.s3.bucket-name": "Ім'я бакета",
|
||||||
|
"admin.config.s3.bucket-name.description": "Назва S3 бакета.",
|
||||||
|
"admin.config.s3.bucket-path": "Шлях",
|
||||||
|
"admin.config.s3.bucket-path.description": "Шлях за замовчуванням, який має використовуватися для зберігання файлів у S3 бакеті.",
|
||||||
|
"admin.config.s3.key": "Ключ",
|
||||||
|
"admin.config.s3.key.description": "Ключ, який дозволяє отримати доступ до S3 бакету.",
|
||||||
|
"admin.config.s3.secret": "Секрет",
|
||||||
|
"admin.config.s3.secret.description": "Секрет, який дозволяє отримати доступ до S3 бакету.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Бляха, цієї строрінки не існує.",
|
"404.description": "Бляха, цієї строрінки не існує.",
|
||||||
"404.button.home": "Поверни мене додому",
|
"404.button.home": "Поверни мене додому",
|
||||||
@@ -446,15 +468,15 @@ export default {
|
|||||||
"error.msg.no_user": "Користувач, пов'язаний з обліковим записом {0}, не існує.",
|
"error.msg.no_user": "Користувач, пов'язаний з обліковим записом {0}, не існує.",
|
||||||
"error.msg.no_email": "Не вдається отримати адресу електронної пошти від облікового запису {0}.",
|
"error.msg.no_email": "Не вдається отримати адресу електронної пошти від облікового запису {0}.",
|
||||||
"error.msg.already_linked": "Цей обліковий запис {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.unverified_account": "Цей обліковий запис {0} не підтверджено, повторіть спробу після підтвердження.",
|
||||||
"error.msg.user_not_allowed": "У вас немає дозволу на вхід.",
|
"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_github": "GitHub",
|
||||||
"error.param.provider_google": "Google",
|
"error.param.provider_google": "Google",
|
||||||
"error.param.provider_microsoft": "Microsoft",
|
"error.param.provider_microsoft": "Microsoft",
|
||||||
"error.param.provider_discord": "Discord",
|
"error.param.provider_discord": "Discord",
|
||||||
"error.param.provider_oidc": "OpenID Connect",
|
"error.param.provider_oidc": "OpenID підключення",
|
||||||
// Common translations
|
// Common translations
|
||||||
"common.button.save": "Зберегти",
|
"common.button.save": "Зберегти",
|
||||||
"common.button.create": "Створити",
|
"common.button.create": "Створити",
|
||||||
@@ -467,20 +489,21 @@ export default {
|
|||||||
"common.button.generate": "Згенерувати",
|
"common.button.generate": "Згенерувати",
|
||||||
"common.button.done": "Готово",
|
"common.button.done": "Готово",
|
||||||
"common.text.link": "Посилання",
|
"common.text.link": "Посилання",
|
||||||
"common.text.navigate-to-link": "Visit link",
|
"common.text.navigate-to-link": "Відкрити посилання",
|
||||||
"common.text.or": "або",
|
"common.text.or": "або",
|
||||||
"common.text.redirecting": "Redirecting...",
|
"common.text.redirecting": "Перенаправлення...",
|
||||||
"common.button.go-back": "Назад",
|
"common.button.go-back": "Назад",
|
||||||
"common.button.go-home": "Перейти додому",
|
"common.button.go-home": "Перейти додому",
|
||||||
"common.notify.copied": "Ваше посилання скопійовано в буфер обміну",
|
"common.notify.copied": "Ваше посилання скопійовано в буфер обміну",
|
||||||
|
"common.notify.copied-link": "Ваше посилання скопійовано в буфер обміну",
|
||||||
"common.success": "Успішно",
|
"common.success": "Успішно",
|
||||||
"common.error": "Помилка",
|
"common.error": "Помилка",
|
||||||
"common.error.unknown": "Сталася невідома помилка",
|
"common.error.unknown": "Сталася невідома помилка",
|
||||||
"common.error.invalid-email": "Неприпустима адреса електронної пошти",
|
"common.error.invalid-email": "Неприпустима адреса електронної пошти",
|
||||||
"common.error.too-short": "Повинно бути не менше {length} символів",
|
"common.error.too-short": "Повинно бути не менше {length} символів",
|
||||||
"common.error.too-long": "Повинно бути не більше {length} символів",
|
"common.error.too-long": "Повинно бути не більше {length} символів",
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
"common.error.number-too-small": "Повинно бути щонайменше {min}",
|
||||||
"common.error.number-too-large": "Must be at most {max}",
|
"common.error.number-too-large": "Повинно бути не більше ніж {max}",
|
||||||
"common.error.exact-length": "Повинно бути рівно {length} символів",
|
"common.error.exact-length": "Повинно бути рівно {length} символів",
|
||||||
"common.error.invalid-number": "Повинно бути числом",
|
"common.error.invalid-number": "Повинно бути числом",
|
||||||
"common.error.field-required": "Поле обов'язкове для заповнення"
|
"common.error.field-required": "Поле обов'язкове для заповнення"
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
"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": "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 {creatorEmail} - The email 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": "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": "Reverse share message",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create 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": "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.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Kích thước tối đa",
|
"admin.config.share.max-size": "Kích thước tối đa",
|
||||||
"admin.config.share.max-size.description": "Kích thước tối đa (bytes)",
|
"admin.config.share.max-size.description": "Kích thước tối đa (bytes)",
|
||||||
"admin.config.share.zip-compression-level": "Cấp độ nén Zip",
|
"admin.config.share.zip-compression-level": "Cấp độ nén Zip",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oops this page doesn't exist.",
|
"404.description": "Oops this page doesn't exist.",
|
||||||
"404.button.home": "Về trang chủ",
|
"404.button.home": "Về trang chủ",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "Quay lại",
|
"common.button.go-back": "Quay lại",
|
||||||
"common.button.go-home": "Về trang chủ",
|
"common.button.go-home": "Về trang chủ",
|
||||||
"common.notify.copied": "Đã sao chép liên kết vào bộ nhớ",
|
"common.notify.copied": "Đã sao chép liên kết vào bộ nhớ",
|
||||||
|
"common.notify.copied-link": "Đã sao chép liên kết vào bộ nhớ",
|
||||||
"common.success": "Thành công",
|
"common.success": "Thành công",
|
||||||
"common.error": "Error",
|
"common.error": "Error",
|
||||||
"common.error.unknown": "An unknown error occurred",
|
"common.error.unknown": "An unknown error occurred",
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ export default {
|
|||||||
"admin.config.email.share-recipients-subject": "共享邮件通知主题",
|
"admin.config.email.share-recipients-subject": "共享邮件通知主题",
|
||||||
"admin.config.email.share-recipients-subject.description": "发送共享邮件通知的邮件主题",
|
"admin.config.email.share-recipients-subject.description": "发送共享邮件通知的邮件主题",
|
||||||
"admin.config.email.share-recipients-message": "共享邮件通知内容",
|
"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": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email 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": "预留共享邮件通知主题",
|
||||||
"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": "预留共享邮件通知内容",
|
"admin.config.email.reverse-share-message": "预留共享邮件通知内容",
|
||||||
@@ -336,6 +336,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "是否允许未验证的用户创建共享",
|
"admin.config.share.allow-unauthenticated-shares.description": "是否允许未验证的用户创建共享",
|
||||||
"admin.config.share.max-expiration": "最长过期时间",
|
"admin.config.share.max-expiration": "最长过期时间",
|
||||||
"admin.config.share.max-expiration.description": "“最长过期时间”以小时为单位,如果将其设置为“0”则为永不过期。",
|
"admin.config.share.max-expiration.description": "“最长过期时间”以小时为单位,如果将其设置为“0”则为永不过期。",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "最大文件上限",
|
"admin.config.share.max-size": "最大文件上限",
|
||||||
"admin.config.share.max-size.description": "最大文件上限,单位 bytes (1GB=1024MB=1048576KB=1073741824bytes)",
|
"admin.config.share.max-size.description": "最大文件上限,单位 bytes (1GB=1024MB=1048576KB=1073741824bytes)",
|
||||||
"admin.config.share.zip-compression-level": "Zip 文件压缩质量",
|
"admin.config.share.zip-compression-level": "Zip 文件压缩质量",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth App 的 Discovery URI",
|
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth App 的 Discovery URI",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect 用户名请求",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect 用户名请求",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID token 中的用户名请求。如果您不知道这项配置是什么,请留空。",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID token 中的用户名请求。如果您不知道这项配置是什么,请留空。",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,6 +436,24 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "当前的页面走丢啦",
|
"404.description": "当前的页面走丢啦",
|
||||||
"404.button.home": "返回主页",
|
"404.button.home": "返回主页",
|
||||||
@@ -473,6 +495,7 @@ export default {
|
|||||||
"common.button.go-back": "返回",
|
"common.button.go-back": "返回",
|
||||||
"common.button.go-home": "返回主页",
|
"common.button.go-home": "返回主页",
|
||||||
"common.notify.copied": "已复制到剪贴板",
|
"common.notify.copied": "已复制到剪贴板",
|
||||||
|
"common.notify.copied-link": "已复制到剪贴板",
|
||||||
"common.success": "成功",
|
"common.success": "成功",
|
||||||
"common.error": "错误",
|
"common.error": "错误",
|
||||||
"common.error.unknown": "发生未知错误",
|
"common.error.unknown": "发生未知错误",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "上傳",
|
"navbar.upload": "上傳",
|
||||||
"navbar.signin": "登入",
|
"navbar.signin": "登入",
|
||||||
"navbar.home": "首頁",
|
"navbar.home": "首頁",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "登入",
|
||||||
"navbar.links.shares": "我的分享",
|
"navbar.links.shares": "我的分享",
|
||||||
"navbar.links.reverse": "檔案請求",
|
"navbar.links.reverse": "檔案請求",
|
||||||
"navbar.avatar.account": "帳號設定",
|
"navbar.avatar.account": "帳號設定",
|
||||||
@@ -14,11 +14,11 @@ export default {
|
|||||||
"home.title": "<h>自建</h> 檔案分享平台!",
|
"home.title": "<h>自建</h> 檔案分享平台!",
|
||||||
"home.description": "您真的放心把檔案交到第三方檔案平台手中嗎?",
|
"home.description": "您真的放心把檔案交到第三方檔案平台手中嗎?",
|
||||||
"home.bullet.a.name": "完全自建",
|
"home.bullet.a.name": "完全自建",
|
||||||
"home.bullet.a.description": "輕松使用私有服務器搭建檔案分享平台",
|
"home.bullet.a.description": "輕松使用私有伺服器搭建檔案分享平台",
|
||||||
"home.bullet.b.name": "完全隱私",
|
"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.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.start": "開始使用",
|
||||||
"home.button.source": "原始碼",
|
"home.button.source": "原始碼",
|
||||||
// END /
|
// END /
|
||||||
@@ -33,8 +33,8 @@ export default {
|
|||||||
"signin.button.submit": "登入",
|
"signin.button.submit": "登入",
|
||||||
"signIn.notify.totp-required.title": "請繼續兩步驗證",
|
"signIn.notify.totp-required.title": "請繼續兩步驗證",
|
||||||
"signIn.notify.totp-required.description": "請輸入一次性驗證碼",
|
"signIn.notify.totp-required.description": "請輸入一次性驗證碼",
|
||||||
"signIn.oauth.or": "OR",
|
"signIn.oauth.or": "或",
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
"signIn.oauth.signInWith": "登入方式",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -52,18 +52,18 @@ export default {
|
|||||||
"signup.button.submit": "註冊",
|
"signup.button.submit": "註冊",
|
||||||
// END /auth/signup
|
// END /auth/signup
|
||||||
// /auth/totp
|
// /auth/totp
|
||||||
"totp.title": "TOTP Authentication",
|
"totp.title": "TOTP 驗證",
|
||||||
"totp.button.signIn": "Sign in",
|
"totp.button.signIn": "登入",
|
||||||
// END /auth/totp
|
// END /auth/totp
|
||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "忘記密碼?",
|
"resetPassword.title": "忘記密碼?",
|
||||||
"resetPassword.description": "請輸入Email以讓系統寄送重置密碼郵件",
|
"resetPassword.description": "請輸入Email以讓系統寄送重置密碼郵件",
|
||||||
"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.button.back": "返回登入頁面",
|
||||||
"resetPassword.text.resetPassword": "重置密碼",
|
"resetPassword.text.resetPassword": "重置密碼",
|
||||||
"resetPassword.text.enterNewPassword": "請輸入新密碼",
|
"resetPassword.text.enterNewPassword": "請輸入新密碼",
|
||||||
"resetPassword.input.password": "新密碼",
|
"resetPassword.input.password": "新密碼",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "您已重新設定密碼。",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "我的帳號",
|
"account.title": "我的帳號",
|
||||||
"account.card.info.title": "帳號資訊",
|
"account.card.info.title": "帳號資訊",
|
||||||
@@ -73,7 +73,7 @@ export default {
|
|||||||
"account.card.password.title": "密碼",
|
"account.card.password.title": "密碼",
|
||||||
"account.card.password.old": "舊密碼",
|
"account.card.password.old": "舊密碼",
|
||||||
"account.card.password.new": "新密碼",
|
"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": "並未設定密碼,若希望使用E-mail與密碼進行登入則必須要設定密碼。",
|
||||||
"account.notify.password.success": "密碼更改成功!",
|
"account.notify.password.success": "密碼更改成功!",
|
||||||
"account.card.oauth.title": "第三方登入",
|
"account.card.oauth.title": "第三方登入",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "取消聯結",
|
"account.card.oauth.unlink": "取消聯結",
|
||||||
"account.card.oauth.unlinked": "已取消聯結",
|
"account.card.oauth.unlinked": "已取消聯結",
|
||||||
"account.modal.unlink.title": "取消聯結第三方登入",
|
"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.notify.oauth.unlinked.success": "已完成取消聯結",
|
||||||
"account.card.security.title": "安控",
|
"account.card.security.title": "安控",
|
||||||
"account.card.security.totp.enable.description": "請輸入當前密碼開啟兩步驗證",
|
"account.card.security.totp.enable.description": "請輸入當前密碼開啟兩步驗證",
|
||||||
@@ -121,17 +121,17 @@ export default {
|
|||||||
"account.shares.table.name": "分享代號",
|
"account.shares.table.name": "分享代號",
|
||||||
"account.shares.table.description": "描述",
|
"account.shares.table.description": "描述",
|
||||||
"account.shares.table.visitors": "造訪次數",
|
"account.shares.table.visitors": "造訪次數",
|
||||||
"account.shares.table.expiresAt": "Expires on",
|
"account.shares.table.expiresAt": "失效於",
|
||||||
"account.shares.table.createdAt": "Created on",
|
"account.shares.table.createdAt": "創建於",
|
||||||
"account.shares.table.size": "檔案大小",
|
"account.shares.table.size": "檔案大小",
|
||||||
"account.shares.modal.share-informations": "分享資訊",
|
"account.shares.modal.share-informations": "分享資訊",
|
||||||
"account.shares.modal.share-link": "分享聯結",
|
"account.shares.modal.share-link": "分享連結",
|
||||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
"account.shares.modal.delete.title": "刪除: {share}",
|
||||||
"account.shares.modal.delete.description": "您真的想刪除這個分享嗎?",
|
"account.shares.modal.delete.description": "您真的想刪除這個分享嗎?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "檔案請求",
|
"account.reverseShares.title": "檔案請求",
|
||||||
"account.reverseShares.description": "檔案請求允許您建立一個特定的上船畫面,以便外部使用者與您分享檔案",
|
"account.reverseShares.description": "檔案請求允許您建立一個特定的上傳畫面,以便外部使用者與您分享檔案",
|
||||||
"account.reverseShares.title.empty": "這里空空如也 👀",
|
"account.reverseShares.title.empty": "這里空空如也 👀",
|
||||||
"account.reverseShares.description.empty": "您沒有建立任何檔案請求",
|
"account.reverseShares.description.empty": "您沒有建立任何檔案請求",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
@@ -150,14 +150,14 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "年",
|
"account.reverseShares.modal.expiration.year-singular": "年",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "年",
|
"account.reverseShares.modal.expiration.year-plural": "年",
|
||||||
"account.reverseShares.modal.max-size.label": "上傳大小上限",
|
"account.reverseShares.modal.max-size.label": "上傳大小上限",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "發送電子郵件通知",
|
||||||
"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": "當這個檔案請求連結被用於分享時,發送Email提醒",
|
||||||
"account.reverseShares.modal.simplified": "Simple mode",
|
"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": "Public access",
|
"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.label": "最大使用次數",
|
||||||
"account.reverseShares.modal.max-use.description": "這個檔案請求聯結可被用於建立分享的最大使用次數",
|
"account.reverseShares.modal.max-use.description": "這個檔案請求連結可被用於建立分享的最大使用次數",
|
||||||
"account.reverseShare.never-expires": "這個檔案請求永不過期",
|
"account.reverseShare.never-expires": "這個檔案請求永不過期",
|
||||||
"account.reverseShare.expires-on": "這個檔案請求將過期於 {expiration}",
|
"account.reverseShare.expires-on": "這個檔案請求將過期於 {expiration}",
|
||||||
"account.reverseShares.table.no-shares": "當前沒有建立任何分享",
|
"account.reverseShares.table.no-shares": "當前沒有建立任何分享",
|
||||||
@@ -167,14 +167,14 @@ export default {
|
|||||||
"account.reverseShares.table.remaining": "剩餘使用次數",
|
"account.reverseShares.table.remaining": "剩餘使用次數",
|
||||||
"account.reverseShares.table.max-size": "上傳大小上限",
|
"account.reverseShares.table.max-size": "上傳大小上限",
|
||||||
"account.reverseShares.table.expires": "過期時間",
|
"account.reverseShares.table.expires": "過期時間",
|
||||||
"account.reverseShares.modal.reverse-share-link": "檔案請求聯結",
|
"account.reverseShares.modal.reverse-share-link": "檔案請求連結",
|
||||||
"account.reverseShares.modal.delete.title": "刪除檔案請求聯結",
|
"account.reverseShares.modal.delete.title": "刪除檔案請求連結",
|
||||||
"account.reverseShares.modal.delete.description": "您真的想刪除此檔案請求聯結嗎?聯結下所有關聯的檔案都將被刪除",
|
"account.reverseShares.modal.delete.description": "您真的想刪除此檔案請求連結嗎?聯結下所有關聯的檔案都將被刪除",
|
||||||
// END /account/reverseShares
|
// END /account/reverseShares
|
||||||
// /admin
|
// /admin
|
||||||
"admin.title": "管理",
|
"admin.title": "管理",
|
||||||
"admin.button.users": "使用者管理",
|
"admin.button.users": "使用者管理",
|
||||||
"admin.button.shares": "Share management",
|
"admin.button.shares": "檔案管理",
|
||||||
"admin.button.config": "配置管理",
|
"admin.button.config": "配置管理",
|
||||||
"admin.version": "版本",
|
"admin.version": "版本",
|
||||||
// END /admin
|
// END /admin
|
||||||
@@ -183,14 +183,14 @@ export default {
|
|||||||
"admin.users.table.username": "使用者名稱",
|
"admin.users.table.username": "使用者名稱",
|
||||||
"admin.users.table.email": "Email",
|
"admin.users.table.email": "Email",
|
||||||
"admin.users.table.admin": "管理員",
|
"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.admin-privileges": "管理員",
|
||||||
"admin.users.edit.update.change-password.title": "更改密碼",
|
"admin.users.edit.update.change-password.title": "更改密碼",
|
||||||
"admin.users.edit.update.change-password.field": "新密碼",
|
"admin.users.edit.update.change-password.field": "新密碼",
|
||||||
"admin.users.edit.update.change-password.button": "保存新密碼",
|
"admin.users.edit.update.change-password.button": "保存新密碼",
|
||||||
"admin.users.edit.update.notify.password.success": "密碼更新成功!",
|
"admin.users.edit.update.notify.password.success": "密碼更新成功!",
|
||||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
"admin.users.edit.delete.title": "刪除使用者 {username} ?",
|
||||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
"admin.users.edit.delete.description": "您真的想刪除這個帳號,並刪除該使用者所有的檔案嗎?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "建立使用者",
|
"admin.users.modal.create.title": "建立使用者",
|
||||||
"admin.users.modal.create.username": "使用者名稱",
|
"admin.users.modal.create.username": "使用者名稱",
|
||||||
@@ -202,24 +202,24 @@ export default {
|
|||||||
"admin.users.modal.create.admin.description": "如果勾選,使用者將能查看管理員面板",
|
"admin.users.modal.create.admin.description": "如果勾選,使用者將能查看管理員面板",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Share management",
|
"admin.shares.title": "檔案管理",
|
||||||
"admin.shares.table.id": "Share ID",
|
"admin.shares.table.id": "分享 ID",
|
||||||
"admin.shares.table.username": "Creator",
|
"admin.shares.table.username": "建立者",
|
||||||
"admin.shares.table.visitors": "Visitors",
|
"admin.shares.table.visitors": "造訪次數",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "失效於",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"admin.shares.edit.delete.title": "刪除: {id}",
|
||||||
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
|
"admin.shares.edit.delete.description": "您真的想刪除這個檔案嗎?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "上傳",
|
"upload.title": "上傳",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "您真的想離開這個網頁嗎?您的上傳會被中止。",
|
||||||
"upload.notify.generic-error": "建立分享的過程中發生了錯誤",
|
"upload.notify.generic-error": "建立分享的過程中發生了錯誤",
|
||||||
"upload.notify.count-failed": "{count} 檔案上傳失敗,請重試",
|
"upload.notify.count-failed": "{count} 檔案上傳失敗,請重試",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "無效的檔案請求連結",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "此檔案請求連結已過期/失效。",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "上傳檔案",
|
"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}",
|
"upload.dropzone.notify.file-too-big": "您的檔案超過了最大上傳限制 {maxSize}",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "檔案名稱",
|
"upload.filelist.name": "檔案名稱",
|
||||||
@@ -231,9 +231,9 @@ export default {
|
|||||||
"upload.modal.not-signed-in": "當前沒有登入",
|
"upload.modal.not-signed-in": "當前沒有登入",
|
||||||
"upload.modal.not-signed-in-description": "您將不能刪除您的分享或查看查看次數",
|
"upload.modal.not-signed-in-description": "您將不能刪除您的分享或查看查看次數",
|
||||||
"upload.modal.expires.never": "永不",
|
"upload.modal.expires.never": "永不",
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
"upload.modal.expires.never-long": "永久分享",
|
||||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
"upload.modal.expires.error.too-long": "過期時間最大限制為 {max}",
|
||||||
"upload.modal.link.label": "分享聯結",
|
"upload.modal.link.label": "分享連結",
|
||||||
"upload.modal.expires.label": "過期時間",
|
"upload.modal.expires.label": "過期時間",
|
||||||
"upload.modal.expires.minute-singular": "分鐘",
|
"upload.modal.expires.minute-singular": "分鐘",
|
||||||
"upload.modal.expires.minute-plural": "分鐘",
|
"upload.modal.expires.minute-plural": "分鐘",
|
||||||
@@ -247,13 +247,13 @@ export default {
|
|||||||
"upload.modal.expires.month-plural": "月",
|
"upload.modal.expires.month-plural": "月",
|
||||||
"upload.modal.expires.year-singular": "年",
|
"upload.modal.expires.year-singular": "年",
|
||||||
"upload.modal.expires.year-plural": "年",
|
"upload.modal.expires.year-plural": "年",
|
||||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
"upload.modal.accordion.name-and-description.title": "名稱與說明",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
"upload.modal.accordion.name-and-description.name.placeholder": "檔案名稱",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
"upload.modal.accordion.name-and-description.description.placeholder": "檔案備註",
|
||||||
"upload.modal.accordion.email.title": "Email提醒",
|
"upload.modal.accordion.email.title": "Email提醒",
|
||||||
"upload.modal.accordion.email.placeholder": "收件人Email地址",
|
"upload.modal.accordion.email.placeholder": "收件人Email地址",
|
||||||
"upload.modal.accordion.email.invalid-email": "Email地址不可用",
|
"upload.modal.accordion.email.invalid-email": "Email地址不可用",
|
||||||
"upload.modal.accordion.security.title": "安控",
|
"upload.modal.accordion.security.title": "安全性選項",
|
||||||
"upload.modal.accordion.security.password.label": "密碼保護",
|
"upload.modal.accordion.security.password.label": "密碼保護",
|
||||||
"upload.modal.accordion.security.password.placeholder": "無密碼",
|
"upload.modal.accordion.security.password.placeholder": "無密碼",
|
||||||
"upload.modal.accordion.security.max-views.label": "最大查看次數",
|
"upload.modal.accordion.security.max-views.label": "最大查看次數",
|
||||||
@@ -262,7 +262,7 @@ export default {
|
|||||||
"upload.modal.completed.never-expires": "這個分享永不過期",
|
"upload.modal.completed.never-expires": "這個分享永不過期",
|
||||||
"upload.modal.completed.expires-on": "這個分享將過期於 {expiration}。",
|
"upload.modal.completed.expires-on": "這個分享將過期於 {expiration}。",
|
||||||
"upload.modal.completed.share-ready": "分享建立完畢",
|
"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
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "分享 {shareId}",
|
"share.title": "分享 {shareId}",
|
||||||
@@ -272,19 +272,19 @@ export default {
|
|||||||
"share.error.removed.title": "分享已刪除",
|
"share.error.removed.title": "分享已刪除",
|
||||||
"share.error.not-found.title": "分享未找到",
|
"share.error.not-found.title": "分享未找到",
|
||||||
"share.error.not-found.description": "分享檔案遺失了",
|
"share.error.not-found.description": "分享檔案遺失了",
|
||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "私人分享",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "您沒有權限存取此檔案",
|
||||||
"share.modal.password.title": "需要密碼",
|
"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.password": "密碼",
|
||||||
"share.modal.error.invalid-password": "密碼錯誤",
|
"share.modal.error.invalid-password": "密碼錯誤",
|
||||||
"share.button.download-all": "全部下載",
|
"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.modal.file-link": "檔案連結",
|
||||||
"share.table.name": "檔案名稱",
|
"share.table.name": "檔案名稱",
|
||||||
"share.table.size": "檔案大小",
|
"share.table.size": "檔案大小",
|
||||||
"share.modal.file-preview.error.not-supported.title": "該檔案類型不支持預覽",
|
"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]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "編輯 {shareId}",
|
"share.edit.title": "編輯 {shareId}",
|
||||||
@@ -301,90 +301,92 @@ export default {
|
|||||||
"admin.config.category.oauth": "第三方登入",
|
"admin.config.category.oauth": "第三方登入",
|
||||||
"admin.config.general.app-name": "App 名稱",
|
"admin.config.general.app-name": "App 名稱",
|
||||||
"admin.config.general.app-name.description": "這個 App 的名稱",
|
"admin.config.general.app-name.description": "這個 App 的名稱",
|
||||||
"admin.config.general.app-url": "App URL",
|
"admin.config.general.app-url": "App 網址",
|
||||||
"admin.config.general.app-url.description": "Pingvin Share 的 URL",
|
"admin.config.general.app-url.description": "Pingvin Share 的 URL",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "安全 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.secure-cookies.description": "是否要在cookies中設定安全標籤。若啟用,這個網站將無法透過HTTP瀏覽。",
|
||||||
"admin.config.general.show-home-page": "顯示首頁",
|
"admin.config.general.show-home-page": "顯示首頁",
|
||||||
"admin.config.general.show-home-page.description": "是否顯示首頁",
|
"admin.config.general.show-home-page.description": "是否顯示首頁",
|
||||||
"admin.config.general.session-duration": "Session Duration",
|
"admin.config.general.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": "使用者需要必須要重新登入的最長時間 (預設: 3 個月)",
|
||||||
"admin.config.general.logo": "Logo",
|
"admin.config.general.logo": "Logo",
|
||||||
"admin.config.general.logo.description": "上傳個性化 Logo,圖片必須是長寬比 1:1 的 PNG 格式",
|
"admin.config.general.logo.description": "上傳個性化 Logo,圖片必須是長寬比 1:1 的 PNG 格式",
|
||||||
"admin.config.general.logo.placeholder": "選擇圖片",
|
"admin.config.general.logo.placeholder": "選擇圖片",
|
||||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
"admin.config.email.enable-share-email-recipients": "啟用電子郵件收件者分享",
|
||||||
"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.description": "是否允許與收件者分享電子郵件。僅當 SMTP 已啟用時才啟用此功能。",
|
||||||
"admin.config.email.share-recipients-subject": "分享Email通知主題",
|
"admin.config.email.share-recipients-subject": "分享Email通知主題",
|
||||||
"admin.config.email.share-recipients-subject.description": "發送分享Email通知的主題",
|
"admin.config.email.share-recipients-subject.description": "發送分享Email通知的主題",
|
||||||
"admin.config.email.share-recipients-message": "分享Email通知內容",
|
"admin.config.email.share-recipients-message": "分享Email通知內容",
|
||||||
"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": "發送到接收者的分享Email通知具體內容。可使用的參數有:\n {creator} - 分享建立者\n {creatorEmail} - 分享建立者的電子郵件\n {shareUrl} - 分享連結\n {desc} - 分享描述\n {expires} - 分享過期時間\n 這些參數會被實際的值所替代",
|
||||||
"admin.config.email.reverse-share-subject": "檔案請求Email通知主題",
|
"admin.config.email.reverse-share-subject": "檔案請求Email通知主題",
|
||||||
"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": "檔案請求Email通知內容",
|
"admin.config.email.reverse-share-message": "檔案請求Email通知內容",
|
||||||
"admin.config.email.reverse-share-message.description": "當有人使用了您的檔案請求聯結時,發送的通知內容。{shareUrl} 會被建立者的使用者名稱和分享聯結代替",
|
"admin.config.email.reverse-share-message.description": "當有人使用了您的檔案請求連結時,發送的通知內容。{shareUrl} 會被建立者的使用者名稱和分享連結代替",
|
||||||
"admin.config.email.reset-password-subject": "重置密碼Email通知主題",
|
"admin.config.email.reset-password-subject": "重置密碼Email通知主題",
|
||||||
"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": "重置密碼Email通知內容",
|
"admin.config.email.reset-password-message": "重置密碼Email通知內容",
|
||||||
"admin.config.email.reset-password-message.description": "當使用者發動重置密碼時,重置密碼通知內容。{url} 會被重置密碼聯結代替",
|
"admin.config.email.reset-password-message.description": "當使用者發動重置密碼時,重置密碼通知內容。{url} 會被重置密碼聯結代替",
|
||||||
"admin.config.email.invite-subject": "邀請Email通知主題",
|
"admin.config.email.invite-subject": "邀請Email通知主題",
|
||||||
"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": "邀請Email通知內容",
|
"admin.config.email.invite-message": "邀請Email通知內容",
|
||||||
"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} 會被Email代替,{password} 會被密碼代替",
|
||||||
"admin.config.share.allow-registration": "允許註冊",
|
"admin.config.share.allow-registration": "允許註冊",
|
||||||
"admin.config.share.allow-registration.description": "是否允許註冊",
|
"admin.config.share.allow-registration.description": "是否允許註冊",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "是否允許未登入進行分享",
|
"admin.config.share.allow-unauthenticated-shares": "是否允許未登入進行分享",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "是否允許未登入的使用者建立分享",
|
"admin.config.share.allow-unauthenticated-shares.description": "是否允許未登入的使用者建立分享",
|
||||||
"admin.config.share.max-expiration": "最大過期時間",
|
"admin.config.share.max-expiration": "最大過期時間",
|
||||||
"admin.config.share.max-expiration.description": "最大過期時間(小時),若設定為0則為永不過期",
|
"admin.config.share.max-expiration.description": "最大過期時間(小時),若設定為0則為永不過期",
|
||||||
|
"admin.config.share.share-id-length": "預設分享ID長度",
|
||||||
|
"admin.config.share.share-id-length.description": "預設的自動生成分享ID長度。這個設定同時用於生成檔案請求連結。小於 8 被認為是不安全的。",
|
||||||
"admin.config.share.max-size": "最大檔案上限",
|
"admin.config.share.max-size": "最大檔案上限",
|
||||||
"admin.config.share.max-size.description": "最大檔案上限,單位 bytes (1GB=1024MB=1048576KB=1073741824bytes)",
|
"admin.config.share.max-size.description": "最大檔案上限,單位 bytes (1GB=1024MB=1048576KB=1073741824bytes)",
|
||||||
"admin.config.share.zip-compression-level": "Zip 壓縮等級",
|
"admin.config.share.zip-compression-level": "Zip 壓縮等級",
|
||||||
"admin.config.share.zip-compression-level.description": "調整壓縮等級以平衡檔案大小和壓縮速度。 有效值範圍從 0 到 9,其中 0 表示無壓縮,9 表示最大壓縮",
|
"admin.config.share.zip-compression-level.description": "調整壓縮等級以平衡檔案大小和壓縮速度。 有效值範圍從 0 到 9,其中 0 表示無壓縮,9 表示最大壓縮",
|
||||||
"admin.config.share.chunk-size": "Chunk size",
|
"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": "調整分塊大小 (單位:Byte) 以平衡上傳的效率與可靠度。更小的分塊大小在不穩定的網路環境中可以提升成功率,更大的分塊大小可以在穩定的網路環境中提高上傳速度。",
|
||||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
"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.share.auto-open-share-modal.description": "分享設定會在使用者選擇檔案後自動開啟而無須手動點擊。",
|
||||||
"admin.config.smtp.enabled": "Enable",
|
"admin.config.smtp.enabled": "啟用",
|
||||||
"admin.config.smtp.enabled.description": "是否開啟 SMTP,需輸入Host、Port、發送郵箱、使用者名稱和密碼後才有作用",
|
"admin.config.smtp.enabled.description": "是否開啟 SMTP,需輸入Host、Port、發送郵箱、使用者名稱和密碼後才有作用",
|
||||||
"admin.config.smtp.host": "Host",
|
"admin.config.smtp.host": "主機",
|
||||||
"admin.config.smtp.host.description": "SMTP Host",
|
"admin.config.smtp.host.description": "SMTP 主機地址",
|
||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "通訊埠",
|
||||||
"admin.config.smtp.port.description": "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.email.description": "發送的郵箱地址",
|
||||||
"admin.config.smtp.username": "使用者名稱",
|
"admin.config.smtp.username": "使用者名稱",
|
||||||
"admin.config.smtp.username.description": "SMTP 主機使用者名稱",
|
"admin.config.smtp.username.description": "SMTP 主機使用者名稱",
|
||||||
"admin.config.smtp.password": "密碼",
|
"admin.config.smtp.password": "密碼",
|
||||||
"admin.config.smtp.password.description": "SMTP 主機密碼",
|
"admin.config.smtp.password.description": "SMTP 主機密碼",
|
||||||
"admin.config.smtp.button.test": "發送測試Email",
|
"admin.config.smtp.button.test": "發送測試Email",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "信任未經認證的 SMTP 伺服器證書",
|
||||||
"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.description": "僅在你信任此自簽章證書時啟用此設定",
|
||||||
"admin.config.oauth.allow-registration": "允許註冊",
|
"admin.config.oauth.allow-registration": "允許註冊",
|
||||||
"admin.config.oauth.allow-registration.description": "允許使用者以第三方登入註冊",
|
"admin.config.oauth.allow-registration.description": "允許使用者以第三方登入註冊",
|
||||||
"admin.config.oauth.ignore-totp": "略過 TOTP",
|
"admin.config.oauth.ignore-totp": "略過 TOTP",
|
||||||
"admin.config.oauth.ignore-totp.description": "當使用者使用第三方登入時,略過 TOTP 驗證",
|
"admin.config.oauth.ignore-totp.description": "當使用者使用第三方登入時,略過 TOTP 驗證",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "停用密碼登入",
|
||||||
"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": "當你停用密碼登入時,確保你有啟用任意 OAuth 服務以避免無法存取",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "啟用 Github 登入",
|
"admin.config.oauth.github-enabled.description": "啟用 Github 登入",
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
"admin.config.oauth.github-client-id": "Github 的客戶端 ID",
|
||||||
"admin.config.oauth.github-client-id.description": "GitHub OAuth 的 Client ID",
|
"admin.config.oauth.github-client-id.description": "GitHub OAuth 的客戶端 ID",
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
"admin.config.oauth.github-client-secret": "Github 客戶端權杖",
|
||||||
"admin.config.oauth.github-client-secret.description": "GitHub OAuth 的 Client secret",
|
"admin.config.oauth.github-client-secret.description": "GitHub OAuth 的客戶端權杖",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "啟用 Google 登入",
|
"admin.config.oauth.google-enabled.description": "啟用 Google 登入",
|
||||||
"admin.config.oauth.google-client-id": "Google Client ID",
|
"admin.config.oauth.google-client-id": "Google 的客戶端 ID",
|
||||||
"admin.config.oauth.google-client-id.description": "Google OAuth 的 Client ID",
|
"admin.config.oauth.google-client-id.description": "Google OAuth 的客戶端 ID",
|
||||||
"admin.config.oauth.google-client-secret": "Google Client secret",
|
"admin.config.oauth.google-client-secret": "Google 的客戶端權杖",
|
||||||
"admin.config.oauth.google-client-secret.description": "Google OAuth 的 Client secret",
|
"admin.config.oauth.google-client-secret.description": "Google OAuth 的客戶端權杖",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "啟用 Microsoft 登入",
|
"admin.config.oauth.microsoft-enabled.description": "啟用 Microsoft 登入",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||||
"admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth 的 Tenant ID\ncommon: 擁有 Microsoft Entra ID 的個人 Microsoft 帳號和工作或學校帳號的使用者可以登入該應用程式。\norganizations: 擁有 Microsoft Entra ID 的工作或學校帳號的使用者才能登入應用程式。\nconsumers: 只有擁有個人 Microsoft 帳號的使用者才能登入該應用程式。\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: 只有來自特定 Microsoft Entra 租戶的使用者(具有工作或學校帳號的目錄成員或具有個人 Microsoft 帳號的目錄成員)才能登入應用程式。",
|
"admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth 的 Tenant ID\ncommon: 擁有 Microsoft Entra ID 的個人 Microsoft 帳號和工作或學校帳號的使用者可以登入該應用程式。\norganizations: 擁有 Microsoft Entra ID 的工作或學校帳號的使用者才能登入應用程式。\nconsumers: 只有擁有個人 Microsoft 帳號的使用者才能登入該應用程式。\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: 只有來自特定 Microsoft Entra 租戶的使用者(具有工作或學校帳號的目錄成員或具有個人 Microsoft 帳號的目錄成員)才能登入應用程式。",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
"admin.config.oauth.microsoft-client-id": "Microsoft 的客戶端 ID",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth 的 Client ID",
|
"admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth 的客戶端 ID",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
"admin.config.oauth.microsoft-client-secret": "Microsoft 的客戶端權杖",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth 的 Client secret",
|
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth 的客戶端權杖",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "啟用 Discord 登入",
|
"admin.config.oauth.discord-enabled.description": "啟用 Discord 登入",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||||
@@ -401,6 +403,8 @@ export default {
|
|||||||
"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": "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-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
"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": "Path to roles in OpenID Connect token",
|
||||||
@@ -432,24 +436,42 @@ export default {
|
|||||||
"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": "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.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "查無此頁",
|
"404.description": "查無此頁",
|
||||||
"404.button.home": "返回主頁",
|
"404.button.home": "返回主頁",
|
||||||
// error
|
// error
|
||||||
"error.title": "Error",
|
"error.title": "錯誤",
|
||||||
"error.description": "Oops!",
|
"error.description": "哎呀!",
|
||||||
"error.button.back": "返回上一頁",
|
"error.button.back": "返回上一頁",
|
||||||
"error.msg.default": "發生預期外的問題。",
|
"error.msg.default": "發生預期外的問題。",
|
||||||
"error.msg.access_denied": "您取消了身分驗證,請重試。",
|
"error.msg.access_denied": "您取消了身分驗證,請重試。",
|
||||||
"error.msg.expired_token": "身分驗證過程逾時,請重試。",
|
"error.msg.expired_token": "身分驗證過程逾時,請重試。",
|
||||||
"error.msg.invalid_token": "Internal Error",
|
"error.msg.invalid_token": "內部錯誤",
|
||||||
"error.msg.no_user": "與此 {0} 帳號關聯的使用者不存在。",
|
"error.msg.no_user": "與此帳號 {0} 關聯的使用者不存在。",
|
||||||
"error.msg.no_email": "無法從此 {0} 帳號取得Email地址。",
|
"error.msg.no_email": "無法從此帳號 {0} 取得Email地址。",
|
||||||
"error.msg.already_linked": "此 {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": "This {0} account is unverified, please try again after verification.",
|
"error.msg.unverified_account": "此帳號 {0} 並未驗證,請驗證後再嘗試。",
|
||||||
"error.msg.user_not_allowed": "You are not allowed to sign in.",
|
"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_github": "GitHub",
|
||||||
"error.param.provider_google": "Google",
|
"error.param.provider_google": "Google",
|
||||||
"error.param.provider_microsoft": "Microsoft",
|
"error.param.provider_microsoft": "Microsoft",
|
||||||
@@ -467,20 +489,21 @@ export default {
|
|||||||
"common.button.generate": "自動產生",
|
"common.button.generate": "自動產生",
|
||||||
"common.button.done": "完成",
|
"common.button.done": "完成",
|
||||||
"common.text.link": "聯結",
|
"common.text.link": "聯結",
|
||||||
"common.text.navigate-to-link": "Visit link",
|
"common.text.navigate-to-link": "瀏覽連結",
|
||||||
"common.text.or": "或",
|
"common.text.or": "或",
|
||||||
"common.text.redirecting": "Redirecting...",
|
"common.text.redirecting": "正在跳轉中...",
|
||||||
"common.button.go-back": "返回",
|
"common.button.go-back": "返回",
|
||||||
"common.button.go-home": "Go home",
|
"common.button.go-home": "返回首頁",
|
||||||
"common.notify.copied": "已複製到剪貼簿",
|
"common.notify.copied": "已複製到剪貼簿",
|
||||||
|
"common.notify.copied-link": "已複製到剪貼簿",
|
||||||
"common.success": "成功",
|
"common.success": "成功",
|
||||||
"common.error": "錯誤",
|
"common.error": "錯誤",
|
||||||
"common.error.unknown": "發生預期外錯誤",
|
"common.error.unknown": "發生預期外錯誤",
|
||||||
"common.error.invalid-email": "Email地址不可用",
|
"common.error.invalid-email": "Email地址不可用",
|
||||||
"common.error.too-short": "必須不少於 {length} 個字元",
|
"common.error.too-short": "必須不少於 {length} 個字元",
|
||||||
"common.error.too-long": "必須不超過 {length} 個字元",
|
"common.error.too-long": "必須不超過 {length} 個字元",
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
"common.error.number-too-small": "必須大於 {min}",
|
||||||
"common.error.number-too-large": "Must be at most {max}",
|
"common.error.number-too-large": "必須小於 {max}",
|
||||||
"common.error.exact-length": "必須為 {length} 個字元",
|
"common.error.exact-length": "必須為 {length} 個字元",
|
||||||
"common.error.invalid-number": "必須為數字",
|
"common.error.invalid-number": "必須為數字",
|
||||||
"common.error.field-required": "必填"
|
"common.error.field-required": "必填"
|
||||||
|
|||||||
@@ -160,7 +160,9 @@ const MyShares = () => {
|
|||||||
clipboard.copy(
|
clipboard.copy(
|
||||||
`${window.location.origin}/s/${share.id}`,
|
`${window.location.origin}/s/${share.id}`,
|
||||||
);
|
);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(
|
||||||
|
t("common.notify.copied-link"),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
showShareLinkModal(modals, share.id);
|
showShareLinkModal(modals, share.id);
|
||||||
}
|
}
|
||||||
@@ -197,7 +199,7 @@ const MyShares = () => {
|
|||||||
reverseShare.token
|
reverseShare.token
|
||||||
}`,
|
}`,
|
||||||
);
|
);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(t("common.notify.copied-link"));
|
||||||
} else {
|
} else {
|
||||||
showReverseShareLinkModal(
|
showReverseShareLinkModal(
|
||||||
modals,
|
modals,
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ const MyShares = () => {
|
|||||||
clipboard.copy(
|
clipboard.copy(
|
||||||
`${window.location.origin}/s/${share.id}`,
|
`${window.location.origin}/s/${share.id}`,
|
||||||
);
|
);
|
||||||
toast.success(t("common.notify.copied"));
|
toast.success(t("common.notify.copied-link"));
|
||||||
} else {
|
} else {
|
||||||
showShareLinkModal(modals, share.id);
|
showShareLinkModal(modals, share.id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ import LogoConfigInput from "../../../components/admin/configuration/LogoConfigI
|
|||||||
import TestEmailButton from "../../../components/admin/configuration/TestEmailButton";
|
import TestEmailButton from "../../../components/admin/configuration/TestEmailButton";
|
||||||
import CenterLoader from "../../../components/core/CenterLoader";
|
import CenterLoader from "../../../components/core/CenterLoader";
|
||||||
import useConfig from "../../../hooks/config.hook";
|
import useConfig from "../../../hooks/config.hook";
|
||||||
|
import useTranslate from "../../../hooks/useTranslate.hook";
|
||||||
import configService from "../../../services/config.service";
|
import configService from "../../../services/config.service";
|
||||||
import { AdminConfig, UpdateConfig } from "../../../types/config.type";
|
import { AdminConfig, UpdateConfig } from "../../../types/config.type";
|
||||||
import { camelToKebab } from "../../../utils/string.util";
|
import { camelToKebab } from "../../../utils/string.util";
|
||||||
import toast from "../../../utils/toast.util";
|
import toast from "../../../utils/toast.util";
|
||||||
import useTranslate from "../../../hooks/useTranslate.hook";
|
|
||||||
|
|
||||||
export default function AppShellDemo() {
|
export default function AppShellDemo() {
|
||||||
const theme = useMantineTheme();
|
const theme = useMantineTheme();
|
||||||
@@ -52,9 +52,7 @@ export default function AppShellDemo() {
|
|||||||
.changeLogo(logo)
|
.changeLogo(logo)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setLogo(null);
|
setLogo(null);
|
||||||
toast.success(
|
toast.success(t("admin.config.notify.logo-success"));
|
||||||
"Logo updated successfully. It may take a few minutes to update on the website.",
|
|
||||||
);
|
|
||||||
})
|
})
|
||||||
.catch(toast.axiosError);
|
.catch(toast.axiosError);
|
||||||
}
|
}
|
||||||
@@ -64,12 +62,12 @@ export default function AppShellDemo() {
|
|||||||
.updateMany(updatedConfigVariables)
|
.updateMany(updatedConfigVariables)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setUpdatedConfigVariables([]);
|
setUpdatedConfigVariables([]);
|
||||||
toast.success("Configurations updated successfully");
|
toast.success(t("admin.config.notify.success"));
|
||||||
})
|
})
|
||||||
.catch(toast.axiosError);
|
.catch(toast.axiosError);
|
||||||
void config.refresh();
|
void config.refresh();
|
||||||
} else {
|
} else {
|
||||||
toast.success("No changes to save");
|
toast.success(t("admin.config.notify.no-changes"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ const Upload = ({
|
|||||||
),
|
),
|
||||||
enableEmailRecepients: config.get("email.enableShareEmailRecipients"),
|
enableEmailRecepients: config.get("email.enableShareEmailRecipients"),
|
||||||
maxExpirationInHours: config.get("share.maxExpiration"),
|
maxExpirationInHours: config.get("share.maxExpiration"),
|
||||||
|
shareIdLength: config.get("share.shareIdLength"),
|
||||||
simplified,
|
simplified,
|
||||||
},
|
},
|
||||||
files,
|
files,
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"conventional-changelog-cli": "^3.0.0"
|
"conventional-changelog-cli": "^3.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.4.0",
|
"version": "1.7.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "cd frontend && npm run format && cd ../backend && npm run format",
|
"format": "cd frontend && npm run format && cd ../backend && npm run format",
|
||||||
"lint": "cd frontend && npm run lint && cd ../backend && npm run lint",
|
"lint": "cd frontend && npm run lint && cd ../backend && npm run lint",
|
||||||
|
|||||||
@@ -1,14 +1,11 @@
|
|||||||
:3000 {
|
:3000 {
|
||||||
reverse_proxy /* http://localhost:{$PORT:3333} {
|
# Reverse proxy for /api
|
||||||
trusted_proxies 0.0.0.0/0
|
|
||||||
}
|
|
||||||
|
|
||||||
reverse_proxy /api/* http://localhost:{$BACKEND_PORT:8080} {
|
reverse_proxy /api/* http://localhost:{$BACKEND_PORT:8080} {
|
||||||
trusted_proxies 0.0.0.0/0
|
trusted_proxies 0.0.0.0/0
|
||||||
}
|
}
|
||||||
|
|
||||||
log {
|
# Reverse proxy for all other requests
|
||||||
output file /var/log/caddy/access.log
|
reverse_proxy /* http://localhost:{$PORT:3333} {
|
||||||
level WARN
|
trusted_proxies 0.0.0.0/0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
32
scripts/docker/create-user.sh
Normal file
32
scripts/docker/create-user.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# If we aren't running as root, just exec the CMD
|
||||||
|
[ "$(id -u)" -ne 0 ] && exec "$@"
|
||||||
|
|
||||||
|
echo "Creating user and group..."
|
||||||
|
|
||||||
|
PUID=${PUID:-1000}
|
||||||
|
PGID=${PGID:-1000}
|
||||||
|
|
||||||
|
# Check if the group with PGID exists; if not, create it
|
||||||
|
if ! getent group pingvin-share-group > /dev/null 2>&1; then
|
||||||
|
addgroup -g "$PGID" pingvin-share-group
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if a user with PUID exists; if not, create it
|
||||||
|
if ! id -u pingvin-share > /dev/null 2>&1; then
|
||||||
|
if ! getent passwd "$PUID" > /dev/null 2>&1; then
|
||||||
|
adduser -u "$PUID" -G pingvin-share-group pingvin-share > /dev/null 2>&1
|
||||||
|
else
|
||||||
|
# If a user with the PUID already exists, use that user
|
||||||
|
existing_user=$(getent passwd "$PUID" | cut -d: -f1)
|
||||||
|
echo "Using existing user: $existing_user"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Change ownership of the data directory
|
||||||
|
mkdir -p /opt/app/backend/data
|
||||||
|
find /opt/app/backend/data \( ! -group "${PGID}" -o ! -user "${PUID}" \) -exec chown "${PUID}:${PGID}" {} +
|
||||||
|
# Change ownership of the frontend public directory
|
||||||
|
find /opt/app/frontend/public \( ! -group "${PGID}" -o ! -user "${PUID}" \) -exec chown "${PUID}:${PGID}" {} +
|
||||||
|
|
||||||
|
# Switch to the non-root user
|
||||||
|
exec su-exec "$PUID:$PGID" "$@"
|
||||||
@@ -5,9 +5,9 @@ cp -rn /tmp/img/* /opt/app/frontend/public/img
|
|||||||
|
|
||||||
# Start Caddy
|
# Start Caddy
|
||||||
if [ "$TRUST_PROXY" = "true" ]; then
|
if [ "$TRUST_PROXY" = "true" ]; then
|
||||||
caddy start --config /etc/caddy/Caddyfile.trust-proxy &
|
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile.trust-proxy &
|
||||||
else
|
else
|
||||||
caddy start --config /etc/caddy/Caddyfile &
|
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run the frontend server
|
# Run the frontend server
|
||||||
Reference in New Issue
Block a user