Compare commits

...

22 Commits

Author SHA1 Message Date
Elias Schneider
8a7db6bf97 release: 1.8.2 2025-01-21 19:01:38 +01:00
Elias Schneider
f78777b284 chore(translations): update translations via Crowdin (#748)
* New translations en-us.ts (Japanese)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Spanish)
2025-01-21 18:57:45 +01:00
Elias Schneider
3a534c7512 fix: normal share gets attached to previously visited reverse share 2025-01-21 18:57:33 +01:00
Elias Schneider
2b7d3c0a8a fix: wrong TOTP validation for password 2025-01-21 18:44:06 +01:00
Webysther Sperandio
7fea358410 chore: add major tag to Docker image (#747) 2025-01-14 10:13:26 +01:00
Elias Schneider
f65c1ef7d8 docs: add ghcr.io image to docker-compose.yml 2025-01-08 12:27:56 +01:00
Elias Schneider
9e4496dc03 ci/cd: add semver versioning for Docker images 2025-01-08 12:20:12 +01:00
Webysther Sperandio
235772a54b ci/cd: add ghrc.io login to action (#738) 2025-01-08 12:16:50 +01:00
Elias Schneider
784e80db5b chore(translations): update translations via Crowdin (#728)
* New translations en-us.ts (French)

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

* New translations en-us.ts (Italian)

* New translations en-us.ts (German)

* New translations en-us.ts (Vietnamese)
2025-01-06 11:00:12 +01:00
Elias Schneider
0442ece9ba refactor: remove unnecessary console.log 2025-01-04 01:32:30 +01:00
Elias Schneider
7f9f8b6fe7 release: 1.8.1 2025-01-04 01:28:23 +01:00
Elias Schneider
bf1b2633c8 refactor: run formatter 2025-01-04 01:28:05 +01:00
Elias Schneider
b3ea96c191 fix: wrong validation for expiration in reverse share modal 2025-01-04 01:27:59 +01:00
Elias Schneider
4a7076a094 release: 1.8.0 2025-01-02 18:25:34 +01:00
Elias Schneider
0c62485833 chore: add migration for new timespan type 2025-01-02 18:22:02 +01:00
Elias Schneider
2c555eaf9f chore(translations): update translations via Crowdin (#722)
* New translations en-us.ts (Japanese)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Czech)

* New translations en-us.ts (French)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Danish)

* New translations en-us.ts (Greek)

* New translations en-us.ts (Finnish)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Korean)

* New translations en-us.ts (Polish)

* New translations en-us.ts (Slovenian)

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

* New translations en-us.ts (Swedish)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Ukrainian)

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

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

* New translations en-us.ts (Vietnamese)

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

* New translations en-us.ts (Thai)

* New translations en-us.ts (Croatian)

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

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

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

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

* New translations en-us.ts (Italian)

* New translations en-us.ts (Ukrainian)

* New translations en-us.ts (French)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Czech)

* New translations en-us.ts (French)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Danish)

* New translations en-us.ts (German)

* New translations en-us.ts (Greek)

* New translations en-us.ts (Finnish)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Korean)

* New translations en-us.ts (Polish)

* New translations en-us.ts (Slovenian)

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

* New translations en-us.ts (Swedish)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Ukrainian)

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

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

* New translations en-us.ts (Vietnamese)

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

* New translations en-us.ts (Thai)

* New translations en-us.ts (Croatian)

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

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

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

* New translations en-us.ts (French)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Japanese)

* New translations en-us.ts (Russian)

* New translations en-us.ts (Czech)

* New translations en-us.ts (French)

* New translations en-us.ts (Spanish)

* New translations en-us.ts (Danish)

* New translations en-us.ts (German)

* New translations en-us.ts (Greek)

* New translations en-us.ts (Finnish)

* New translations en-us.ts (Hungarian)

* New translations en-us.ts (Italian)

* New translations en-us.ts (Korean)

* New translations en-us.ts (Polish)

* New translations en-us.ts (Slovenian)

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

* New translations en-us.ts (Swedish)

* New translations en-us.ts (Turkish)

* New translations en-us.ts (Ukrainian)

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

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

* New translations en-us.ts (Vietnamese)

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

* New translations en-us.ts (Thai)

* New translations en-us.ts (Croatian)

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

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

* New translations en-us.ts (Arabic, Egypt)
2025-01-02 17:49:25 +01:00
Aaron
36afbf91b7 feat: improve UI for timespan inputs on admin page (#726)
* Define Timestamp type

* Implement Timestamp utils

* Implement Timespan input

* Use timestamp input on config page

* Add timespan type to config services

* Refactor maxExpiration to use timespan type across services and components

* Update sessionDuration to use timespan type in config and adjust token expiration logic

* Update localized strings
2025-01-02 17:35:50 +01:00
Aaron
df1ffaa2bc feat: add legal page with configuration options (#724)
* Addconfig entries for legal notice

* Add legal route handling to middleware

* Make legal notice public

* Add legal category to config sidebar

* Add legal notice page

* Add German translations for legal notice and configuration options

* Replace legal page with separate imprint and privacy pages

* Update middleware

* Add footer component

* Update legal text descriptions to indicate Markdown support again

* Refactor footer layout

* Add zIndex to footer component

* improve mobile layout

* run formatter

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>
2025-01-02 17:29:01 +01:00
Aaron
53c05518df feat(UI): improve filesize input and use it in settings (#721)
* Improve file size input component layout

* Fix filesize input value not getting set

* Allow arbitrary props on filesize input

* Update config variables to support filesize type and integrate FileSizeInput component

* Update i18n entries

* WARNING GUESSES: Update translation descriptions for max size and chunk size in multiple languages

* Fix config service not being aware of filesize type

* Fix backend config service not being aware of filesize type

* Move FileSizeInput component to core
2024-12-31 15:25:49 +01:00
Aaron
b58dcdba0b feat(MyShares): show information about own share security options (#720)
* Provide security information about owned shares

* Add visitor count display for shares with max views

* Add password protection indicator to shares table

* Remove validation from MyShareSecurityDTO

* center lock icon and add spacing

* refactor: run formatter

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>
2024-12-31 15:21:00 +01:00
Aaron
4d3aa398a2 chore(translations): add "never" expiration value to i18n (#719) 2024-12-29 18:19:01 +01:00
Mattia Müggler
a120d44185 docs: update S3 bucket name description (#712)
* update s3 docs

* Update s3.md
2024-12-29 18:13:09 +01:00
67 changed files with 1642 additions and 550 deletions

View File

@@ -11,24 +11,43 @@ jobs:
- name: checkout code - name: checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/${{ github.repository }}
${{ github.repository }}
tags: |
type=semver,pattern={{version}},prefix=v
type=semver,pattern={{major}}.{{minor}},prefix=v
type=semver,pattern={{major}},prefix=v
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v2
- name: Login to Docker registry - name: Login to Docker Hub
uses: docker/login-action@v2 uses: docker/login-action@v2
with: with:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push - name: Build and push
uses: docker/build-push-action@v4 uses: docker/build-push-action@v4
with: with:
context: . context: .
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
push: true push: true
tags: stonith404/pingvin-share:latest,stonith404/pingvin-share:${{ github.ref_name }} tags: ${{ steps.meta.outputs.tags }}
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max

View File

@@ -1,3 +1,28 @@
## [1.8.2](https://github.com/stonith404/pingvin-share/compare/v1.8.1...v1.8.2) (2025-01-21)
### Bug Fixes
* normal share gets attached to previously visited reverse share ([3a534c7](https://github.com/stonith404/pingvin-share/commit/3a534c7512ef82f3fa982f80e364f53c957306a0))
* wrong TOTP validation for password ([2b7d3c0](https://github.com/stonith404/pingvin-share/commit/2b7d3c0a8a3e527fc1f7f86795731d5ac77eda49))
## [1.8.1](https://github.com/stonith404/pingvin-share/compare/v1.8.0...v1.8.1) (2025-01-04)
### Bug Fixes
* wrong validation for expiration in reverse share modal ([b3ea96c](https://github.com/stonith404/pingvin-share/commit/b3ea96c1916980863fc6903c64cd2a7b32d66cfb))
## [1.8.0](https://github.com/stonith404/pingvin-share/compare/v1.7.2...v1.8.0) (2025-01-02)
### Features
* add legal page with configuration options ([#724](https://github.com/stonith404/pingvin-share/issues/724)) ([df1ffaa](https://github.com/stonith404/pingvin-share/commit/df1ffaa2bcc047668cdc207cf8f86d821778cf44))
* improve UI for timespan inputs on admin page ([#726](https://github.com/stonith404/pingvin-share/issues/726)) ([36afbf9](https://github.com/stonith404/pingvin-share/commit/36afbf91b7ba13e5ce42f2d91ec9898363a560b1))
* **MyShares:** show information about own share security options ([#720](https://github.com/stonith404/pingvin-share/issues/720)) ([b58dcdb](https://github.com/stonith404/pingvin-share/commit/b58dcdba0b8688b286be4cc71796e2862553972a))
* **UI:** improve filesize input and use it in settings ([#721](https://github.com/stonith404/pingvin-share/issues/721)) ([53c0551](https://github.com/stonith404/pingvin-share/commit/53c05518dfef4f65d76f5a1b301d0c5f8735576a))
## [1.7.2](https://github.com/stonith404/pingvin-share/compare/v1.7.1...v1.7.2) (2024-12-28) ## [1.7.2](https://github.com/stonith404/pingvin-share/compare/v1.7.1...v1.7.2) (2024-12-28)

View File

@@ -1,12 +1,12 @@
{ {
"name": "pingvin-share-backend", "name": "pingvin-share-backend",
"version": "1.7.2", "version": "1.8.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "pingvin-share-backend", "name": "pingvin-share-backend",
"version": "1.7.2", "version": "1.8.2",
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.679.0", "@aws-sdk/client-s3": "^3.679.0",
"@nestjs/cache-manager": "^2.2.2", "@nestjs/cache-manager": "^2.2.2",

View File

@@ -1,6 +1,6 @@
{ {
"name": "pingvin-share-backend", "name": "pingvin-share-backend",
"version": "1.7.2", "version": "1.8.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",

View File

@@ -0,0 +1 @@
UPDATE Config SET `value` = `value` || ' hours' WHERE name = "maxExpiration" OR name = "sessionDuration";

View File

@@ -30,8 +30,8 @@ const configVariables: ConfigVariables = {
secret: false, secret: false,
}, },
sessionDuration: { sessionDuration: {
type: "number", type: "timespan",
defaultValue: "2160", defaultValue: "3 months",
secret: false, secret: false,
}, },
}, },
@@ -47,8 +47,8 @@ const configVariables: ConfigVariables = {
secret: false, secret: false,
}, },
maxExpiration: { maxExpiration: {
type: "number", type: "timespan",
defaultValue: "0", defaultValue: "0 days",
secret: false, secret: false,
}, },
shareIdLength: { shareIdLength: {
@@ -57,7 +57,7 @@ const configVariables: ConfigVariables = {
secret: false, secret: false,
}, },
maxSize: { maxSize: {
type: "number", type: "filesize",
defaultValue: "1000000000", defaultValue: "1000000000",
secret: false, secret: false,
}, },
@@ -66,7 +66,7 @@ const configVariables: ConfigVariables = {
defaultValue: "9", defaultValue: "9",
}, },
chunkSize: { chunkSize: {
type: "number", type: "filesize",
defaultValue: "10000000", defaultValue: "10000000",
secret: false, secret: false,
}, },
@@ -349,6 +349,33 @@ const configVariables: ConfigVariables = {
defaultValue: "", defaultValue: "",
obscured: true, obscured: true,
}, },
},
legal: {
enabled: {
type: "boolean",
defaultValue: "false",
secret: false,
},
imprintText: {
type: "text",
defaultValue: "",
secret: false,
},
imprintUrl: {
type: "string",
defaultValue: "",
secret: false,
},
privacyPolicyText: {
type: "text",
defaultValue: "",
secret: false,
},
privacyPolicyUrl: {
type: "string",
defaultValue: "",
secret: false,
},
} }
}; };

View File

@@ -306,11 +306,12 @@ export class AuthService {
} }
async createRefreshToken(userId: string, idToken?: string) { async createRefreshToken(userId: string, idToken?: string) {
const sessionDuration = this.config.get("general.sessionDuration");
const { id, token } = await this.prisma.refreshToken.create({ const { id, token } = await this.prisma.refreshToken.create({
data: { data: {
userId, userId,
expiresAt: moment() expiresAt: moment()
.add(this.config.get("general.sessionDuration"), "hours") .add(sessionDuration.value, sessionDuration.unit)
.toDate(), .toDate(),
oauthIDToken: idToken, oauthIDToken: idToken,
}, },
@@ -341,14 +342,20 @@ export class AuthService {
secure: isSecure, secure: isSecure,
maxAge: 1000 * 60 * 60 * 24 * 30 * 3, // 3 months maxAge: 1000 * 60 * 60 * 24 * 30 * 3, // 3 months
}); });
if (refreshToken) if (refreshToken) {
const now = moment();
const sessionDuration = this.config.get("general.sessionDuration");
const maxAge = moment(now)
.add(sessionDuration.value, sessionDuration.unit)
.diff(now);
response.cookie("refresh_token", refreshToken, { response.cookie("refresh_token", refreshToken, {
path: "/api/auth/token", path: "/api/auth/token",
httpOnly: true, httpOnly: true,
sameSite: "strict", sameSite: "strict",
secure: isSecure, secure: isSecure,
maxAge: 1000 * 60 * 60 * this.config.get("general.sessionDuration"), maxAge,
}); });
}
} }
/** /**

View File

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

View File

@@ -7,6 +7,7 @@ import {
import { Config } from "@prisma/client"; import { Config } from "@prisma/client";
import { EventEmitter } from "events"; import { EventEmitter } from "events";
import { PrismaService } from "src/prisma/prisma.service"; import { PrismaService } from "src/prisma/prisma.service";
import { stringToTimespan } from "src/utils/date.util";
/** /**
* ConfigService extends EventEmitter to allow listening for config updates, * ConfigService extends EventEmitter to allow listening for config updates,
@@ -30,10 +31,12 @@ export class ConfigService extends EventEmitter {
const value = configVariable.value ?? configVariable.defaultValue; const value = configVariable.value ?? configVariable.defaultValue;
if (configVariable.type == "number") return parseInt(value); if (configVariable.type == "number" || configVariable.type == "filesize")
return parseInt(value);
if (configVariable.type == "boolean") return value == "true"; if (configVariable.type == "boolean") return value == "true";
if (configVariable.type == "string" || configVariable.type == "text") if (configVariable.type == "string" || configVariable.type == "text")
return value; return value;
if (configVariable.type == "timespan") return stringToTimespan(value);
} }
async getByCategory(category: string) { async getByCategory(category: string) {
@@ -93,7 +96,8 @@ export class ConfigService extends EventEmitter {
} else if ( } else if (
typeof value != configVariable.type && typeof value != configVariable.type &&
typeof value == "string" && typeof value == "string" &&
configVariable.type != "text" configVariable.type != "text" &&
configVariable.type != "timespan"
) { ) {
throw new BadRequestException( throw new BadRequestException(
`Config variable must be of type ${configVariable.type}`, `Config variable must be of type ${configVariable.type}`,
@@ -131,6 +135,7 @@ export class ConfigService extends EventEmitter {
condition: (value: number) => value >= 0 && value <= 9, condition: (value: number) => value >= 0 && value <= 9,
message: "Zip compression level must be between 0 and 9", message: "Zip compression level must be between 0 and 9",
}, },
// TODO add validation for timespan type
]; ];
const validation = validations.find((validation) => validation.key == key); const validation = validations.find((validation) => validation.key == key);

View File

@@ -26,10 +26,11 @@ export class ReverseShareService {
.toDate(); .toDate();
const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration); const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration);
const maxExpiration = this.config.get("share.maxExpiration");
if ( if (
this.config.get("share.maxExpiration") !== 0 && maxExpiration.value !== 0 &&
parsedExpiration > parsedExpiration >
moment().add(this.config.get("share.maxExpiration"), "hours").toDate() moment().add(maxExpiration.value, maxExpiration.unit).toDate()
) { ) {
throw new BadRequestException( throw new BadRequestException(
"Expiration date exceeds maximum expiration date", "Expiration date exceeds maximum expiration date",

View File

@@ -2,6 +2,7 @@ import { Expose, plainToClass, Type } from "class-transformer";
import { ShareDTO } from "./share.dto"; import { ShareDTO } from "./share.dto";
import { FileDTO } from "../../file/dto/file.dto"; import { FileDTO } from "../../file/dto/file.dto";
import { OmitType } from "@nestjs/swagger"; import { OmitType } from "@nestjs/swagger";
import { MyShareSecurityDTO } from "./myShareSecurity.dto";
export class MyShareDTO extends OmitType(ShareDTO, [ export class MyShareDTO extends OmitType(ShareDTO, [
"files", "files",
@@ -21,6 +22,9 @@ export class MyShareDTO extends OmitType(ShareDTO, [
@Type(() => OmitType(FileDTO, ["share", "from"] as const)) @Type(() => OmitType(FileDTO, ["share", "from"] as const))
files: Omit<FileDTO, "share" | "from">[]; files: Omit<FileDTO, "share" | "from">[];
@Expose()
security?: MyShareSecurityDTO;
from(partial: Partial<MyShareDTO>) { from(partial: Partial<MyShareDTO>) {
return plainToClass(MyShareDTO, partial, { excludeExtraneousValues: true }); return plainToClass(MyShareDTO, partial, { excludeExtraneousValues: true });
} }

View File

@@ -0,0 +1,9 @@
import { Expose } from "class-transformer";
export class MyShareSecurityDTO {
@Expose()
passwordProtected: boolean;
@Expose()
maxViews: number;
}

View File

@@ -56,13 +56,12 @@ export class ShareService {
const expiresNever = moment(0).toDate() == parsedExpiration; const expiresNever = moment(0).toDate() == parsedExpiration;
const maxExpiration = this.config.get("share.maxExpiration");
if ( if (
this.config.get("share.maxExpiration") !== 0 && maxExpiration.value !== 0 &&
(expiresNever || (expiresNever ||
parsedExpiration > parsedExpiration >
moment() moment().add(maxExpiration.value, maxExpiration.unit).toDate())
.add(this.config.get("share.maxExpiration"), "hours")
.toDate())
) { ) {
throw new BadRequestException( throw new BadRequestException(
"Expiration date exceeds maximum expiration date", "Expiration date exceeds maximum expiration date",
@@ -233,7 +232,7 @@ export class ShareService {
orderBy: { orderBy: {
expiration: "desc", expiration: "desc",
}, },
include: { recipients: true, files: true }, include: { recipients: true, files: true, security: true },
}); });
return shares.map((share) => { return shares.map((share) => {
@@ -241,6 +240,10 @@ export class ShareService {
...share, ...share,
size: share.files.reduce((acc, file) => acc + parseInt(file.size), 0), size: share.files.reduce((acc, file) => acc + parseInt(file.size), 0),
recipients: share.recipients.map((recipients) => recipients.email), recipients: share.recipients.map((recipients) => recipients.email),
security: {
maxViews: share.security?.maxViews,
passwordProtected: !!share.security?.password,
},
}; };
}); });
} }

View File

@@ -10,3 +10,20 @@ export function parseRelativeDateToAbsolute(relativeDate: string) {
) )
.toDate(); .toDate();
} }
type Timespan = {
value: number;
unit: "minutes" | "hours" | "days" | "weeks" | "months" | "years";
};
export function stringToTimespan(value: string): Timespan {
const [time, unit] = value.split(" ");
return {
value: parseInt(time),
unit: unit as Timespan["unit"],
};
}
export function timespanToString(timespan: Timespan) {
return `${timespan.value} ${timespan.unit}`;
}

View File

@@ -1,6 +1,6 @@
services: services:
pingvin-share: pingvin-share:
image: stonith404/pingvin-share image: stonith404/pingvin-share # or ghcr.io/stonith404/pingvin-share
restart: unless-stopped restart: unless-stopped
ports: ports:
- 3000:3000 - 3000:3000

View File

@@ -14,8 +14,8 @@ You can configure your S3 provider and bucket by going to the configuration page
| Key | Description | Value | | Key | Description | Value |
|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------| |:-----------|:-------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------|
| enabled | This property enables the storage location on your configured S3 bucket. | `true` | | 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` | | endpoint | The host for your S3 bucket. Endpoint formats vary by provider and some may include the bucket name in the FQDN. Ensure this is configured correctly, as an incorrect value may break some features. | `sos-ch-dk-2.exo.io` |
| region | This property is the region where the bucket is located. | `sos-ch-dk-2.exo.io` | | region | This property is the region where the bucket is located. | `sos-ch-dk-2` |
| bucketName | This property is the name of your S3 bucket. | `my-bucket` | | 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) | | 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` | | key | This is the access key you need to access to your bucket. | `key-asdf` |
@@ -29,4 +29,4 @@ Consider that ClamAV scans are not available at the moment if you store your fil
## ZIP ## ZIP
Creating ZIP archives is not currently supported if you store your files in an S3 bucket. Creating ZIP archives is not currently supported if you store your files in an S3 bucket.

View File

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

View File

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

View File

@@ -8,6 +8,9 @@ import {
} from "@mantine/core"; } from "@mantine/core";
import { useForm } from "@mantine/form"; import { useForm } from "@mantine/form";
import { AdminConfig, UpdateConfig } from "../../../types/config.type"; import { AdminConfig, UpdateConfig } from "../../../types/config.type";
import TimespanInput from "../../core/TimespanInput";
import { stringToTimespan, timespanToString } from "../../../utils/date.util";
import FileSizeInput from "../../core/FileSizeInput";
const AdminConfigInput = ({ const AdminConfigInput = ({
configVariable, configVariable,
@@ -71,6 +74,15 @@ const AdminConfigInput = ({
{...form.getInputProps("numberValue")} {...form.getInputProps("numberValue")}
placeholder={configVariable.defaultValue} placeholder={configVariable.defaultValue}
onChange={(number) => onValueChange(configVariable, number)} onChange={(number) => onValueChange(configVariable, number)}
w={201}
/>
)}
{configVariable.type == "filesize" && (
<FileSizeInput
{...form.getInputProps("numberValue")}
value={parseInt(configVariable.value ?? configVariable.defaultValue)}
onChange={(bytes) => onValueChange(configVariable, bytes)}
w={201}
/> />
)} )}
{configVariable.type == "boolean" && ( {configVariable.type == "boolean" && (
@@ -81,6 +93,15 @@ const AdminConfigInput = ({
/> />
</> </>
)} )}
{configVariable.type == "timespan" && (
<TimespanInput
value={stringToTimespan(configVariable.value)}
onChange={(timespan) =>
onValueChange(configVariable, timespanToString(timespan))
}
w={201}
/>
)}
</Stack> </Stack>
); );
}; };

View File

@@ -19,6 +19,7 @@ import {
TbBucket, TbBucket,
TbBinaryTree, TbBinaryTree,
TbSettings, TbSettings,
TbScale,
} from "react-icons/tb"; } from "react-icons/tb";
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from "react-intl";
@@ -30,6 +31,7 @@ const categories = [
{ name: "OAuth", icon: <TbSocial /> }, { name: "OAuth", icon: <TbSocial /> },
{ name: "LDAP", icon: <TbBinaryTree /> }, { name: "LDAP", icon: <TbBinaryTree /> },
{ name: "S3", icon: <TbBucket /> }, { name: "S3", icon: <TbBucket /> },
{ name: "Legal", icon: <TbScale /> },
]; ];
const useStyles = createStyles((theme) => ({ const useStyles = createStyles((theme) => ({

View File

@@ -0,0 +1,81 @@
import { NativeSelect, NumberInput } from "@mantine/core";
import { useState } from "react";
const multipliers = {
B: 1,
KB: 1000,
KiB: 1024,
MB: 1000 ** 2,
MiB: 1024 ** 2,
GB: 1000 ** 3,
GiB: 1024 ** 3,
TB: 1000 ** 4,
TiB: 1024 ** 4,
};
const units = (
["B", "KB", "KiB", "MB", "MiB", "GB", "GiB", "TB", "TiB"] as const
).map((unit) => ({ label: unit, value: unit }));
function getLargestApplicableUnit(value: number) {
return (
units.findLast((unit) => value % multipliers[unit.value] === 0) || units[0]
);
}
const FileSizeInput = ({
label,
value,
onChange,
...restProps
}: {
label?: string;
value: number;
onChange: (number: number) => void;
[key: string]: any;
}) => {
const [unit, setUnit] = useState(getLargestApplicableUnit(value).value);
const [inputValue, setInputValue] = useState(value / multipliers[unit]);
const unitSelect = (
<NativeSelect
data={units}
value={unit}
rightSectionWidth={28}
styles={{
input: {
fontWeight: 500,
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
width: 76,
marginRight: -2,
},
}}
onChange={(event) => {
const unit = event.currentTarget
.value as (typeof units)[number]["value"];
setUnit(unit);
onChange(multipliers[unit] * inputValue);
}}
/>
);
return (
<NumberInput
label={label}
value={inputValue}
min={1}
max={999999}
precision={0}
rightSection={unitSelect}
rightSectionWidth={76}
onChange={(value) => {
const inputVal = value || 0;
setInputValue(inputVal);
onChange(multipliers[unit] * inputVal);
}}
{...restProps}
/>
);
};
export default FileSizeInput;

View File

@@ -0,0 +1,88 @@
import { useState } from "react";
import { Timespan } from "../../types/timespan.type";
import { NativeSelect, NumberInput } from "@mantine/core";
import useTranslate from "../../hooks/useTranslate.hook";
const TimespanInput = ({
label,
value,
onChange,
...restProps
}: {
label?: string;
value: Timespan;
onChange: (timespan: Timespan) => void;
[key: string]: any;
}) => {
const [unit, setUnit] = useState(value.unit);
const [inputValue, setInputValue] = useState(value.value);
const t = useTranslate();
const version = inputValue == 1 ? "singular" : "plural";
const unitSelect = (
<NativeSelect
data={[
{
value: "minutes",
label: t(`upload.modal.expires.minute-${version}`),
},
{
value: "hours",
label: t(`upload.modal.expires.hour-${version}`),
},
{
value: "days",
label: t(`upload.modal.expires.day-${version}`),
},
{
value: "weeks",
label: t(`upload.modal.expires.week-${version}`),
},
{
value: "months",
label: t(`upload.modal.expires.month-${version}`),
},
{
value: "years",
label: t(`upload.modal.expires.year-${version}`),
},
]}
value={unit}
rightSectionWidth={28}
styles={{
input: {
fontWeight: 500,
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
width: 120,
marginRight: -2,
},
}}
onChange={(event) => {
const unit = event.currentTarget.value as Timespan["unit"];
setUnit(unit);
onChange({ value: inputValue, unit });
}}
/>
);
return (
<NumberInput
label={label}
value={inputValue}
min={0}
max={999999}
precision={0}
rightSection={unitSelect}
rightSectionWidth={120}
onChange={(value) => {
const inputVal = value || 0;
setInputValue(inputVal);
onChange({ value: inputVal, unit });
}}
{...restProps}
/>
);
};
export default TimespanInput;

View File

@@ -0,0 +1,62 @@
import { Anchor, Footer as MFooter, SimpleGrid, Text } from "@mantine/core";
import { useMediaQuery } from "@mantine/hooks";
import useConfig from "../../hooks/config.hook";
import useTranslate from "../../hooks/useTranslate.hook";
const Footer = () => {
const t = useTranslate();
const config = useConfig();
const hasImprint = !!(
config.get("legal.imprintUrl") || config.get("legal.imprintText")
);
const hasPrivacy = !!(
config.get("legal.privacyPolicyUrl") ||
config.get("legal.privacyPolicyText")
);
const imprintUrl =
(!config.get("legal.imprintText") && config.get("legal.imprintUrl")) ||
"/imprint";
const privacyUrl =
(!config.get("legal.privacyPolicyText") &&
config.get("legal.privacyPolicyUrl")) ||
"/privacy";
const isMobile = useMediaQuery("(max-width: 700px)");
return (
<MFooter height="auto" py={6} px="xl" zIndex={100}>
<SimpleGrid cols={isMobile ? 2 : 3} m={0}>
{!isMobile && <div></div>}
<Text size="xs" color="dimmed" align={isMobile ? "left" : "center"}>
Powered by{" "}
<Anchor
size="xs"
href="https://github.com/stonith404/pingvin-share"
target="_blank"
>
Pingvin Share
</Anchor>
</Text>
<div>
{config.get("legal.enabled") && (
<Text size="xs" color="dimmed" align="right">
{hasImprint && (
<Anchor size="xs" href={imprintUrl}>
{t("imprint.title")}
</Anchor>
)}
{hasImprint && hasPrivacy && " • "}
{hasPrivacy && (
<Anchor size="xs" href={privacyUrl}>
{t("privacy.title")}
</Anchor>
)}
</Text>
)}
</div>
</SimpleGrid>
</MFooter>
);
};
export default Footer;

View File

@@ -1,64 +0,0 @@
import { Col, Grid, NumberInput, Select } from "@mantine/core";
import { useEffect, useState } from "react";
import {
byteToUnitAndSize,
unitAndSizeToByte,
} from "../../utils/fileSize.util";
const FileSizeInput = ({
label,
value,
onChange,
}: {
label: string;
value: number;
onChange: (number: number) => void;
}) => {
const [unit, setUnit] = useState("MB");
const [size, setSize] = useState(100);
useEffect(() => {
const { unit, size } = byteToUnitAndSize(value);
setUnit(unit);
setSize(size);
}, [value]);
return (
<Grid align="flex-end">
<Col xs={6}>
<NumberInput
min={1}
max={99999}
precision={0}
variant="filled"
label={label}
value={size}
onChange={(value) => {
if (value) {
setSize(value);
onChange(unitAndSizeToByte(unit, value));
}
}}
/>
</Col>
<Col xs={6}>
<Select
data={[
{ label: "B", value: "B" },
{ label: "KB", value: "KB" },
{ label: "MB", value: "MB" },
{ label: "GB", value: "GB" },
{ label: "TB", value: "TB" },
]}
value={unit}
onChange={(value) => {
setUnit(value!);
onChange(unitAndSizeToByte(value!, size));
}}
/>
</Col>
</Grid>
);
};
export default FileSizeInput;

View File

@@ -20,15 +20,16 @@ import useTranslate, {
translateOutsideContext, translateOutsideContext,
} from "../../../hooks/useTranslate.hook"; } from "../../../hooks/useTranslate.hook";
import shareService from "../../../services/share.service"; import shareService from "../../../services/share.service";
import { Timespan } from "../../../types/timespan.type";
import { getExpirationPreview } from "../../../utils/date.util"; import { getExpirationPreview } from "../../../utils/date.util";
import toast from "../../../utils/toast.util"; import toast from "../../../utils/toast.util";
import FileSizeInput from "../FileSizeInput"; import FileSizeInput from "../../core/FileSizeInput";
import showCompletedReverseShareModal from "./showCompletedReverseShareModal"; import showCompletedReverseShareModal from "./showCompletedReverseShareModal";
const showCreateReverseShareModal = ( const showCreateReverseShareModal = (
modals: ModalsContextProps, modals: ModalsContextProps,
showSendEmailNotificationOption: boolean, showSendEmailNotificationOption: boolean,
maxExpirationInHours: number, maxExpiration: Timespan,
getReverseShares: () => void, getReverseShares: () => void,
) => { ) => {
const t = translateOutsideContext(); const t = translateOutsideContext();
@@ -38,7 +39,7 @@ const showCreateReverseShareModal = (
<Body <Body
showSendEmailNotificationOption={showSendEmailNotificationOption} showSendEmailNotificationOption={showSendEmailNotificationOption}
getReverseShares={getReverseShares} getReverseShares={getReverseShares}
maxExpirationInHours={maxExpirationInHours} maxExpiration={maxExpiration}
/> />
), ),
}); });
@@ -47,11 +48,11 @@ const showCreateReverseShareModal = (
const Body = ({ const Body = ({
getReverseShares, getReverseShares,
showSendEmailNotificationOption, showSendEmailNotificationOption,
maxExpirationInHours, maxExpiration,
}: { }: {
getReverseShares: () => void; getReverseShares: () => void;
showSendEmailNotificationOption: boolean; showSendEmailNotificationOption: boolean;
maxExpirationInHours: number; maxExpiration: Timespan;
}) => { }) => {
const modals = useModals(); const modals = useModals();
const t = useTranslate(); const t = useTranslate();
@@ -91,13 +92,17 @@ const Body = ({
) as moment.unitOfTime.DurationConstructor, ) as moment.unitOfTime.DurationConstructor,
); );
if ( if (
maxExpirationInHours != 0 && maxExpiration.value != 0 &&
expirationDate.isAfter(moment().add(maxExpirationInHours, "hours")) expirationDate.isAfter(
moment().add(maxExpiration.value, maxExpiration.unit),
)
) { ) {
form.setFieldError( form.setFieldError(
"expiration_num", "expiration_num",
t("upload.modal.expires.error.too-long", { t("upload.modal.expires.error.too-long", {
max: moment.duration(maxExpirationInHours, "hours").humanize(), max: moment
.duration(maxExpiration.value, maxExpiration.unit)
.humanize(),
}), }),
); );
return; return;

View File

@@ -31,6 +31,7 @@ import { FileUpload } from "../../../types/File.type";
import { CreateShare } from "../../../types/share.type"; import { CreateShare } from "../../../types/share.type";
import { getExpirationPreview } from "../../../utils/date.util"; import { getExpirationPreview } from "../../../utils/date.util";
import toast from "../../../utils/toast.util"; import toast from "../../../utils/toast.util";
import { Timespan } from "../../../types/timespan.type";
const showCreateUploadModal = ( const showCreateUploadModal = (
modals: ModalsContextProps, modals: ModalsContextProps,
@@ -39,7 +40,7 @@ const showCreateUploadModal = (
isReverseShare: boolean; isReverseShare: boolean;
allowUnauthenticatedShares: boolean; allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean; enableEmailRecepients: boolean;
maxExpirationInHours: number; maxExpiration: Timespan;
shareIdLength: number; shareIdLength: number;
simplified: boolean; simplified: boolean;
}, },
@@ -112,7 +113,7 @@ const CreateUploadModalBody = ({
isReverseShare: boolean; isReverseShare: boolean;
allowUnauthenticatedShares: boolean; allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean; enableEmailRecepients: boolean;
maxExpirationInHours: number; maxExpiration: Timespan;
shareIdLength: number; shareIdLength: number;
}; };
}) => { }) => {
@@ -180,17 +181,20 @@ const CreateUploadModalBody = ({
); );
if ( if (
options.maxExpirationInHours != 0 && options.maxExpiration.value != 0 &&
(form.values.never_expires || (form.values.never_expires ||
expirationDate.isAfter( expirationDate.isAfter(
moment().add(options.maxExpirationInHours, "hours"), moment().add(
options.maxExpiration.value,
options.maxExpiration.unit,
),
)) ))
) { ) {
form.setFieldError( form.setFieldError(
"expiration_num", "expiration_num",
t("upload.modal.expires.error.too-long", { t("upload.modal.expires.error.too-long", {
max: moment max: moment
.duration(options.maxExpirationInHours, "hours") .duration(options.maxExpiration.value, options.maxExpiration.unit)
.humanize(), .humanize(),
}), }),
); );
@@ -327,7 +331,7 @@ const CreateUploadModalBody = ({
/> />
</Col> </Col>
</Grid> </Grid>
{options.maxExpirationInHours == 0 && ( {options.maxExpiration.value == 0 && (
<Checkbox <Checkbox
label={t("upload.modal.expires.never-long")} label={t("upload.modal.expires.never-long")}
{...form.getInputProps("never_expires")} {...form.getInputProps("never_expires")}
@@ -478,7 +482,7 @@ const SimplifiedCreateUploadModalModal = ({
isReverseShare: boolean; isReverseShare: boolean;
allowUnauthenticatedShares: boolean; allowUnauthenticatedShares: boolean;
enableEmailRecepients: boolean; enableEmailRecepients: boolean;
maxExpirationInHours: number; maxExpiration: Timespan;
shareIdLength: number; shareIdLength: number;
}; };
}) => { }) => {

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "الحجم", "account.shares.table.size": "الحجم",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "حدث خطأ أثناء إنهاء مشاركتك.", "share.edit.notify.generic-error": "حدث خطأ أثناء إنهاء مشاركتك.",
"share.edit.notify.save-success": "تم تحديث المشاركة بنجاح", "share.edit.notify.save-success": "تم تحديث المشاركة بنجاح",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "الإعدادات", "admin.config.title": "الإعدادات",
"admin.config.category.general": "عام", "admin.config.category.general": "عام",
@@ -335,15 +344,15 @@ export default {
"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": "أطول زمن لانتهاء صلاحية المشاركات بالساعات. الصفر يعني أن المشاركة لن تنتهي صلاحيتها.", "admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"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": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "هذه الصفحة غير موجودة.", "404.description": "هذه الصفحة غير موجودة.",
"404.button.home": "أعدني للصفحة الرئيسية", "404.button.home": "أعدني للصفحة الرئيسية",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Velikost", "account.shares.table.size": "Velikost",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Share informations", "account.shares.modal.share-informations": "Share informations",
"account.shares.modal.share-link": "Odkaz na sdílení", "account.shares.modal.share-link": "Odkaz na sdílení",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.", "share.edit.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.",
"share.edit.notify.save-success": "Sdílení úspěšně aktualizováno", "share.edit.notify.save-success": "Sdílení úspěšně aktualizováno",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Nastavení", "admin.config.title": "Nastavení",
"admin.config.category.general": "Obecné", "admin.config.category.general": "Obecné",
@@ -335,7 +344,7 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Povolit sdílení neověřeným uživatelům", "admin.config.share.allow-unauthenticated-shares": "Povolit sdílení neověřeným uživatelům",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
@@ -343,7 +352,7 @@ export default {
"admin.config.share.zip-compression-level": "Úroveň Zip komprese", "admin.config.share.zip-compression-level": "Úroveň Zip komprese",
"admin.config.share.zip-compression-level.description": "Upravte úroveň pro rovnováhu mezi velikostí souboru a rychlostí komprese. Platné hodnoty se pohybují od 0 do 9, přičemž 0 znamená bez komprese a 9 je maximální komprese. ", "admin.config.share.zip-compression-level.description": "Upravte úroveň pro rovnováhu mezi velikostí souboru a rychlostí komprese. Platné hodnoty se pohybují od 0 do 9, přičemž 0 znamená bez komprese a 9 je maximální komprese. ",
"admin.config.share.chunk-size": "Velikost bloku", "admin.config.share.chunk-size": "Velikost bloku",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Automaticky otevřít menu vytvoření sdílení", "admin.config.share.auto-open-share-modal": "Automaticky otevřít menu vytvoření sdílení",
"admin.config.share.auto-open-share-modal.description": "Menu vytvoření sdílení se automaticky zobrazí, když uživatel vybere soubory, čímž se eliminuje potřeba ručně kliknout na tlačítko.", "admin.config.share.auto-open-share-modal.description": "Menu vytvoření sdílení se automaticky zobrazí, když uživatel vybere soubory, čímž se eliminuje potřeba ručně kliknout na tlačítko.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Størrelse", "account.shares.table.size": "Størrelse",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Share informations", "account.shares.modal.share-informations": "Share informations",
"account.shares.modal.share-link": "Del link", "account.shares.modal.share-link": "Del link",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "An error occurred while finishing your share.", "share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Deling opdateret", "share.edit.notify.save-success": "Deling opdateret",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguration", "admin.config.title": "Konfiguration",
"admin.config.category.general": "Generelt", "admin.config.category.general": "Generelt",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Tillad uautoriserede delinger", "admin.config.share.allow-unauthenticated-shares": "Tillad uautoriserede delinger",
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares", "admin.config.share.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. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Zip compression level", "admin.config.share.zip-compression-level": "Zip compression level",
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ", "admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
"admin.config.share.chunk-size": "Chunk size", "admin.config.share.chunk-size": "Chunk size",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Läuft ab am", "account.shares.table.expiresAt": "Läuft ab am",
"account.shares.table.createdAt": "Angelegt am", "account.shares.table.createdAt": "Angelegt am",
"account.shares.table.size": "Größe", "account.shares.table.size": "Größe",
"account.shares.table.password-protected": "Passwortgeschützt",
"account.shares.table.visitor-count": "{count} von {max}",
"account.shares.table.expiry-never": "nie",
"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}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Während der Erstellung der Freigabe ist ein Fehler aufgetreten.", "share.edit.notify.generic-error": "Während der Erstellung der Freigabe ist ein Fehler aufgetreten.",
"share.edit.notify.save-success": "Freigabe erfolgreich aktualisiert", "share.edit.notify.save-success": "Freigabe erfolgreich aktualisiert",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Impressum",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Einstellungen", "admin.config.title": "Einstellungen",
"admin.config.category.general": "Allgemein", "admin.config.category.general": "Allgemein",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Nicht authentifizierte Freigaben erlauben", "admin.config.share.allow-unauthenticated-shares": "Nicht authentifizierte Freigaben erlauben",
"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. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel", "admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
"admin.config.share.zip-compression-level.description": "Passe den Wert an, um ein Gleichgewicht zwischen Dateigröße und Kompressionsgeschwindigkeit herzustellen. Gültige Werte liegen zwischen 0 und 9, wobei 0 für keine Komprimierung und 9 für maximale Komprimierung steht. ", "admin.config.share.zip-compression-level.description": "Passe den Wert an, um ein Gleichgewicht zwischen Dateigröße und Kompressionsgeschwindigkeit herzustellen. Gültige Werte liegen zwischen 0 und 9, wobei 0 für keine Komprimierung und 9 für maximale Komprimierung steht. ",
"admin.config.share.chunk-size": "Chunk Größe", "admin.config.share.chunk-size": "Chunk Größe",
"admin.config.share.chunk-size.description": "Passe die Chunk-Größe (in Bytes) für deine Uploads an, um Effizienz und Zuverlässigkeit entsprechend deiner Internetverbindung auszubalancieren. Kleinere Chunks können die Erfolgsraten bei instabilen Verbindungen erhöhen, während größere Chunks Uploads bei stabilen Verbindungen beschleunigen.", "admin.config.share.chunk-size.description": "Passe die Chunk-Größe für deine Uploads an, um Effizienz und Zuverlässigkeit entsprechend deiner Internetverbindung auszubalancieren. Kleinere Chunks können die Erfolgsraten bei instabilen Verbindungen erhöhen, während größere Chunks Uploads bei stabilen Verbindungen beschleunigen.",
"admin.config.share.auto-open-share-modal": "Freigabe-Fenster automatisch öffnen", "admin.config.share.auto-open-share-modal": "Freigabe-Fenster automatisch öffnen",
"admin.config.share.auto-open-share-modal.description": "Das Freigabe-Fenster erscheint automatisch, sobald ein Benutzer Dateien ausgewählt hat, ohne extra auf den Button klicken zu müssen.", "admin.config.share.auto-open-share-modal.description": "Das Freigabe-Fenster erscheint automatisch, sobald ein Benutzer Dateien ausgewählt hat, ohne extra auf den Button klicken zu müssen.",
"admin.config.smtp.enabled": "Aktivieren", "admin.config.smtp.enabled": "Aktivieren",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "Der Schlüssel, der den Zugriff auf den S3-Bucket ermöglicht.", "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": "Geheimnis",
"admin.config.s3.secret.description": "Das Geheimnis, das den Zugriff auf den S3-Bucket ermöglicht.", "admin.config.s3.secret.description": "Das Geheimnis, das den Zugriff auf den S3-Bucket ermöglicht.",
"admin.config.category.legal": "Rechtliches",
"admin.config.legal.enabled": "Impressum und Datenschutz aktivieren",
"admin.config.legal.enabled.description": "Gibt an, ob die Links zum Impressum und zur Datenschutzerklärung im Footer angezeigt werden sollen.",
"admin.config.legal.imprint-text": "Impressum-Text",
"admin.config.legal.imprint-text.description": "Der Text, der im Impressum angezeigt wird. Unterstützt Markdown. Leer lassen, um auf eine externe Impressumsseite zu verlinken.",
"admin.config.legal.imprint-url": "Impressum-URL",
"admin.config.legal.imprint-url.description": "Wenn bereits eine Impressumsseite vorhanden ist, kann sie hier verlinkt werden, anstatt den Text einzugeben.",
"admin.config.legal.privacy-policy-text": "Datenschutzerklärungstext",
"admin.config.legal.privacy-policy-text.description": "Der Text, der in der Datenschutzerklärung angezeigt wird. Unterstützt Markdown. Leer lassen, um auf eine externe Datenschutzerklärungsseite zu verlinken.",
"admin.config.legal.privacy-policy-url": "Datenschutzerklärungs-URL",
"admin.config.legal.privacy-policy-url.description": "Wenn bereits eine Datenschutzerklärungsseite vorhanden ist, kann sie hier verlinkt werden, anstatt den Text einzugeben.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Μέγεθος", "account.shares.table.size": "Μέγεθος",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Παρουσιάστηκε σφάλμα κατά την ολοκλήρωση του διαμοιρασμού.", "share.edit.notify.generic-error": "Παρουσιάστηκε σφάλμα κατά την ολοκλήρωση του διαμοιρασμού.",
"share.edit.notify.save-success": "Ο διαμοιρασμός ενημερώθηκε επιτυχώς", "share.edit.notify.save-success": "Ο διαμοιρασμός ενημερώθηκε επιτυχώς",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Διαμόρφωση", "admin.config.title": "Διαμόρφωση",
"admin.config.category.general": "Γενικά", "admin.config.category.general": "Γενικά",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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": "Μέγιστο μέγεθος κοινοποίησης",
"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": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Ουπς. Αυτή η σελίδα δεν υπάρχει.", "404.description": "Ουπς. Αυτή η σελίδα δεν υπάρχει.",
"404.button.home": "Πήγαινέ με πίσω", "404.button.home": "Πήγαινέ με πίσω",

View File

@@ -158,6 +158,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Size", "account.shares.table.size": "Size",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Share informations", "account.shares.modal.share-informations": "Share informations",
"account.shares.modal.share-link": "Share link", "account.shares.modal.share-link": "Share link",
@@ -402,6 +405,14 @@ export default {
"share.edit.notify.save-success": "Share updated successfully", "share.edit.notify.save-success": "Share updated successfully",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configuration", "admin.config.title": "Configuration",
"admin.config.category.general": "General", "admin.config.category.general": "General",
@@ -467,18 +478,18 @@ export default {
"Whether unauthenticated users can create shares", "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": "admin.config.share.max-expiration.description":
"Maximum share expiration in hours. Set to 0 to allow unlimited expiration.", "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "admin.config.share.share-id-length": "Default share ID length",
"admin.config.share.share-id-length.description": "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.", "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",
"admin.config.share.zip-compression-level": "Zip compression level", "admin.config.share.zip-compression-level": "Zip compression level",
"admin.config.share.zip-compression-level.description": "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. ", "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": "Chunk size",
"admin.config.share.chunk-size.description": "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.", "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "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.", "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
@@ -642,6 +653,18 @@ export default {
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Oops this page doesn't exist.", "404.description": "Oops this page doesn't exist.",
"404.button.home": "Bring me back home", "404.button.home": "Bring me back home",

View File

@@ -12,7 +12,7 @@ export default {
// END navbar // END navbar
// / // /
"home.title": "Una plataforma <h>autoalojada</h> para compartir archivos.", "home.title": "Una plataforma <h>autoalojada</h> para compartir archivos.",
"home.description": "¿En realidad quieres dejar tus archivos personales en manos de terceros como WeTransfer?", "home.description": "¿De verdad quieres dejar tus archivos personales en manos de terceros como WeTransfer?",
"home.bullet.a.name": "Autoalojada", "home.bullet.a.name": "Autoalojada",
"home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.", "home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.",
"home.bullet.b.name": "Privacidad", "home.bullet.b.name": "Privacidad",
@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Vence el", "account.shares.table.expiresAt": "Vence el",
"account.shares.table.createdAt": "Creado el", "account.shares.table.createdAt": "Creado el",
"account.shares.table.size": "Tamaño", "account.shares.table.size": "Tamaño",
"account.shares.table.password-protected": "Protegido por contraseña",
"account.shares.table.visitor-count": "{count} de {max}",
"account.shares.table.expiry-never": "Nunca",
"account.shares.modal.share-informations": "Información del compartido", "account.shares.modal.share-informations": "Información del compartido",
"account.shares.modal.share-link": "Enlace", "account.shares.modal.share-link": "Enlace",
"account.shares.modal.delete.title": "Eliminar enlace compartido: {share}", "account.shares.modal.delete.title": "Eliminar enlace compartido: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Ha ocurrido un error mientras se compartía tu archivo.", "share.edit.notify.generic-error": "Ha ocurrido un error mientras se compartía tu archivo.",
"share.edit.notify.save-success": "Compartir actualizado correctamente", "share.edit.notify.save-success": "Compartir actualizado correctamente",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Aviso legal",
// END /imprint
// /privacy
"privacy.title": "Política de privacidad",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configuración", "admin.config.title": "Configuración",
"admin.config.category.general": "General", "admin.config.category.general": "General",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión", "admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión",
"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": "Plazo máximo de caducidad. Establecer en 0 para enlaces sin caducidad.",
"admin.config.share.share-id-length": "Longitud de ID compartido por defecto", "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.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",
"admin.config.share.zip-compression-level": "Nivel de compresión del Zip", "admin.config.share.zip-compression-level": "Nivel de compresión del Zip",
"admin.config.share.zip-compression-level.description": "Ajustar el nivel para equilibrar entre el tamaño del archivo y la velocidad de compresión. Los valores válidos van del 0 al 9, siendo 0 sin compresión y 9 el nivel máximo de compresión. ", "admin.config.share.zip-compression-level.description": "Ajustar el nivel para equilibrar entre el tamaño del archivo y la velocidad de compresión. Los valores válidos van del 0 al 9, siendo 0 sin compresión y 9 el nivel máximo de compresión. ",
"admin.config.share.chunk-size": "Tamaño de los fragmentos", "admin.config.share.chunk-size": "Tamaño de los fragmentos",
"admin.config.share.chunk-size.description": "Ajusta el tamaño del fragmento (en bytes) para tus subidas y equilibra la eficiencia y la fiabilidad según tu conexión a Internet. Fragmentos más pequeños pueden aumentar las tasas de éxito para conexiones inestables, mientras que fragmentos más grandes hacen que las subidas sean más rápidas para conexiones estables.", "admin.config.share.chunk-size.description": "Ajusta el tamaño del fragmento para tus subidas y equilibra la eficiencia y la fiabilidad según tu conexión a Internet. Fragmentos más pequeños pueden aumentar las tasas de éxito para conexiones inestables, mientras que fragmentos más grandes hacen que las subidas sean más rápidas para conexiones estables.",
"admin.config.share.auto-open-share-modal": "Auto abrir un modal de creación de compartidos", "admin.config.share.auto-open-share-modal": "Auto abrir un modal de creación de compartidos",
"admin.config.share.auto-open-share-modal.description": "El modal de creación de compartir aparece automáticamente cuando un usuario selecciona archivos, eliminando la necesidad de hacer clic manualmente en el botón.", "admin.config.share.auto-open-share-modal.description": "El modal de creación de compartir aparece automáticamente cuando un usuario selecciona archivos, eliminando la necesidad de hacer clic manualmente en el botón.",
"admin.config.smtp.enabled": "Habilitar", "admin.config.smtp.enabled": "Habilitar",
@@ -440,20 +449,31 @@ export default {
"admin.config.notify.logo-success": "Logo actualizado correctamente. Puede tardar unos minutos en actualizarse en el sitio web.", "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.notify.no-changes": "No hay cambios que guardar.",
"admin.config.category.s3": "S3", "admin.config.category.s3": "S3",
"admin.config.s3.enabled": "Enabled", "admin.config.s3.enabled": "Habilitado",
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.", "admin.config.s3.enabled.description": "Si se debería utilizar S3 en lugar del sistema de archivos local para almacenar los archivos compartidos.",
"admin.config.s3.endpoint": "Endpoint", "admin.config.s3.endpoint": "Punto de acceso/endpoint",
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.", "admin.config.s3.endpoint.description": "La URL del bucket S3.",
"admin.config.s3.region": "Region", "admin.config.s3.region": "Región",
"admin.config.s3.region.description": "The region of the S3 bucket.", "admin.config.s3.region.description": "La región del bucket S3.",
"admin.config.s3.bucket-name": "Bucket name", "admin.config.s3.bucket-name": "Nombre del bucket",
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.", "admin.config.s3.bucket-name.description": "El nombre del bucket S3.",
"admin.config.s3.bucket-path": "Path", "admin.config.s3.bucket-path": "Ruta",
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.", "admin.config.s3.bucket-path.description": "La ruta predeterminada que se debe usar para almacenar los archivos en el bucket S3.",
"admin.config.s3.key": "Key", "admin.config.s3.key": "Clave",
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "La clave que permite el acceso al bucket S3.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secreto",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "El secreto que permite acceder al bucket S3.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Habilitar avisos legales",
"admin.config.legal.enabled.description": "Mostrar un enlace al aviso legal y a la política de privacidad en el pie de página.",
"admin.config.legal.imprint-text": "Texto del aviso legal",
"admin.config.legal.imprint-text.description": "El texto que debería mostrarse en el aviso legal. Soporta Markdown. Dejar en blanco para enlazar a un enlace externo.",
"admin.config.legal.imprint-url": "URL del aviso legal",
"admin.config.legal.imprint-url.description": "Si ya tiene una página de aviso legal, puede enlazarlo aquí en lugar de utilizar el campo de texto.",
"admin.config.legal.privacy-policy-text": "Texto de la política de privacidad",
"admin.config.legal.privacy-policy-text.description": "El texto que debe mostrarse en la política de privacidad. Compatible con Markdown. Dejar en blanco para enlazar a una página de política de privacidad externa.",
"admin.config.legal.privacy-policy-url": "URL de la política de privacidad",
"admin.config.legal.privacy-policy-url.description": "Si ya tiene una página de política de privacidad puede enlazarla aquí en lugar de usar el campo de texto.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Koko", "account.shares.table.size": "Koko",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Jaetun tiedot", "account.shares.modal.share-informations": "Jaetun tiedot",
"account.shares.modal.share-link": "Jaa linkki", "account.shares.modal.share-link": "Jaa linkki",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "An error occurred while finishing your share.", "share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Share updated successfully", "share.edit.notify.save-success": "Share updated successfully",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Asetukset", "admin.config.title": "Asetukset",
"admin.config.category.general": "Yleiset", "admin.config.category.general": "Yleiset",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Salli anonyymit jaot", "admin.config.share.allow-unauthenticated-shares": "Salli anonyymit jaot",
"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. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Zip puristustaso", "admin.config.share.zip-compression-level": "Zip puristustaso",
"admin.config.share.zip-compression-level.description": "Säädä tasoa tiedoston koon ja pakkausnopeuden välillä. Kelvolliset arvot vaihtelevat 09, 0 ei puristusta ja 9 on suurin puristusvoima. ", "admin.config.share.zip-compression-level.description": "Säädä tasoa tiedoston koon ja pakkausnopeuden välillä. Kelvolliset arvot vaihtelevat 09, 0 ei puristusta ja 9 on suurin puristusvoima. ",
"admin.config.share.chunk-size": "Chunk size", "admin.config.share.chunk-size": "Chunk size",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expire le", "account.shares.table.expiresAt": "Expire le",
"account.shares.table.createdAt": "Créé le", "account.shares.table.createdAt": "Créé le",
"account.shares.table.size": "Taille", "account.shares.table.size": "Taille",
"account.shares.table.password-protected": "Protégé par un mot de passe",
"account.shares.table.visitor-count": "{count} sur {max}",
"account.shares.table.expiry-never": "Jamais",
"account.shares.modal.share-informations": "Détails du partage", "account.shares.modal.share-informations": "Détails du partage",
"account.shares.modal.share-link": "Lien de partage", "account.shares.modal.share-link": "Lien de partage",
"account.shares.modal.delete.title": "Supprimer le partage : {share}", "account.shares.modal.delete.title": "Supprimer le partage : {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.", "share.edit.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
"share.edit.notify.save-success": "Partage mis à jour avec succès", "share.edit.notify.save-success": "Partage mis à jour avec succès",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Mentions légales",
// END /imprint
// /privacy
"privacy.title": "Politique de confidentialité",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Paramètres", "admin.config.title": "Paramètres",
"admin.config.category.general": "Général", "admin.config.category.general": "Général",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Autoriser les partages anonymes", "admin.config.share.allow-unauthenticated-shares": "Autoriser les partages anonymes",
"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 quil nexpire jamais.", "admin.config.share.max-expiration.description": "Expiration du partage en heures. Réglez sur 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": "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.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",
"admin.config.share.zip-compression-level": "Niveau de compression", "admin.config.share.zip-compression-level": "Niveau de compression",
"admin.config.share.zip-compression-level.description": "Ajustez le niveau pour trouver l'équilibre entre la taille du fichier et la vitesse de compression. Les valeurs valides vont de 0 à 9, 0 étant sans compression et 9 étant la compression maximale. ", "admin.config.share.zip-compression-level.description": "Ajustez le niveau pour trouver l'équilibre entre la taille du fichier et la vitesse de compression. Les valeurs valides vont de 0 à 9, 0 étant sans compression et 9 étant la compression maximale. ",
"admin.config.share.chunk-size": "Taille des tronçons", "admin.config.share.chunk-size": "Taille des tronçons",
"admin.config.share.chunk-size.description": "Ajustez la taille des tronçons (en octets) pour que vos téléchargements équilibrent efficacité et fiabilité en fonction de votre connexion Internet. Les petits tronçons peuvent améliorer les taux de succès sur les connexions instables, tandis que les tronçons plus importants accélèrent les téléchargements sur les connexions stables.", "admin.config.share.chunk-size.description": "Ajustez la taille des tronçons pour que vos téléchargements équilibrent efficacité et fiabilité en fonction de votre connexion Internet. Les petits tronçons peuvent améliorer les taux de succès sur les connexions instables, tandis que les tronçons plus importants accélèrent les téléchargements sur les connexions stables.",
"admin.config.share.auto-open-share-modal": "Ouvrir automatiquement la modale de partage", "admin.config.share.auto-open-share-modal": "Ouvrir automatiquement la modale de partage",
"admin.config.share.auto-open-share-modal.description": "La modale de création de partage apparaît automatiquement lorsquun utilisateur sélectionne des fichiers, ce qui élimine le besoin de cliquer manuellement sur le bouton.", "admin.config.share.auto-open-share-modal.description": "La modale de création de partage apparaît automatiquement lorsquun utilisateur sélectionne des fichiers, ce qui élimine le besoin de cliquer manuellement sur le bouton.",
"admin.config.smtp.enabled": "Activer", "admin.config.smtp.enabled": "Activer",
@@ -403,8 +412,8 @@ export default {
"admin.config.oauth.oidc-discovery-uri.description": "LURI de découverte de la connexion à l'application OpenID OAuth", "admin.config.oauth.oidc-discovery-uri.description": "LURI 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": "Paramètres de connexion OpenID",
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.", "admin.config.oauth.oidc-scope.description": "Paramètres fournis par votre fournisseur OpenID.",
"admin.config.oauth.oidc-username-claim": "Revendication du nom dutilisateur OpenID", "admin.config.oauth.oidc-username-claim": "Revendication du nom dutilisateur OpenID",
"admin.config.oauth.oidc-username-claim.description": "Le champ contenant la revendication du nom dutilisateur 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 dutilisateur 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",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "La clé qui vous permet d'accéder au bucket S3.", "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": "Secret",
"admin.config.s3.secret.description": "Le secret qui vous permet d'accéder au bucket S3.", "admin.config.s3.secret.description": "Le secret qui vous permet d'accéder au bucket S3.",
"admin.config.category.legal": "Juridique",
"admin.config.legal.enabled": "Activer les mentions légales",
"admin.config.legal.enabled.description": "Afficher/Masquer dans le pied de page un lien vers les mentions légales et la politique de confidentialité.",
"admin.config.legal.imprint-text": "Texte des mentions légales",
"admin.config.legal.imprint-text.description": "Le texte qui doit être affiché dans les mentions légales. Supporte le Markdown. Laissez vide pour mettre un lien vers une page de mentions légales externe.",
"admin.config.legal.imprint-url": "URL des mentions légales",
"admin.config.legal.imprint-url.description": "Si vous avez déjà une page de mentions légales, vous pouvez indiquer son URL ici au lieu d'utiliser le champ de texte.",
"admin.config.legal.privacy-policy-text": "Texte de la politique de confidentialité",
"admin.config.legal.privacy-policy-text.description": "Le texte qui doit être affiché dans la politique de confidentialité. Supporte le Markdown. Laissez vide pour mettre un lien vers une page de politique de confidentialité externe.",
"admin.config.legal.privacy-policy-url": "URL de la politique de confidentialité",
"admin.config.legal.privacy-policy-url.description": "Si vous avez déjà une page de politique de confidentialité, vous pouvez indiquer son URL ici au lieu d'utiliser le champ de texte.",
// 404 // 404
"404.description": "Désolé, mais cette page nexiste pas.", "404.description": "Désolé, mais cette page nexiste pas.",
"404.button.home": "Retour à laccueil", "404.button.home": "Retour à laccueil",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Istječe", "account.shares.table.expiresAt": "Istječe",
"account.shares.table.createdAt": "Kreirano", "account.shares.table.createdAt": "Kreirano",
"account.shares.table.size": "Veličina", "account.shares.table.size": "Veličina",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Informacije o dijeljenju", "account.shares.modal.share-informations": "Informacije o dijeljenju",
"account.shares.modal.share-link": "Podijelite poveznicu", "account.shares.modal.share-link": "Podijelite poveznicu",
"account.shares.modal.delete.title": "Izbriši dijeljenje {share}", "account.shares.modal.delete.title": "Izbriši dijeljenje {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Došlo je do pogreške prilikom dovršavanja vašeg dijeljenja.", "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", "share.edit.notify.save-success": "Dijeljenje je uspješno ažurirano",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguracija", "admin.config.title": "Konfiguracija",
"admin.config.category.general": "Opće", "admin.config.category.general": "Opće",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Dozvoli dijeljenje bez autentifikacije", "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.allow-unauthenticated-shares.description": "Mogu li korisnici bez autentifikacije kreirati dijeljenja",
"admin.config.share.max-expiration": "Maksimalno trajanje", "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.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Dužina zadano generiranog ID-a za dijeljenje", "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.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": "Maksimalna veličina",
"admin.config.share.max-size.description": "Maksimalna veličina dijeljenja u bajtovima", "admin.config.share.max-size.description": "Maksimalna veličina dijeljenja",
"admin.config.share.zip-compression-level": "Razina Zip kompresije", "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.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": "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.chunk-size.description": "Postavite veličinu dijela 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": "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.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": "Omogući",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Ups - Ova stranica ne postoji.", "404.description": "Ups - Ova stranica ne postoji.",
"404.button.home": "Vrati me na početnu stranicu", "404.button.home": "Vrati me na početnu stranicu",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Lejár", "account.shares.table.expiresAt": "Lejár",
"account.shares.table.createdAt": "Létrehozva", "account.shares.table.createdAt": "Létrehozva",
"account.shares.table.size": "Méret", "account.shares.table.size": "Méret",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Megosztás adatai", "account.shares.modal.share-informations": "Megosztás adatai",
"account.shares.modal.share-link": "Hivatkozás", "account.shares.modal.share-link": "Hivatkozás",
"account.shares.modal.delete.title": "Megosztás törlése: {share}", "account.shares.modal.delete.title": "Megosztás törlése: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Hiba lépett fel a megosztás befejezése közben.", "share.edit.notify.generic-error": "Hiba lépett fel a megosztás befejezése közben.",
"share.edit.notify.save-success": "A megosztás frissítésre került", "share.edit.notify.save-success": "A megosztás frissítésre került",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguráció", "admin.config.title": "Konfiguráció",
"admin.config.category.general": "Általános", "admin.config.category.general": "Általános",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Hitelesítés nélküli megosztások engedélyezése", "admin.config.share.allow-unauthenticated-shares": "Hitelesítés nélküli megosztások engedélyezése",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"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",
"admin.config.share.zip-compression-level.description": "A fájlméret és a tömörítésre fordított idő közötti választás. Az érték 0 - 9 közül választható, 0: nincs tömörítés, 9: legnagyobb mértékű tömörítés. ", "admin.config.share.zip-compression-level.description": "A fájlméret és a tömörítésre fordított idő közötti választás. Az érték 0 - 9 közül választható, 0: nincs tömörítés, 9: legnagyobb mértékű tömörítés. ",
"admin.config.share.chunk-size": "Darabolási méret", "admin.config.share.chunk-size": "Darabolási méret",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Megosztás létrehozása felület automatikus megjelenítése", "admin.config.share.auto-open-share-modal": "Megosztás létrehozása felület automatikus megjelenítése",
"admin.config.share.auto-open-share-modal.description": "A mgosztás létrehozása előugró elem automatikusan megjelenik a fájlok kiválasztásakor, ehhez nem szükséges külön kattintani.", "admin.config.share.auto-open-share-modal.description": "A mgosztás létrehozása előugró elem automatikusan megjelenik a fájlok kiválasztásakor, ehhez nem szükséges külön kattintani.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Scade il", "account.shares.table.expiresAt": "Scade il",
"account.shares.table.createdAt": "Creato il", "account.shares.table.createdAt": "Creato il",
"account.shares.table.size": "Dimensione", "account.shares.table.size": "Dimensione",
"account.shares.table.password-protected": "Protetto da password",
"account.shares.table.visitor-count": "{count} di {max}",
"account.shares.table.expiry-never": "Mai",
"account.shares.modal.share-informations": "Condividi le informazioni", "account.shares.modal.share-informations": "Condividi le informazioni",
"account.shares.modal.share-link": "Condividi link", "account.shares.modal.share-link": "Condividi link",
"account.shares.modal.delete.title": "Elimina condivisione {share}", "account.shares.modal.delete.title": "Elimina condivisione {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.", "share.edit.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.",
"share.edit.notify.save-success": "Condivisione aggiornata correttamente", "share.edit.notify.save-success": "Condivisione aggiornata correttamente",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Note legali",
// END /imprint
// /privacy
"privacy.title": "Informativa sulla privacy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configurazione", "admin.config.title": "Configurazione",
"admin.config.category.general": "Generale", "admin.config.category.general": "Generale",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Consenti condivisioni non autenticate", "admin.config.share.allow-unauthenticated-shares": "Consenti condivisioni non autenticate",
"admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni", "admin.config.share.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 della condivisione. Impostare a 0 per consentire la scadenza illimitata.",
"admin.config.share.share-id-length": "Lunghezza ID condivisione predefinita", "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.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 della condivisione",
"admin.config.share.zip-compression-level": "Livello di compressione Zip", "admin.config.share.zip-compression-level": "Livello di compressione Zip",
"admin.config.share.zip-compression-level.description": "Regola il livello per bilanciare la dimensione del file e la velocità di compressione. Valori validi da 0 a 9, con 0 senza compressione e 9 con compressione massima. ", "admin.config.share.zip-compression-level.description": "Regola il livello per bilanciare la dimensione del file e la velocità di compressione. Valori validi da 0 a 9, con 0 senza compressione e 9 con compressione massima. ",
"admin.config.share.chunk-size": "Dimensione dei chunk", "admin.config.share.chunk-size": "Dimensione dei chunk",
"admin.config.share.chunk-size.description": "Regola la dimensione del chunk (in byte) per i tuoi caricamenti per bilanciare l'efficienza e l'affidabilità in base alla tua connessione internet. I chunk più piccoli possono migliorare i tassi di successo per connessioni instabili, mentre i chunks più grandi velocizzano i caricamenti per connessioni stabili.", "admin.config.share.chunk-size.description": "Regola la dimensione dei chunk per i tuoi upload, per bilanciare l'efficienza e l'affidabilità in base alla tua connessione internet. I chunk più piccoli possono migliorare i tassi di successo per connessioni instabili, mentre i chunks più grandi velocizzano i caricamenti per connessioni stabili.",
"admin.config.share.auto-open-share-modal": "Apertura automatica creazione modalità condivisione", "admin.config.share.auto-open-share-modal": "Apertura automatica creazione modalità condivisione",
"admin.config.share.auto-open-share-modal.description": "La modalità di creazione della condivisione viene visualizzata automaticamente quando un utente seleziona i file, eliminando la necessità di fare clic manualmente sul pulsante.", "admin.config.share.auto-open-share-modal.description": "La modalità di creazione della condivisione viene visualizzata automaticamente quando un utente seleziona i file, eliminando la necessità di fare clic manualmente sul pulsante.",
"admin.config.smtp.enabled": "Abilita", "admin.config.smtp.enabled": "Abilita",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "La chiave che consente di accedere al bucket S3.", "admin.config.s3.key.description": "La chiave che consente di accedere al bucket S3.",
"admin.config.s3.secret": "Parola chiave", "admin.config.s3.secret": "Parola chiave",
"admin.config.s3.secret.description": "La parola chiave che consente di accedere al bucket S3.", "admin.config.s3.secret.description": "La parola chiave che consente di accedere al bucket S3.",
"admin.config.category.legal": "Legale",
"admin.config.legal.enabled": "Abilita le notifiche legali",
"admin.config.legal.enabled.description": "Indica se mostrare o meno un link alle informative legali e sulla privacy a piè di pagina.",
"admin.config.legal.imprint-text": "Testo dell'informativa",
"admin.config.legal.imprint-text.description": "Il testo che deve essere mostrato nell'informativa. Supporta il linguaggio Markdown. Lascia vuoto per collegare una pagina informativa esterna.",
"admin.config.legal.imprint-url": "URL dell'informativa",
"admin.config.legal.imprint-url.description": "Nel caso avessi già una pagina di informativa puoi collegarla qui invece di usare il campo di testo.",
"admin.config.legal.privacy-policy-text": "Testo dell'informativa sulla privacy",
"admin.config.legal.privacy-policy-text.description": "Il testo che dovrebbe essere mostrato nell'informativa sulla privacy. Supporta il linguaggio Markdown. Lascia vuoto per collegare una pagina esterna inerente la politica sulla privacy.",
"admin.config.legal.privacy-policy-url": "URL dell'informativa sulla privacy",
"admin.config.legal.privacy-policy-url.description": "Nel caso avessi già una pagina di informativa sulla privacy, puoi collegarla qui invece di usare il campo di testo.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "有効期限", "account.shares.table.expiresAt": "有効期限",
"account.shares.table.createdAt": "作成日", "account.shares.table.createdAt": "作成日",
"account.shares.table.size": "サイズ", "account.shares.table.size": "サイズ",
"account.shares.table.password-protected": "パスワードで保護されています",
"account.shares.table.visitor-count": "{count} / {max}",
"account.shares.table.expiry-never": "なし",
"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": "共有を削除: {share}", "account.shares.modal.delete.title": "共有を削除: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "共有の最終処理でエラーが発生しました。", "share.edit.notify.generic-error": "共有の最終処理でエラーが発生しました。",
"share.edit.notify.save-success": "共有の更新に成功しました", "share.edit.notify.save-success": "共有の更新に成功しました",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "インプリント",
// END /imprint
// /privacy
"privacy.title": "プライバシーポリシー",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "設定", "admin.config.title": "設定",
"admin.config.category.general": "一般", "admin.config.category.general": "一般",
@@ -335,15 +344,15 @@ export default {
"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": "デフォルトの共有IDの長さ",
"admin.config.share.share-id-length.description": "共有の生成されたIDのデフォルトの長さ。この値はファイルリクエストのリンクを生成するためにも使用されます。8未満の値は安全ではないと見なされます。", "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": "最大ファイルサイズ",
"admin.config.share.zip-compression-level": "Zip圧縮レベル", "admin.config.share.zip-compression-level": "Zip圧縮レベル",
"admin.config.share.zip-compression-level.description": "ファイルサイズと圧縮速度のバランスを取るように、レベルを調整できます。有効な値は09の間で、0が無圧縮、9で最大限の圧縮となります。 ", "admin.config.share.zip-compression-level.description": "ファイルサイズと圧縮速度のバランスを取るように、レベルを調整できます。有効な値は09の間で、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": "ユーザーがファイルを選択すると、共有作成モーダルが自動的に表示されるため、手動でボタンをクリックする必要がありません。", "admin.config.share.auto-open-share-modal.description": "ユーザーがファイルを選択すると、共有作成モーダルが自動的に表示されるため、手動でボタンをクリックする必要がありません。",
"admin.config.smtp.enabled": "有効", "admin.config.smtp.enabled": "有効",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "S3バケットにアクセスするためのキー。", "admin.config.s3.key.description": "S3バケットにアクセスするためのキー。",
"admin.config.s3.secret": "秘密", "admin.config.s3.secret": "秘密",
"admin.config.s3.secret.description": "S3バケットにアクセスするための秘密。", "admin.config.s3.secret.description": "S3バケットにアクセスするための秘密。",
"admin.config.category.legal": "法的事項",
"admin.config.legal.enabled": "法的通知を有効にする",
"admin.config.legal.enabled.description": "フッターにインプリントとプライバシーポリシーへのリンクを表示するか。",
"admin.config.legal.imprint-text": "インプリントテキスト",
"admin.config.legal.imprint-text.description": "インプリントに表示されるテキスト。Markdownをサポートします。外部のインプリント ページにリンクするには空白のままにします。",
"admin.config.legal.imprint-url": "インプリントのURL",
"admin.config.legal.imprint-url.description": "すでにインプリント ページがある場合は、テキストフィールドを使用する代わりにここにリンクすることができます。",
"admin.config.legal.privacy-policy-text": "プライバシーポリシーのテキスト",
"admin.config.legal.privacy-policy-text.description": "プライバシーポリシーに表示されるテキスト。Markdownをサポートします。外部のプライバシーポリシーにリンクするには空白のままにします。",
"admin.config.legal.privacy-policy-url": "プライバシーポリシーのURL",
"admin.config.legal.privacy-policy-url.description": "すでにプライバシーポリシーがある場合は、テキストフィールドを使用する代わりにここにリンクすることができます。",
// 404 // 404
"404.description": "ページが見つかりません。", "404.description": "ページが見つかりません。",
"404.button.home": "ホームに戻る", "404.button.home": "ホームに戻る",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "크기", "account.shares.table.size": "크기",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "공유를 완료하는 동안 오류가 발생했습니다.", "share.edit.notify.generic-error": "공유를 완료하는 동안 오류가 발생했습니다.",
"share.edit.notify.save-success": "공유가 업데이트 되었습니다.", "share.edit.notify.save-success": "공유가 업데이트 되었습니다.",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "구성", "admin.config.title": "구성",
"admin.config.category.general": "일반", "admin.config.category.general": "일반",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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 압축 레벨",
"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": "Adjust the chunk size 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": "공유 생성 창 자동 열기", "admin.config.share.auto-open-share-modal": "공유 생성 창 자동 열기",
"admin.config.share.auto-open-share-modal.description": "사용자가 파일을 선택하면 공유 생성 창이 자동으로 나타나서 버튼을 수동으로 클릭할 필요가 없습니다.", "admin.config.share.auto-open-share-modal.description": "사용자가 파일을 선택하면 공유 생성 창이 자동으로 나타나서 버튼을 수동으로 클릭할 필요가 없습니다.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "이런, 이 페이지는 존재하지 않습니다.", "404.description": "이런, 이 페이지는 존재하지 않습니다.",
"404.button.home": "나를 집으로 데려다 줘", "404.button.home": "나를 집으로 데려다 줘",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Verloopt op", "account.shares.table.expiresAt": "Verloopt op",
"account.shares.table.createdAt": "Gemaakt op", "account.shares.table.createdAt": "Gemaakt op",
"account.shares.table.size": "Grootte", "account.shares.table.size": "Grootte",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Share verwijderd: {share}", "account.shares.modal.delete.title": "Share verwijderd: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Er is een fout opgetreden tijdens het voltooien van uw share.", "share.edit.notify.generic-error": "Er is een fout opgetreden tijdens het voltooien van uw share.",
"share.edit.notify.save-success": "Share is succesvol bijgewerkt", "share.edit.notify.save-success": "Share is succesvol bijgewerkt",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configuratie", "admin.config.title": "Configuratie",
"admin.config.category.general": "Algemeen", "admin.config.category.general": "Algemeen",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Ongeverifieerde shares toestaan", "admin.config.share.allow-unauthenticated-shares": "Ongeverifieerde shares toestaan",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Zip compressie niveau", "admin.config.share.zip-compression-level": "Zip compressie niveau",
"admin.config.share.zip-compression-level.description": "Pas het niveau aan voor evenwicht tussen bestandsgrootte en compressie snelheid. Geldige waarden variëren van 0 tot 9, waarbij 0 geen compressie is en 9 de maximale compressie is. ", "admin.config.share.zip-compression-level.description": "Pas het niveau aan voor evenwicht tussen bestandsgrootte en compressie snelheid. Geldige waarden variëren van 0 tot 9, waarbij 0 geen compressie is en 9 de maximale compressie is. ",
"admin.config.share.chunk-size": "Chunk size", "admin.config.share.chunk-size": "Chunk size",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Rozmiar", "account.shares.table.size": "Rozmiar",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Informacje udziału", "account.shares.modal.share-informations": "Informacje udziału",
"account.shares.modal.share-link": "Udostępnij link", "account.shares.modal.share-link": "Udostępnij link",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "W trakcie zakańczania tworzenia udziału wystąpił błąd.", "share.edit.notify.generic-error": "W trakcie zakańczania tworzenia udziału wystąpił błąd.",
"share.edit.notify.save-success": "Udział zaktualizowany pomyślnie", "share.edit.notify.save-success": "Udział zaktualizowany pomyślnie",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguracja", "admin.config.title": "Konfiguracja",
"admin.config.category.general": "Ogólne", "admin.config.category.general": "Ogólne",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Zezwalaj na nieuwierzytelnione udostępnianie", "admin.config.share.allow-unauthenticated-shares": "Zezwalaj na nieuwierzytelnione udostępnianie",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Poziom kompresji Zip", "admin.config.share.zip-compression-level": "Poziom kompresji Zip",
"admin.config.share.zip-compression-level.description": "Dostosuj poziom do równowagi między rozmiarem pliku a szybkością kompresji. Prawidłowe wartości mieszczą się w zakresie od 0 do 9, przy czym 0 to brak kompresji a 9 maksymalną kompresją. ", "admin.config.share.zip-compression-level.description": "Dostosuj poziom do równowagi między rozmiarem pliku a szybkością kompresji. Prawidłowe wartości mieszczą się w zakresie od 0 do 9, przy czym 0 to brak kompresji a 9 maksymalną kompresją. ",
"admin.config.share.chunk-size": "Rozmiar fragmentu", "admin.config.share.chunk-size": "Rozmiar fragmentu",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expira em", "account.shares.table.expiresAt": "Expira em",
"account.shares.table.createdAt": "Criada em", "account.shares.table.createdAt": "Criada em",
"account.shares.table.size": "Tamanho", "account.shares.table.size": "Tamanho",
"account.shares.table.password-protected": "Protegido por senha",
"account.shares.table.visitor-count": "{count} de {max}",
"account.shares.table.expiry-never": "Nunca",
"account.shares.modal.share-informations": "Informações do compartilhamento", "account.shares.modal.share-informations": "Informações do compartilhamento",
"account.shares.modal.share-link": "Link do compartilhamento", "account.shares.modal.share-link": "Link do compartilhamento",
"account.shares.modal.delete.title": "Excluir o compartilhamento {share}", "account.shares.modal.delete.title": "Excluir o compartilhamento {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.", "share.edit.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
"share.edit.notify.save-success": "Compartilhamento atualizado com sucesso", "share.edit.notify.save-success": "Compartilhamento atualizado com sucesso",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Política de Privacidade",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configuração", "admin.config.title": "Configuração",
"admin.config.category.general": "Geral", "admin.config.category.general": "Geral",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação", "admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
"admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos", "admin.config.share.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": "Expiração máxima de compartilhamento. 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": "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.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",
"admin.config.share.zip-compression-level": "Nível de compressão", "admin.config.share.zip-compression-level": "Nível de compressão",
"admin.config.share.zip-compression-level.description": "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ", "admin.config.share.zip-compression-level.description": "Ajuste o nível para equilibrar entre o tamanho do arquivo e a velocidade de compressão. Valores válidos vão de 0 a 9, com 0 sendo sem compressão e 9 sendo compressão máxima. ",
"admin.config.share.chunk-size": "Tamanho do pedaço", "admin.config.share.chunk-size": "Tamanho do pedaço",
"admin.config.share.chunk-size.description": "Ajuste o tamanho do pedaço (em bytes) para seus uploads equilibrarem eficiência e confiabilidade de acordo com sua conexão com a internet. Pedaços menores podem aumentar as taxas de sucesso para conexões instáveis, enquanto partes maiores aceleram uploads para conexões estáveis.", "admin.config.share.chunk-size.description": "Ajuste o tamanho do pedaço para seus uploads equilibrarem eficiência e confiabilidade de acordo com sua conexão com a internet. Pedaços menores podem aumentar as taxas de sucesso para conexões instáveis, enquanto partes maiores aceleram uploads para conexões estáveis.",
"admin.config.share.auto-open-share-modal": "Abertura automática do modal de criação de compartilhamento", "admin.config.share.auto-open-share-modal": "Abertura automática do modal de criação de compartilhamento",
"admin.config.share.auto-open-share-modal.description": "O modal de criação de compartilhamento aparece automaticamente quando um usuário seleciona arquivos, eliminando a necessidade de clicar manualmente no botão.", "admin.config.share.auto-open-share-modal.description": "O modal de criação de compartilhamento aparece automaticamente quando um usuário seleciona arquivos, eliminando a necessidade de clicar manualmente no botão.",
"admin.config.smtp.enabled": "Habilitar", "admin.config.smtp.enabled": "Habilitar",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "A chave que permite a você acessar o bucket S3.", "admin.config.s3.key.description": "A chave que permite a você acessar o bucket S3.",
"admin.config.s3.secret": "Segredo", "admin.config.s3.secret": "Segredo",
"admin.config.s3.secret.description": "O segredo que permite a você acessar o bucket S3.", "admin.config.s3.secret.description": "O segredo que permite a você acessar o bucket S3.",
"admin.config.category.legal": "Aviso legal",
"admin.config.legal.enabled": "Habilitar avisos legais",
"admin.config.legal.enabled.description": "Exibir um link para imprimir e política de privacidade no rodapé.",
"admin.config.legal.imprint-text": "Imprimir texto",
"admin.config.legal.imprint-text.description": "O texto que deve ser mostrado na imagem. Suporta Markdown. Deixe em branco para vincular a página de impressão externa.",
"admin.config.legal.imprint-url": "Imprimir URL",
"admin.config.legal.imprint-url.description": "Se você já tem uma página impressa, você pode vinculá-la aqui ao invés de usar o campo de texto.",
"admin.config.legal.privacy-policy-text": "Texto da política de privacidade",
"admin.config.legal.privacy-policy-text.description": "O texto que deve ser mostrado na política de privacidade. Suporta Markdown. Deixe em branco para vincular a página de política de privacidade externa.",
"admin.config.legal.privacy-policy-url": "URL da política de privacidade",
"admin.config.legal.privacy-policy-url.description": "Se você já tem uma página impressa, você pode vinculá-la aqui ao invés de usar o campo de texto.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Размер", "account.shares.table.size": "Размер",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.", "share.edit.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.",
"share.edit.notify.save-success": "Ссылка на ресурс успешна обновлена", "share.edit.notify.save-success": "Ссылка на ресурс успешна обновлена",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Конфигурация", "admin.config.title": "Конфигурация",
"admin.config.category.general": "Общее", "admin.config.category.general": "Общее",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Длина идентификатора по умолчанию", "admin.config.share.share-id-length": "Длина идентификатора по умолчанию",
"admin.config.share.share-id-length.description": "Длина по умолчанию для сгенерированного ID ресурса. Это значение также используется для генерации ссылок для обратных акций. Значение ниже 8 не считается безопасным.", "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": "Модуль создания общего доступа автоматически появляется, когда пользователь выбирает файлы, устраняя необходимость вручную нажать кнопку.", "admin.config.share.auto-open-share-modal.description": "Модуль создания общего доступа автоматически появляется, когда пользователь выбирает файлы, устраняя необходимость вручную нажать кнопку.",
"admin.config.smtp.enabled": "Включено", "admin.config.smtp.enabled": "Включено",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Упс, этой страницы не существует.", "404.description": "Упс, этой страницы не существует.",
"404.button.home": "Верните меня домой", "404.button.home": "Верните меня домой",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Velikost", "account.shares.table.size": "Velikost",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Delite informacije", "account.shares.modal.share-informations": "Delite informacije",
"account.shares.modal.share-link": "Delite povezavo", "account.shares.modal.share-link": "Delite povezavo",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Prišlo je do napake pri ustvarjanju vaše delitve.", "share.edit.notify.generic-error": "Prišlo je do napake pri ustvarjanju vaše delitve.",
"share.edit.notify.save-success": "Delitev je bila uspešno posodbljena", "share.edit.notify.save-success": "Delitev je bila uspešno posodbljena",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Nastavitve", "admin.config.title": "Nastavitve",
"admin.config.category.general": "Splošno", "admin.config.category.general": "Splošno",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Dovoli delitve s strani neprijavljenih uporabnikov", "admin.config.share.allow-unauthenticated-shares": "Dovoli delitve s strani neprijavljenih uporabnikov",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Nivo Zip stiskanja", "admin.config.share.zip-compression-level": "Nivo Zip stiskanja",
"admin.config.share.zip-compression-level.description": "Nivo stiskanja, ki uravnoveša med velikostjo datoteke in hitrostjo stiskanja. Veljavne vrednosti so med 0 in 9, kjer 0 pomeni brez kompresije in 9 pomeni največjo kompresijo. ", "admin.config.share.zip-compression-level.description": "Nivo stiskanja, ki uravnoveša med velikostjo datoteke in hitrostjo stiskanja. Veljavne vrednosti so med 0 in 9, kjer 0 pomeni brez kompresije in 9 pomeni največjo kompresijo. ",
"admin.config.share.chunk-size": "Velikost delcev", "admin.config.share.chunk-size": "Velikost delcev",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Ističe", "account.shares.table.expiresAt": "Ističe",
"account.shares.table.createdAt": "Napravljeno", "account.shares.table.createdAt": "Napravljeno",
"account.shares.table.size": "Veličina", "account.shares.table.size": "Veličina",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Delite informacije", "account.shares.modal.share-informations": "Delite informacije",
"account.shares.modal.share-link": "Deli vezu", "account.shares.modal.share-link": "Deli vezu",
"account.shares.modal.delete.title": "Izbriši deljenje {share}", "account.shares.modal.delete.title": "Izbriši deljenje {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Došlo je do greške prilikom završetka vašeg deljenja.", "share.edit.notify.generic-error": "Došlo je do greške prilikom završetka vašeg deljenja.",
"share.edit.notify.save-success": "Deljenje je uspešno ažurirano", "share.edit.notify.save-success": "Deljenje je uspešno ažurirano",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguracija", "admin.config.title": "Konfiguracija",
"admin.config.category.general": "Opšte", "admin.config.category.general": "Opšte",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Dozvoli deljenje bez autentifikacije", "admin.config.share.allow-unauthenticated-shares": "Dozvoli deljenje bez autentifikacije",
"admin.config.share.allow-unauthenticated-shares.description": "Da li korisnici bez autentifikacije mogu da kreiraju deljenja", "admin.config.share.allow-unauthenticated-shares.description": "Da li korisnici bez autentifikacije mogu da kreiraju deljenja",
"admin.config.share.max-expiration": "Maksimalni rok trajanja", "admin.config.share.max-expiration": "Maksimalni rok trajanja",
"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-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Dužina podrazumevanog ID-a za deljenje", "admin.config.share.share-id-length": "Dužina podrazumevanog ID-a za deljenje",
"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.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.max-size": "Maksimalna veličina", "admin.config.share.max-size": "Maksimalna veličina",
"admin.config.share.max-size.description": "Maksimalna veličina deljenja u bajtovima", "admin.config.share.max-size.description": "Maksimalna veličina deljenja",
"admin.config.share.zip-compression-level": "Nivo Zip kompresije", "admin.config.share.zip-compression-level": "Nivo Zip kompresije",
"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.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.chunk-size": "Veličina komada", "admin.config.share.chunk-size": "Veličina komada",
"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.share.chunk-size.description": "Podesite veličinu dela 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.share.auto-open-share-modal": "Automatski otvori stvaranje modala deljenja", "admin.config.share.auto-open-share-modal": "Automatski otvori stvaranje modala deljenja",
"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.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.enabled": "Omogući", "admin.config.smtp.enabled": "Omogući",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Opa - Ova strana ne postoji.", "404.description": "Opa - Ova strana ne postoji.",
"404.button.home": "Vrati me na početak", "404.button.home": "Vrati me na početak",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Истиче", "account.shares.table.expiresAt": "Истиче",
"account.shares.table.createdAt": "Направљено", "account.shares.table.createdAt": "Направљено",
"account.shares.table.size": "Величина", "account.shares.table.size": "Величина",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Избриши дељење {share}", "account.shares.modal.delete.title": "Избриши дељење {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Дошло је до грешке приликом завршетка вашег дељења.", "share.edit.notify.generic-error": "Дошло је до грешке приликом завршетка вашег дељења.",
"share.edit.notify.save-success": "Дељење је успешно ажурирано", "share.edit.notify.save-success": "Дељење је успешно ажурирано",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Конфигурација", "admin.config.title": "Конфигурација",
"admin.config.category.general": "Опште", "admin.config.category.general": "Опште",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Дужина подразумеваног ID-а за дељење", "admin.config.share.share-id-length": "Дужина подразумеваног ID-а за дељење",
"admin.config.share.share-id-length.description": "Подразумевана дужина генерисаног ID-а за дељење. Ова вредност се такође користи за генерисање линкова за обрнуто дељење. Вредност испод 8 се не сматра безбедном.", "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": "Модал за креирање дељења аутоматски се појављује када корисник изабере датотеке, елиминишући потребу за ручним кликом на дугме.", "admin.config.share.auto-open-share-modal.description": "Модал за креирање дељења аутоматски се појављује када корисник изабере датотеке, елиминишући потребу за ручним кликом на дугме.",
"admin.config.smtp.enabled": "Омогући", "admin.config.smtp.enabled": "Омогући",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Опа - Ова страна не постоји.", "404.description": "Опа - Ова страна не постоји.",
"404.button.home": "Врати ме на почетак", "404.button.home": "Врати ме на почетак",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Storlek", "account.shares.table.size": "Storlek",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Information om delning", "account.shares.modal.share-informations": "Information om delning",
"account.shares.modal.share-link": "Delningslänk", "account.shares.modal.share-link": "Delningslänk",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.", "share.edit.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.",
"share.edit.notify.save-success": "Delningen har uppdaterats", "share.edit.notify.save-success": "Delningen har uppdaterats",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfiguration", "admin.config.title": "Konfiguration",
"admin.config.category.general": "Allmänt", "admin.config.category.general": "Allmänt",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Tillåt oautentiserade delningar", "admin.config.share.allow-unauthenticated-shares": "Tillåt oautentiserade delningar",
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Komprimeringsnivå för zip", "admin.config.share.zip-compression-level": "Komprimeringsnivå för zip",
"admin.config.share.zip-compression-level.description": "Justera nivån för att balansera mellan filstorlek och komprimeringshastighet. Giltiga värden varierar från 0 till 9, med 0 som ingen komprimering och 9 som maximal komprimering. ", "admin.config.share.zip-compression-level.description": "Justera nivån för att balansera mellan filstorlek och komprimeringshastighet. Giltiga värden varierar från 0 till 9, med 0 som ingen komprimering och 9 som maximal komprimering. ",
"admin.config.share.chunk-size": "Bitstorleken", "admin.config.share.chunk-size": "Bitstorleken",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "ขนาด", "account.shares.table.size": "ขนาด",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "An error occurred while finishing your share.", "share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Share updated successfully", "share.edit.notify.save-success": "Share updated successfully",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "การตั้งค่า", "admin.config.title": "การตั้งค่า",
"admin.config.category.general": "ทั่วไป", "admin.config.category.general": "ทั่วไป",
@@ -335,7 +344,7 @@ export default {
"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": "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. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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": "ขนาดสูงสุด",
@@ -343,7 +352,7 @@ export default {
"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": "Chunk size",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "ไม่พบหน้าที่คุณกำลังมองหา", "404.description": "ไม่พบหน้าที่คุณกำลังมองหา",
"404.button.home": "หน้าแรก", "404.button.home": "หน้าแรก",

View File

@@ -1,40 +1,40 @@
export default { export default {
// Navbar // Navbar
"navbar.upload": "Yükle", "navbar.upload": "Yükle",
"navbar.signin": "Giriş Yap", "navbar.signin": "Giriş yap",
"navbar.home": "Ana Sayfa", "navbar.home": "Ana Sayfa",
"navbar.signup": "Sign up", "navbar.signup": "Kaydol",
"navbar.links.shares": "Paylaşımlarım", "navbar.links.shares": "Paylaşımlarım",
"navbar.links.reverse": "Tersine Paylaşımlar", "navbar.links.reverse": "Ters paylaşımlar",
"navbar.avatar.account": "Hesabım", "navbar.avatar.account": "Hesabım",
"navbar.avatar.admin": "Yönetim", "navbar.avatar.admin": "Yönetim",
"navbar.avatar.signout": ıkış Yap", "navbar.avatar.signout": ıkış yap",
// END navbar // END navbar
// / // /
"home.title": "<h>Kişisel barındırılan</h> bir dosya paylaşım platformu.", "home.title": "Kendi <h>kendine barındırılan</h> bir dosya paylaşım platformu.",
"home.description": "Kişisel dosyalarınızı WeTransfer gibi üçüncü tarafların eline gerçekten vermek istiyor musunuz?", "home.description": "Kişisel dosyalarınızı WeTransfer gibi üçüncü tarafların eline gerçekten vermek ister misiniz?",
"home.bullet.a.name": "Kişisel Barındırılan", "home.bullet.a.name": "Kendi Kendine Barındırılan",
"home.bullet.a.description": "Pingvin Share'i kendi makinenizde barındırın.", "home.bullet.a.description": "Pingvin Share'i kendi cihazınızda barındırın.",
"home.bullet.b.name": "Gizlilik", "home.bullet.b.name": "Gizlilik",
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.", "home.bullet.b.description": "Dosyalarınız size aittir ve asla üçüncü taraflar tarafından erişilemez.",
"home.bullet.c.name": "Can sıkıcı dosya boyutu sınırı yok", "home.bullet.c.name": "Can sıkıcı boyut sınırı yok",
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.", "home.bullet.c.description": "İstediğiniz kadar büyük dosyaları yükleyin. Sadece sabit diskiniz sınırınız olacak.",
"home.button.start": "Başlayalım", "home.button.start": "Başlayın",
"home.button.source": "Kaynak kodu", "home.button.source": "Kaynak kodu",
// END / // END /
// /auth/signin // /auth/signin
"signin.title": "Tekrar hoşgeldiniz", "signin.title": "Tekrar hoş geldiniz",
"signin.description": "Henüz bir hesabınız yok mu?", "signin.description": "Henüz bir hesabınız yok mu?",
"signin.button.signup": "Kaydol", "signin.button.signup": "Kaydol",
"signin.input.email-or-username": "Eposta veya kullanıcı adı", "signin.input.email-or-username": "E-posta veya kullanıcı adı",
"signin.input.email-or-username.placeholder": "E-Posta veya kullanıcı adı", "signin.input.email-or-username.placeholder": "E-posta adresiniz veya kullanıcı adınız",
"signin.input.password": "Şifre", "signin.input.password": "Şifre",
"signin.input.password.placeholder": "Şifreniz", "signin.input.password.placeholder": "Şifreniz",
"signin.button.submit": "Giriş Yap", "signin.button.submit": "Giriş yap",
"signIn.notify.totp-required.title": "İki faktörlü kimlik doğrulama gerekli", "signIn.notify.totp-required.title": "İki faktörlü kimlik doğrulama gerekli",
"signIn.notify.totp-required.description": "Lütfen iki faktörlü doğrulama kodunuzu girin", "signIn.notify.totp-required.description": "Lütfen iki faktörlü kimlik doğrulama kodunuzu girin",
"signIn.oauth.or": "YA DA", "signIn.oauth.or": "VEYA",
"signIn.oauth.signInWith": "Sign in with", "signIn.oauth.signInWith": "Şununla giriş yap",
"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,101 +42,104 @@ export default {
"signIn.oauth.oidc": "OpenID", "signIn.oauth.oidc": "OpenID",
// END /auth/signin // END /auth/signin
// /auth/signup // /auth/signup
"signup.title": "Bir hesap oluştur", "signup.title": "Bir hesap oluşturun",
"signup.description": "Zaten bir hesabınız mı var?", "signup.description": "Zaten bir hesabınız var mı?",
"signup.button.signin": "Giriş Yap", "signup.button.signin": "Giriş yap",
"signup.input.username": "Kullanıcı Adı", "signup.input.username": "Kullanıcı adı",
"signup.input.username.placeholder": "Kullanıcı adınız", "signup.input.username.placeholder": "Kullanıcı adınız",
"signup.input.email": "E-Posta", "signup.input.email": "E-posta",
"signup.input.email.placeholder": "E-Posta adresiniz", "signup.input.email.placeholder": "E-posta adresiniz",
"signup.button.submit": "Haydi Başlayalım", "signup.button.submit": "Başlayalım",
// END /auth/signup // END /auth/signup
// /auth/totp // /auth/totp
"totp.title": "İki Faktörlü Doğrulama", "totp.title": "TOTP Doğrulama",
"totp.button.signIn": "Giriş Yap", "totp.button.signIn": "Giriş yap",
// END /auth/totp // END /auth/totp
// /auth/reset-password // /auth/reset-password
"resetPassword.title": "Şifrenizi mi unuttunuz?", "resetPassword.title": "Şifrenizi mi unuttunuz?",
"resetPassword.description": "Şifrenizi sıfırlamak için E-Postanızı girin.", "resetPassword.description": "Şifrenizi sıfırlamak için e-postanızı girin.",
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.", "resetPassword.notify.success": "Sağlanan e-posta adresi mevcutsa, şifrenizi sıfırlamanız için bir bağlantı gönderildi.",
"resetPassword.button.back": "Giriş sayfasına geri dön", "resetPassword.button.back": "Giriş sayfasına geri dön",
"resetPassword.text.resetPassword": "Şifreyi sıfırla", "resetPassword.text.resetPassword": "Şifreyi sıfırla",
"resetPassword.text.enterNewPassword": "Yeni şifrenizi girin", "resetPassword.text.enterNewPassword": "Yeni şifrenizi girin",
"resetPassword.input.password": "Yeni şifre", "resetPassword.input.password": "Yeni şifre",
"resetPassword.notify.passwordReset": "Your password has been successfully reset.", "resetPassword.notify.passwordReset": "Şifreniz başarıyla sıfırlandı.",
// /account // /account
"account.title": "Hesabım", "account.title": "Hesabım",
"account.card.info.title": "Hesap Bilgisi", "account.card.info.title": "Hesap bilgileri",
"account.card.info.username": "Kullanıcı Adı", "account.card.info.username": "Kullanıcı adı",
"account.card.info.email": "E-Posta", "account.card.info.email": "E-posta",
"account.notify.info.success": "Hesap başarıyla güncellendi", "account.notify.info.success": "Hesap başarıyla güncellendi",
"account.card.password.title": "Şifre", "account.card.password.title": "Şifre",
"account.card.password.old": "Eski şifre", "account.card.password.old": "Eski şifre",
"account.card.password.new": "Yeni şifre", "account.card.password.new": "Yeni şifre",
"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": "Şifreniz ayarlanmadı. E-posta ve şifre kullanarak giriş yapmak için bir şifre oluşturmanız gerekiyor.",
"account.notify.password.success": "Şifre başarıyla değiştirildi", "account.notify.password.success": "Şifre başarıyla değiştirildi",
"account.card.oauth.title": "Sosyal Medya girişi", "account.card.oauth.title": "Sosyal giriş",
"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",
"account.card.oauth.discord": "Discord", "account.card.oauth.discord": "Discord",
"account.card.oauth.oidc": "OpenID", "account.card.oauth.oidc": "OpenID",
"account.card.oauth.link": "Bağlantı", "account.card.oauth.link": "Bağla",
"account.card.oauth.unlink": "Bağlantıyı kes", "account.card.oauth.unlink": "Bağlantıyı kaldır",
"account.card.oauth.unlinked": "Bağlantısız", "account.card.oauth.unlinked": "Bağlantı kaldırıldı",
"account.modal.unlink.title": "Hesabın bağlantısını kaldır", "account.modal.unlink.title": "Hesabın bağlantısını kaldır",
"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": "Sosyal hesaplarınızın bağlantısını kaldırmanız giriş bilgilerinizi hatırlamıyorsanız hesabınızı kaybetmenize neden olabilir",
"account.notify.oauth.unlinked.success": "Bağlantı Başarıyla Kaldırıldı", "account.notify.oauth.unlinked.success": "Başarıyla bağlantı kaldırıldı",
"account.card.security.title": "Güvenlik", "account.card.security.title": "Güvenlik",
"account.card.security.totp.enable.description": "İki faktörlü doğrulamayı aktif etmek için şu anki şifrenizi girin", "account.card.security.totp.enable.description": "TOTP'yi etkinleştirmek için mevcut şifrenizi girin",
"account.card.security.totp.disable.description": "İki faktörlü doğrulamayı kaldırmak için şu anki şifrenizi girin", "account.card.security.totp.disable.description": "TOTP'yi devre dışı bırakmak için mevcut şifrenizi girin",
"account.card.security.totp.button.start": "Başlat", "account.card.security.totp.button.start": "Başlat",
"account.modal.totp.title": "2FA aç", "account.modal.totp.title": "TOTP'yi Etkinleştir",
"account.modal.totp.step1": "Adım 1: Kimlik doğrulayıcınızı ekleyin", "account.modal.totp.step1": "1. Adım: Kimlik doğrulayıcınızı ekleyin",
"account.modal.totp.step2": "Adım 2: Kodunuzu doğrulayın", "account.modal.totp.step2": "2. Adım: Kodunuzu doğrulayın",
"account.modal.totp.enterManually": "Manuel olarak girin", "account.modal.totp.enterManually": "Manuel olarak girin",
"account.modal.totp.code": "Kod", "account.modal.totp.code": "Kod",
"common.button.clickToCopy": "Kopyalamak için tıkla", "common.button.clickToCopy": "Kopyalamak için tıklayın",
"account.modal.totp.verify": "Doğrula", "account.modal.totp.verify": "Doğrula",
"account.notify.totp.disable": "2FA başarıyla kaldırıldı", "account.notify.totp.disable": "TOTP başarıyla devre dışı bırakıldı",
"account.notify.totp.enable": "2FA başarıyla etkinleştirildi", "account.notify.totp.enable": "TOTP başarıyla etkinleştirildi",
"account.card.language.title": "Dil", "account.card.language.title": "Dil",
"account.card.language.description": "Proje topluluk tarafından çevrilmiştir. Bazı diller eksik olabilir.", "account.card.language.description": "Proje topluluk tarafından çevrilmiştir. Bazı diller eksik olabilir.",
"account.card.color.title": "Renk Şeması", "account.card.color.title": "Renk şeması",
// ThemeSwitcher.tsx // ThemeSwitcher.tsx
"account.theme.dark": "Koyu", "account.theme.dark": "Karanlık",
"account.theme.light": "Açık", "account.theme.light": "Aydınlık",
"account.theme.system": "Sistem", "account.theme.system": "Sistem",
"account.button.delete": "Hesabı sil", "account.button.delete": "Hesabı Sil",
"account.modal.delete.title": "Hesabı sil", "account.modal.delete.title": "Hesabı Sil",
"account.modal.delete.description": "Tüm aktif paylaşımlarınız dahil hesabınızı gerçekten silmek istiyor musunuz?", "account.modal.delete.description": "Tüm aktif paylaşımlarınız dahil hesabınızı gerçekten silmek istiyor musunuz?",
// END /account // END /account
// /account/shares // /account/shares
"account.shares.title": "Paylaşımlarım", "account.shares.title": "Paylaşımlarım",
"account.shares.title.empty": "Burası bomboş 👀", "account.shares.title.empty": "Burası boş 👀",
"account.shares.description.empty": "Hiç paylaşımınız yok.", "account.shares.description.empty": "Hiç paylaşımınız yok.",
"account.shares.button.create": "Bir tane oluşturun", "account.shares.button.create": "Bir tane oluştur",
"account.shares.info.title": "Bilgiler paylaşın", "account.shares.info.title": "Paylaşım Bilgileri",
"account.shares.table.id": "ID", "account.shares.table.id": "ID",
"account.shares.table.name": "İsim", "account.shares.table.name": "Adı",
"account.shares.table.description": "Açıklama", "account.shares.table.description": "Açıklama",
"account.shares.table.visitors": "Ziyaretçiler", "account.shares.table.visitors": "Ziyaretçiler",
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Bitiş Tarihi",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Oluşturulma Tarihi",
"account.shares.table.size": "Boyut", "account.shares.table.size": "Boyut",
"account.shares.modal.share-informations": "Bilgiler paylaşın", "account.shares.table.password-protected": "Şifre Koruması",
"account.shares.modal.share-link": "Bağlantıyı paylaş", "account.shares.table.visitor-count": "{count} / {max}",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.table.expiry-never": "Hiçbir Zaman",
"account.shares.modal.share-informations": "Paylaşım Bilgileri",
"account.shares.modal.share-link": "Paylaşım Bağlantısı",
"account.shares.modal.delete.title": "Paylaşımı Sil: {share}",
"account.shares.modal.delete.description": "Bu paylaşımı silmek istediğinize emin misiniz?", "account.shares.modal.delete.description": "Bu paylaşımı silmek istediğinize emin misiniz?",
// END /account/shares // END /account/shares
// /account/reverseShares // /account/reverseShares
"account.reverseShares.title": "Tersine Paylaşımlar", "account.reverseShares.title": "Ters Paylaşımlar",
"account.reverseShares.description": "Ters paylaşım, harici kullanıcıların bir paylaşım oluşturmasına olanak tanıyan benzersiz bir URL oluşturmanızı sağlar.", "account.reverseShares.description": "Ters paylaşım, harici kullanıcıların paylaşım oluşturmasını sağlayan benzersiz bir URL oluşturmanıza olanak tanır.",
"account.reverseShares.title.empty": "Burası bomboş 👀", "account.reverseShares.title.empty": "Burası boş 👀",
"account.reverseShares.description.empty": "Hiç tersine paylaşımınız yok.", "account.reverseShares.description.empty": "Hiç ters paylaşımınız yok.",
// showCreateReverseShareModal.tsx // showCreateReverseShareModal.tsx
"account.reverseShares.modal.title": "Tersine paylaşım oluşturun", "account.reverseShares.modal.title": "Ters Paylaşım Oluştur",
"account.reverseShares.modal.expiration.label": "Sona erme", "account.reverseShares.modal.expiration.label": "Son Kullanım Süresi",
"account.reverseShares.modal.expiration.minute-singular": "Dakika", "account.reverseShares.modal.expiration.minute-singular": "Dakika",
"account.reverseShares.modal.expiration.minute-plural": "Dakika", "account.reverseShares.modal.expiration.minute-plural": "Dakika",
"account.reverseShares.modal.expiration.hour-singular": "Saat", "account.reverseShares.modal.expiration.hour-singular": "Saat",
@@ -149,92 +152,92 @@ export default {
"account.reverseShares.modal.expiration.month-plural": "Ay", "account.reverseShares.modal.expiration.month-plural": "Ay",
"account.reverseShares.modal.expiration.year-singular": "Yıl", "account.reverseShares.modal.expiration.year-singular": "Yıl",
"account.reverseShares.modal.expiration.year-plural": "Yıl", "account.reverseShares.modal.expiration.year-plural": "Yıl",
"account.reverseShares.modal.max-size.label": "Maks paylaşım boyutu", "account.reverseShares.modal.max-size.label": "Maksimum Paylaşım Boyutu",
"account.reverseShares.modal.send-email": "Send email notifications", "account.reverseShares.modal.send-email": "E-posta Bildirimleri Gönder",
"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": "Bu ters paylaşım bağlantısıyla bir paylaşım oluşturulduğunda size e-posta bildirimi gönderir.",
"account.reverseShares.modal.simplified": "Simple mode", "account.reverseShares.modal.simplified": "Basit Mod",
"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": "Dosya yükleyen kişinin, paylaşımı sizinle paylaşmasını kolaylaştırır. Yalnızca paylaşımın adını ve açıklamasını özelleştirebilirler.",
"account.reverseShares.modal.public-access": "Public access", "account.reverseShares.modal.public-access": "Genel Erişim",
"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": "Bu ters paylaşım ile oluşturulan paylaşımları genel yapın. Devre dışı bırakılırsa, yalnızca siz ve paylaşımı oluşturan kişi bunu görüntüleyebilir.",
"account.reverseShares.modal.max-use.label": "Maks Kullanım", "account.reverseShares.modal.max-use.label": "Maksimum Kullanım",
"account.reverseShares.modal.max-use.description": "Bu URL'nin bir paylaşım oluşturmak için kullanılabileceği maksimum sayı.", "account.reverseShares.modal.max-use.description": "Bu URL'nin paylaşım oluşturmak için kaç kez kullanılabileceğinin maksimum sayısı.",
"account.reverseShare.never-expires": "Bu tersine paylaşım asla sona ermeyecek.", "account.reverseShare.never-expires": "Bu ters paylaşım asla sona ermeyecek.",
"account.reverseShare.expires-on": "Bu tersine paylaşım {expiration} tarihinde sona erecek.", "account.reverseShare.expires-on": "Bu ters paylaşım {expiration} tarihinde sona erecek.",
"account.reverseShares.table.no-shares": "Henüz paylaşım oluşturulmadı", "account.reverseShares.table.no-shares": "Henüz bir paylaşım oluşturulmadı",
"account.reverseShares.table.count.singular": "paylaşım", "account.reverseShares.table.count.singular": "paylaşım",
"account.reverseShares.table.count.plural": "paylaşım", "account.reverseShares.table.count.plural": "paylaşımlar",
"account.reverseShares.table.shares": "Paylaşım", "account.reverseShares.table.shares": "Paylaşımlar",
"account.reverseShares.table.remaining": "Kalan kullanımların", "account.reverseShares.table.remaining": "Kalan Kullanım",
"account.reverseShares.table.max-size": "Maks paylaşım boyutu", "account.reverseShares.table.max-size": "Maksimum Paylaşım Boyutu",
"account.reverseShares.table.expires": "Sona erme tarihi", "account.reverseShares.table.expires": "Son Kullanım Tarihi",
"account.reverseShares.modal.reverse-share-link": "Tersine paylaşım bağlantısı", "account.reverseShares.modal.reverse-share-link": "Ters Paylaşım Bağlantısı",
"account.reverseShares.modal.delete.title": "Tersine paylaşımı sil", "account.reverseShares.modal.delete.title": "Ters Paylaşımı Sil",
"account.reverseShares.modal.delete.description": "Bu tersine paylaşımı gerçekten silmek istiyor musunuz? Bunu yaparsanız, ilişkili paylaşımlar da silinecektir.", "account.reverseShares.modal.delete.description": "Bu ters paylaşımı silmek istediğinize emin misiniz? Eğer silerseniz, ilişkili paylaşımlar da silinecektir.",
// END /account/reverseShares // END /account/reverseShares
// /admin // /admin
"admin.title": "Yönetim", "admin.title": "Yönetim",
"admin.button.users": "Kullanıcı yönetimi", "admin.button.users": "Kullanıcı Yönetimi",
"admin.button.shares": "Paylaşım yönetimi", "admin.button.shares": "Paylaşım Yönetimi",
"admin.button.config": "Konfigürasyon", "admin.button.config": "Yapılandırma",
"admin.version": "Sürüm", "admin.version": "Sürüm",
// END /admin // END /admin
// /admin/users // /admin/users
"admin.users.title": "Kullanıcı yönetimi", "admin.users.title": "Kullanıcı Yönetimi",
"admin.users.table.username": "Kullanıcı Adı", "admin.users.table.username": "Kullanıcı Adı",
"admin.users.table.email": "E-Posta", "admin.users.table.email": "E-posta",
"admin.users.table.admin": "Yönetici", "admin.users.table.admin": "Yönetici",
"admin.users.edit.update.title": "Edit user: {username}", "admin.users.edit.update.title": "Kullanıcıyı Düzenle: {username}",
"admin.users.edit.update.admin-privileges": "Yönetici ayrıcalıkları", "admin.users.edit.update.admin-privileges": "Yönetici Yetkileri",
"admin.users.edit.update.change-password.title": "Şifreyi değiştir", "admin.users.edit.update.change-password.title": "Şifreyi Değiştir",
"admin.users.edit.update.change-password.field": "Yeni şifre", "admin.users.edit.update.change-password.field": "Yeni Şifre",
"admin.users.edit.update.change-password.button": "Yeni şifreyi kaydet", "admin.users.edit.update.change-password.button": "Yeni Şifreyi Kaydet",
"admin.users.edit.update.notify.password.success": "Şifre başarıyla değiştirildi", "admin.users.edit.update.notify.password.success": "Şifre başarıyla değiştirildi",
"admin.users.edit.delete.title": "Delete user: {username} ?", "admin.users.edit.delete.title": "Kullanıcıyı Sil: {username} ?",
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?", "admin.users.edit.delete.description": "Bu kullanıcıyı ve tüm paylaşımlarını gerçekten silmek istiyor musunuz?",
// showCreateUserModal.tsx // showCreateUserModal.tsx
"admin.users.modal.create.title": "Kullanıcı oluştur", "admin.users.modal.create.title": "Kullanıcı Oluştur",
"admin.users.modal.create.username": "Kullanıcı Adı", "admin.users.modal.create.username": "Kullanıcı Adı",
"admin.users.modal.create.email": "E-Posta", "admin.users.modal.create.email": "E-posta",
"admin.users.modal.create.password": "Şifre", "admin.users.modal.create.password": "Şifre",
"admin.users.modal.create.manual-password": "Şifreyi manuel olarak ayarla", "admin.users.modal.create.manual-password": "Şifreyi Elle Ayarla",
"admin.users.modal.create.manual-password.description": "İşaretlenmezse, kullanıcı şifresini ayarlamak için bağlantı içeren bir e-posta alacaktır.", "admin.users.modal.create.manual-password.description": "İşaretlenmezse, kullanıcıya şifresini ayarlayabileceği bir bağlantı içeren e-posta gönderilir.",
"admin.users.modal.create.admin": "Yönetici ayrıcalıkları", "admin.users.modal.create.admin": "Yönetici Yetkileri",
"admin.users.modal.create.admin.description": "İşaretlenirse, kullanıcı yönetici paneline erişebilir.", "admin.users.modal.create.admin.description": "İşaretlenirse, kullanıcı yönetim paneline erişebilir.",
// END /admin/users // END /admin/users
// /admin/shares // /admin/shares
"admin.shares.title": "Paylaşım yönetimi", "admin.shares.title": "Paylaşım Yönetimi",
"admin.shares.table.id": "Paylaşım ID", "admin.shares.table.id": "Paylaşım ID",
"admin.shares.table.username": "Yapımcı", "admin.shares.table.username": "Oluşturan",
"admin.shares.table.visitors": "Ziyaretçi", "admin.shares.table.visitors": "Ziyaretçiler",
"admin.shares.table.expires": "Expires on", "admin.shares.table.expires": "Bitiş Tarihi",
"admin.shares.edit.delete.title": "Delete share: {id}", "admin.shares.edit.delete.title": "Paylaşımı Sil: {id}",
"admin.shares.edit.delete.description": "Bu paylaşımı gerçekten silmek istiyor musun?", "admin.shares.edit.delete.description": "Bu paylaşımı gerçekten silmek istiyor musunuz?",
// END /admin/shares // END /admin/shares
// /upload // /upload
"upload.title": "Yükle", "upload.title": "Yükle",
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.", "upload.notify.confirm-leave": "Bu sayfadan ayrılmak istediğinize emin misiniz? Yükleme iptal edilecek.",
"upload.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.", "upload.notify.generic-error": "Paylaşım tamamlanırken bir hata oluştu.",
"upload.notify.count-failed": "{count} dosya yüklenemedi. Yeniden deneniyor.", "upload.notify.count-failed": "{count} dosya yüklenemedi. Tekrar deneniyor.",
"upload.reverse-share.error.invalid.title": "Invalid reverse share link", "upload.reverse-share.error.invalid.title": "Geçersiz Ters Paylaşım Bağlantısı",
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.", "upload.reverse-share.error.invalid.description": "Bu ters paylaşım süresi dolmuş veya geçersiz.",
// Dropzone.tsx // Dropzone.tsx
"upload.dropzone.title": "Dosya yükle", "upload.dropzone.title": "Dosyaları Yükle",
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.", "upload.dropzone.description": "Paylaşımınızı başlatmak için dosyaları buraya sürükleyip bırakın. Toplamda en fazla {maxSize} boyutunda dosyaları kabul ediyoruz.",
"upload.dropzone.notify.file-too-big": "Dosyalarınızın boyutu {maxSize} paylaşım sınırını geçti.", "upload.dropzone.notify.file-too-big": "Dosyalarınız maksimum paylaşım boyutunu ({maxSize}) aşıyor.",
// FileList.tsx // FileList.tsx
"upload.filelist.name": "İsim", "upload.filelist.name": "Ad",
"upload.filelist.size": "Boyut", "upload.filelist.size": "Boyut",
// showCreateUploadModal.tsx // showCreateUploadModal.tsx
"upload.modal.title": "Paylaşım Oluştur", "upload.modal.title": "Paylaşım Oluştur",
"upload.modal.link.error.invalid": "Sadece harf, sayı, alt çizgi ve kısa çizgi içerebilir", "upload.modal.link.error.invalid": "Sadece harf, rakam, alt çizgi ve kısa çizgi içerebilir.",
"upload.modal.link.error.taken": "Bu bağlantı halen kullanımda", "upload.modal.link.error.taken": "Bu bağlantı zaten kullanımda.",
"upload.modal.not-signed-in": "Oturum açmadınız", "upload.modal.not-signed-in": "Giriş yapmadınız.",
"upload.modal.not-signed-in-description": "Paylaşımınızı manuel olarak silemeyecek ve ziyaret sayısını göremeyeceksiniz.", "upload.modal.not-signed-in-description": "Paylaşımınızı manuel olarak silemez ve ziyaretçi sayısını göremezsiniz.",
"upload.modal.expires.never": "asla", "upload.modal.expires.never": "Hiçbir zaman",
"upload.modal.expires.never-long": "Permanent share", "upload.modal.expires.never-long": "Kalıcı paylaşım",
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.", "upload.modal.expires.error.too-long": "Son kullanma tarihi maksimum {max} sınırınııyor.",
"upload.modal.link.label": "Bağlantı", "upload.modal.link.label": "Bağlantı",
"upload.modal.expires.label": "Sona erme tarihi", "upload.modal.expires.label": "Bitiş Tarihi",
"upload.modal.expires.minute-singular": "Dakika", "upload.modal.expires.minute-singular": "Dakika",
"upload.modal.expires.minute-plural": "Dakika", "upload.modal.expires.minute-plural": "Dakika",
"upload.modal.expires.hour-singular": "Saat", "upload.modal.expires.hour-singular": "Saat",
@@ -247,236 +250,253 @@ export default {
"upload.modal.expires.month-plural": "Ay", "upload.modal.expires.month-plural": "Ay",
"upload.modal.expires.year-singular": "Yıl", "upload.modal.expires.year-singular": "Yıl",
"upload.modal.expires.year-plural": "Yıl", "upload.modal.expires.year-plural": "Yıl",
"upload.modal.accordion.name-and-description.title": "İsim ve açıklama", "upload.modal.accordion.name-and-description.title": "Ad ve Açıklama",
"upload.modal.accordion.name-and-description.name.placeholder": "İsim", "upload.modal.accordion.name-and-description.name.placeholder": "Ad",
"upload.modal.accordion.name-and-description.description.placeholder": "Bu paylaşımın alıcıları için not", "upload.modal.accordion.name-and-description.description.placeholder": "Bu paylaşımın alıcıları için bir not",
"upload.modal.accordion.email.title": "E-Posta alıcıları", "upload.modal.accordion.email.title": "E-posta Alıcıları",
"upload.modal.accordion.email.placeholder": "E-Posta alıcılarını yazın", "upload.modal.accordion.email.placeholder": "E-posta alıcılarını girin",
"upload.modal.accordion.email.invalid-email": "Geçersiz E-Posta adresi", "upload.modal.accordion.email.invalid-email": "Geçersiz e-posta adresi",
"upload.modal.accordion.security.title": "Güvenlik seçenekleri", "upload.modal.accordion.security.title": "Güvenlik Seçenekleri",
"upload.modal.accordion.security.password.label": "Şifre koruması", "upload.modal.accordion.security.password.label": "Şifre Koruması",
"upload.modal.accordion.security.password.placeholder": "Şifresiz", "upload.modal.accordion.security.password.placeholder": "Şifre Yok",
"upload.modal.accordion.security.max-views.label": "En fazla görüntüleme", "upload.modal.accordion.security.max-views.label": "Maksimum Görüntüleme",
"upload.modal.accordion.security.max-views.placeholder": "Sınır yok", "upload.modal.accordion.security.max-views.placeholder": "Sınırsız",
// showCompletedUploadModal.tsx // showCompletedUploadModal.tsx
"upload.modal.completed.never-expires": "Bu paylaşım asla sona ermeyecek.", "upload.modal.completed.never-expires": "Bu paylaşımın süresi hiçbir zaman dolmayacak.",
"upload.modal.completed.expires-on": "Bu paylaşım {expiration} tarihinde sona erecek.", "upload.modal.completed.expires-on": "Bu paylaşım {expiration} tarihinde sona erecek.",
"upload.modal.completed.share-ready": "Paylaşım hazır", "upload.modal.completed.share-ready": "Paylaşım hazır.",
"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": "Ters paylaşımın yaratıcısını bilgilendirdik. Bu bağlantıyı diğer yollarla manuel olarak da paylaşabilirsiniz.",
// END /upload // END /upload
// /share/[id] // /share/[id]
"share.title": "Paylaş {shareId}", "share.title": "{shareId} Paylaşımı",
"share.description": "Seninle ne paylaştığıma bak!", "share.description": "Sizinle paylaştıklarımı bir göz atın!",
"share.error.visitor-limit-exceeded.title": "Ziyaretçi sınırııldı", "share.error.visitor-limit-exceeded.title": "Ziyaretçi limitiıldı",
"share.error.visitor-limit-exceeded.description": "Bu paylaşımdaki ziyaretçi sınırııldı.", "share.error.visitor-limit-exceeded.description": "Bu paylaşımın ziyaretçi limitiıldı.",
"share.error.removed.title": "Paylaşım kaldırıldı", "share.error.removed.title": "Paylaşım kaldırıldı",
"share.error.not-found.title": "Paylaşım bulunamadı", "share.error.not-found.title": "Paylaşım bulunamadı",
"share.error.not-found.description": "Aradığınız paylaşım bulunmuyor.", "share.error.not-found.description": "Aradığınız paylaşım mevcut değil.",
"share.error.access-denied.title": "Private share", "share.error.access-denied.title": "Özel paylaşım",
"share.error.access-denied.description": "The current account does not have permission to access this share", "share.error.access-denied.description": "Mevcut hesabın bu paylaşıma erişim izni yok.",
"share.modal.password.title": "Şifre gerekli", "share.modal.password.title": "Şifre gerekli",
"share.modal.password.description": "Please enter the password to acces this share.", "share.modal.password.description": "Bu paylaşıma erişmek için lütfen şifreyi girin.",
"share.modal.password": "Şifre", "share.modal.password": "Şifre",
"share.modal.error.invalid-password": "Geçersiz şifre", "share.modal.error.invalid-password": "Geçersiz şifre",
"share.button.download-all": "Tümünü indir", "share.button.download-all": "Tümünü indir",
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.", "share.notify.download-all-preparing": "Paylaşım hazırlanıyor. Lütfen birkaç dakika sonra tekrar deneyin.",
"share.modal.file-link": "Dosya bağlantısı", "share.modal.file-link": "Dosya bağlantısı",
"share.table.name": "İsim", "share.table.name": "Ad",
"share.table.size": "Boyut", "share.table.size": "Boyut",
"share.modal.file-preview.error.not-supported.title": "Önizleme desteklenmiyor", "share.modal.file-preview.error.not-supported.title": "Önizleme desteklenmiyor",
"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": "Bu dosya türü için önizleme desteklenmiyor. Lütfen dosyayı görüntülemek için indirin.",
// END /share/[id] // END /share/[id]
// /share/[id]/edit // /share/[id]/edit
"share.edit.title": "{shareId} düzenle", "share.edit.title": "{shareId} Paylaşımını Düzenle",
"share.edit.append-upload": "Dosya ekle", "share.edit.append-upload": "Dosya ekle",
"share.edit.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.", "share.edit.notify.generic-error": "Paylaşımınızı tamamlarken bir hata oluştu.",
"share.edit.notify.save-success": "Paylaşım başarıyla güncellendi", "share.edit.notify.save-success": "Paylaşım başarıyla güncellendi",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Künye",
// END /imprint
// /privacy
"privacy.title": "Gizlilik Politikası",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Konfigürasyon", "admin.config.title": "Yapılandırma",
"admin.config.category.general": "Genel", "admin.config.category.general": "Genel",
"admin.config.category.share": "Paylaş", "admin.config.category.share": "Paylaş",
"admin.config.category.email": "E-Posta", "admin.config.category.email": "E-posta",
"admin.config.category.smtp": "SMTP", "admin.config.category.smtp": "SMTP",
"admin.config.category.oauth": "Sosyal Medya Girişi", "admin.config.category.oauth": "Sosyal Giriş",
"admin.config.general.app-name": "Uygulama adı", "admin.config.general.app-name": "Uygulama adı",
"admin.config.general.app-name.description": "Uygulamanın adı", "admin.config.general.app-name.description": "Uygulamanın adı",
"admin.config.general.app-url": "Uygulama URL'si", "admin.config.general.app-url": "Uygulama URL'si",
"admin.config.general.app-url.description": "Pingvin Share'in hangi bağlantıda kullanılacağı", "admin.config.general.app-url.description": "Pingvin Share hangi URL üzerinden kullanılabilir",
"admin.config.general.secure-cookies": "Secure cookies", "admin.config.general.secure-cookies": "Güvenli çerezler",
"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": "Çerezlere güvenli bayrağı koyulup koyulmayacağı. Etkinleştirildiğinde, site HTTP üzerinden erişildiğinde çalışmaz.",
"admin.config.general.show-home-page": "Ana sayfayı göster", "admin.config.general.show-home-page": "Ana sayfayı göster",
"admin.config.general.show-home-page.description": "Ana sayfanın görünürlüğü", "admin.config.general.show-home-page.description": "Ana sayfanın gösterilip gösterilmeyeceği",
"admin.config.general.session-duration": "Oturum Süresi", "admin.config.general.session-duration": "Oturum Süresi",
"admin.config.general.session-duration.description": "Kullanıcının ne kadar sürede bir tekrar giriş yapacağı (normalde 3 ay).", "admin.config.general.session-duration.description": "Bir kullanıcının tekrar oturum açması gereken saat cinsinden süre (varsayılan: 3 ay).",
"admin.config.general.logo": "Logo", "admin.config.general.logo": "Logo",
"admin.config.general.logo.description": "Yeni resim yükleyerek logo'nuzu değiştirin. Resim PNG ve 1'e 1 ölçekte olmalı.", "admin.config.general.logo.description": "Yeni bir resim yükleyerek logonuzu değiştirin. Resim PNG formatında olmalı ve 1:1 oranında olmalıdır.",
"admin.config.general.logo.placeholder": "Resim seç", "admin.config.general.logo.placeholder": "Resim seç",
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing", "admin.config.email.enable-share-email-recipients": "E-posta alıcılarının paylaşımını etkinleştir",
"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": "E-postaların alıcılarla paylaşılmasına izin verilip verilmeyeceği. Sadece SMTP etkinleştirildiğinde bunu etkinleştirin.",
"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önderilen 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ına 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 {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.share-recipients-message.description": "Paylaşım alıcılarına gönderilen mesaj. Kullanılabilir değişkenler:\n {creator} - Paylaşımı oluşturanın kullanıcı adı\n {creatorEmail} - Paylaşımı oluşturanın e-posta adresi\n {shareUrl} - Paylaşım URL'si\n {desc} - Paylaşım açıklaması\n {expires} - Paylaşımın son kullanma tarihi\n Bu değişkenler gerçek değerlerle değiştirilecektir.",
"admin.config.email.reverse-share-subject": "Tersine paylaşım konusu", "admin.config.email.reverse-share-subject": "Ters 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": "Birisi ters paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen e-postanın konusu.",
"admin.config.email.reverse-share-message": "Tersine paylaşım mesajı", "admin.config.email.reverse-share-message": "Ters paylaşım mesajı",
"admin.config.email.reverse-share-message.description": "Birisi sizin tersine paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen mesaj. {shareUrl}, oluşturucunun adı ve paylaşım URL'si ile değiştirilecektir.", "admin.config.email.reverse-share-message.description": "Birisi ters paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen mesaj. {shareUrl}, paylaşımı oluşturan kişinin adı ve paylaşım URL'si ile değiştirilecektir.",
"admin.config.email.reset-password-subject": "Şifre sıfırlama konusu", "admin.config.email.reset-password-subject": "Şifre sıfırlama konusu",
"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": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilen e-postanın konusu.",
"admin.config.email.reset-password-message": "Şifre sıfırlama mesajı", "admin.config.email.reset-password-message": "Şifre sıfırlama mesajı",
"admin.config.email.reset-password-message.description": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilecek mesaj. {url} şifre sıfırlama URL'si ile değiştirilecektir.", "admin.config.email.reset-password-message.description": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilen mesaj. {url}, şifre sıfırlama URL'si ile değiştirilecektir.",
"admin.config.email.invite-subject": "Davet konusu", "admin.config.email.invite-subject": "Davet konusu",
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.", "admin.config.email.invite-subject.description": "Bir yönetici bir kullanıcıyı davet ettiğinde gönderilen e-postanın konusu.",
"admin.config.email.invite-message": "Davet mesajı", "admin.config.email.invite-message": "Davet mesajı",
"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": "Bir yönetici bir kullanıcıyı davet ettiğinde gönderilen mesaj. {url}, davet URL'si ile; {email}, e-posta adresi ile ve {password}, kullanıcının şifresi ile değiştirilecektir.",
"admin.config.share.allow-registration": "Kayda izin ver", "admin.config.share.allow-registration": "Kayıta izin ver",
"admin.config.share.allow-registration.description": "Kaydın izin verilip verilmeyeceği", "admin.config.share.allow-registration.description": "Kaydın izinli olup olmadığı",
"admin.config.share.allow-unauthenticated-shares": "Giriş yapmamış kullanıcılara izin ver", "admin.config.share.allow-unauthenticated-shares": "Doğrulanmamış paylaşımlara izin ver",
"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": "Doğrulanmamış kullanıcıların paylaşım oluşturmasına izin verilip verilmeyeceği",
"admin.config.share.max-expiration": "Maks sona erme", "admin.config.share.max-expiration": "Maksimum son kullanma süresi",
"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": "Maksimum paylaşım süresi. Sınırsız süreye izin vermek için 0 olarak ayarlayın.",
"admin.config.share.share-id-length": "Default share ID length", "admin.config.share.share-id-length": "Varsayılan paylaşım ID uzunluğu",
"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.share-id-length.description": "Bir paylaşım için oluşturulan varsayılan ID uzunluğu. Bu değer, ters paylaşımlar için bağlantı oluştururken de kullanılır. 8'in altındaki bir değer güvenli olarak kabul edilmez.",
"admin.config.share.max-size": "Maks boyut", "admin.config.share.max-size": "Maksimum boyut",
"admin.config.share.max-size.description": "Byte üzerinden maks paylaşım boyutu", "admin.config.share.max-size.description": "Maksimum 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",
"admin.config.share.zip-compression-level.description": "Dosya boyutu ve sıkıştırma hızı arasında denge kurmak için seviyeyi ayarlayın. Geçerli değerler 0 ile 9 arasında değişir; 0 sıkıştırma yok ve 9 maksimum sıkıştırma anlamına gelir. ", "admin.config.share.zip-compression-level.description": "Dosya boyutu ve sıkıştırma hızı arasındaki dengeyi ayarlayın. Geçerli değerler 0 ile 9 arasındadır; 0 sıkıştırma yok, 9 maksimum sıkıştırma anlamına gelir.",
"admin.config.share.chunk-size": "Yığın boyutu", "admin.config.share.chunk-size": "Parça boyutu",
"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": "Yüklemeleriniz için verimlilik ve güvenilirliği internet bağlantınıza göre dengelemek için parça boyutunu ayarlayın. Daha küçük parçalar, dengesiz bağlantılar için başarı oranını artırabilirken, daha büyük parçalar sabit bağlantılar için yükleme hızını artırır.",
"admin.config.share.auto-open-share-modal": "Paylaşım oluşturma modalini otomatik aç", "admin.config.share.auto-open-share-modal": "Paylaşım oluşturma penceresini otomatik aç",
"admin.config.share.auto-open-share-modal.description": "Bir kullanıcı dosyaları seçtiğinde paylaşım oluşturma modu otomatik olarak görünür ve düğmeye manuel olarak tıklama ihtiyacını ortadan kaldırır.", "admin.config.share.auto-open-share-modal.description": "Kullanıcı dosya seçtiğinde paylaşım oluşturma penceresi otomatik olarak görünür, manuel olarak düğmeye tıklamaya gerek kalmaz.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Etkinleştir",
"admin.config.smtp.enabled.description": "SMTP'nin etkin olup olmadığı. Bunu yalnızca SMTP sunucunuzun ana bilgisayarını, bağlantı noktasını, e-postasını, kullanıcısını ve şifresini girdiyseniz true olarak ayarlayın.", "admin.config.smtp.enabled.description": "SMTP'nin etkin olup olmadığı. Sadece ana bilgisayar, port, e-posta, kullanıcı ve SMTP sunucunuzun şifresini girdiyseniz bunu true olarak ayarlayın.",
"admin.config.smtp.host": "Host", "admin.config.smtp.host": "Sunucu",
"admin.config.smtp.host.description": "SMTP sunucusunun hostu", "admin.config.smtp.host.description": "SMTP sunucusunun ana bilgisayarı",
"admin.config.smtp.port": "Port", "admin.config.smtp.port": "Port",
"admin.config.smtp.port.description": "SMTP sunucusunun portu", "admin.config.smtp.port.description": "SMTP sunucusunun portu",
"admin.config.smtp.email": "E-Posta", "admin.config.smtp.email": "E-posta",
"admin.config.smtp.email.description": "Email address from wich the emails get sent", "admin.config.smtp.email.description": "E-postaların gönderileceği e-posta adresi",
"admin.config.smtp.username": "Kullanıcı Adı", "admin.config.smtp.username": "Kullanıcı adı",
"admin.config.smtp.username.description": "SMTP sunucusunun kullanıcı adı", "admin.config.smtp.username.description": "SMTP sunucusunun kullanıcı adı",
"admin.config.smtp.password": "Şifre", "admin.config.smtp.password": "Şifre",
"admin.config.smtp.password.description": "SMTP sunucusunun şifresi", "admin.config.smtp.password.description": "SMTP sunucusunun şifresi",
"admin.config.smtp.button.test": "Test e-postası gönder", "admin.config.smtp.button.test": "Test e-postası gönder",
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates", "admin.config.smtp.allow-unauthorized-certificates": "Yetkisiz SMTP sunucu sertifikalarına güven",
"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": "Sadece kendi imzaladığınız sertifikalara güvenmeniz gerekiyorsa bunu true olarak ayarlayın.",
"admin.config.oauth.allow-registration": "Kayıtlara izin ver", "admin.config.oauth.allow-registration": "Kayıt olmayı etkinleştir",
"admin.config.oauth.allow-registration.description": "Sosyal Medya kayıtlarına izin verilip verilmeyeceği", "admin.config.oauth.allow-registration.description": "Kullanıcıların sosyal giriş yoluyla kayıt olmasına izin ver",
"admin.config.oauth.ignore-totp": "2FA görmezden gel", "admin.config.oauth.ignore-totp": "TOTP'yi yoksay",
"admin.config.oauth.ignore-totp.description": "Sosyal Medya ile giriş yapıldıktıktan sonra 2FA görmezden gelinip gelinmeyeceği", "admin.config.oauth.ignore-totp.description": "Kullanıcı sosyal giriş yaparken TOTP'nin yoksayılıp yoksayılmayacağı",
"admin.config.oauth.disable-password": "Disable password login", "admin.config.oauth.disable-password": "Şifre girişini devre dışı bırak",
"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": "Şifre girişinin devre dışı bırakılıp bırakılmayacağı\nBu yapılandırmayı etkinleştirmeden önce bir OAuth sağlayıcısının doğru şekilde yapılandırıldığından emin olun, aksi takdirde hesaba erişiminiz engellenebilir.",
"admin.config.oauth.github-enabled": "GitHub", "admin.config.oauth.github-enabled": "GitHub",
"admin.config.oauth.github-enabled.description": "GitHub girişine izin verilip verilmeyeceği", "admin.config.oauth.github-enabled.description": "GitHub girişinin etkin olup olmadığı",
"admin.config.oauth.github-client-id": "GitHub Client ID", "admin.config.oauth.github-client-id": "GitHub İstemci Kimliği",
"admin.config.oauth.github-client-id.description": "GitHub OAuth uygulamasının Client ID'si", "admin.config.oauth.github-client-id.description": "GitHub OAuth uygulamasının İstemci Kimliği",
"admin.config.oauth.github-client-secret": "GitHub Client Secret", "admin.config.oauth.github-client-secret": "GitHub İstemci Gizli Anahtarı",
"admin.config.oauth.github-client-secret.description": "GitHub OAuth uygulamasının Client Secret'i", "admin.config.oauth.github-client-secret.description": "GitHub OAuth uygulamasının İstemci Gizli Anahtarı",
"admin.config.oauth.google-enabled": "Google", "admin.config.oauth.google-enabled": "Google",
"admin.config.oauth.google-enabled.description": "Google girişi izin verilip verilmeyeceği", "admin.config.oauth.google-enabled.description": "Google girişinin etkin olup olmadığı",
"admin.config.oauth.google-client-id": "Google Client ID", "admin.config.oauth.google-client-id": "Google İstemci Kimliği",
"admin.config.oauth.google-client-id.description": "Google OAuth uygulamasının Client ID'si", "admin.config.oauth.google-client-id.description": "Google OAuth uygulamasının İstemci Kimliği",
"admin.config.oauth.google-client-secret": "Google Client Secret", "admin.config.oauth.google-client-secret": "Google İstemci Gizli Anahtarı",
"admin.config.oauth.google-client-secret.description": "Google OAuth uygulamasının Client Secret'i", "admin.config.oauth.google-client-secret.description": "Google OAuth uygulamasının İstemci Gizli Anahtarı",
"admin.config.oauth.microsoft-enabled": "Microsoft", "admin.config.oauth.microsoft-enabled": "Microsoft",
"admin.config.oauth.microsoft-enabled.description": "Microsoft girişine izin verilip verilmeyeceği", "admin.config.oauth.microsoft-enabled.description": "Microsoft girişinin etkin olup olmadığı",
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant", "admin.config.oauth.microsoft-tenant": "Microsoft Kiracı",
"admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth uygulamasının Tenant kimliği\nyaygın: Hem kişisel Microsoft hesabına hem de Microsoft Entra ID'den bir iş veya okul hesabına sahip kullanıcılar uygulamada oturum açabilir. kuruluşlar: Yalnızca Microsoft Entra ID'den iş veya okul hesabı olan kullanıcılar uygulamada oturum açabilir.\ntüketiciler: Yalnızca kişisel Microsoft hesabı olan kullanıcılar uygulamada oturum açabilir.\nMicrosoft Entra Tenant etki alanı adı veya GUID biçimindeki Tenant kimliği: Yalnızca belirli bir Microsoft Entra Tenant kullanıcısı (iş veya okul hesabına sahip dizin üyeleri veya kişisel Microsoft hesabına sahip dizin konukları) uygulamada oturum açabilir.", "admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth uygulamasının Kiracı Kimliği\ncommon: Hem kişisel Microsoft hesaplarına hem de Microsoft Entra ID'den iş veya okul hesaplarına sahip kullanıcılar uygulamaya giriş yapabilir.\norganizations: Sadece Microsoft Entra ID'den iş veya okul hesaplarına sahip kullanıcılar uygulamaya giriş yapabilir.\nconsumers: Sadece kişisel Microsoft hesabı olan kullanıcılar uygulamaya giriş yapabilir.\nMicrosoft Entra kiracısının alan adı veya GUID formatındaki kiracı kimliği: Sadece belirli bir Microsoft Entra kiracısındaki kullanıcılar (iş veya okul hesapları olan dizin üyeleri veya kişisel Microsoft hesabı olan dizin konukları) uygulamaya giriş yapabilir.",
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID", "admin.config.oauth.microsoft-client-id": "Microsoft İstemci Kimliği",
"admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth uygulamasının Client ID'si", "admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth uygulamasının İstemci Kimliği",
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret", "admin.config.oauth.microsoft-client-secret": "Microsoft İstemci Gizli Anahtarı",
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth uygulamasının Client Secret'i", "admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth uygulamasının İstemci Gizli Anahtarı",
"admin.config.oauth.discord-enabled": "Discord", "admin.config.oauth.discord-enabled": "Discord",
"admin.config.oauth.discord-enabled.description": "Discord girişine izin verilip verilmeyeceği", "admin.config.oauth.discord-enabled.description": "Discord girişinin etkin olup olmadığı",
"admin.config.oauth.discord-limited-users": "Discord limited users", "admin.config.oauth.discord-limited-users": "Discord ile sınırlı kullanıcılar",
"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": "Belirli kullanıcıların Discord ID'leri ile giriş yapmasını sınırla. Devre dışı bırakmak için boş bırakın.",
"admin.config.oauth.discord-limited-guild": "Discord limitli sunucu ID'si", "admin.config.oauth.discord-limited-guild": "Discord ile sınırlı sunucu ID'si",
"admin.config.oauth.discord-limited-guild.description": "Oturum açmayı belirli bir sunucudaki kullanıcılarla sınırlayın. Devre dışı bırakmak için boş bırakın.", "admin.config.oauth.discord-limited-guild.description": "Belirli bir sunucudaki kullanıcıların giriş yapmasını sınırla. Devre dışı bırakmak için boş bırakın.",
"admin.config.oauth.discord-client-id": "Discord Client ID", "admin.config.oauth.discord-client-id": "Discord İstemci Kimliği",
"admin.config.oauth.discord-client-id.description": "Discord OAuth uygulamasının Client ID'si", "admin.config.oauth.discord-client-id.description": "Discord OAuth uygulamasının İstemci Kimliği",
"admin.config.oauth.discord-client-secret": "Discord Client secret", "admin.config.oauth.discord-client-secret": "Discord İstemci Gizli Anahtarı",
"admin.config.oauth.discord-client-secret.description": "Discord OAuth uygulamasının Client Secret'i", "admin.config.oauth.discord-client-secret.description": "Discord OAuth uygulamasının İstemci Gizli Anahtarı",
"admin.config.oauth.oidc-enabled": "OpenID Bağlantısı", "admin.config.oauth.oidc-enabled": "OpenID Connect",
"admin.config.oauth.oidc-enabled.description": "OpenID girişine izin verilip verilmeyeceği", "admin.config.oauth.oidc-enabled.description": "OpenID Connect girişinin etkin olup olmadığı",
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Keşfetme URI'si", "admin.config.oauth.oidc-discovery-uri": "OpenID Connect Keşif URI'si",
"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şif URI'si",
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect", "admin.config.oauth.oidc-sign-out": "OpenID Connect'ten çıkış yap",
"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": "“Çıkış yap” düğmesinin OpenID Connect sağlayıcısından çıkış yapıp yapmayacağı",
"admin.config.oauth.oidc-scope": "OpenID Connect scope", "admin.config.oauth.oidc-scope": "OpenID Connect kapsamı",
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.", "admin.config.oauth.oidc-scope.description": "OpenID Connect sağlayıcısından talep edilmesi gereken kapsamlar.",
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı sahiplenme", "admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı alanı",
"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 tokenindeki kullanıcı adı alanı. 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": "OpenID Connect tokenindeki rollerin yolu",
"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": "Bir dizi rolü referans alan geçerli bir JMES yolu olmalıdır. " + "Erişim haklarını OpenID Connect rolleri kullanarak yönetmek, başka bir kimlik sağlayıcı yapılandırılmamışsa ve şifreli giriş devre dışıysa önerilir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access", "admin.config.oauth.oidc-role-general-access": "Genel erişim için OpenID Connect rolü",
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a users roles for them to log in. " + "Leave it blank if you don't know what this config is.", "admin.config.oauth.oidc-role-general-access.description": "Genel erişim için gerekli rol. Kullanıcıların giriş yapabilmesi için rollerinde bulunması gerekir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access", "admin.config.oauth.oidc-role-admin-access": "Yönetici erişimi için OpenID Connect rolü",
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a users roles for them to access the admin panel. " + "Leave it blank if you don't know what this config is.", "admin.config.oauth.oidc-role-admin-access.description": "Yönetici paneline erişim için gerekli rol. Kullanıcıların yönetici paneline erişebilmesi için rollerinde bulunması gerekir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID", "admin.config.oauth.oidc-client-id": "OpenID Connect İstemci Kimliği",
"admin.config.oauth.oidc-client-id.description": "OpenID Connect OAuth uygulamasının Client ID'si", "admin.config.oauth.oidc-client-id.description": "OpenID Connect OAuth uygulamasının İstemci Kimliği",
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret", "admin.config.oauth.oidc-client-secret": "OpenID Connect İstemci Gizli Anahtarı",
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth uygulamasının Client Secret'i", "admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth uygulamasının İstemci Gizli Anahtarı",
"admin.config.category.ldap": "LDAP", "admin.config.category.ldap": "LDAP",
"admin.config.ldap.enabled": "Enable LDAP", "admin.config.ldap.enabled": "LDAP'ı etkinleştir",
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login", "admin.config.ldap.enabled.description": "Kullanıcı girişinde LDAP kimlik doğrulamasını kullan",
"admin.config.ldap.url": "Server URL", "admin.config.ldap.url": "Sunucu URL'si",
"admin.config.ldap.url.description": "URL of the LDAP server", "admin.config.ldap.url.description": "LDAP sunucusunun URL'si",
"admin.config.ldap.bind-dn": "Bind DN", "admin.config.ldap.bind-dn": "Bind DN",
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search", "admin.config.ldap.bind-dn.description": "Kullanıcı aramasını gerçekleştirmek için kullanılan varsayılan kullanıcı",
"admin.config.ldap.bind-password": "Bind password", "admin.config.ldap.bind-password": "Bağlantı şifresi",
"admin.config.ldap.bind-password.description": "Password used to perform the user search", "admin.config.ldap.bind-password.description": "Kullanıcı aramasını gerçekleştirmek için kullanılan şifre",
"admin.config.ldap.search-base": "User base", "admin.config.ldap.search-base": "Kullanıcı temeli",
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed", "admin.config.ldap.search-base.description": "Kullanıcı aramasının yapılacağı temel konum",
"admin.config.ldap.search-query": "User query", "admin.config.ldap.search-query": "Kullanıcı sorgusu",
"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": "Kullanıcı sorgusu, LDAP kullanıcısını aramak için 'Kullanıcı temeli' üzerinde kullanılacaktır. Kullanıcı girişine karşılık gelen %username% yer tutucusu kullanılabilir.",
"admin.config.ldap.admin-groups": "Admin group", "admin.config.ldap.admin-groups": "Yönetici grubu",
"admin.config.ldap.admin-groups.description": "Group required for administrative access.", "admin.config.ldap.admin-groups.description": "Yönetimsel erişim için gerekli grup.",
"admin.config.ldap.field-name-member-of": "User groups attribute name", "admin.config.ldap.field-name-member-of": "Kullanıcı grupları nitelik adı",
"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": "Kullanıcının üye olduğu gruplar için LDAP nitelik adı. Bu, yönetici grubunu kontrol ederken kullanılır.",
"admin.config.ldap.field-name-email": "User email attribute name", "admin.config.ldap.field-name-email": "Kullanıcı e-posta nitelik adı",
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.", "admin.config.ldap.field-name-email.description": "Kullanıcının e-posta adresi için LDAP nitelik adı.",
"admin.config.notify.success": "Configuration updated successfully.", "admin.config.notify.success": "Yapılandırma başarıyla güncellendi.",
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.", "admin.config.notify.logo-success": "Logo başarıyla güncellendi. Web sitesinde güncellenmesi birkaç dakika sürebilir.",
"admin.config.notify.no-changes": "No changes to save.", "admin.config.notify.no-changes": "Kaydedilecek bir değişiklik yok.",
"admin.config.category.s3": "S3", "admin.config.category.s3": "S3",
"admin.config.s3.enabled": "Enabled", "admin.config.s3.enabled": "Etkin",
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.", "admin.config.s3.enabled.description": "Paylaşılan dosyaların yerel dosya sistemi yerine S3 üzerinde depolanıp depolanmayacağını belirtir.",
"admin.config.s3.endpoint": "Endpoint", "admin.config.s3.endpoint": "Bağlantı Noktası",
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.", "admin.config.s3.endpoint.description": "S3 kovasının URL'si.",
"admin.config.s3.region": "Region", "admin.config.s3.region": "Bölge",
"admin.config.s3.region.description": "The region of the S3 bucket.", "admin.config.s3.region.description": "S3 kovasının bulunduğu bölge.",
"admin.config.s3.bucket-name": "Bucket name", "admin.config.s3.bucket-name": "Kova Adı",
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.", "admin.config.s3.bucket-name.description": "S3 kovasının adı.",
"admin.config.s3.bucket-path": "Path", "admin.config.s3.bucket-path": "Yol",
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.", "admin.config.s3.bucket-path.description": "Dosyaların S3 kovasında depolanması için varsayılan yol.",
"admin.config.s3.key": "Key", "admin.config.s3.key": "Anahtar",
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "S3 kovasına erişmenizi sağlayan anahtar.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Gizli",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "S3 kovasına erişmenizi sağlayan gizli anahtar.",
"admin.config.category.legal": "Yasal",
"admin.config.legal.enabled": "Yasal Bildirimleri Etkinleştir",
"admin.config.legal.enabled.description": "Alt bilgi kısmında künyeye ve gizlilik politikasına bir bağlantı gösterilip gösterilmeyeceğini belirtir.",
"admin.config.legal.imprint-text": "Künye Metni",
"admin.config.legal.imprint-text.description": "Künyede gösterilecek metin. Markdown destekler. Dış bir künye sayfasına bağlanmak için boş bırakın.",
"admin.config.legal.imprint-url": "Künye URL'si",
"admin.config.legal.imprint-url.description": "Halihazırda bir künye sayfanız varsa, buraya bağlantı verebilirsiniz.",
"admin.config.legal.privacy-policy-text": "Gizlilik Politikası Metni",
"admin.config.legal.privacy-policy-text.description": "Gizlilik politikasında gösterilecek metin. Markdown destekler. Dış bir gizlilik politikası sayfasına bağlanmak için boş bırakın.",
"admin.config.legal.privacy-policy-url": "Gizlilik Politikası URL'si",
"admin.config.legal.privacy-policy-url.description": "Halihazırda bir gizlilik politikası sayfanız varsa, buraya bağlantı verebilirsiniz.",
// 404 // 404
"404.description": "Haydaa, böyle bir sayfa yok.", "404.description": "Hata! Bu sayfa mevcut değil.",
"404.button.home": "Beni eve götür", "404.button.home": "Beni anasayfaya götür",
// error // error
"error.title": "Hata", "error.title": "Hata",
"error.description": "Haydaa!", "error.description": "Oops!",
"error.button.back": "Geri dön", "error.button.back": "Geri dön",
"error.msg.default": "Bir şeyler ters gitti.", "error.msg.default": "Bir şeyler ters gitti.",
"error.msg.access_denied": "Doğrulama aşamasını iptal ettin, lütfen yeniden dene.", "error.msg.access_denied": "Kimlik doğrulama işlemini iptal ettiniz, lütfen tekrar deneyin.",
"error.msg.expired_token": "Doğrulama aşaması çok uzun sürdü, lütfen yeniden dene.", "error.msg.expired_token": "Kimlik doğrulama işlemi çok uzun sürdü, lütfen tekrar deneyin.",
"error.msg.invalid_token": "Dahili Hata", "error.msg.invalid_token": "Dahili Hata",
"error.msg.no_user": "Bu {0} hesabına bağlı kullanıcı mevcut değil.", "error.msg.no_user": "Bu {0} hesabıyla bağlantılı bir kullanıcı mevcut değil.",
"error.msg.no_email": "Bu {0} hesaptan e-posta adresi alınamıyor.", "error.msg.no_email": "Bu {0} hesabından e-posta adresi alınamıyor.",
"error.msg.already_linked": "Bu {0} hesabı zaten başka bir hesaba bağlı.", "error.msg.already_linked": "Bu {0} hesabı zaten başka bir hesapla bağlantılı.",
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.", "error.msg.not_linked": "Bu {0} hesabı henüz hiçbir hesapla bağlantılı değil.",
"error.msg.unverified_account": "Bu {0} hesabı doğrulanmamış, lütfen doğruladıktan sonra yeniden dene.", "error.msg.unverified_account": "Bu {0} hesabı doğrulanmamış, lütfen doğrulamadan sonra tekrar deneyin.",
"error.msg.user_not_allowed": "Giriş yapmana izin verilmiyor.", "error.msg.user_not_allowed": "Giriş yapma izniniz yok.",
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.", "error.msg.cannot_get_user_info": "Bu {0} hesabından kullanıcı bilgilerinize ulaşılamıyor.",
"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 Bağlantısı", "error.param.provider_oidc": "OpenID Connect",
// Common translations // Common translations
"common.button.save": "Kaydet", "common.button.save": "Kaydet",
"common.button.create": "Oluştur", "common.button.create": "Oluştur",
@@ -484,27 +504,27 @@ export default {
"common.button.delete": "Sil", "common.button.delete": "Sil",
"common.button.cancel": "İptal", "common.button.cancel": "İptal",
"common.button.confirm": "Onayla", "common.button.confirm": "Onayla",
"common.button.disable": "Etkisizleştir", "common.button.disable": "Devre Dışı Bırak",
"common.button.share": "Paylaş", "common.button.share": "Paylaş",
"common.button.generate": "Oluştur", "common.button.generate": "Oluştur",
"common.button.done": "Tamam", "common.button.done": "Tamamlandı",
"common.text.link": "Bağlantı", "common.text.link": "Bağlantı",
"common.text.navigate-to-link": "Visit link", "common.text.navigate-to-link": "Bağlantıya git",
"common.text.or": "ya da", "common.text.or": "veya",
"common.text.redirecting": "Redirecting...", "common.text.redirecting": "Yönlendiriliyor...",
"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": "Anasayfaya git",
"common.notify.copied": "Bağlantınız kopyalandı", "common.notify.copied": "Bağlantınız panoya kopyalandı",
"common.notify.copied-link": "Bağlantınız kopyalandı", "common.notify.copied-link": "Bağlantınız panoya 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 bir hata oluştu",
"common.error.invalid-email": "Geçersiz E-Posta adresi", "common.error.invalid-email": "Geçersiz e-posta adresi",
"common.error.too-short": "En azından {length} karakter olmalı", "common.error.too-short": "En az {length} karakter olmalıdır",
"common.error.too-long": "En fazla {length} karakter olmalı", "common.error.too-long": "En fazla {length} karakter olmalıdır",
"common.error.number-too-small": "Must be at least {min}", "common.error.number-too-small": "En az {min} olmalıdır",
"common.error.number-too-large": "Must be at most {max}", "common.error.number-too-large": "En fazla {max} olmalıdır",
"common.error.exact-length": "Tam tamına {length} karakter olmalı", "common.error.exact-length": "Tam olarak {length} karakter olmalıdır",
"common.error.invalid-number": "Bir sayı olmalı", "common.error.invalid-number": "Bir sayı olmalıdır",
"common.error.field-required": "Bu alan gerekli" "common.error.field-required": "Bu alan gereklidir"
}; };

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Діє до", "account.shares.table.expiresAt": "Діє до",
"account.shares.table.createdAt": "Створено", "account.shares.table.createdAt": "Створено",
"account.shares.table.size": "Розмір", "account.shares.table.size": "Розмір",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Ніколи",
"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": "Видалити завантаження: {share}", "account.shares.modal.delete.title": "Видалити завантаження: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.", "share.edit.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.",
"share.edit.notify.save-success": "Посилання на ресурс успішно оновлено", "share.edit.notify.save-success": "Посилання на ресурс успішно оновлено",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Конфігурація", "admin.config.title": "Конфігурація",
"admin.config.category.general": "Загальне", "admin.config.category.general": "Загальне",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Стандартна довжина ID завантаження", "admin.config.share.share-id-length": "Стандартна довжина ID завантаження",
"admin.config.share.share-id-length.description": "Стандартна довжина для згенерованого ID завантаження. Це значення також використовується для створення посилань для зворотних завантажень. Значення менше 8 не вважається безпечним.", "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": "Модальне вікно для створення завантаження автоматично з'являється, коли користувач вибирає файли, що усуває необхідність вручну натискати кнопку.", "admin.config.share.auto-open-share-modal.description": "Модальне вікно для створення завантаження автоматично з'являється, коли користувач вибирає файли, що усуває необхідність вручну натискати кнопку.",
"admin.config.smtp.enabled": "Увімкнути", "admin.config.smtp.enabled": "Увімкнути",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "Ключ, який дозволяє отримати доступ до S3 бакету.", "admin.config.s3.key.description": "Ключ, який дозволяє отримати доступ до S3 бакету.",
"admin.config.s3.secret": "Секрет", "admin.config.s3.secret": "Секрет",
"admin.config.s3.secret.description": "Секрет, який дозволяє отримати доступ до S3 бакету.", "admin.config.s3.secret.description": "Секрет, який дозволяє отримати доступ до S3 бакету.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "Бляха, цієї строрінки не існує.", "404.description": "Бляха, цієї строрінки не існує.",
"404.button.home": "Поверни мене додому", "404.button.home": "Поверни мене додому",

View File

@@ -3,7 +3,7 @@ export default {
"navbar.upload": "Tải lên", "navbar.upload": "Tải lên",
"navbar.signin": "Đăng nhập", "navbar.signin": "Đăng nhập",
"navbar.home": "Trang chủ", "navbar.home": "Trang chủ",
"navbar.signup": "Sign up", "navbar.signup": "Đăng ký",
"navbar.links.shares": "Chia sẻ của tôi", "navbar.links.shares": "Chia sẻ của tôi",
"navbar.links.reverse": "Reverse shares", "navbar.links.reverse": "Reverse shares",
"navbar.avatar.account": "Tài khoản", "navbar.avatar.account": "Tài khoản",
@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "Dung lượng", "account.shares.table.size": "Dung lượng",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"account.shares.modal.share-informations": "Share informations", "account.shares.modal.share-informations": "Share informations",
"account.shares.modal.share-link": "Chia sẻ liên kết", "account.shares.modal.share-link": "Chia sẻ liên kết",
"account.shares.modal.delete.title": "Delete share: {share}", "account.shares.modal.delete.title": "Delete share: {share}",
@@ -160,7 +163,7 @@ export default {
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.", "account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
"account.reverseShare.never-expires": "This reverse share will never expire.", "account.reverseShare.never-expires": "This reverse share will never expire.",
"account.reverseShare.expires-on": "This reverse share will expire on {expiration}.", "account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
"account.reverseShares.table.no-shares": "No shares created yet", "account.reverseShares.table.no-shares": "Chưa tạo chia sẻ nào",
"account.reverseShares.table.count.singular": "share", "account.reverseShares.table.count.singular": "share",
"account.reverseShares.table.count.plural": "shares", "account.reverseShares.table.count.plural": "shares",
"account.reverseShares.table.shares": "Shares", "account.reverseShares.table.shares": "Shares",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "An error occurred while finishing your share.", "share.edit.notify.generic-error": "An error occurred while finishing your share.",
"share.edit.notify.save-success": "Share updated successfully", "share.edit.notify.save-success": "Share updated successfully",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "Configuration", "admin.config.title": "Configuration",
"admin.config.category.general": "Tổng quan", "admin.config.category.general": "Tổng quan",
@@ -335,15 +344,15 @@ export default {
"admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares", "admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
"admin.config.share.allow-unauthenticated-shares.description": "Whether unauthenticated users can create shares", "admin.config.share.allow-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. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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",
"admin.config.share.zip-compression-level": "Cấp độ nén Zip", "admin.config.share.zip-compression-level": "Cấp độ nén Zip",
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ", "admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
"admin.config.share.chunk-size": "Kích cỡ mảnh", "admin.config.share.chunk-size": "Kích cỡ mảnh",
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.", "admin.config.share.chunk-size.description": "Adjust the chunk size 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": "Auto open create share modal",
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.", "admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 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ủ",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "Expires on", "account.shares.table.expiresAt": "Expires on",
"account.shares.table.createdAt": "Created on", "account.shares.table.createdAt": "Created on",
"account.shares.table.size": "文件大小", "account.shares.table.size": "文件大小",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "Delete share: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "保存共享的过程中发生了错误", "share.edit.notify.generic-error": "保存共享的过程中发生了错误",
"share.edit.notify.save-success": "共享已更新成功", "share.edit.notify.save-success": "共享已更新成功",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "配置管理", "admin.config.title": "配置管理",
"admin.config.category.general": "通用", "admin.config.category.general": "通用",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "Default share ID length", "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.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": "最大文件上限",
"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": "Adjust the chunk size 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": "自动打开创建共享对话框", "admin.config.share.auto-open-share-modal": "自动打开创建共享对话框",
"admin.config.share.auto-open-share-modal.description": "每当用户选择完将要被上传的文件后,自动打开创建共享的对话框。", "admin.config.share.auto-open-share-modal.description": "每当用户选择完将要被上传的文件后,自动打开创建共享的对话框。",
"admin.config.smtp.enabled": "Enable", "admin.config.smtp.enabled": "Enable",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "当前的页面走丢啦", "404.description": "当前的页面走丢啦",
"404.button.home": "返回主页", "404.button.home": "返回主页",

View File

@@ -124,6 +124,9 @@ export default {
"account.shares.table.expiresAt": "失效於", "account.shares.table.expiresAt": "失效於",
"account.shares.table.createdAt": "創建於", "account.shares.table.createdAt": "創建於",
"account.shares.table.size": "檔案大小", "account.shares.table.size": "檔案大小",
"account.shares.table.password-protected": "Password protected",
"account.shares.table.visitor-count": "{count} of {max}",
"account.shares.table.expiry-never": "Never",
"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": "刪除: {share}", "account.shares.modal.delete.title": "刪除: {share}",
@@ -292,6 +295,12 @@ export default {
"share.edit.notify.generic-error": "保存分享的過程中發生了錯誤", "share.edit.notify.generic-error": "保存分享的過程中發生了錯誤",
"share.edit.notify.save-success": "分享已更新成功", "share.edit.notify.save-success": "分享已更新成功",
// END /share/[id]/edit // END /share/[id]/edit
// /imprint
"imprint.title": "Imprint",
// END /imprint
// /privacy
"privacy.title": "Privacy Policy",
// END /privacy
// /admin/config // /admin/config
"admin.config.title": "配置管理", "admin.config.title": "配置管理",
"admin.config.category.general": "通用", "admin.config.category.general": "通用",
@@ -335,15 +344,15 @@ export default {
"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": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
"admin.config.share.share-id-length": "預設分享ID長度", "admin.config.share.share-id-length": "預設分享ID長度",
"admin.config.share.share-id-length.description": "預設的自動生成分享ID長度。這個設定同時用於生成檔案請求連結。小於 8 被認為是不安全的。", "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": "最大檔案上限",
"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": "調整分塊大小 (單位Byte) 以平衡上傳的效率與可靠度。更小的分塊大小在不穩定的網路環境中可以提升成功率,更大的分塊大小可以在穩定的網路環境中提高上傳速度。", "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": "分享設定會在使用者選擇檔案後自動開啟而無須手動點擊。", "admin.config.share.auto-open-share-modal.description": "分享設定會在使用者選擇檔案後自動開啟而無須手動點擊。",
"admin.config.smtp.enabled": "啟用", "admin.config.smtp.enabled": "啟用",
@@ -454,6 +463,17 @@ export default {
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.", "admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
"admin.config.s3.secret": "Secret", "admin.config.s3.secret": "Secret",
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.", "admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
"admin.config.category.legal": "Legal",
"admin.config.legal.enabled": "Enable legal notices",
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
"admin.config.legal.imprint-text": "Imprint text",
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
"admin.config.legal.imprint-url": "Imprint URL",
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
"admin.config.legal.privacy-policy-text": "Privacy policy text",
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
// 404 // 404
"404.description": "查無此頁", "404.description": "查無此頁",
"404.button.home": "返回主頁", "404.button.home": "返回主頁",

View File

@@ -14,7 +14,14 @@ export const config = {
export async function middleware(request: NextRequest) { export async function middleware(request: NextRequest) {
const routes = { const routes = {
unauthenticated: new Routes(["/auth/*", "/"]), unauthenticated: new Routes(["/auth/*", "/"]),
public: new Routes(["/share/*", "/s/*", "/upload/*", "/error"]), public: new Routes([
"/share/*",
"/s/*",
"/upload/*",
"/error",
"/imprint",
"/privacy",
]),
admin: new Routes(["/admin/*"]), admin: new Routes(["/admin/*"]),
account: new Routes(["/account*"]), account: new Routes(["/account*"]),
disabled: new Routes([]), disabled: new Routes([]),
@@ -55,6 +62,20 @@ export async function middleware(request: NextRequest) {
routes.disabled.routes.push("/auth/resetPassword*"); routes.disabled.routes.push("/auth/resetPassword*");
} }
if (!getConfig("legal.enabled")) {
routes.disabled.routes.push("/imprint", "/privacy");
} else {
if (!getConfig("legal.imprintText") && !getConfig("legal.imprintUrl")) {
routes.disabled.routes.push("/imprint");
}
if (
!getConfig("legal.privacyPolicyText") &&
!getConfig("legal.privacyPolicyUrl")
) {
routes.disabled.routes.push("/privacy");
}
}
// prettier-ignore // prettier-ignore
const rules = [ const rules = [
// Disabled routes // Disabled routes
@@ -86,6 +107,16 @@ export async function middleware(request: NextRequest) {
condition: (!getConfig("general.showHomePage") || user) && route == "/", condition: (!getConfig("general.showHomePage") || user) && route == "/",
path: "/upload", path: "/upload",
}, },
// Imprint redirect
{
condition: route == "/imprint" && !getConfig("legal.imprintText") && getConfig("legal.imprintUrl"),
path: getConfig("legal.imprintUrl"),
},
// Privacy redirect
{
condition: route == "/privacy" && !getConfig("legal.privacyPolicyText") && getConfig("legal.privacyPolicyUrl"),
path: getConfig("legal.privacyPolicyUrl"),
},
]; ];
for (const rule of rules) { for (const rule of rules) {
if (rule.condition) { if (rule.condition) {

View File

@@ -3,6 +3,7 @@ import {
ColorSchemeProvider, ColorSchemeProvider,
Container, Container,
MantineProvider, MantineProvider,
Stack,
} from "@mantine/core"; } from "@mantine/core";
import { useColorScheme } from "@mantine/hooks"; import { useColorScheme } from "@mantine/hooks";
import { ModalsProvider } from "@mantine/modals"; import { ModalsProvider } from "@mantine/modals";
@@ -30,6 +31,7 @@ import Config from "../types/config.type";
import { CurrentUser } from "../types/user.type"; import { CurrentUser } from "../types/user.type";
import i18nUtil from "../utils/i18n.util"; import i18nUtil from "../utils/i18n.util";
import userPreferences from "../utils/userPreferences.util"; import userPreferences from "../utils/userPreferences.util";
import Footer from "../components/footer/Footer";
const excludeDefaultLayoutRoutes = ["/admin/config/[category]"]; const excludeDefaultLayoutRoutes = ["/admin/config/[category]"];
@@ -134,10 +136,18 @@ function App({ Component, pageProps }: AppProps) {
<Component {...pageProps} /> <Component {...pageProps} />
) : ( ) : (
<> <>
<Header /> <Stack
<Container> justify="space-between"
<Component {...pageProps} /> sx={{ minHeight: "100vh" }}
</Container> >
<div>
<Header />
<Container>
<Component {...pageProps} />
</Container>
</div>
<Footer />
</Stack>
</> </>
)} )}
</UserContext.Provider> </UserContext.Provider>

View File

@@ -15,7 +15,7 @@ import { useModals } from "@mantine/modals";
import moment from "moment"; import moment from "moment";
import Link from "next/link"; import Link from "next/link";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { TbEdit, TbInfoCircle, TbLink, TbTrash } from "react-icons/tb"; import { TbEdit, TbInfoCircle, TbLink, TbLock, TbTrash } from "react-icons/tb";
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from "react-intl";
import Meta from "../../components/Meta"; import Meta from "../../components/Meta";
import showShareInformationsModal from "../../components/account/showShareInformationsModal"; import showShareInformationsModal from "../../components/account/showShareInformationsModal";
@@ -85,13 +85,37 @@ const MyShares = () => {
<tbody> <tbody>
{shares.map((share) => ( {shares.map((share) => (
<tr key={share.id}> <tr key={share.id}>
<td>{share.id}</td>
<td>{share.name}</td>
<td>{share.views}</td>
<td> <td>
{moment(share.expiration).unix() === 0 <Group spacing="xs">
? "Never" {share.id}{" "}
: moment(share.expiration).format("LLL")} {share.security.passwordProtected && (
<TbLock
color="orange"
title={t("account.shares.table.password-protected")}
/>
)}
</Group>
</td>
<td>{share.name}</td>
<td>
{share.security.maxViews ? (
<FormattedMessage
id="account.shares.table.visitor-count"
values={{
count: share.views,
max: share.security.maxViews,
}}
/>
) : (
share.views
)}
</td>
<td>
{moment(share.expiration).unix() === 0 ? (
<FormattedMessage id="account.shares.table.expiry-never" />
) : (
moment(share.expiration).format("LLL")
)}
</td> </td>
<td> <td>
<Group position="right"> <Group position="right">

View File

@@ -0,0 +1,55 @@
import { Anchor, Title, useMantineTheme } from "@mantine/core";
import Meta from "../../components/Meta";
import useTranslate from "../../hooks/useTranslate.hook";
import { FormattedMessage } from "react-intl";
import useConfig from "../../hooks/config.hook";
import Markdown from "markdown-to-jsx";
const Imprint = () => {
const t = useTranslate();
const { colorScheme } = useMantineTheme();
const config = useConfig();
return (
<>
<Meta title={t("imprint.title")} />
<Title mb={30} order={1}>
<FormattedMessage id="imprint.title" />
</Title>
<Markdown
options={{
forceBlock: true,
overrides: {
pre: {
props: {
style: {
backgroundColor:
colorScheme == "dark"
? "rgba(50, 50, 50, 0.5)"
: "rgba(220, 220, 220, 0.5)",
padding: "0.75em",
whiteSpace: "pre-wrap",
},
},
},
table: {
props: {
className: "md",
},
},
a: {
props: {
target: "_blank",
rel: "noreferrer",
},
component: Anchor,
},
},
}}
>
{config.get("legal.imprintText")}
</Markdown>
</>
);
};
export default Imprint;

View File

@@ -0,0 +1,55 @@
import { Anchor, Title, useMantineTheme } from "@mantine/core";
import Meta from "../../components/Meta";
import useTranslate from "../../hooks/useTranslate.hook";
import { FormattedMessage } from "react-intl";
import useConfig from "../../hooks/config.hook";
import Markdown from "markdown-to-jsx";
const PrivacyPolicy = () => {
const t = useTranslate();
const { colorScheme } = useMantineTheme();
const config = useConfig();
return (
<>
<Meta title={t("privacy.title")} />
<Title mb={30} order={1}>
<FormattedMessage id="privacy.title" />
</Title>
<Markdown
options={{
forceBlock: true,
overrides: {
pre: {
props: {
style: {
backgroundColor:
colorScheme == "dark"
? "rgba(50, 50, 50, 0.5)"
: "rgba(220, 220, 220, 0.5)",
padding: "0.75em",
whiteSpace: "pre-wrap",
},
},
},
table: {
props: {
className: "md",
},
},
a: {
props: {
target: "_blank",
rel: "noreferrer",
},
component: Anchor,
},
},
}}
>
{config.get("legal.privacyPolicyText")}
</Markdown>
</>
);
};
export default PrivacyPolicy;

View File

@@ -18,6 +18,7 @@ import shareService from "../../services/share.service";
import { FileUpload } from "../../types/File.type"; import { FileUpload } from "../../types/File.type";
import { CreateShare, Share } from "../../types/share.type"; import { CreateShare, Share } from "../../types/share.type";
import toast from "../../utils/toast.util"; import toast from "../../utils/toast.util";
import { useRouter } from "next/router";
const promiseLimit = pLimit(3); const promiseLimit = pLimit(3);
let errorToastShown = false; let errorToastShown = false;
@@ -33,6 +34,7 @@ const Upload = ({
simplified: boolean; simplified: boolean;
}) => { }) => {
const modals = useModals(); const modals = useModals();
const router = useRouter();
const t = useTranslate(); const t = useTranslate();
const { user } = useUser(); const { user } = useUser();
@@ -54,7 +56,8 @@ const Upload = ({
setisUploading(true); setisUploading(true);
try { try {
createdShare = await shareService.create(share); const isReverseShare = router.pathname != "/upload";
createdShare = await shareService.create(share, isReverseShare);
} catch (e) { } catch (e) {
toast.axiosError(e); toast.axiosError(e);
setisUploading(false); setisUploading(false);
@@ -139,7 +142,7 @@ const Upload = ({
"share.allowUnauthenticatedShares", "share.allowUnauthenticatedShares",
), ),
enableEmailRecepients: config.get("email.enableShareEmailRecipients"), enableEmailRecepients: config.get("email.enableShareEmailRecipients"),
maxExpirationInHours: config.get("share.maxExpiration"), maxExpiration: config.get("share.maxExpiration"),
shareIdLength: config.get("share.shareIdLength"), shareIdLength: config.get("share.shareIdLength"),
simplified, simplified,
}, },

View File

@@ -1,6 +1,7 @@
import axios from "axios"; import axios from "axios";
import Config, { AdminConfig, UpdateConfig } from "../types/config.type"; import Config, { AdminConfig, UpdateConfig } from "../types/config.type";
import api from "./api.service"; import api from "./api.service";
import { stringToTimespan } from "../utils/date.util";
const list = async (): Promise<Config[]> => { const list = async (): Promise<Config[]> => {
return (await api.get("/configs")).data; return (await api.get("/configs")).data;
@@ -25,10 +26,12 @@ const get = (key: string, configVariables: Config[]): any => {
const value = configVariable.value ?? configVariable.defaultValue; const value = configVariable.value ?? configVariable.defaultValue;
if (configVariable.type == "number") return parseInt(value); if (configVariable.type == "number" || configVariable.type == "filesize")
return parseInt(value);
if (configVariable.type == "boolean") return value == "true"; if (configVariable.type == "boolean") return value == "true";
if (configVariable.type == "string" || configVariable.type == "text") if (configVariable.type == "string" || configVariable.type == "text")
return value; return value;
if (configVariable.type == "timespan") return stringToTimespan(value);
}; };
const finishSetup = async (): Promise<AdminConfig[]> => { const finishSetup = async (): Promise<AdminConfig[]> => {

View File

@@ -15,7 +15,10 @@ const list = async (): Promise<MyShare[]> => {
return (await api.get(`shares/all`)).data; return (await api.get(`shares/all`)).data;
}; };
const create = async (share: CreateShare) => { const create = async (share: CreateShare, isReverseShare = false) => {
if (!isReverseShare) {
deleteCookie("reverse_share_token");
}
return (await api.post("shares", share)).data; return (await api.post("shares", share)).data;
}; };

View File

@@ -34,9 +34,10 @@ export type ShareMetaData = {
isZipReady: boolean; isZipReady: boolean;
}; };
export type MyShare = Share & { export type MyShare = Omit<Share, "hasPassword"> & {
views: number; views: number;
createdAt: Date; createdAt: Date;
security: MyShareSecurity;
}; };
export type MyReverseShare = { export type MyReverseShare = {
@@ -52,3 +53,8 @@ export type ShareSecurity = {
maxViews?: number; maxViews?: number;
password?: string; password?: string;
}; };
export type MyShareSecurity = {
passwordProtected: boolean;
maxViews: number;
};

View File

@@ -0,0 +1,8 @@
export type TimeUnit =
| "minutes"
| "hours"
| "days"
| "weeks"
| "months"
| "years";
export type Timespan = { value: number; unit: TimeUnit };

View File

@@ -1,4 +1,5 @@
import moment from "moment"; import moment from "moment";
import { Timespan } from "../types/timespan.type";
export const getExpirationPreview = ( export const getExpirationPreview = (
messages: { messages: {
@@ -30,3 +31,14 @@ export const getExpirationPreview = (
moment(expirationDate).format("LLL"), moment(expirationDate).format("LLL"),
); );
}; };
export const timespanToString = (timespan: Timespan) => {
return `${timespan.value} ${timespan.unit}`;
};
export const stringToTimespan = (value: string): Timespan => {
return {
value: parseInt(value.split(" ")[0]),
unit: value.split(" ")[1],
} as Timespan;
};

4
package-lock.json generated
View File

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

View File

@@ -1,6 +1,6 @@
{ {
"name": "pingvin-share", "name": "pingvin-share",
"version": "1.7.2", "version": "1.8.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",