Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99c6a4fa74 | ||
|
|
4a6f1019c0 | ||
|
|
f646c9f1ab | ||
|
|
be8a0d0315 | ||
|
|
81b1970099 | ||
|
|
60f8d38baf |
4
.github/workflows/backend-system-tests.yml
vendored
4
.github/workflows/backend-system-tests.yml
vendored
@@ -7,12 +7,12 @@ on:
|
|||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- "v*"
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
system-tests:
|
system-tests:
|
||||||
timeout-minutes: 15
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: node:22
|
container: node:18
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
|
|||||||
1
.github/workflows/build-docker-image.yml
vendored
1
.github/workflows/build-docker-image.yml
vendored
@@ -6,7 +6,6 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
timeout-minutes: 60
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: checkout code
|
- name: checkout code
|
||||||
|
|||||||
34
CHANGELOG.md
34
CHANGELOG.md
@@ -1,37 +1,3 @@
|
|||||||
## [1.13.0](https://github.com/stonith404/pingvin-share/compare/v1.12.0...v1.13.0) (2025-05-25)
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* allow to use redis cache instead of memory cache ([#832](https://github.com/stonith404/pingvin-share/issues/832)) ([85f5143](https://github.com/stonith404/pingvin-share/commit/85f514316b0b808b8c063bf571df6b528a1b3de4))
|
|
||||||
* **backend:** allow to define path to the config file ([#838](https://github.com/stonith404/pingvin-share/issues/838)) ([cfdb29e](https://github.com/stonith404/pingvin-share/commit/cfdb29ed4dde875233b4bc3f510ae50976b963b8))
|
|
||||||
|
|
||||||
## [1.12.0](https://github.com/stonith404/pingvin-share/compare/v1.11.1...v1.12.0) (2025-05-07)
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **s3:** stream s3 content over a zip file ([#822](https://github.com/stonith404/pingvin-share/issues/822)) ([ccc783a](https://github.com/stonith404/pingvin-share/commit/ccc783ab6a00841a7041c454e77afb472d76999e))
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* disable HTML rendering in Markdown preview ([427e99c](https://github.com/stonith404/pingvin-share/commit/427e99c7b1d00ff6ed7b5fd879d8cf0f0d49281a))
|
|
||||||
* health check for containers with reverse proxy disabled ([#816](https://github.com/stonith404/pingvin-share/issues/816)) ([a790ac7](https://github.com/stonith404/pingvin-share/commit/a790ac73fd42d266a957e09a05b1894199605f6a)), closes [#809](https://github.com/stonith404/pingvin-share/issues/809)
|
|
||||||
* OIDC configuration from YAML configuration file doesn't get loaded ([48a6ceb](https://github.com/stonith404/pingvin-share/commit/48a6ceb3b4b4dfc0407dc6f9ee2e07cca1829cef))
|
|
||||||
* spelling mistake and add clarity in email template ([#824](https://github.com/stonith404/pingvin-share/issues/824)) ([af047c0](https://github.com/stonith404/pingvin-share/commit/af047c0bc152a955b3ab135f5a9ea3d62b32fb0f))
|
|
||||||
* use sandbox CSP for file previews ([1864951](https://github.com/stonith404/pingvin-share/commit/1864951bdbf573431e795109224a45545b86b54d))
|
|
||||||
|
|
||||||
## [1.11.1](https://github.com/stonith404/pingvin-share/compare/v1.11.0...v1.11.1) (2025-04-06)
|
|
||||||
|
|
||||||
## [1.11.0](https://github.com/stonith404/pingvin-share/compare/v1.10.4...v1.11.0) (2025-04-05)
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* add env variable to disable caddy ([#797](https://github.com/stonith404/pingvin-share/issues/797)) ([27fca64](https://github.com/stonith404/pingvin-share/commit/27fca64a69067eaa094d1559ca1fee4f064d89a7))
|
|
||||||
* **s3:** allow disabling upload checksum ([#804](https://github.com/stonith404/pingvin-share/issues/804)) ([73a76a9](https://github.com/stonith404/pingvin-share/commit/73a76a9d5b9825a3dc396f49d76ddc5c303fce40))
|
|
||||||
|
|
||||||
## [1.10.4](https://github.com/stonith404/pingvin-share/compare/v1.10.3...v1.10.4) (2025-03-20)
|
## [1.10.4](https://github.com/stonith404/pingvin-share/compare/v1.10.3...v1.10.4) (2025-03-20)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
12
Dockerfile
12
Dockerfile
@@ -1,25 +1,25 @@
|
|||||||
# Stage 1: Frontend dependencies
|
# Stage 1: Frontend dependencies
|
||||||
FROM node:22-alpine AS frontend-dependencies
|
FROM node:20-alpine AS frontend-dependencies
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
COPY frontend/package.json frontend/package-lock.json ./
|
COPY frontend/package.json frontend/package-lock.json ./
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
# Stage 2: Build frontend
|
# Stage 2: Build frontend
|
||||||
FROM node:22-alpine AS frontend-builder
|
FROM node:20-alpine AS frontend-builder
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
COPY ./frontend .
|
COPY ./frontend .
|
||||||
COPY --from=frontend-dependencies /opt/app/node_modules ./node_modules
|
COPY --from=frontend-dependencies /opt/app/node_modules ./node_modules
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Stage 3: Backend dependencies
|
# Stage 3: Backend dependencies
|
||||||
FROM node:22-alpine AS backend-dependencies
|
FROM node:20-alpine AS backend-dependencies
|
||||||
RUN apk add --no-cache python3
|
RUN apk add --no-cache python3
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
COPY backend/package.json backend/package-lock.json ./
|
COPY backend/package.json backend/package-lock.json ./
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
# Stage 4: Build backend
|
# Stage 4: Build backend
|
||||||
FROM node:22-alpine AS backend-builder
|
FROM node:20-alpine AS backend-builder
|
||||||
RUN apk add openssl
|
RUN apk add openssl
|
||||||
|
|
||||||
WORKDIR /opt/app
|
WORKDIR /opt/app
|
||||||
@@ -29,7 +29,7 @@ RUN npx prisma generate
|
|||||||
RUN npm run build && npm prune --production
|
RUN npm run build && npm prune --production
|
||||||
|
|
||||||
# Stage 5: Final image
|
# Stage 5: Final image
|
||||||
FROM node:22-alpine AS runner
|
FROM node:20-alpine AS runner
|
||||||
ENV NODE_ENV=docker
|
ENV NODE_ENV=docker
|
||||||
|
|
||||||
# Delete default node user
|
# Delete default node user
|
||||||
@@ -59,7 +59,7 @@ COPY ./scripts/docker ./scripts/docker
|
|||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
HEALTHCHECK --interval=10s --timeout=3s CMD /bin/sh -c '(if [[ "$CADDY_DISABLED" = "true" ]]; then curl -fs http://localhost:${BACKEND_PORT:-8080}/api/health; else curl -fs http://localhost:3000/api/health; fi) || exit 1'
|
HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://localhost:3000/api/health || exit 1
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "./scripts/docker/create-user.sh"]
|
ENTRYPOINT ["sh", "./scripts/docker/create-user.sh"]
|
||||||
CMD ["sh", "./scripts/docker/entrypoint.sh"]
|
CMD ["sh", "./scripts/docker/entrypoint.sh"]
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"plugins": ["@typescript-eslint"],
|
|
||||||
"root": true
|
|
||||||
}
|
|
||||||
27
backend/eslint.config.mjs
Normal file
27
backend/eslint.config.mjs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { defineConfig } from "eslint/config";
|
||||||
|
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
||||||
|
import tsParser from "@typescript-eslint/parser";
|
||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
import js from "@eslint/js";
|
||||||
|
import { FlatCompat } from "@eslint/eslintrc";
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
recommendedConfig: js.configs.recommended,
|
||||||
|
allConfig: js.configs.all
|
||||||
|
});
|
||||||
|
|
||||||
|
export default defineConfig([{
|
||||||
|
extends: compat.extends("eslint:recommended", "plugin:@typescript-eslint/recommended"),
|
||||||
|
|
||||||
|
plugins: {
|
||||||
|
"@typescript-eslint": typescriptEslint,
|
||||||
|
},
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
parser: tsParser,
|
||||||
|
},
|
||||||
|
}]);
|
||||||
6363
backend/package-lock.json
generated
6363
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-backend",
|
"name": "pingvin-share-backend",
|
||||||
"version": "1.13.0",
|
"version": "1.10.4",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nest build",
|
"build": "nest build",
|
||||||
"dev": "cross-env NODE_ENV=development nest start --watch",
|
"dev": "cross-env NODE_ENV=development nest start --watch",
|
||||||
@@ -13,36 +13,34 @@
|
|||||||
"seed": "ts-node prisma/seed/config.seed.ts"
|
"seed": "ts-node prisma/seed/config.seed.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.787.0",
|
"@aws-sdk/client-s3": "^3.775.0",
|
||||||
"@keyv/redis": "^4.4.0",
|
|
||||||
"@nestjs/cache-manager": "^3.0.1",
|
"@nestjs/cache-manager": "^3.0.1",
|
||||||
"@nestjs/common": "^11.0.17",
|
"@nestjs/common": "^11.0.12",
|
||||||
"@nestjs/config": "^4.0.2",
|
"@nestjs/config": "^4.0.1",
|
||||||
"@nestjs/core": "^11.0.17",
|
"@nestjs/core": "^11.0.12",
|
||||||
"@nestjs/jwt": "^11.0.0",
|
"@nestjs/jwt": "^11.0.0",
|
||||||
"@nestjs/passport": "^11.0.5",
|
"@nestjs/passport": "^11.0.5",
|
||||||
"@nestjs/platform-express": "^11.0.17",
|
"@nestjs/platform-express": "^11.0.12",
|
||||||
"@nestjs/schedule": "^5.0.1",
|
"@nestjs/schedule": "^5.0.1",
|
||||||
"@nestjs/swagger": "^11.1.3",
|
"@nestjs/swagger": "^11.1.0",
|
||||||
"@nestjs/throttler": "^6.4.0",
|
"@nestjs/throttler": "^6.4.0",
|
||||||
"@prisma/client": "^6.6.0",
|
"@prisma/client": "^6.5.0",
|
||||||
"@types/jmespath": "^0.15.2",
|
"@types/jmespath": "^0.15.2",
|
||||||
"archiver": "^7.0.1",
|
"archiver": "^7.0.1",
|
||||||
"argon2": "^0.41.1",
|
"argon2": "^0.41.1",
|
||||||
"body-parser": "^2.2.0",
|
"body-parser": "^1.20.3",
|
||||||
"cache-manager": "^6.4.2",
|
"cache-manager": "^6.4.1",
|
||||||
"cacheable": "^1.9.0",
|
|
||||||
"clamscan": "^2.4.0",
|
"clamscan": "^2.4.0",
|
||||||
"class-transformer": "^0.5.1",
|
"class-transformer": "^0.5.1",
|
||||||
"class-validator": "^0.14.1",
|
"class-validator": "^0.14.1",
|
||||||
"content-disposition": "^0.5.4",
|
"content-disposition": "^0.5.4",
|
||||||
"cookie-parser": "^1.4.7",
|
"cookie-parser": "^1.4.7",
|
||||||
"jmespath": "^0.16.0",
|
"jmespath": "^0.16.0",
|
||||||
"ldapts": "^7.4.0",
|
"ldapts": "^7.3.3",
|
||||||
"mime-types": "^3.0.1",
|
"mime-types": "^2.1.35",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"nanoid": "^3.3.7",
|
"nanoid": "^5.1.5",
|
||||||
"nodemailer": "^6.10.1",
|
"nodemailer": "^6.10.0",
|
||||||
"otplib": "^12.0.1",
|
"otplib": "^12.0.1",
|
||||||
"passport": "^0.7.0",
|
"passport": "^0.7.0",
|
||||||
"passport-jwt": "^4.0.1",
|
"passport-jwt": "^4.0.1",
|
||||||
@@ -51,42 +49,42 @@
|
|||||||
"reflect-metadata": "^0.2.2",
|
"reflect-metadata": "^0.2.2",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"rxjs": "^7.8.2",
|
"rxjs": "^7.8.2",
|
||||||
"sharp": "^0.34.1",
|
"sharp": "^0.33.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"uuid": "^11.1.0",
|
"yaml": "^2.7.0"
|
||||||
"yaml": "^2.7.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cli": "^11.0.6",
|
"@nestjs/cli": "^11.0.5",
|
||||||
"@nestjs/schematics": "^11.0.5",
|
"@nestjs/schematics": "^11.0.2",
|
||||||
"@nestjs/testing": "^11.0.17",
|
"@nestjs/testing": "^11.0.12",
|
||||||
"@types/archiver": "^6.0.3",
|
"@types/archiver": "^6.0.3",
|
||||||
"@types/clamscan": "^2.4.1",
|
"@types/clamscan": "^2.4.0",
|
||||||
"@types/cookie-parser": "^1.4.8",
|
"@types/cookie-parser": "^1.4.8",
|
||||||
"@types/cron": "^2.4.0",
|
"@types/cron": "^2.4.3",
|
||||||
"@types/express": "^5.0.1",
|
"@types/express": "^5.0.1",
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
"@types/multer": "^1.4.12",
|
"@types/multer": "^1.4.12",
|
||||||
"@types/node": "^22.14.1",
|
"@types/node": "^22.13.13",
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
"@types/passport-jwt": "^4.0.1",
|
"@types/passport-jwt": "^4.0.1",
|
||||||
"@types/qrcode-svg": "^1.1.5",
|
"@types/qrcode-svg": "^1.1.5",
|
||||||
"@types/sharp": "^0.32.0",
|
"@types/sharp": "^0.32.0",
|
||||||
"@types/supertest": "^6.0.3",
|
"@types/supertest": "^6.0.3",
|
||||||
"@types/uuid": "^10.0.0",
|
"@types/uuid": "^10.0.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.29.1",
|
"@typescript-eslint/eslint-plugin": "^8.28.0",
|
||||||
"@typescript-eslint/parser": "^8.29.1",
|
"@typescript-eslint/parser": "^8.28.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"eslint": "^9.24.0",
|
"eslint": "9.23.0",
|
||||||
"eslint-config-prettier": "^10.1.2",
|
"eslint-config-next": "^15.2.4",
|
||||||
"eslint-plugin-prettier": "^5.2.6",
|
"eslint-config-prettier": "^10.1.1",
|
||||||
|
"eslint-plugin-react": "^7.37.4",
|
||||||
"newman": "^6.2.1",
|
"newman": "^6.2.1",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"prisma": "^6.6.0",
|
"prisma": "^6.5.0",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"ts-loader": "^9.5.2",
|
"ts-loader": "^9.5.2",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.2",
|
||||||
"wait-on": "^8.0.3"
|
"wait-on": "^8.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,25 +76,6 @@ export const configVariables = {
|
|||||||
secret: false,
|
secret: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
cache: {
|
|
||||||
"redis-enabled": {
|
|
||||||
type: "boolean",
|
|
||||||
defaultValue: "false",
|
|
||||||
},
|
|
||||||
"redis-url": {
|
|
||||||
type: "string",
|
|
||||||
defaultValue: "redis://pingvin-redis:6379",
|
|
||||||
secret: true,
|
|
||||||
},
|
|
||||||
ttl: {
|
|
||||||
type: "number",
|
|
||||||
defaultValue: "60",
|
|
||||||
},
|
|
||||||
maxItems: {
|
|
||||||
type: "number",
|
|
||||||
defaultValue: "1000",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
email: {
|
email: {
|
||||||
enableShareEmailRecipients: {
|
enableShareEmailRecipients: {
|
||||||
type: "boolean",
|
type: "boolean",
|
||||||
@@ -108,7 +89,7 @@ export const configVariables = {
|
|||||||
shareRecipientsMessage: {
|
shareRecipientsMessage: {
|
||||||
type: "text",
|
type: "text",
|
||||||
defaultValue:
|
defaultValue:
|
||||||
"Hey!\n\n{creator} ({creatorEmail}) shared some files with you. You can view or download the files with this link: {shareUrl}\n\nThe share will expire {expires}.\n\nNote: {desc}\n\nShared securely with Pingvin Share 🐧",
|
"Hey!\n\n{creator} ({creatorEmail}) shared some files with you, view or download the files with this link: {shareUrl}\n\nThe share will expire {expires}.\n\nNote: {desc}\n\nShared securely with Pingvin Share 🐧",
|
||||||
},
|
},
|
||||||
reverseShareSubject: {
|
reverseShareSubject: {
|
||||||
type: "string",
|
type: "string",
|
||||||
@@ -126,7 +107,7 @@ export const configVariables = {
|
|||||||
resetPasswordMessage: {
|
resetPasswordMessage: {
|
||||||
type: "text",
|
type: "text",
|
||||||
defaultValue:
|
defaultValue:
|
||||||
"Hey!\n\nYou requested a password reset. Click this link to reset your password: {url}\nThe link expires in an hour.\n\nPingvin Share 🐧",
|
"Hey!\n\nYou requested a password reset. Click this link to reset your password: {url}\nThe link expires in a hour.\n\nPingvin Share 🐧",
|
||||||
},
|
},
|
||||||
inviteSubject: {
|
inviteSubject: {
|
||||||
type: "string",
|
type: "string",
|
||||||
@@ -368,10 +349,6 @@ export const configVariables = {
|
|||||||
defaultValue: "",
|
defaultValue: "",
|
||||||
obscured: true,
|
obscured: true,
|
||||||
},
|
},
|
||||||
useChecksum: {
|
|
||||||
type: "boolean",
|
|
||||||
defaultValue: "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
legal: {
|
legal: {
|
||||||
enabled: {
|
enabled: {
|
||||||
@@ -438,11 +415,11 @@ const prisma = new PrismaClient({
|
|||||||
|
|
||||||
async function seedConfigVariables() {
|
async function seedConfigVariables() {
|
||||||
for (const [category, configVariablesOfCategory] of Object.entries(
|
for (const [category, configVariablesOfCategory] of Object.entries(
|
||||||
configVariables,
|
configVariables
|
||||||
)) {
|
)) {
|
||||||
let order = 0;
|
let order = 0;
|
||||||
for (const [name, properties] of Object.entries(
|
for (const [name, properties] of Object.entries(
|
||||||
configVariablesOfCategory,
|
configVariablesOfCategory
|
||||||
)) {
|
)) {
|
||||||
const existingConfigVariable = await prisma.config.findUnique({
|
const existingConfigVariable = await prisma.config.findUnique({
|
||||||
where: { name_category: { name, category } },
|
where: { name_category: { name, category } },
|
||||||
@@ -488,7 +465,7 @@ async function migrateConfigVariables() {
|
|||||||
// Update the config variable if it exists in the seed
|
// Update the config variable if it exists in the seed
|
||||||
} else {
|
} else {
|
||||||
const variableOrder = Object.keys(
|
const variableOrder = Object.keys(
|
||||||
configVariables[existingConfigVariable.category],
|
configVariables[existingConfigVariable.category]
|
||||||
).indexOf(existingConfigVariable.name);
|
).indexOf(existingConfigVariable.name);
|
||||||
await prisma.config.update({
|
await prisma.config.update({
|
||||||
where: {
|
where: {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { Module } from "@nestjs/common";
|
|||||||
import { ScheduleModule } from "@nestjs/schedule";
|
import { ScheduleModule } from "@nestjs/schedule";
|
||||||
import { AuthModule } from "./auth/auth.module";
|
import { AuthModule } from "./auth/auth.module";
|
||||||
|
|
||||||
|
import { CacheModule } from "@nestjs/cache-manager";
|
||||||
import { APP_GUARD } from "@nestjs/core";
|
import { APP_GUARD } from "@nestjs/core";
|
||||||
import { ThrottlerGuard, ThrottlerModule } from "@nestjs/throttler";
|
import { ThrottlerGuard, ThrottlerModule } from "@nestjs/throttler";
|
||||||
import { AppCacheModule } from "./cache/cache.module";
|
|
||||||
import { AppController } from "./app.controller";
|
import { AppController } from "./app.controller";
|
||||||
import { ClamScanModule } from "./clamscan/clamscan.module";
|
import { ClamScanModule } from "./clamscan/clamscan.module";
|
||||||
import { ConfigModule } from "./config/config.module";
|
import { ConfigModule } from "./config/config.module";
|
||||||
@@ -20,12 +20,12 @@ import { UserModule } from "./user/user.module";
|
|||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
ConfigModule,
|
|
||||||
AuthModule,
|
AuthModule,
|
||||||
ShareModule,
|
ShareModule,
|
||||||
FileModule,
|
FileModule,
|
||||||
EmailModule,
|
EmailModule,
|
||||||
PrismaModule,
|
PrismaModule,
|
||||||
|
ConfigModule,
|
||||||
JobsModule,
|
JobsModule,
|
||||||
UserModule,
|
UserModule,
|
||||||
ThrottlerModule.forRoot([
|
ThrottlerModule.forRoot([
|
||||||
@@ -38,7 +38,9 @@ import { UserModule } from "./user/user.module";
|
|||||||
ClamScanModule,
|
ClamScanModule,
|
||||||
ReverseShareModule,
|
ReverseShareModule,
|
||||||
OAuthModule,
|
OAuthModule,
|
||||||
AppCacheModule,
|
CacheModule.register({
|
||||||
|
isGlobal: true,
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
controllers: [AppController],
|
controllers: [AppController],
|
||||||
providers: [
|
providers: [
|
||||||
|
|||||||
41
backend/src/cache/cache.module.ts
vendored
41
backend/src/cache/cache.module.ts
vendored
@@ -1,41 +0,0 @@
|
|||||||
import { Module } from "@nestjs/common";
|
|
||||||
import { CacheModule } from "@nestjs/cache-manager";
|
|
||||||
import { CacheableMemory } from "cacheable";
|
|
||||||
import { createKeyv } from "@keyv/redis";
|
|
||||||
import { Keyv } from "keyv";
|
|
||||||
import { ConfigModule } from "src/config/config.module";
|
|
||||||
import { ConfigService } from "src/config/config.service";
|
|
||||||
|
|
||||||
@Module({
|
|
||||||
imports: [
|
|
||||||
ConfigModule,
|
|
||||||
CacheModule.registerAsync({
|
|
||||||
isGlobal: true,
|
|
||||||
imports: [ConfigModule],
|
|
||||||
inject: [ConfigService],
|
|
||||||
useFactory: async (configService: ConfigService) => {
|
|
||||||
const useRedis = configService.get("cache.redis-enabled");
|
|
||||||
const ttl = configService.get("cache.ttl");
|
|
||||||
const max = configService.get("cache.maxItems");
|
|
||||||
|
|
||||||
let config = {
|
|
||||||
ttl,
|
|
||||||
max,
|
|
||||||
stores: [],
|
|
||||||
};
|
|
||||||
|
|
||||||
if (useRedis) {
|
|
||||||
const redisUrl = configService.get("cache.redis-url");
|
|
||||||
config.stores = [
|
|
||||||
new Keyv({ store: new CacheableMemory({ ttl, lruSize: 5000 }) }),
|
|
||||||
createKeyv(redisUrl),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
exports: [CacheModule],
|
|
||||||
})
|
|
||||||
export class AppCacheModule {}
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Global, Module } from "@nestjs/common";
|
import { Global, Module } from "@nestjs/common";
|
||||||
import { Config } from "@prisma/client";
|
|
||||||
import { EmailModule } from "src/email/email.module";
|
import { EmailModule } from "src/email/email.module";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { ConfigController } from "./config.controller";
|
import { ConfigController } from "./config.controller";
|
||||||
@@ -17,15 +16,7 @@ import { LogoService } from "./logo.service";
|
|||||||
},
|
},
|
||||||
inject: [PrismaService],
|
inject: [PrismaService],
|
||||||
},
|
},
|
||||||
{
|
ConfigService,
|
||||||
provide: ConfigService,
|
|
||||||
useFactory: async (prisma: PrismaService, configVariables: Config[]) => {
|
|
||||||
const configService = new ConfigService(configVariables, prisma);
|
|
||||||
await configService.initialize();
|
|
||||||
return configService;
|
|
||||||
},
|
|
||||||
inject: [PrismaService, "CONFIG_VARIABLES"],
|
|
||||||
},
|
|
||||||
LogoService,
|
LogoService,
|
||||||
],
|
],
|
||||||
controllers: [ConfigController],
|
controllers: [ConfigController],
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import { PrismaService } from "src/prisma/prisma.service";
|
|||||||
import { stringToTimespan } from "src/utils/date.util";
|
import { stringToTimespan } from "src/utils/date.util";
|
||||||
import { parse as yamlParse } from "yaml";
|
import { parse as yamlParse } from "yaml";
|
||||||
import { YamlConfig } from "../../prisma/seed/config.seed";
|
import { YamlConfig } from "../../prisma/seed/config.seed";
|
||||||
import { CONFIG_FILE } from "src/constants";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ConfigService extends EventEmitter to allow listening for config updates,
|
* ConfigService extends EventEmitter to allow listening for config updates,
|
||||||
@@ -31,8 +30,7 @@ export class ConfigService extends EventEmitter {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize gets called by the ConfigModule
|
async onModuleInit() {
|
||||||
async initialize() {
|
|
||||||
await this.loadYamlConfig();
|
await this.loadYamlConfig();
|
||||||
|
|
||||||
if (this.yamlConfig) {
|
if (this.yamlConfig) {
|
||||||
@@ -43,7 +41,7 @@ export class ConfigService extends EventEmitter {
|
|||||||
private async loadYamlConfig() {
|
private async loadYamlConfig() {
|
||||||
let configFile: string = "";
|
let configFile: string = "";
|
||||||
try {
|
try {
|
||||||
configFile = fs.readFileSync(CONFIG_FILE, "utf8");
|
configFile = fs.readFileSync("../config.yaml", "utf8");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
"Config.yaml is not set. Falling back to UI configuration.",
|
"Config.yaml is not set. Falling back to UI configuration.",
|
||||||
@@ -51,13 +49,12 @@ export class ConfigService extends EventEmitter {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
this.yamlConfig = yamlParse(configFile);
|
this.yamlConfig = yamlParse(configFile);
|
||||||
|
|
||||||
if (this.yamlConfig) {
|
if (this.yamlConfig) {
|
||||||
for (const configVariable of this.configVariables) {
|
for (const configVariable of this.configVariables) {
|
||||||
const category = this.yamlConfig[configVariable.category];
|
const category = this.yamlConfig[configVariable.category];
|
||||||
if (!category) continue;
|
if (!category) continue;
|
||||||
|
|
||||||
configVariable.value = category[configVariable.name];
|
configVariable.value = category[configVariable.name];
|
||||||
this.emit("update", configVariable.name, configVariable.value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import { LogLevel } from "@nestjs/common";
|
import { LogLevel } from "@nestjs/common";
|
||||||
|
|
||||||
export const CONFIG_FILE = process.env.CONFIG_FILE || "../config.yaml";
|
|
||||||
|
|
||||||
export const DATA_DIRECTORY = process.env.DATA_DIRECTORY || "./data";
|
export const DATA_DIRECTORY = process.env.DATA_DIRECTORY || "./data";
|
||||||
export const SHARE_DIRECTORY = `${DATA_DIRECTORY}/uploads/shares`;
|
export const SHARE_DIRECTORY = `${DATA_DIRECTORY}/uploads/shares`;
|
||||||
export const DATABASE_URL =
|
export const DATABASE_URL =
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export class FileController {
|
|||||||
@Res({ passthrough: true }) res: Response,
|
@Res({ passthrough: true }) res: Response,
|
||||||
@Param("shareId") shareId: string,
|
@Param("shareId") shareId: string,
|
||||||
) {
|
) {
|
||||||
const zipStream = await this.fileService.getZip(shareId);
|
const zipStream = this.fileService.getZip(shareId);
|
||||||
|
|
||||||
res.set({
|
res.set({
|
||||||
"Content-Type": "application/zip",
|
"Content-Type": "application/zip",
|
||||||
@@ -78,7 +78,7 @@ export class FileController {
|
|||||||
"Content-Type":
|
"Content-Type":
|
||||||
mime?.lookup?.(file.metaData.name) || "application/octet-stream",
|
mime?.lookup?.(file.metaData.name) || "application/octet-stream",
|
||||||
"Content-Length": file.metaData.size,
|
"Content-Length": file.metaData.size,
|
||||||
"Content-Security-Policy": "sandbox",
|
"Content-Security-Policy": "script-src 'none'",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (download === "true") {
|
if (download === "true") {
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ export class FileService {
|
|||||||
return storageService.deleteAllFiles(shareId);
|
return storageService.deleteAllFiles(shareId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getZip(shareId: string): Promise<Readable> {
|
getZip(shareId: string) {
|
||||||
const storageService = this.getStorageService();
|
const storageService = this.getStorageService();
|
||||||
return await storageService.getZip(shareId);
|
return storageService.getZip(shareId) as Readable;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async streamToUint8Array(stream: Readable): Promise<Uint8Array> {
|
private async streamToUint8Array(stream: Readable): Promise<Uint8Array> {
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import { ConfigService } from "src/config/config.service";
|
|||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { validate as isValidUUID } from "uuid";
|
import { validate as isValidUUID } from "uuid";
|
||||||
import { SHARE_DIRECTORY } from "../constants";
|
import { SHARE_DIRECTORY } from "../constants";
|
||||||
import { Readable } from "stream";
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LocalFileService {
|
export class LocalFileService {
|
||||||
@@ -156,19 +155,7 @@ export class LocalFileService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async getZip(shareId: string): Promise<Readable> {
|
getZip(shareId: string) {
|
||||||
return new Promise((resolve, reject) => {
|
return createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`);
|
||||||
const zipStream = createReadStream(
|
|
||||||
`${SHARE_DIRECTORY}/${shareId}/archive.zip`,
|
|
||||||
);
|
|
||||||
|
|
||||||
zipStream.on("error", (err) => {
|
|
||||||
reject(new InternalServerErrorException(err));
|
|
||||||
});
|
|
||||||
|
|
||||||
zipStream.on("open", () => {
|
|
||||||
resolve(zipStream);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import * as mime from "mime-types";
|
|||||||
import { File } from "./file.service";
|
import { File } from "./file.service";
|
||||||
import { Readable } from "stream";
|
import { Readable } from "stream";
|
||||||
import { validate as isValidUUID } from "uuid";
|
import { validate as isValidUUID } from "uuid";
|
||||||
import * as archiver from "archiver";
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class S3FileService {
|
export class S3FileService {
|
||||||
@@ -276,9 +275,6 @@ export class S3FileService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getS3Instance(): S3Client {
|
getS3Instance(): S3Client {
|
||||||
const checksumCalculation =
|
|
||||||
this.config.get("s3.useChecksum") === true ? null : "WHEN_REQUIRED";
|
|
||||||
|
|
||||||
return new S3Client({
|
return new S3Client({
|
||||||
endpoint: this.config.get("s3.endpoint"),
|
endpoint: this.config.get("s3.endpoint"),
|
||||||
region: this.config.get("s3.region"),
|
region: this.config.get("s3.region"),
|
||||||
@@ -287,100 +283,13 @@ export class S3FileService {
|
|||||||
secretAccessKey: this.config.get("s3.secret"),
|
secretAccessKey: this.config.get("s3.secret"),
|
||||||
},
|
},
|
||||||
forcePathStyle: true,
|
forcePathStyle: true,
|
||||||
requestChecksumCalculation: checksumCalculation,
|
|
||||||
responseChecksumValidation: checksumCalculation,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getZip(shareId: string) {
|
getZip() {
|
||||||
return new Promise<Readable>(async (resolve, reject) => {
|
throw new BadRequestException(
|
||||||
const s3Instance = this.getS3Instance();
|
"ZIP download is not supported with S3 storage",
|
||||||
const bucketName = this.config.get("s3.bucketName");
|
);
|
||||||
const compressionLevel = this.config.get("share.zipCompressionLevel");
|
|
||||||
|
|
||||||
const prefix = `${this.getS3Path()}${shareId}/`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const listResponse = await s3Instance.send(
|
|
||||||
new ListObjectsV2Command({
|
|
||||||
Bucket: bucketName,
|
|
||||||
Prefix: prefix,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!listResponse.Contents || listResponse.Contents.length === 0) {
|
|
||||||
throw new NotFoundException(`No files found for share ${shareId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const archive = archiver("zip", {
|
|
||||||
zlib: { level: parseInt(compressionLevel) },
|
|
||||||
});
|
|
||||||
|
|
||||||
archive.on("error", (err) => {
|
|
||||||
this.logger.error("Archive error", err);
|
|
||||||
reject(new InternalServerErrorException("Error creating ZIP file"));
|
|
||||||
});
|
|
||||||
|
|
||||||
const fileKeys = listResponse.Contents.filter(
|
|
||||||
(object) => object.Key && object.Key !== prefix,
|
|
||||||
).map((object) => object.Key as string);
|
|
||||||
|
|
||||||
if (fileKeys.length === 0) {
|
|
||||||
throw new NotFoundException(
|
|
||||||
`No valid files found for share ${shareId}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let filesAdded = 0;
|
|
||||||
|
|
||||||
const processNextFile = async (index: number) => {
|
|
||||||
if (index >= fileKeys.length) {
|
|
||||||
archive.finalize();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const key = fileKeys[index];
|
|
||||||
const fileName = key.replace(prefix, "");
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await s3Instance.send(
|
|
||||||
new GetObjectCommand({
|
|
||||||
Bucket: bucketName,
|
|
||||||
Key: key,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (response.Body instanceof Readable) {
|
|
||||||
const fileStream = response.Body;
|
|
||||||
|
|
||||||
fileStream.on("end", () => {
|
|
||||||
filesAdded++;
|
|
||||||
processNextFile(index + 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
fileStream.on("error", (err) => {
|
|
||||||
this.logger.error(`Error streaming file ${fileName}`, err);
|
|
||||||
processNextFile(index + 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
archive.append(fileStream, { name: fileName });
|
|
||||||
} else {
|
|
||||||
processNextFile(index + 1);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
this.logger.error(`Error processing file ${fileName}`, error);
|
|
||||||
processNextFile(index + 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
resolve(archive);
|
|
||||||
processNextFile(0);
|
|
||||||
} catch (error) {
|
|
||||||
this.logger.error("Error creating ZIP file", error);
|
|
||||||
|
|
||||||
reject(new InternalServerErrorException("Error creating ZIP file"));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getS3Path(): string {
|
getS3Path(): string {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ general:
|
|||||||
secureCookies: "false"
|
secureCookies: "false"
|
||||||
#Whether to show the home page
|
#Whether to show the home page
|
||||||
showHomePage: "true"
|
showHomePage: "true"
|
||||||
#Time after which a user must log in again (default: 3 months).
|
#Time in hours after which a user must log in again (default: 3 months).
|
||||||
sessionDuration: 3 months
|
sessionDuration: 3 months
|
||||||
share:
|
share:
|
||||||
#Whether registration is allowed
|
#Whether registration is allowed
|
||||||
@@ -23,21 +23,12 @@ share:
|
|||||||
shareIdLength: "8"
|
shareIdLength: "8"
|
||||||
#Maximum share size
|
#Maximum share size
|
||||||
maxSize: "1000000000"
|
maxSize: "1000000000"
|
||||||
#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.
|
||||||
zipCompressionLevel: "9"
|
zipCompressionLevel: "9"
|
||||||
#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.
|
#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.
|
||||||
chunkSize: "10000000"
|
chunkSize: "10000000"
|
||||||
#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.
|
||||||
autoOpenShareModal: "false"
|
autoOpenShareModal: "false"
|
||||||
cache:
|
|
||||||
#Normally Pingvin Share caches information in memory. If you run multiple instances of Pingvin Share, you need to enable Redis caching to share the cache between the instances.
|
|
||||||
redis-enabled: "false"
|
|
||||||
#Url to connect to the Redis instance used for caching.
|
|
||||||
redis-url: redis://pingvin-redis:6379
|
|
||||||
#Time in second to keep information inside the cache.
|
|
||||||
ttl: "60"
|
|
||||||
#Maximum number of items inside the cache.
|
|
||||||
maxItems: "1000"
|
|
||||||
email:
|
email:
|
||||||
#Whether to allow email sharing with recipients. Only enable this if SMTP is activated.
|
#Whether to allow email sharing with recipients. Only enable this if SMTP is activated.
|
||||||
enableShareEmailRecipients: "false"
|
enableShareEmailRecipients: "false"
|
||||||
@@ -54,7 +45,7 @@ email:
|
|||||||
Hey!
|
Hey!
|
||||||
|
|
||||||
|
|
||||||
{creator} ({creatorEmail}) shared some files with you. You can view or download the
|
{creator} ({creatorEmail}) shared some files with you, view or download the
|
||||||
files with this link: {shareUrl}
|
files with this link: {shareUrl}
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +75,7 @@ email:
|
|||||||
You requested a password reset. Click this link to reset your password:
|
You requested a password reset. Click this link to reset your password:
|
||||||
{url}
|
{url}
|
||||||
|
|
||||||
The link expires in an hour.
|
The link expires in a hour.
|
||||||
|
|
||||||
|
|
||||||
Pingvin Share 🐧
|
Pingvin Share 🐧
|
||||||
@@ -112,7 +103,7 @@ smtp:
|
|||||||
host: ""
|
host: ""
|
||||||
#Port of the SMTP server
|
#Port of the SMTP server
|
||||||
port: "0"
|
port: "0"
|
||||||
#Email address from which the emails get sent
|
#Email address from wich the emails get sent
|
||||||
email: ""
|
email: ""
|
||||||
#Username of the SMTP server
|
#Username of the SMTP server
|
||||||
username: ""
|
username: ""
|
||||||
@@ -213,8 +204,6 @@ s3:
|
|||||||
key: ""
|
key: ""
|
||||||
#The secret which allows you to access the S3 bucket.
|
#The secret which allows you to access the S3 bucket.
|
||||||
secret: ""
|
secret: ""
|
||||||
#Turn off for backends that do not support checksum (e.g. B2).
|
|
||||||
useChecksum: "true"
|
|
||||||
legal:
|
legal:
|
||||||
#Whether to show a link to imprint and privacy policy in the footer.
|
#Whether to show a link to imprint and privacy policy in the footer.
|
||||||
enabled: "false"
|
enabled: "false"
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ You can change the settings in the UI (`/admin/config`)
|
|||||||
|
|
||||||
You can set the configuration via a YAML file. If you choose this way, you won't be able to change the settings in the UI.
|
You can set the configuration via a YAML file. If you choose this way, you won't be able to change the settings in the UI.
|
||||||
|
|
||||||
If you use Docker you can create a `config.yml` file based on the [`config.example.yaml`](https://github.com/stonith404/pingvin-share/blob/main/config.example.yaml) and mount it to `/opt/app/config.yaml` in the container.
|
If you use Docker you can create a `config.yml` file based on the [`config.example.yaml`](https://github.com/stonith404/pingvin-share/blob/main/config.yaml) and mount it to `/opt/app/config.yaml` in the container.
|
||||||
|
|
||||||
If you run Pingvin Share without Docker, you can create a `config.yml` file based on the [`config.example.yaml`](https://github.com/stonith404/pingvin-share/blob/main/config.example.yaml) in the root directory of the project.
|
If you run Pingvin Share without Docker, you can create a `config.yml` file based on the [`config.example.yaml`](https://github.com/stonith404/pingvin-share/blob/main/config.yaml) in the root directory of the project.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -33,7 +33,6 @@ For installation specific configuration, you can use environment variables. The
|
|||||||
| `BACKEND_PORT` | `8080` | The port on which the backend listens. |
|
| `BACKEND_PORT` | `8080` | The port on which the backend listens. |
|
||||||
| `DATABASE_URL` | `file:../data/pingvin-share.db?connection_limit=1` | The URL of the SQLite database. |
|
| `DATABASE_URL` | `file:../data/pingvin-share.db?connection_limit=1` | The URL of the SQLite database. |
|
||||||
| `DATA_DIRECTORY` | `./data` | The directory where data is stored. |
|
| `DATA_DIRECTORY` | `./data` | The directory where data is stored. |
|
||||||
| `CONFIG_FILE` | `../config.yaml` | Path to the configuration file |
|
|
||||||
| `CLAMAV_HOST` | `127.0.0.1` or `clamav` when running with Docker | The IP address of the ClamAV server. See the [ClamAV docs](integrations.md#clamav) for more information. |
|
| `CLAMAV_HOST` | `127.0.0.1` or `clamav` when running with Docker | The IP address of the ClamAV server. See the [ClamAV docs](integrations.md#clamav) for more information. |
|
||||||
| `CLAMAV_PORT` | `3310` | The port number of the ClamAV server. |
|
| `CLAMAV_PORT` | `3310` | The port number of the ClamAV server. |
|
||||||
|
|
||||||
@@ -51,5 +50,4 @@ Environment variables that are only available when running Pingvin Share with Do
|
|||||||
| Variable | Default Value | Description |
|
| Variable | Default Value | Description |
|
||||||
| ----------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `TRUST_PROXY` | `false` | Whether Pingvin Share is behind a reverse proxy. If set to `true`, the `X-Forwarded-For` header is trusted. |
|
| `TRUST_PROXY` | `false` | Whether Pingvin Share is behind a reverse proxy. If set to `true`, the `X-Forwarded-For` header is trusted. |
|
||||||
| `CADDY_DISABLED` | `false` | Configures if Pingvin Share is starting built-in Caddy. If set to `true`, Caddy will not be started. If disabled, you must configure your reverse proxy to correctly map all paths. Refer to the [official Caddyfile](https://github.com/stonith404/pingvin-share/blob/main/reverse-proxy/Caddyfile) for guidance. |
|
|
||||||
| `PUID` and `PGID` | `1000` | The user and group ID of the user who should run Pingvin Share inside the Docker container and owns the files that are mounted with the volume. You can get the `PUID` and `GUID` of your user on your host machine by using the command `id`. For more information see [this article](https://docs.linuxserver.io/general/understanding-puid-and-pgid/#using-the-variables). |
|
| `PUID` and `PGID` | `1000` | The user and group ID of the user who should run Pingvin Share inside the Docker container and owns the files that are mounted with the volume. You can get the `PUID` and `GUID` of your user on your host machine by using the command `id`. For more information see [this article](https://docs.linuxserver.io/general/understanding-puid-and-pgid/#using-the-variables). |
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Your container is now listening on `http://localhost:<externalport>`, have fun w
|
|||||||
|
|
||||||
Required tools:
|
Required tools:
|
||||||
|
|
||||||
- [Node.js](https://nodejs.org/en/download/) >= 22
|
- [Node.js](https://nodejs.org/en/download/) >= 16
|
||||||
- [Git](https://git-scm.com/downloads)
|
- [Git](https://git-scm.com/downloads)
|
||||||
- [pm2](https://pm2.keymetrics.io/) for running Pingvin Share in the background
|
- [pm2](https://pm2.keymetrics.io/) for running Pingvin Share in the background
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"next",
|
|
||||||
"eslint-config-next",
|
|
||||||
"eslint:recommended",
|
|
||||||
"prettier"
|
|
||||||
],
|
|
||||||
"plugins": ["react"],
|
|
||||||
"rules": {
|
|
||||||
"quotes": ["warn", "double", { "allowTemplateLiterals": true }],
|
|
||||||
"react-hooks/exhaustive-deps": ["off"],
|
|
||||||
"import/no-anonymous-default-export": ["off"],
|
|
||||||
"no-unused-vars": ["warn"],
|
|
||||||
"react/no-unescaped-entities": ["off"],
|
|
||||||
"@next/next/no-img-element": ["off"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
34
frontend/eslint.config.mjs
Normal file
34
frontend/eslint.config.mjs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import { defineConfig } from "eslint/config";
|
||||||
|
import react from "eslint-plugin-react";
|
||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
import js from "@eslint/js";
|
||||||
|
import { FlatCompat } from "@eslint/eslintrc";
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
recommendedConfig: js.configs.recommended,
|
||||||
|
allConfig: js.configs.all
|
||||||
|
});
|
||||||
|
|
||||||
|
export default defineConfig([{
|
||||||
|
extends: compat.extends("next", "eslint-config-next", "eslint:recommended", "prettier"),
|
||||||
|
|
||||||
|
plugins: {
|
||||||
|
react,
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
quotes: ["warn", "double", {
|
||||||
|
allowTemplateLiterals: true,
|
||||||
|
}],
|
||||||
|
|
||||||
|
"react-hooks/exhaustive-deps": ["off"],
|
||||||
|
"import/no-anonymous-default-export": ["off"],
|
||||||
|
"no-unused-vars": ["warn"],
|
||||||
|
"react/no-unescaped-entities": ["off"],
|
||||||
|
"@next/next/no-img-element": ["off"],
|
||||||
|
},
|
||||||
|
}]);
|
||||||
15136
frontend/package-lock.json
generated
15136
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.13.0",
|
"version": "1.10.4",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"format": "prettier --end-of-line=auto --write \"src/**/*.ts*\""
|
"format": "prettier --end-of-line=auto --write \"src/**/*.ts*\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "^11.13.3",
|
"@emotion/react": "^11.14.0",
|
||||||
"@emotion/server": "^11.11.0",
|
"@emotion/server": "^11.11.0",
|
||||||
"@mantine/core": "^6.0.21",
|
"@mantine/core": "^6.0.21",
|
||||||
"@mantine/dropzone": "^6.0.21",
|
"@mantine/dropzone": "^6.0.21",
|
||||||
@@ -18,37 +18,38 @@
|
|||||||
"@mantine/modals": "^6.0.21",
|
"@mantine/modals": "^6.0.21",
|
||||||
"@mantine/next": "^6.0.21",
|
"@mantine/next": "^6.0.21",
|
||||||
"@mantine/notifications": "^6.0.21",
|
"@mantine/notifications": "^6.0.21",
|
||||||
"axios": "^1.7.7",
|
"axios": "^1.8.4",
|
||||||
"cookies-next": "^4.2.1",
|
"cookies-next": "^5.1.0",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"jose": "^5.9.2",
|
"jose": "^6.0.10",
|
||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
"markdown-to-jsx": "^7.5.0",
|
"markdown-to-jsx": "^7.7.4",
|
||||||
"mime-types": "^2.1.35",
|
"mime-types": "^2.1.35",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"next": "^14.2.26",
|
"next": "^15.2.4",
|
||||||
"next-http-proxy-middleware": "^1.2.6",
|
"next-http-proxy-middleware": "^1.2.6",
|
||||||
"next-pwa": "^5.6.0",
|
"next-pwa": "^5.6.0",
|
||||||
"p-limit": "^6.1.0",
|
"p-limit": "^6.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.0.0",
|
||||||
"react-icons": "^5.3.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-intl": "^6.6.8",
|
"react-intl": "^7.1.10",
|
||||||
"sharp": "^0.33.5",
|
"sharp": "^0.33.5",
|
||||||
"yup": "^1.4.0"
|
"yup": "^1.6.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
"@types/node": "22.5.5",
|
"@types/node": "22.13.13",
|
||||||
"@types/react": "18.3.7",
|
"@types/react": "19.0.12",
|
||||||
"@types/react-dom": "18.3.0",
|
"@types/react-dom": "19.0.4",
|
||||||
"@typescript-eslint/parser": "^8.6.0",
|
"@typescript-eslint/parser": "^8.28.0",
|
||||||
"axios": "^1.7.7",
|
"axios": "^1.8.4",
|
||||||
"eslint": "8.57.0",
|
"eslint": "9.23.0",
|
||||||
"eslint-config-next": "^14.2.12",
|
"eslint-config-next": "^15.2.4",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^10.1.1",
|
||||||
"prettier": "^3.3.3",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
|
"prettier": "^3.5.3",
|
||||||
"tar": "^7.4.3",
|
"tar": "^7.4.3",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.8.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,14 +13,13 @@ import Link from "next/link";
|
|||||||
import { Dispatch, SetStateAction } from "react";
|
import { Dispatch, SetStateAction } from "react";
|
||||||
import {
|
import {
|
||||||
TbAt,
|
TbAt,
|
||||||
TbBinaryTree,
|
|
||||||
TbBucket,
|
|
||||||
TbMail,
|
TbMail,
|
||||||
TbScale,
|
|
||||||
TbServerBolt,
|
|
||||||
TbSettings,
|
|
||||||
TbShare,
|
TbShare,
|
||||||
TbSocial,
|
TbSocial,
|
||||||
|
TbBucket,
|
||||||
|
TbBinaryTree,
|
||||||
|
TbSettings,
|
||||||
|
TbScale,
|
||||||
} from "react-icons/tb";
|
} from "react-icons/tb";
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
|
|
||||||
@@ -33,7 +32,6 @@ const categories = [
|
|||||||
{ name: "LDAP", icon: <TbBinaryTree /> },
|
{ name: "LDAP", icon: <TbBinaryTree /> },
|
||||||
{ name: "S3", icon: <TbBucket /> },
|
{ name: "S3", icon: <TbBucket /> },
|
||||||
{ name: "Legal", icon: <TbScale /> },
|
{ name: "Legal", icon: <TbScale /> },
|
||||||
{ name: "Cache", icon: <TbServerBolt /> },
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const useStyles = createStyles((theme) => ({
|
const useStyles = createStyles((theme) => ({
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ import {
|
|||||||
useMantineTheme,
|
useMantineTheme,
|
||||||
} from "@mantine/core";
|
} from "@mantine/core";
|
||||||
import { modals } from "@mantine/modals";
|
import { modals } from "@mantine/modals";
|
||||||
import Markdown, { MarkdownToJSX } from "markdown-to-jsx";
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import React, { Dispatch, SetStateAction, useEffect, useState } from "react";
|
import React, { Dispatch, SetStateAction, useEffect, useState } from "react";
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
import api from "../../services/api.service";
|
import api from "../../services/api.service";
|
||||||
|
import Markdown from "markdown-to-jsx";
|
||||||
|
|
||||||
const FilePreviewContext = React.createContext<{
|
const FilePreviewContext = React.createContext<{
|
||||||
shareId: string;
|
shareId: string;
|
||||||
@@ -132,8 +132,7 @@ const TextPreview = () => {
|
|||||||
.then((res) => setText(res.data ?? "Preview couldn't be fetched."));
|
.then((res) => setText(res.data ?? "Preview couldn't be fetched."));
|
||||||
}, [shareId, fileId]);
|
}, [shareId, fileId]);
|
||||||
|
|
||||||
const options: MarkdownToJSX.Options = {
|
const options = {
|
||||||
disableParsingRawHTML: true,
|
|
||||||
overrides: {
|
overrides: {
|
||||||
pre: {
|
pre: {
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const Dropzone = ({
|
|||||||
const t = useTranslate();
|
const t = useTranslate();
|
||||||
|
|
||||||
const { classes } = useStyles();
|
const { classes } = useStyles();
|
||||||
const openRef = useRef<() => void>();
|
const openRef = useRef<() => void>(null);
|
||||||
return (
|
return (
|
||||||
<div className={classes.wrapper}>
|
<div className={classes.wrapper}>
|
||||||
<MantineDropzone
|
<MantineDropzone
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const useTranslate = () => {
|
|||||||
values?: Parameters<typeof intl.formatMessage>[1],
|
values?: Parameters<typeof intl.formatMessage>[1],
|
||||||
opts?: Parameters<typeof intl.formatMessage>[2],
|
opts?: Parameters<typeof intl.formatMessage>[2],
|
||||||
) => {
|
) => {
|
||||||
return intl.formatMessage({ id }, values, opts) as string;
|
return intl.formatMessage({ id }, values, opts) as unknown as string;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ export const translateOutsideContext = () => {
|
|||||||
values?: Parameters<typeof intl.formatMessage>[1],
|
values?: Parameters<typeof intl.formatMessage>[1],
|
||||||
opts?: Parameters<typeof intl.formatMessage>[2],
|
opts?: Parameters<typeof intl.formatMessage>[2],
|
||||||
) => {
|
) => {
|
||||||
return intl.formatMessage({ id }, values, opts) as string;
|
return intl.formatMessage({ id }, values, opts) as unknown as string;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "المشاركة {shareId}",
|
"share.title": "المشاركة {shareId}",
|
||||||
"share.description": "انظر ما الذي شاركته معك!",
|
"share.description": "انظر ما الذي شاركته معك!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "تم تجاوز حد المشاهدات",
|
"share.error.visitor-limit-exceeded.title": "تم تجاوز حد المشاهدات",
|
||||||
"share.error.visitor-limit-exceeded.description": "تم تجاوز الحد الأقصى لزوار هذه المشاركة.",
|
"share.error.visitor-limit-exceeded.description": "تم تجاوز الحد الأقصى لزوار هذه المشاركة.",
|
||||||
"share.error.removed.title": "تمت إزالة المشاركة",
|
"share.error.removed.title": "تمت إزالة المشاركة",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ export default {
|
|||||||
"navbar.upload": "Nahrát",
|
"navbar.upload": "Nahrát",
|
||||||
"navbar.signin": "Přihlásit se",
|
"navbar.signin": "Přihlásit se",
|
||||||
"navbar.home": "Domů",
|
"navbar.home": "Domů",
|
||||||
"navbar.signup": "Zaregistrovat se",
|
"navbar.signup": "Sign up",
|
||||||
"navbar.links.shares": "Má sdílení",
|
"navbar.links.shares": "Má sdílení",
|
||||||
"navbar.links.reverse": "Opačná sdílení",
|
"navbar.links.reverse": "Zpětná sdílení",
|
||||||
"navbar.avatar.account": "Můj účet",
|
"navbar.avatar.account": "Můj účet",
|
||||||
"navbar.avatar.admin": "Administrace",
|
"navbar.avatar.admin": "Administrace",
|
||||||
"navbar.avatar.signout": "Odhlásit se",
|
"navbar.avatar.signout": "Odhlásit se",
|
||||||
@@ -13,12 +13,12 @@ export default {
|
|||||||
// /
|
// /
|
||||||
"home.title": "<h>Samostatně hostovaná</h> platforma pro sdílení souborů.",
|
"home.title": "<h>Samostatně hostovaná</h> platforma pro sdílení souborů.",
|
||||||
"home.description": "Opravdu chcete dát své osobní soubory do rukou třetích stran, jako je WeTransfer?",
|
"home.description": "Opravdu chcete dát své osobní soubory do rukou třetích stran, jako je WeTransfer?",
|
||||||
"home.bullet.a.name": "Vlastní hosting",
|
"home.bullet.a.name": "Self-Hosted",
|
||||||
"home.bullet.a.description": "Hostujte Pingvin Share na svém vlastním počítači.",
|
"home.bullet.a.description": "Hostujte Pingvin Share na svém vlastním počítači.",
|
||||||
"home.bullet.b.name": "Soukromí",
|
"home.bullet.b.name": "Soukromí",
|
||||||
"home.bullet.b.description": "Vaše soubory jsou Vaše a nikdy k nim nebudou mít přístup třetí strany.",
|
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||||
"home.bullet.c.name": "Žádný otravný limit pro velikost souborů",
|
"home.bullet.c.name": "Žádný otravný limit pro velikost souborů",
|
||||||
"home.bullet.c.description": "Nahrajte tak velké soubory, jak chcete. Limitem je pouze Váš pevný disk.",
|
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||||
"home.button.start": "Začít",
|
"home.button.start": "Začít",
|
||||||
"home.button.source": "Zdrojový kód",
|
"home.button.source": "Zdrojový kód",
|
||||||
// END /
|
// END /
|
||||||
@@ -58,12 +58,12 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Zapomněli jste heslo?",
|
"resetPassword.title": "Zapomněli jste heslo?",
|
||||||
"resetPassword.description": "Zadejte svůj e-mail pro obnovení hesla.",
|
"resetPassword.description": "Zadejte svůj e-mail pro obnovení hesla.",
|
||||||
"resetPassword.notify.success": "Pokud e-mail existuje, byla na něj odeslána zpráva s odkazem k obnovení hesla.",
|
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||||
"resetPassword.button.back": "Zpět na přihlašovací stránku",
|
"resetPassword.button.back": "Zpět na přihlašovací stránku",
|
||||||
"resetPassword.text.resetPassword": "Obnovit heslo",
|
"resetPassword.text.resetPassword": "Obnovit heslo",
|
||||||
"resetPassword.text.enterNewPassword": "Zadejte své nové heslo",
|
"resetPassword.text.enterNewPassword": "Zadejte své nové heslo",
|
||||||
"resetPassword.input.password": "Nové heslo",
|
"resetPassword.input.password": "Nové heslo",
|
||||||
"resetPassword.notify.passwordReset": "Vaše heslo bylo úspěšně obnoveno.",
|
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Můj účet",
|
"account.title": "Můj účet",
|
||||||
"account.card.info.title": "Informace o účtu",
|
"account.card.info.title": "Informace o účtu",
|
||||||
@@ -73,7 +73,7 @@ export default {
|
|||||||
"account.card.password.title": "Heslo",
|
"account.card.password.title": "Heslo",
|
||||||
"account.card.password.old": "Staré heslo",
|
"account.card.password.old": "Staré heslo",
|
||||||
"account.card.password.new": "Nové heslo",
|
"account.card.password.new": "Nové heslo",
|
||||||
"account.card.password.noPasswordSet": "Heslo není nastaveno. Pro přihlášení pomocí e-mailu a hesla je potřeba vytvořit heslo.",
|
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||||
"account.notify.password.success": "Heslo bylo úspěšně změněno",
|
"account.notify.password.success": "Heslo bylo úspěšně změněno",
|
||||||
"account.card.oauth.title": "Přihlášení přes sociální sítě",
|
"account.card.oauth.title": "Přihlášení přes sociální sítě",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Odpojit",
|
"account.card.oauth.unlink": "Odpojit",
|
||||||
"account.card.oauth.unlinked": "Odpojeno",
|
"account.card.oauth.unlinked": "Odpojeno",
|
||||||
"account.modal.unlink.title": "Odpojit účet",
|
"account.modal.unlink.title": "Odpojit účet",
|
||||||
"account.modal.unlink.description": "Odpojení vašich sociálních účtů může způsobit ztrátu účtu, pokud si nepamatujete své uživatelské jméno a heslo",
|
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
||||||
"account.notify.oauth.unlinked.success": "Úspěšně odpojeno",
|
"account.notify.oauth.unlinked.success": "Úspěšně odpojeno",
|
||||||
"account.card.security.title": "Zabezpečení",
|
"account.card.security.title": "Zabezpečení",
|
||||||
"account.card.security.totp.enable.description": "Zadejte své současné heslo, abyste mohli povolit TOTP",
|
"account.card.security.totp.enable.description": "Zadejte své současné heslo, abyste mohli povolit TOTP",
|
||||||
@@ -115,30 +115,30 @@ export default {
|
|||||||
"account.shares.title": "Má sdílení",
|
"account.shares.title": "Má sdílení",
|
||||||
"account.shares.title.empty": "Je tu prázdno 👀",
|
"account.shares.title.empty": "Je tu prázdno 👀",
|
||||||
"account.shares.description.empty": "Nemáte žádná sdílení.",
|
"account.shares.description.empty": "Nemáte žádná sdílení.",
|
||||||
"account.shares.button.create": "Vytvořit",
|
"account.shares.button.create": "Create one",
|
||||||
"account.shares.info.title": "Vlastnosti",
|
"account.shares.info.title": "Share informations",
|
||||||
"account.shares.table.id": "ID",
|
"account.shares.table.id": "ID",
|
||||||
"account.shares.table.name": "Název",
|
"account.shares.table.name": "Název",
|
||||||
"account.shares.table.description": "Popis",
|
"account.shares.table.description": "Popis",
|
||||||
"account.shares.table.visitors": "Návštěvníci",
|
"account.shares.table.visitors": "Návštěvníci",
|
||||||
"account.shares.table.expiresAt": "Vyprší",
|
"account.shares.table.expiresAt": "Expires on",
|
||||||
"account.shares.table.createdAt": "Vytvořeno",
|
"account.shares.table.createdAt": "Created on",
|
||||||
"account.shares.table.size": "Velikost",
|
"account.shares.table.size": "Velikost",
|
||||||
"account.shares.table.password-protected": "Chráněno heslem",
|
"account.shares.table.password-protected": "Password protected",
|
||||||
"account.shares.table.visitor-count": "{count} z {max}",
|
"account.shares.table.visitor-count": "{count} of {max}",
|
||||||
"account.shares.table.expiry-never": "Nikdy",
|
"account.shares.table.expiry-never": "Never",
|
||||||
"account.shares.modal.share-informations": "Vlastnosti",
|
"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": "Odstranit sdílení {share}",
|
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||||
"account.shares.modal.delete.description": "Opravdu chcete odstranit toto sdílení?",
|
"account.shares.modal.delete.description": "Opravdu chcete odstranit toto sdílení?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "Opačná sdílení",
|
"account.reverseShares.title": "Zpětná sdílení",
|
||||||
"account.reverseShares.description": "Opačné sdílení umožňuje vygenerovat jedinečné URL, které umožní externím uživatelům vytvořit sdílet soubory.",
|
"account.reverseShares.description": "Zpětné sdílení umožňuje vygenerovat jedinečné URL, které umožní externím uživatelům vytvořit sdílet soubory.",
|
||||||
"account.reverseShares.title.empty": "Je tu prázdno 👀",
|
"account.reverseShares.title.empty": "Je tu prázdno 👀",
|
||||||
"account.reverseShares.description.empty": "Nemáte žádná opačná sdílení.",
|
"account.reverseShares.description.empty": "Nemáte žádná zpětná sdílení.",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
"account.reverseShares.modal.title": "Vytvořit opačné sdílení",
|
"account.reverseShares.modal.title": "Vytvořit zpětné sdílení",
|
||||||
"account.reverseShares.modal.expiration.label": "Expirace",
|
"account.reverseShares.modal.expiration.label": "Expirace",
|
||||||
"account.reverseShares.modal.expiration.minute-singular": "Minuta",
|
"account.reverseShares.modal.expiration.minute-singular": "Minuta",
|
||||||
"account.reverseShares.modal.expiration.minute-plural": "Minut",
|
"account.reverseShares.modal.expiration.minute-plural": "Minut",
|
||||||
@@ -153,16 +153,16 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "Rok",
|
"account.reverseShares.modal.expiration.year-singular": "Rok",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Let",
|
"account.reverseShares.modal.expiration.year-plural": "Let",
|
||||||
"account.reverseShares.modal.max-size.label": "Max. velikost sdílení",
|
"account.reverseShares.modal.max-size.label": "Max. velikost sdílení",
|
||||||
"account.reverseShares.modal.send-email": "Odeslat oznámení e-mailem",
|
"account.reverseShares.modal.send-email": "Send email notifications",
|
||||||
"account.reverseShares.modal.send-email.description": "Odešle vám e-mailové upozornění, až bude sdílení pomocí tohoto reverzního sdíleného odkazu vytvořeno.",
|
"account.reverseShares.modal.send-email.description": "Odešle vám e-mailové upozornění, až bude sdílení pomocí tohoto reverzního sdíleného odkazu vytvořeno.",
|
||||||
"account.reverseShares.modal.simplified": "Zjednodušený režim",
|
"account.reverseShares.modal.simplified": "Zjednodušený režim",
|
||||||
"account.reverseShares.modal.simplified.description": "Usnadněte odesílateli sdílení souboru s Vámi. Budou moci pouze upravit název a popisek sdílení.",
|
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||||
"account.reverseShares.modal.public-access": "Veřejný přístup",
|
"account.reverseShares.modal.public-access": "Veřejný přístup",
|
||||||
"account.reverseShares.modal.public-access.description": "Zveřejnit soubory vytvořená tímto opačným sdílením. Pokud není povoleno, pouze Vy a tvůrce sdílení má práva k zobrazení.",
|
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||||
"account.reverseShares.modal.max-use.label": "Max. použití",
|
"account.reverseShares.modal.max-use.label": "Max. použití",
|
||||||
"account.reverseShares.modal.max-use.description": "Maximální počet sdílení, která mohou být vytvořena za pomoci tohoto URL.",
|
"account.reverseShares.modal.max-use.description": "Maximální počet sdílení, která mohou být vytvořena za pomoci tohoto URL.",
|
||||||
"account.reverseShare.never-expires": "Toto opačné sdílení nikdy nevyprší.",
|
"account.reverseShare.never-expires": "Toto zpětné sdílení nikdy nevyprší.",
|
||||||
"account.reverseShare.expires-on": "Toto opačné sdílení vyprší {expiration}.",
|
"account.reverseShare.expires-on": "Toto zpětné sdílení vyprší {expiration}.",
|
||||||
"account.reverseShares.table.no-shares": "Zatím nebyla vytvořena žádná sdílení",
|
"account.reverseShares.table.no-shares": "Zatím nebyla vytvořena žádná sdílení",
|
||||||
"account.reverseShares.table.count.singular": "sdílení",
|
"account.reverseShares.table.count.singular": "sdílení",
|
||||||
"account.reverseShares.table.count.plural": "sdílení",
|
"account.reverseShares.table.count.plural": "sdílení",
|
||||||
@@ -170,9 +170,9 @@ export default {
|
|||||||
"account.reverseShares.table.remaining": "Zbývající použití",
|
"account.reverseShares.table.remaining": "Zbývající použití",
|
||||||
"account.reverseShares.table.max-size": "Max. velikost sdílení",
|
"account.reverseShares.table.max-size": "Max. velikost sdílení",
|
||||||
"account.reverseShares.table.expires": "Vyprší",
|
"account.reverseShares.table.expires": "Vyprší",
|
||||||
"account.reverseShares.modal.reverse-share-link": "Odkaz na opačné sdílení",
|
"account.reverseShares.modal.reverse-share-link": "Odkaz na zpětné sdílení",
|
||||||
"account.reverseShares.modal.delete.title": "Odstranit opačné sdílení",
|
"account.reverseShares.modal.delete.title": "Odstranit zpětné sdílení",
|
||||||
"account.reverseShares.modal.delete.description": "Opravdu chcete odstranit toto opačné sdílení? Pokud tak učiníte, související sdílení budou také odstraněny.",
|
"account.reverseShares.modal.delete.description": "Opravdu chcete odstranit toto zpětné sdílení? Pokud tak učiníte, související sdílené budou také odstraněny.",
|
||||||
// END /account/reverseShares
|
// END /account/reverseShares
|
||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Administrace",
|
"admin.title": "Administrace",
|
||||||
@@ -186,14 +186,14 @@ export default {
|
|||||||
"admin.users.table.username": "Uživatelské jméno",
|
"admin.users.table.username": "Uživatelské jméno",
|
||||||
"admin.users.table.email": "E-mail",
|
"admin.users.table.email": "E-mail",
|
||||||
"admin.users.table.admin": "Administrátor",
|
"admin.users.table.admin": "Administrátor",
|
||||||
"admin.users.edit.update.title": "Upravit uživatele {username}",
|
"admin.users.edit.update.title": "Edit user: {username}",
|
||||||
"admin.users.edit.update.admin-privileges": "Administrátorská práva",
|
"admin.users.edit.update.admin-privileges": "Administrátorská práva",
|
||||||
"admin.users.edit.update.change-password.title": "Změnit heslo",
|
"admin.users.edit.update.change-password.title": "Změnit heslo",
|
||||||
"admin.users.edit.update.change-password.field": "Nové heslo",
|
"admin.users.edit.update.change-password.field": "Nové heslo",
|
||||||
"admin.users.edit.update.change-password.button": "Uložit nové heslo",
|
"admin.users.edit.update.change-password.button": "Uložit nové heslo",
|
||||||
"admin.users.edit.update.notify.password.success": "Heslo bylo úspěšně změněno",
|
"admin.users.edit.update.notify.password.success": "Heslo bylo úspěšně změněno",
|
||||||
"admin.users.edit.delete.title": "Odstranit uživatele: {username}?",
|
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
||||||
"admin.users.edit.delete.description": "Opravdu chcete odstranit tohoto uživatele a všechny jeho soubory?",
|
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Vytvořit uživatele",
|
"admin.users.modal.create.title": "Vytvořit uživatele",
|
||||||
"admin.users.modal.create.username": "Uživatelské jméno",
|
"admin.users.modal.create.username": "Uživatelské jméno",
|
||||||
@@ -209,20 +209,20 @@ export default {
|
|||||||
"admin.shares.table.id": "ID sdílení",
|
"admin.shares.table.id": "ID sdílení",
|
||||||
"admin.shares.table.username": "Autor",
|
"admin.shares.table.username": "Autor",
|
||||||
"admin.shares.table.visitors": "Návštěvníci",
|
"admin.shares.table.visitors": "Návštěvníci",
|
||||||
"admin.shares.table.expires": "Vyprší",
|
"admin.shares.table.expires": "Expires on",
|
||||||
"admin.shares.edit.delete.title": "Odstranit sdílení: {id}",
|
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||||
"admin.shares.edit.delete.description": "Opravdu chcete smazat toto sdílení?",
|
"admin.shares.edit.delete.description": "Opravdu chcete smazat toto sdílení?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Nahrát",
|
"upload.title": "Nahrát",
|
||||||
"upload.notify.confirm-leave": "Opravdu chcete opustit tuto stránku? Vaše nahrávání bude zrušeno.",
|
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||||
"upload.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.",
|
"upload.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.",
|
||||||
"upload.notify.count-failed": "{count} souborů se nepodařilo nahrát. Zkouším to znovu.",
|
"upload.notify.count-failed": "{count} souborů se nepodařilo nahrát. Zkouším to znovu.",
|
||||||
"upload.reverse-share.error.invalid.title": "Neplatný odkaz na opačné sdílení",
|
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||||
"upload.reverse-share.error.invalid.description": "Toto opačné sdílení vypršelo nebo je neplatné.",
|
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Nahrát soubory",
|
"upload.dropzone.title": "Nahrát soubory",
|
||||||
"upload.dropzone.description": "Pro spuštění sdílení, přetáhněte soubory sem. Můžete nahrát soubory o celkové velikosti {maxSize}.",
|
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||||
"upload.dropzone.notify.file-too-big": "Vaše soubory přesahují maximální velikost {maxSize}.",
|
"upload.dropzone.notify.file-too-big": "Vaše soubory přesahují maximální velikost {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Název",
|
"upload.filelist.name": "Název",
|
||||||
@@ -234,8 +234,8 @@ export default {
|
|||||||
"upload.modal.not-signed-in": "Nejste přihlášeni",
|
"upload.modal.not-signed-in": "Nejste přihlášeni",
|
||||||
"upload.modal.not-signed-in-description": "Nebudete moci ručně odstranit své sdílení a zobrazit počet návštěvníků.",
|
"upload.modal.not-signed-in-description": "Nebudete moci ručně odstranit své sdílení a zobrazit počet návštěvníků.",
|
||||||
"upload.modal.expires.never": "nikdy",
|
"upload.modal.expires.never": "nikdy",
|
||||||
"upload.modal.expires.never-long": "Trvalé sdílení",
|
"upload.modal.expires.never-long": "Permanent share",
|
||||||
"upload.modal.expires.error.too-long": "Datum vypršení platnosti překračuje maximum {max}.",
|
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||||
"upload.modal.link.label": "Odkaz",
|
"upload.modal.link.label": "Odkaz",
|
||||||
"upload.modal.expires.label": "Expirace",
|
"upload.modal.expires.label": "Expirace",
|
||||||
"upload.modal.expires.minute-singular": "Minuta",
|
"upload.modal.expires.minute-singular": "Minuta",
|
||||||
@@ -265,12 +265,11 @@ export default {
|
|||||||
"upload.modal.completed.never-expires": "Toto sdílení nikdy nevyprší.",
|
"upload.modal.completed.never-expires": "Toto sdílení nikdy nevyprší.",
|
||||||
"upload.modal.completed.expires-on": "Toto sdílení vyprší {expiration}.",
|
"upload.modal.completed.expires-on": "Toto sdílení vyprší {expiration}.",
|
||||||
"upload.modal.completed.share-ready": "Sdílení připraveno",
|
"upload.modal.completed.share-ready": "Sdílení připraveno",
|
||||||
"upload.modal.completed.notified-reverse-share-creator": "Upozornili jsme tvůrce opačného sdílení. Můžete s nimi také ručně sdílet tento odkaz jiným způsobem.",
|
"upload.modal.completed.notified-reverse-share-creator": "Upozornili jsme tvůrce zpětného sdílení. Můžete s nimi také ručně sdílet tento odkaz jiným způsobem.",
|
||||||
// END /upload
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Sdílení {shareId}",
|
"share.title": "Sdílení {shareId}",
|
||||||
"share.description": "Podívejte se, co jsem s vámi sdílel!",
|
"share.description": "Podívejte se, co jsem s vámi sdílel!",
|
||||||
"share.fileCount": "{count, plural, =1 {# soubor} other {# soubory}} · {size} (Archiv může být menší díky kompresi)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Limit návštěvníků překročen",
|
"share.error.visitor-limit-exceeded.title": "Limit návštěvníků překročen",
|
||||||
"share.error.visitor-limit-exceeded.description": "Limit návštěvníků tohoto sdílení byl překročen.",
|
"share.error.visitor-limit-exceeded.description": "Limit návštěvníků tohoto sdílení byl překročen.",
|
||||||
"share.error.removed.title": "Sdílení bylo odstraněno",
|
"share.error.removed.title": "Sdílení bylo odstraněno",
|
||||||
@@ -279,16 +278,16 @@ export default {
|
|||||||
"share.error.access-denied.title": "Soukromé sdílení",
|
"share.error.access-denied.title": "Soukromé sdílení",
|
||||||
"share.error.access-denied.description": "Aktuální účet nemá oprávnění k přístupu k tomuto sdílení",
|
"share.error.access-denied.description": "Aktuální účet nemá oprávnění k přístupu k tomuto sdílení",
|
||||||
"share.modal.password.title": "Heslo vyžadováno",
|
"share.modal.password.title": "Heslo vyžadováno",
|
||||||
"share.modal.password.description": "Zadejte prosím heslo pro přístup k tomuto sdíleni.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Heslo",
|
"share.modal.password": "Heslo",
|
||||||
"share.modal.error.invalid-password": "Neplatné heslo",
|
"share.modal.error.invalid-password": "Neplatné heslo",
|
||||||
"share.button.download-all": "Stáhnout vše",
|
"share.button.download-all": "Stáhnout vše",
|
||||||
"share.notify.download-all-preparing": "Sdílení se připravuje. Zkuste to prosím znovu za několik minut.",
|
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||||
"share.modal.file-link": "Odkaz na soubor",
|
"share.modal.file-link": "Odkaz na soubor",
|
||||||
"share.table.name": "Název",
|
"share.table.name": "Název",
|
||||||
"share.table.size": "Velikost",
|
"share.table.size": "Velikost",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Náhled není podporován",
|
"share.modal.file-preview.error.not-supported.title": "Náhled není podporován",
|
||||||
"share.modal.file-preview.error.not-supported.description": "Náhledy nejsou podporovány pro tento typ souborů. Stáhněte si soubor pro jeho zobrazení.",
|
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Upravit {shareId}",
|
"share.edit.title": "Upravit {shareId}",
|
||||||
@@ -297,14 +296,14 @@ export default {
|
|||||||
"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
|
||||||
"imprint.title": "Tiráž",
|
"imprint.title": "Imprint",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Zásady ochrany osobních údajů",
|
"privacy.title": "Privacy Policy",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.config-file-warning.title": "Konfigurační soubor existuje",
|
"admin.config.config-file-warning.title": "Configuration file present",
|
||||||
"admin.config.config-file-warning.description": "Jelikož je Pingvin Share nastaven pomocí konfiguračního souboru, nemůžete změnit nastavení přes UI.",
|
"admin.config.config-file-warning.description": "As you have a configured Pingvin Share with a configuration file, you can't change the configuration through the UI.",
|
||||||
"admin.config.title": "Nastavení",
|
"admin.config.title": "Nastavení",
|
||||||
"admin.config.category.general": "Obecné",
|
"admin.config.category.general": "Obecné",
|
||||||
"admin.config.category.share": "Sdílení",
|
"admin.config.category.share": "Sdílení",
|
||||||
@@ -316,56 +315,56 @@ export default {
|
|||||||
"admin.config.general.app-url": "URL aplikace",
|
"admin.config.general.app-url": "URL aplikace",
|
||||||
"admin.config.general.app-url.description": "Na kterém URL je Pingvin Share k dispozici",
|
"admin.config.general.app-url.description": "Na kterém URL je Pingvin Share k dispozici",
|
||||||
"admin.config.general.secure-cookies": "Bezpečné cookies",
|
"admin.config.general.secure-cookies": "Bezpečné cookies",
|
||||||
"admin.config.general.secure-cookies.description": "Určuje, zda se má nastavit zabezpečený příznak v cookies. Pokud je povoleno, stránka nebude přístupná přes HTTP.",
|
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||||
"admin.config.general.show-home-page": "Zobrazit domovskou stránku",
|
"admin.config.general.show-home-page": "Zobrazit domovskou stránku",
|
||||||
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
|
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
|
||||||
"admin.config.general.session-duration": "Délka trvání relace",
|
"admin.config.general.session-duration": "Délka trvání relace",
|
||||||
"admin.config.general.session-duration.description": "Čas, po kterém se uživatel musí znovu přihlásit (výchozí: 3 měsíce).",
|
"admin.config.general.session-duration.description": "Time after which a user must log in again (default: 3 months).",
|
||||||
"admin.config.general.logo": "Logo",
|
"admin.config.general.logo": "Logo",
|
||||||
"admin.config.general.logo.description": "Změňte své logo nahráním nového obrázku. Obrázek musí být PNG a měl by mít formát 1:1.",
|
"admin.config.general.logo.description": "Změňte své logo nahráním nového obrázku. Obrázek musí být PNG a měl by mít formát 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Vybrat obrázek",
|
"admin.config.general.logo.placeholder": "Vybrat obrázek",
|
||||||
"admin.config.email.enable-share-email-recipients": "Sdílení přes e-mail",
|
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||||
"admin.config.email.enable-share-email-recipients.description": "Určuje, zdali je povoleno sdílení souborů přes e-mail. Povolte pouze pokud je aktivováno SMTP.",
|
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||||
"admin.config.email.share-recipients-subject": "Předmět pro příjemce",
|
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||||
"admin.config.email.share-recipients-subject.description": "Předmět e-mailu, který bude odeslán adresátovi.",
|
"admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
|
||||||
"admin.config.email.share-recipients-message": "Zpráva pro příjemce",
|
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||||
"admin.config.email.share-recipients-message.description": "Zpráva, která bude odeslána adresátům. Dostupné proměnné:\n {creator} - Uživatelské jméno tvůrce sdílení\n {shareUrl} - Odkaz sdílení\n {desc} - Popis sdílení\n {expires} - Datum vypršení platnosti sdílení\n Proměnné budou nahrazeny skutečnou hodnotou.",
|
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||||
"admin.config.email.reverse-share-subject": "Předmět e-mailu o opačném sdílení",
|
"admin.config.email.reverse-share-subject": "Předmět e-mailu o zpětném sdílení",
|
||||||
"admin.config.email.reverse-share-subject.description": "Předmět e-mailu, když někdo vytvoří sdílení s Vaším odkazem na opačné sdílení.",
|
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||||
"admin.config.email.reverse-share-message": "Zpráva o opačném sdílení",
|
"admin.config.email.reverse-share-message": "Zpráva o zpětném sdílení",
|
||||||
"admin.config.email.reverse-share-message.description": "Zpráva, která bude odeslána, když někdo vytvoří sdílení s vaším odkazem na opačné sdílení. {shareUrl} bude nahrazeno jménem tvůrce a URL pro sdílení.",
|
"admin.config.email.reverse-share-message.description": "Zpráva, která bude odeslána, když někdo vytvoří sdílení s vaším odkazem na zpětné sdílení. {shareUrl} bude nahrazeno jménem tvůrce a URL pro sdílení.",
|
||||||
"admin.config.email.reset-password-subject": "Předmět e-mailu pro obnovení hesla",
|
"admin.config.email.reset-password-subject": "Předmět e-mailu pro obnovení hesla",
|
||||||
"admin.config.email.reset-password-subject.description": "Předmět e-mailu, když uživatel požádá o obnovení hesla.",
|
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||||
"admin.config.email.reset-password-message": "Zpráva o obnovení hesla",
|
"admin.config.email.reset-password-message": "Zpráva o obnovení hesla",
|
||||||
"admin.config.email.reset-password-message.description": "Zpráva, která bude odeslána, když uživatel požádá o obnovení hesla. {url} bude nahrazeno URL pro obnovení hesla.",
|
"admin.config.email.reset-password-message.description": "Zpráva, která bude odeslána, když uživatel požádá o obnovení hesla. {url} bude nahrazeno URL pro obnovení hesla.",
|
||||||
"admin.config.email.invite-subject": "Předmět pozvánky",
|
"admin.config.email.invite-subject": "Předmět pozvánky",
|
||||||
"admin.config.email.invite-subject.description": "Předmět e-mailu, když administrátor pozve uživatele.",
|
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||||
"admin.config.email.invite-message": "Zpráva pozvánky",
|
"admin.config.email.invite-message": "Zpráva pozvánky",
|
||||||
"admin.config.email.invite-message.description": "Zpráva, která bude odeslána, když administrátor pozve uživatele. {url} bude nahrazeno odkazem, {email} e-mailem a {password} heslem uživatele.",
|
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||||
"admin.config.share.allow-registration": "Povolit registraci",
|
"admin.config.share.allow-registration": "Povolit registraci",
|
||||||
"admin.config.share.allow-registration.description": "Zda je registrace povolena",
|
"admin.config.share.allow-registration.description": "Zda je registrace povolena",
|
||||||
"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í. Nastavte 0 pro neomezenou platnost.",
|
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
||||||
"admin.config.share.share-id-length": "Výchozí délka sdílení ID",
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
"admin.config.share.share-id-length.description": "Výchozí délka pro generované ID sdílení. Tato hodnota se používá také pro generování odkazů na opačné sdílení. Hodnota nižší než 8 se nepovažuje za bezpečnou.",
|
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
"admin.config.share.max-size": "Max. velikost",
|
"admin.config.share.max-size": "Max. velikost",
|
||||||
"admin.config.share.max-size.description": "Maximální velikost sdílení v bajtech",
|
"admin.config.share.max-size.description": "Maximální velikost sdílení v bajtech",
|
||||||
"admin.config.share.zip-compression-level": "Úroveň Zip komprese",
|
"admin.config.share.zip-compression-level": "Úroveň Zip komprese",
|
||||||
"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": "Upravte velikost bloku pro vaše nahrávání tak, aby byla vyvážena efektivita a spolehlivost podle vašeho internetového připojení. Menší bloky mohou zvýšit spolehlivost nestabilních spojení, zatímco větší bloky urychlují nahrávání při stabilním spojení.",
|
"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": "Povolit",
|
"admin.config.smtp.enabled": "Enable",
|
||||||
"admin.config.smtp.enabled.description": "Zda je SMTP povoleno. Povolte pouze pokud jste zadali hostitele, port, e-mail, uživatele a heslo vašeho SMTP serveru.",
|
"admin.config.smtp.enabled.description": "Zda je SMTP povoleno. Povolte pouze pokud jste zadali hostitele, port, e-mail, uživatele a heslo vašeho SMTP serveru.",
|
||||||
"admin.config.smtp.host": "Hostitel",
|
"admin.config.smtp.host": "Hostitel",
|
||||||
"admin.config.smtp.host.description": "Hostitel SMTP serveru",
|
"admin.config.smtp.host.description": "Hostitel SMTP serveru",
|
||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "Port",
|
||||||
"admin.config.smtp.port.description": "Port SMTP serveru",
|
"admin.config.smtp.port.description": "Port SMTP serveru",
|
||||||
"admin.config.smtp.email": "E-mail",
|
"admin.config.smtp.email": "E-mail",
|
||||||
"admin.config.smtp.email.description": "E-mailová adresa, ze které budou e-maily odesílány",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "Uživatelské jméno",
|
"admin.config.smtp.username": "Uživatelské jméno",
|
||||||
"admin.config.smtp.username.description": "Uživatelské jméno SMTP serveru",
|
"admin.config.smtp.username.description": "Uživatelské jméno SMTP serveru",
|
||||||
"admin.config.smtp.password": "Heslo",
|
"admin.config.smtp.password": "Heslo",
|
||||||
@@ -384,104 +383,102 @@ export default {
|
|||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
||||||
"admin.config.oauth.github-client-id.description": "Client ID GitHub OAuth aplikace",
|
"admin.config.oauth.github-client-id.description": "Client ID GitHub OAuth aplikace",
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
||||||
"admin.config.oauth.github-client-secret.description": "Client secret aplikace GitHub OAuth",
|
"admin.config.oauth.github-client-secret.description": "Client secret of the GitHub OAuth app",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "Zda je povoleno přihlášení přes Google",
|
"admin.config.oauth.google-enabled.description": "Zda je povoleno přihlášení přes Google",
|
||||||
"admin.config.oauth.google-client-id": "Google Client ID",
|
"admin.config.oauth.google-client-id": "Google Client ID",
|
||||||
"admin.config.oauth.google-client-id.description": "Client ID aplikace Google OAuth",
|
"admin.config.oauth.google-client-id.description": "Client ID of the Google OAuth app",
|
||||||
"admin.config.oauth.google-client-secret": "Google Client secret",
|
"admin.config.oauth.google-client-secret": "Google Client secret",
|
||||||
"admin.config.oauth.google-client-secret.description": "Client secret aplikace Google OAuth",
|
"admin.config.oauth.google-client-secret.description": "Client secret of the Google OAuth app",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Zda je povoleno přihlášení přes Microsoft",
|
"admin.config.oauth.microsoft-enabled.description": "Zda je povoleno přihlášení přes Microsoft",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||||
"admin.config.oauth.microsoft-tenant.description": "Tenant ID aplikace Microsoft OAuth\nběžné: Uživatelé s osobním účtem Microsoft a pracovním nebo školním účtem Microsoft Entra ID se mohou přihlásit do aplikace. \n\norganizace: Do aplikace se mohou přihlásit pouze uživatelé s pracovním nebo školním účtem Microsoft Entra ID.\n\nspotřebitelé: Do aplikace se mohou přihlásit pouze uživatelé s osobním účtem Microsoft.\n\nNázev domény Microsoft Entra tenant nebo tenant ID ve formátu GUID: Do aplikace se mohou přihlásit pouze uživatelé z konkrétní Microsoft Entra tenant (členové adresáře s pracovním nebo školním účtem nebo návštěvníci adresáře s osobním účtem Microsoft).",
|
"admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Client ID Microsoft OAuth aplikace",
|
"admin.config.oauth.microsoft-client-id.description": "Client ID of the Microsoft OAuth app",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret Microsoft OAuth aplikace",
|
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Zda je povoleno přihlášení přes Discord",
|
"admin.config.oauth.discord-enabled.description": "Zda je povoleno přihlášení přes Discord",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord povolení uživatelé",
|
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||||
"admin.config.oauth.discord-limited-users.description": "Povolit přístup pouze uživatelům se zadanými Discord ID. Ponechte prázdné pro zakázání.",
|
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord povolené ID serveru",
|
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
||||||
"admin.config.oauth.discord-limited-guild.description": "Omezit přihlášení na uživatele na konkrétním serveru. Ponechte prázdné pro vypnutí.",
|
"admin.config.oauth.discord-limited-guild.description": "Omezit přihlášení na uživatele na konkrétním serveru. Ponechte prázdné pro vypnutí.",
|
||||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||||
"admin.config.oauth.discord-client-id.description": "Client ID Discord OAuth aplikace",
|
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
|
||||||
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Client secret Discord OAuth aplikace",
|
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||||
"admin.config.oauth.oidc-enabled.description": "Zda je povoleno přihlášení přes OpenID Connect",
|
"admin.config.oauth.oidc-enabled.description": "Zda je povoleno přihlášení přes OpenID Connect",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "Adresa OpenID Connect Discovery",
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URL OpenID Connect OAuth aplikace",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||||
"admin.config.oauth.oidc-sign-out": "Odhlásit se z OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Zda tlačítko \"Odhlásit\" odhlásí od poskytovatele OpenID Connect",
|
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||||
"admin.config.oauth.oidc-scope": "OpenID Connect informace",
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
"admin.config.oauth.oidc-scope.description": "Informace, které by měly být požadovány od poskytovatele OpenID Connect.",
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect požadavek uživatele",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Požadavek uživatele v OpenID Connect ID tokenu. Ponechte prázdné, pokud netušíte.",
|
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||||
"admin.config.oauth.oidc-role-path": "Cesta k rolím v OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
"admin.config.oauth.oidc-role-path.description": "Musí být platná JMES cesta odkazující na pole rolí. " + "Správa přístupových práv pomocí OpenID Connect rolí je doporučena pouze v případě, že není nastaven žádný jiný poskytovatel identity a přihlášení heslem je zakázáno. " + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
"admin.config.oauth.oidc-role-path.description": "Musí být platná JMES cesta odkazující na pole rolí. " + "Správa přístupových práv pomocí OpenID Connect rolí je doporučena pouze v případě, že není nastaven žádný jiný poskytovatel identity a přihlášení heslem je zakázáno. " + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role pro obecný přístup",
|
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role pro obecný přístup",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Požadovaná role pro všeobecný přístup. Musí být přítomna v uživatelských rolích, aby se mohli přihlásit." + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role pro přístup správce.",
|
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Požadovaná role pro přístup správce. Musí být přítomna v uživatelských rolích, pro přístup do panelu správce." + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s roles for them to access the admin panel. " + "Ponechte prázdné, pokud nevíte, co tato konfigurace znamená.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect ID klienta",
|
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
||||||
"admin.config.oauth.oidc-client-id.description": "ID klienta OpenID Connect OAuth aplikace",
|
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
|
||||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect secret klienta",
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "Secret klienta OpenID Connect OAuth aplikace",
|
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Povolit LDAP",
|
"admin.config.ldap.enabled": "Enable LDAP",
|
||||||
"admin.config.ldap.enabled.description": "Použít LDAP ověření pro přihlášení uživatele",
|
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
||||||
"admin.config.ldap.url": "URL serveru",
|
"admin.config.ldap.url": "URL serveru",
|
||||||
"admin.config.ldap.url.description": "Adresa LDAP serveru",
|
"admin.config.ldap.url.description": "URL of the LDAP server",
|
||||||
"admin.config.ldap.bind-dn": "Propojit DN",
|
"admin.config.ldap.bind-dn": "Bind DN",
|
||||||
"admin.config.ldap.bind-dn.description": "Výchozí uživatel pro vyhledávání uživatelů",
|
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||||
"admin.config.ldap.bind-password": "Propojit heslo",
|
"admin.config.ldap.bind-password": "Bind password",
|
||||||
"admin.config.ldap.bind-password.description": "Heslo pro vyhledávání uživatelů",
|
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
|
||||||
"admin.config.ldap.search-base": "Uživatelská větev",
|
"admin.config.ldap.search-base": "User base",
|
||||||
"admin.config.ldap.search-base.description": "Základní umístění, kde budou prováděna hledání uživatelů",
|
"admin.config.ldap.search-base.description": "Základní umístění, kde budou prováděna hledání uživatelů",
|
||||||
"admin.config.ldap.search-query": "Dotaz na uživatele",
|
"admin.config.ldap.search-query": "User query",
|
||||||
"admin.config.ldap.search-query.description": "Dotaz na uživatele pro vyhledání 'Uživatelské větve' pro LDAP uživatele. %username% může být použit jako zástupce pro hodnotu zadanou uživatelem.",
|
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||||
"admin.config.ldap.admin-groups": "Skupina správců",
|
"admin.config.ldap.admin-groups": "Admin group",
|
||||||
"admin.config.ldap.admin-groups.description": "Skupina potřebná pro administrativní přístup.",
|
"admin.config.ldap.admin-groups.description": "Skupina potřebná pro administrativní přístup.",
|
||||||
"admin.config.ldap.field-name-member-of": "Název atributu skupin uživatelů",
|
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||||
"admin.config.ldap.field-name-member-of.description": "LDAP název atributu pro skupiny, jejichž členem je uživatel. Používá se při kontrole skupiny správců.",
|
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||||
"admin.config.ldap.field-name-email": "Název atributu e-mailu uživatele",
|
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||||
"admin.config.ldap.field-name-email.description": "Název atributu LDAP pro e-mail uživatele.",
|
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||||
"admin.config.notify.success": "Konfigurace byla úspěšně aktualizována!",
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
"admin.config.notify.logo-success": "Logo bylo úspěšně aktualizováno. Zobrazení změny může několik minut trvat.",
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
"admin.config.notify.no-changes": "Žádné změny k uložení.",
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Povoleno",
|
"admin.config.s3.enabled": "Enabled",
|
||||||
"admin.config.s3.enabled.description": "Zda má být S3 použito k ukládání sdílených souborů namísto lokálního souborového systému.",
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
"admin.config.s3.endpoint": "Koncový bod",
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
"admin.config.s3.endpoint.description": "URL bloku S3.",
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
"admin.config.s3.region": "Oblast",
|
"admin.config.s3.region": "Region",
|
||||||
"admin.config.s3.region.description": "Oblast bloku S3.",
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
"admin.config.s3.bucket-name": "Název bloku",
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
"admin.config.s3.bucket-name.description": "Název bloku S3.",
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
"admin.config.s3.bucket-path": "Cesta",
|
"admin.config.s3.bucket-path": "Path",
|
||||||
"admin.config.s3.bucket-path.description": "Výchozí cesta, která by měla být použita pro ukládání souborů do bloku S3.",
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
"admin.config.s3.key": "Klíč",
|
"admin.config.s3.key": "Key",
|
||||||
"admin.config.s3.key.description": "Klíč, který vám umožňuje přístup k bloku S3.",
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
"admin.config.s3.secret": "Tajný klíč (Secret)",
|
"admin.config.s3.secret": "Secret",
|
||||||
"admin.config.s3.secret.description": "Tajný kód, který vám umožňuje přístup do bloku S3.",
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
"admin.config.s3.use-checksum": "Použít checksum",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.s3.use-checksum.description": "Vypněte pro backendy které nepodporují checksum (např. B2)",
|
"admin.config.legal.enabled": "Enable legal notices",
|
||||||
"admin.config.category.legal": "Právní ustanovení",
|
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
"admin.config.legal.enabled": "Povolit právní oznámení",
|
"admin.config.legal.imprint-text": "Imprint text",
|
||||||
"admin.config.legal.enabled.description": "Zda v zápatí zobrazit odkaz na tiráž a zásady ochrany osobních údajů.",
|
"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-text": "Text tiráže",
|
"admin.config.legal.imprint-url": "Imprint URL",
|
||||||
"admin.config.legal.imprint-text.description": "Text, který by měl být zobrazen v tiráži. Podporuje Markdown. Ponechte prázdné pro odkaz na stránku s externí tiráží.",
|
"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.imprint-url": "Adresa tiráže",
|
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
||||||
"admin.config.legal.imprint-url.description": "Pokud již máte stránku s tiráží, můžete ji propojit zde místo použití textového pole.",
|
"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-text": "Text zásad ochrany osobních údajů",
|
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
||||||
"admin.config.legal.privacy-policy-text.description": "Text, který by měl být zobrazen v zásadách ochrany osobních údajů. Podporuje Markdown. Ponechte prázdné pro odkaz na stránku s externími zásadami ochrany osobních údajů.",
|
"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.",
|
||||||
"admin.config.legal.privacy-policy-url": "Adresa zásad ochrany soukromí",
|
|
||||||
"admin.config.legal.privacy-policy-url.description": "Pokud již máte stránku o zásadách ochrany osobních údajů, můžete ji propojit zde místo použití textového pole.",
|
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Jejda, tato stránka neexistuje.",
|
"404.description": "Jejda, tato stránka neexistuje.",
|
||||||
"404.button.home": "Návrat na hlavní stránku",
|
"404.button.home": "Bring me back home",
|
||||||
// error
|
// error
|
||||||
"error.title": "Chyba",
|
"error.title": "Chyba",
|
||||||
"error.description": "Jejda!",
|
"error.description": "Jejda!",
|
||||||
@@ -493,10 +490,10 @@ export default {
|
|||||||
"error.msg.no_user": "Uživatel propojený s tímto účtem {0} neexistuje.",
|
"error.msg.no_user": "Uživatel propojený s tímto účtem {0} neexistuje.",
|
||||||
"error.msg.no_email": "Z tohoto účtu {0} nelze získat e-mailovou adresu.",
|
"error.msg.no_email": "Z tohoto účtu {0} nelze získat e-mailovou adresu.",
|
||||||
"error.msg.already_linked": "Tento účet {0} je již propojen s jiným účtem.",
|
"error.msg.already_linked": "Tento účet {0} je již propojen s jiným účtem.",
|
||||||
"error.msg.not_linked": "Tento účet {0} ještě nebyl propojen s žádným účtem.",
|
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||||
"error.msg.unverified_account": "Tento účet {0} není ověřen, zkuste to prosím znovu po ověření.",
|
"error.msg.unverified_account": "Tento účet {0} není ověřen, zkuste to prosím znovu po ověření.",
|
||||||
"error.msg.user_not_allowed": "Nemáte oprávnění k přihlášení.",
|
"error.msg.user_not_allowed": "Nemáte oprávnění k přihlášení.",
|
||||||
"error.msg.cannot_get_user_info": "Nelze získat informace o uživateli z tohoto účtu {0}.",
|
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||||
"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",
|
||||||
@@ -514,9 +511,9 @@ export default {
|
|||||||
"common.button.generate": "Generovat",
|
"common.button.generate": "Generovat",
|
||||||
"common.button.done": "Hotovo",
|
"common.button.done": "Hotovo",
|
||||||
"common.text.link": "Odkaz",
|
"common.text.link": "Odkaz",
|
||||||
"common.text.navigate-to-link": "Navštívit odkaz",
|
"common.text.navigate-to-link": "Visit link",
|
||||||
"common.text.or": "nebo",
|
"common.text.or": "nebo",
|
||||||
"common.text.redirecting": "Přesměrování...",
|
"common.text.redirecting": "Redirecting...",
|
||||||
"common.button.go-back": "Vrátit se zpět",
|
"common.button.go-back": "Vrátit se zpět",
|
||||||
"common.button.go-home": "Jít domů",
|
"common.button.go-home": "Jít domů",
|
||||||
"common.notify.copied": "Váš odkaz byl zkopírován do schránky",
|
"common.notify.copied": "Váš odkaz byl zkopírován do schránky",
|
||||||
@@ -524,11 +521,11 @@ export default {
|
|||||||
"common.success": "Úspěch",
|
"common.success": "Úspěch",
|
||||||
"common.error": "Chyba",
|
"common.error": "Chyba",
|
||||||
"common.error.unknown": "Došlo k neznámé chybě",
|
"common.error.unknown": "Došlo k neznámé chybě",
|
||||||
"common.error.invalid-email": "Neplatná e-mailová adresa",
|
"common.error.invalid-email": "Invalid email address",
|
||||||
"common.error.too-short": "Musí mít alespoň {length} znaků",
|
"common.error.too-short": "Musí mít alespoň {length} znaků",
|
||||||
"common.error.too-long": "Musí mít maximálně {length} znaků",
|
"common.error.too-long": "Musí mít maximálně {length} znaků",
|
||||||
"common.error.number-too-small": "Musí být minimálně {min}",
|
"common.error.number-too-small": "Must be at least {min}",
|
||||||
"common.error.number-too-large": "Musí být nejvýše {max}",
|
"common.error.number-too-large": "Must be at most {max}",
|
||||||
"common.error.exact-length": "Musí mít přesně {length} znaků",
|
"common.error.exact-length": "Musí mít přesně {length} znaků",
|
||||||
"common.error.invalid-number": "Musí být číslo",
|
"common.error.invalid-number": "Musí být číslo",
|
||||||
"common.error.field-required": "Toto pole je povinné"
|
"common.error.field-required": "Toto pole je povinné"
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Del {shareId}",
|
"share.title": "Del {shareId}",
|
||||||
"share.description": "Se hvad jeg har delt med dig!",
|
"share.description": "Se hvad jeg har delt med dig!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Grænsen for besøgende overskredet",
|
"share.error.visitor-limit-exceeded.title": "Grænsen for besøgende overskredet",
|
||||||
"share.error.visitor-limit-exceeded.description": "Besøgsgrænsen for denne deling er blevet overskredet.",
|
"share.error.visitor-limit-exceeded.description": "Besøgsgrænsen for denne deling er blevet overskredet.",
|
||||||
"share.error.removed.title": "Deling fjernet",
|
"share.error.removed.title": "Deling fjernet",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Freigabe {shareId}",
|
"share.title": "Freigabe {shareId}",
|
||||||
"share.description": "Schau, was ich mit dir geteilt habe!",
|
"share.description": "Schau, was ich mit dir geteilt habe!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Besucher Limit erreicht",
|
"share.error.visitor-limit-exceeded.title": "Besucher Limit erreicht",
|
||||||
"share.error.visitor-limit-exceeded.description": "Die maximale Besucheranzahl für diese Freigabe ist überschritten.",
|
"share.error.visitor-limit-exceeded.description": "Die maximale Besucheranzahl für diese Freigabe ist überschritten.",
|
||||||
"share.error.removed.title": "Freigabe entfernt",
|
"share.error.removed.title": "Freigabe entfernt",
|
||||||
@@ -365,7 +364,7 @@ export default {
|
|||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "Port",
|
||||||
"admin.config.smtp.port.description": "Port des SMTP-Servers",
|
"admin.config.smtp.port.description": "Port des SMTP-Servers",
|
||||||
"admin.config.smtp.email": "E-Mail",
|
"admin.config.smtp.email": "E-Mail",
|
||||||
"admin.config.smtp.email.description": "E-Mail-Adresse, von der die E-Mails gesendet werden",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "Benutzername",
|
"admin.config.smtp.username": "Benutzername",
|
||||||
"admin.config.smtp.username.description": "Benutzername des SMTP-Servers",
|
"admin.config.smtp.username.description": "Benutzername des SMTP-Servers",
|
||||||
"admin.config.smtp.password": "Passwort",
|
"admin.config.smtp.password": "Passwort",
|
||||||
@@ -415,8 +414,8 @@ export default {
|
|||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery-URL der OpenID OAuth App",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery-URL der OpenID OAuth App",
|
||||||
"admin.config.oauth.oidc-sign-out": "Abmelden von OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Abmelden von OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Wenn aktiviert, wird der Benutzer mit der „Abmelden“-Schaltfläche vom OpenID-Connect-Provider abgemeldet.",
|
"admin.config.oauth.oidc-sign-out.description": "Wenn aktiviert, wird der Benutzer mit der „Abmelden“-Schaltfläche vom OpenID-Connect-Provider abgemeldet.",
|
||||||
"admin.config.oauth.oidc-scope": "OpenID Connect",
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
"admin.config.oauth.oidc-scope.description": "Scopes, die vom OpenID Connect Provider angefordert werden sollen.",
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect Benutzername anfordern",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect Benutzername anfordern",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Benutzername im OpenID Token. Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
"admin.config.oauth.oidc-username-claim.description": "Benutzername im OpenID Token. Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||||
"admin.config.oauth.oidc-role-path": "Pfad zu den Rollen im OpenID Verbindungs-Token",
|
"admin.config.oauth.oidc-role-path": "Pfad zu den Rollen im OpenID Verbindungs-Token",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Rechtliches",
|
"admin.config.category.legal": "Rechtliches",
|
||||||
"admin.config.legal.enabled": "Impressum und Datenschutz aktivieren",
|
"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.enabled.description": "Gibt an, ob die Links zum Impressum und zur Datenschutzerklärung im Footer angezeigt werden sollen.",
|
||||||
@@ -526,7 +523,7 @@ export default {
|
|||||||
"common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
|
"common.error.unknown": "Ein unbekannter Fehler ist aufgetreten",
|
||||||
"common.error.invalid-email": "Ungültige E-Mail-Adresse",
|
"common.error.invalid-email": "Ungültige E-Mail-Adresse",
|
||||||
"common.error.too-short": "Muss mindestens {length} Zeichen enthalten",
|
"common.error.too-short": "Muss mindestens {length} Zeichen enthalten",
|
||||||
"common.error.too-long": "Darf maximal {length} Zeichen enthalten",
|
"common.error.too-long": "Muss maximal {length} Zeichen enthalten",
|
||||||
"common.error.number-too-small": "Darf mindestens {min} sein",
|
"common.error.number-too-small": "Darf mindestens {min} sein",
|
||||||
"common.error.number-too-large": "Darf höchstens {max} sein",
|
"common.error.number-too-large": "Darf höchstens {max} sein",
|
||||||
"common.error.exact-length": "Muss genau {length} Zeichen lang sein",
|
"common.error.exact-length": "Muss genau {length} Zeichen lang sein",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Διαμοιρασμός {shareId}",
|
"share.title": "Διαμοιρασμός {shareId}",
|
||||||
"share.description": "Σας προωθώ αρχεία προς κοινοποίηση.",
|
"share.description": "Σας προωθώ αρχεία προς κοινοποίηση.",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Υπέρβαση ορίου επισκέπτη",
|
"share.error.visitor-limit-exceeded.title": "Υπέρβαση ορίου επισκέπτη",
|
||||||
"share.error.visitor-limit-exceeded.description": "Ξεπεράστηκε το όριο επισκεπτών σε αυτή την κοινοποίηση.",
|
"share.error.visitor-limit-exceeded.description": "Ξεπεράστηκε το όριο επισκεπτών σε αυτή την κοινοποίηση.",
|
||||||
"share.error.removed.title": "Κοινοποίηση αφαιρέθηκε",
|
"share.error.removed.title": "Κοινοποίηση αφαιρέθηκε",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -366,8 +366,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Share {shareId}",
|
"share.title": "Share {shareId}",
|
||||||
"share.description": "Look what I've shared with you!",
|
"share.description": "Look what I've shared with you!",
|
||||||
"share.fileCount":
|
|
||||||
"{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
||||||
"share.error.visitor-limit-exceeded.description":
|
"share.error.visitor-limit-exceeded.description":
|
||||||
"The visitor limit from this share has been exceeded.",
|
"The visitor limit from this share has been exceeded.",
|
||||||
@@ -410,20 +408,18 @@ export default {
|
|||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Imprint",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
|
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Privacy Policy",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
|
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.config-file-warning.title": "Configuration file present",
|
"admin.config.config-file-warning.title": "Configuration file present",
|
||||||
"admin.config.config-file-warning.description":
|
"admin.config.config-file-warning.description": "As you have a configured Pingvin Share with a configuration file, you can't change the configuration through the UI.",
|
||||||
"As you have a configured Pingvin Share with a configuration file, you can't change the configuration through the UI.",
|
|
||||||
|
|
||||||
"admin.config.title": "Configuration",
|
"admin.config.title": "Configuration",
|
||||||
"admin.config.category.general": "General",
|
"admin.config.category.general": "General",
|
||||||
"admin.config.category.share": "Share",
|
"admin.config.category.share": "Share",
|
||||||
"admin.config.category.cache": "Cache",
|
|
||||||
"admin.config.category.email": "Email",
|
"admin.config.category.email": "Email",
|
||||||
"admin.config.category.smtp": "SMTP",
|
"admin.config.category.smtp": "SMTP",
|
||||||
"admin.config.category.oauth": "Social Login",
|
"admin.config.category.oauth": "Social Login",
|
||||||
@@ -447,19 +443,6 @@ export default {
|
|||||||
"Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
|
"Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Pick image",
|
"admin.config.general.logo.placeholder": "Pick image",
|
||||||
|
|
||||||
"admin.config.cache.ttl": "TTL",
|
|
||||||
"admin.config.cache.ttl.description":
|
|
||||||
"Time in second to keep information inside the cache.",
|
|
||||||
"admin.config.cache.max-items": "Maximum items",
|
|
||||||
"admin.config.cache.max-items.description":
|
|
||||||
"Maximum number of items inside the cache.",
|
|
||||||
"admin.config.cache.redis-enabled": "Redis enabled",
|
|
||||||
"admin.config.cache.redis-enabled.description":
|
|
||||||
"Normally Pingvin Share caches information in memory. If you run multiple instances of Pingvin Share, you need to enable Redis caching to share the cache between the instances.",
|
|
||||||
"admin.config.cache.redis-url": "Redis URL",
|
|
||||||
"admin.config.cache.redis-url.description":
|
|
||||||
"Url to connect to the Redis instance used for caching.",
|
|
||||||
|
|
||||||
"admin.config.email.enable-share-email-recipients":
|
"admin.config.email.enable-share-email-recipients":
|
||||||
"Enable email recipient sharing",
|
"Enable email recipient sharing",
|
||||||
"admin.config.email.enable-share-email-recipients.description":
|
"admin.config.email.enable-share-email-recipients.description":
|
||||||
@@ -659,8 +642,7 @@ export default {
|
|||||||
|
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Enabled",
|
"admin.config.s3.enabled": "Enabled",
|
||||||
"admin.config.s3.enabled.description":
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
"Whether S3 should be used to store the shared files instead of the local file system.",
|
|
||||||
"admin.config.s3.endpoint": "Endpoint",
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
"admin.config.s3.region": "Region",
|
"admin.config.s3.region": "Region",
|
||||||
@@ -668,34 +650,23 @@ export default {
|
|||||||
"admin.config.s3.bucket-name": "Bucket name",
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
"admin.config.s3.bucket-path": "Path",
|
"admin.config.s3.bucket-path": "Path",
|
||||||
"admin.config.s3.bucket-path.description":
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
"The default path which should be used to store the files in the S3 bucket.",
|
|
||||||
"admin.config.s3.key": "Key",
|
"admin.config.s3.key": "Key",
|
||||||
"admin.config.s3.key.description":
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
"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":
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
"The secret which allows you to access the S3 bucket.",
|
|
||||||
"admin.config.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description":
|
|
||||||
"Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Enable legal notices",
|
||||||
"admin.config.legal.enabled.description":
|
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
"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": "Imprint text",
|
||||||
"admin.config.legal.imprint-text.description":
|
"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.",
|
||||||
"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": "Imprint URL",
|
||||||
"admin.config.legal.imprint-url.description":
|
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
|
||||||
"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": "Privacy policy text",
|
||||||
"admin.config.legal.privacy-policy-text.description":
|
"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.",
|
||||||
"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": "Privacy policy URL",
|
||||||
"admin.config.legal.privacy-policy-url.description":
|
"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.",
|
||||||
"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.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Compartido {shareId}",
|
"share.title": "Compartido {shareId}",
|
||||||
"share.description": "¡Mira lo que he compartido contigo!",
|
"share.description": "¡Mira lo que he compartido contigo!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Se excedió el límite de visitas",
|
"share.error.visitor-limit-exceeded.title": "Se excedió el límite de visitas",
|
||||||
"share.error.visitor-limit-exceeded.description": "Se ha excedido el límite de visitas para este compartido.",
|
"share.error.visitor-limit-exceeded.description": "Se ha excedido el límite de visitas para este compartido.",
|
||||||
"share.error.removed.title": "Compartido eliminado",
|
"share.error.removed.title": "Compartido eliminado",
|
||||||
@@ -466,8 +465,6 @@ export default {
|
|||||||
"admin.config.s3.key.description": "La clave que permite el acceso al bucket S3.",
|
"admin.config.s3.key.description": "La clave que permite el acceso al bucket S3.",
|
||||||
"admin.config.s3.secret": "Secreto",
|
"admin.config.s3.secret": "Secreto",
|
||||||
"admin.config.s3.secret.description": "El secreto que permite acceder al bucket S3.",
|
"admin.config.s3.secret.description": "El secreto que permite acceder al bucket S3.",
|
||||||
"admin.config.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Habilitar avisos legales",
|
"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.enabled.description": "Mostrar un enlace al aviso legal y a la política de privacidad en el pie de página.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Jagamine {shareId}",
|
"share.title": "Jagamine {shareId}",
|
||||||
"share.description": "Vaata, mida ma sinuga jagasin!",
|
"share.description": "Vaata, mida ma sinuga jagasin!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Külastajate limiit ületatud",
|
"share.error.visitor-limit-exceeded.title": "Külastajate limiit ületatud",
|
||||||
"share.error.visitor-limit-exceeded.description": "Selle jagamise külastajate limiit on ületatud.",
|
"share.error.visitor-limit-exceeded.description": "Selle jagamise külastajate limiit on ületatud.",
|
||||||
"share.error.removed.title": "Jagamine eemaldatud",
|
"share.error.removed.title": "Jagamine eemaldatud",
|
||||||
@@ -466,8 +465,6 @@ export default {
|
|||||||
"admin.config.s3.key.description": "S3 ämbri võti.",
|
"admin.config.s3.key.description": "S3 ämbri võti.",
|
||||||
"admin.config.s3.secret": "Saladus",
|
"admin.config.s3.secret": "Saladus",
|
||||||
"admin.config.s3.secret.description": "S3 ämbri saladus.",
|
"admin.config.s3.secret.description": "S3 ämbri saladus.",
|
||||||
"admin.config.s3.use-checksum": "Kasuta kontrollsummat",
|
|
||||||
"admin.config.s3.use-checksum.description": "Lülita välja, kui tagaliides ei toeta kontrollsummasid (nt B2).",
|
|
||||||
"admin.config.category.legal": "Juriidiline",
|
"admin.config.category.legal": "Juriidiline",
|
||||||
"admin.config.legal.enabled": "Luba juriidilised teated",
|
"admin.config.legal.enabled": "Luba juriidilised teated",
|
||||||
"admin.config.legal.enabled.description": "Kas kuvada linki kontaktandmetele ja privaatsuspoliitikale jaluses.",
|
"admin.config.legal.enabled.description": "Kas kuvada linki kontaktandmetele ja privaatsuspoliitikale jaluses.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Jaa {shareId}",
|
"share.title": "Jaa {shareId}",
|
||||||
"share.description": "Katso, mitä olen jakanut kanssasi!",
|
"share.description": "Katso, mitä olen jakanut kanssasi!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Vierailijoiden raja ylitetty",
|
"share.error.visitor-limit-exceeded.title": "Vierailijoiden raja ylitetty",
|
||||||
"share.error.visitor-limit-exceeded.description": "Tämän jaon kävijäraja on ylittynyt.",
|
"share.error.visitor-limit-exceeded.description": "Tämän jaon kävijäraja on ylittynyt.",
|
||||||
"share.error.removed.title": "Jako poistettu",
|
"share.error.removed.title": "Jako poistettu",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Partage {shareId}",
|
"share.title": "Partage {shareId}",
|
||||||
"share.description": "Regardez ce que j’ai partagé !",
|
"share.description": "Regardez ce que j’ai partagé !",
|
||||||
"share.fileCount": "{count, plural, =1 {# fichier} other {# fichiers}} · {size} (le fichier compressé peut être plus petit)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Limite de visiteurs dépassée",
|
"share.error.visitor-limit-exceeded.title": "Limite de visiteurs dépassée",
|
||||||
"share.error.visitor-limit-exceeded.description": "La limite de visiteurs de ce partage a été dépassée.",
|
"share.error.visitor-limit-exceeded.description": "La limite de visiteurs de ce partage a été dépassée.",
|
||||||
"share.error.removed.title": "Partage supprimé",
|
"share.error.removed.title": "Partage supprimé",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Utiliser la somme de contrôle",
|
|
||||||
"admin.config.s3.use-checksum.description": "Désactivez cette option pour les backends qui ne prennent pas en charge la somme de contrôle (ex. B2).",
|
|
||||||
"admin.config.category.legal": "Juridique",
|
"admin.config.category.legal": "Juridique",
|
||||||
"admin.config.legal.enabled": "Activer les mentions légales",
|
"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.enabled.description": "Afficher/Masquer dans le pied de page un lien vers les mentions légales et la politique de confidentialité.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Dijeljenje {shareId}",
|
"share.title": "Dijeljenje {shareId}",
|
||||||
"share.description": "Pogledajte što sam podijelio s vama!",
|
"share.description": "Pogledajte što sam podijelio s vama!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Prekoračeno ograničenje posjetitelja",
|
"share.error.visitor-limit-exceeded.title": "Prekoračeno ograničenje posjetitelja",
|
||||||
"share.error.visitor-limit-exceeded.description": "Ograničenje broja posjetitelja za ovo dijeljenje je premašeno.",
|
"share.error.visitor-limit-exceeded.description": "Ograničenje broja posjetitelja za ovo dijeljenje je premašeno.",
|
||||||
"share.error.removed.title": "Dijeljenje je uklonjeno",
|
"share.error.removed.title": "Dijeljenje je uklonjeno",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Megosztás: {shareId}",
|
"share.title": "Megosztás: {shareId}",
|
||||||
"share.description": "Megosztottak Önnel valami fontosat!",
|
"share.description": "Megosztottak Önnel valami fontosat!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Túl sok látogató",
|
"share.error.visitor-limit-exceeded.title": "Túl sok látogató",
|
||||||
"share.error.visitor-limit-exceeded.description": "A látogatók száma elérte a megszabott korlátot.",
|
"share.error.visitor-limit-exceeded.description": "A látogatók száma elérte a megszabott korlátot.",
|
||||||
"share.error.removed.title": "Korábban már eltávolított megosztás",
|
"share.error.removed.title": "Korábban már eltávolított megosztás",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Condividi {shareId}",
|
"share.title": "Condividi {shareId}",
|
||||||
"share.description": "Guarda cosa ho condiviso con te!",
|
"share.description": "Guarda cosa ho condiviso con te!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# file}} · {size} (il file zip potrebbe essere più piccolo a causa della compressione)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Limite visitatori superato",
|
"share.error.visitor-limit-exceeded.title": "Limite visitatori superato",
|
||||||
"share.error.visitor-limit-exceeded.description": "Il limite di visitatori di questa condivisione è stato superato.",
|
"share.error.visitor-limit-exceeded.description": "Il limite di visitatori di questa condivisione è stato superato.",
|
||||||
"share.error.removed.title": "Condivisione rimossa",
|
"share.error.removed.title": "Condivisione rimossa",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Usa il checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Disattiva per i backend che non supportano il checksum (ad es. B2).",
|
|
||||||
"admin.config.category.legal": "Legale",
|
"admin.config.category.legal": "Legale",
|
||||||
"admin.config.legal.enabled": "Abilita le notifiche legali",
|
"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.enabled.description": "Indica se mostrare o meno un link alle informative legali e sulla privacy a piè di pagina.",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export default {
|
|||||||
"navbar.links.reverse": "ファイルリクエスト",
|
"navbar.links.reverse": "ファイルリクエスト",
|
||||||
"navbar.avatar.account": "マイアカウント",
|
"navbar.avatar.account": "マイアカウント",
|
||||||
"navbar.avatar.admin": "管理画面",
|
"navbar.avatar.admin": "管理画面",
|
||||||
"navbar.avatar.signout": "ログアウト",
|
"navbar.avatar.signout": "サインアウト",
|
||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "<h>セルフホスト</h>のファイル共有プラットフォーム。",
|
"home.title": "<h>セルフホスト</h>のファイル共有プラットフォーム。",
|
||||||
@@ -25,16 +25,16 @@ export default {
|
|||||||
// /auth/signin
|
// /auth/signin
|
||||||
"signin.title": "おかえりなさい",
|
"signin.title": "おかえりなさい",
|
||||||
"signin.description": "アカウントをお持ちではありませんか?",
|
"signin.description": "アカウントをお持ちではありませんか?",
|
||||||
"signin.button.signup": "新規登録",
|
"signin.button.signup": "会員登録",
|
||||||
"signin.input.email-or-username": "メールアドレスまたはユーザー名",
|
"signin.input.email-or-username": "メールアドレスまたはユーザー名",
|
||||||
"signin.input.email-or-username.placeholder": "メールアドレスまたはユーザー名",
|
"signin.input.email-or-username.placeholder": "メールアドレスまたはユーザー名",
|
||||||
"signin.input.password": "パスワード",
|
"signin.input.password": "パスワード",
|
||||||
"signin.input.password.placeholder": "あなたのパスワード",
|
"signin.input.password.placeholder": "あなたのパスワード",
|
||||||
"signin.button.submit": "ログイン",
|
"signin.button.submit": "サインイン",
|
||||||
"signIn.notify.totp-required.title": "二段階認証が必要です",
|
"signIn.notify.totp-required.title": "二段階認証が必要です",
|
||||||
"signIn.notify.totp-required.description": "二段階認証コードを入力してください",
|
"signIn.notify.totp-required.description": "二段階認証コードを入力してください",
|
||||||
"signIn.oauth.or": "または",
|
"signIn.oauth.or": "または",
|
||||||
"signIn.oauth.signInWith": "ログインの方法",
|
"signIn.oauth.signInWith": "サインインの方法",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -44,7 +44,7 @@ export default {
|
|||||||
// /auth/signup
|
// /auth/signup
|
||||||
"signup.title": "アカウントを作成",
|
"signup.title": "アカウントを作成",
|
||||||
"signup.description": "既にアカウントをお持ちですか?",
|
"signup.description": "既にアカウントをお持ちですか?",
|
||||||
"signup.button.signin": "ログイン",
|
"signup.button.signin": "サインイン",
|
||||||
"signup.input.username": "ユーザー名",
|
"signup.input.username": "ユーザー名",
|
||||||
"signup.input.username.placeholder": "あなたのユーザー名",
|
"signup.input.username.placeholder": "あなたのユーザー名",
|
||||||
"signup.input.email": "メールアドレス",
|
"signup.input.email": "メールアドレス",
|
||||||
@@ -53,13 +53,13 @@ export default {
|
|||||||
// END /auth/signup
|
// END /auth/signup
|
||||||
// /auth/totp
|
// /auth/totp
|
||||||
"totp.title": "二段階認証",
|
"totp.title": "二段階認証",
|
||||||
"totp.button.signIn": "ログイン",
|
"totp.button.signIn": "サインイン",
|
||||||
// END /auth/totp
|
// END /auth/totp
|
||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "パスワードを忘れてしまいましたか?",
|
"resetPassword.title": "パスワードを忘れてしまいましたか?",
|
||||||
"resetPassword.description": "登録しているメールアドレスを入力してください。",
|
"resetPassword.description": "登録しているメールアドレスを入力してください。",
|
||||||
"resetPassword.notify.success": "指定されたメールアドレスが存在する場合、パスワードをリセットするためのリンクを含むメッセージが送信されました。",
|
"resetPassword.notify.success": "指定されたメールアドレスが存在する場合、パスワードをリセットするためのリンクを含むメッセージが送信されました。",
|
||||||
"resetPassword.button.back": "ログインページに戻る",
|
"resetPassword.button.back": "サインインページに戻る",
|
||||||
"resetPassword.text.resetPassword": "パスワードをリセット",
|
"resetPassword.text.resetPassword": "パスワードをリセット",
|
||||||
"resetPassword.text.enterNewPassword": "新規パスワードを入力",
|
"resetPassword.text.enterNewPassword": "新規パスワードを入力",
|
||||||
"resetPassword.input.password": "新規パスワード",
|
"resetPassword.input.password": "新規パスワード",
|
||||||
@@ -85,11 +85,11 @@ export default {
|
|||||||
"account.card.oauth.unlink": "リンク解除",
|
"account.card.oauth.unlink": "リンク解除",
|
||||||
"account.card.oauth.unlinked": "リンクされていません",
|
"account.card.oauth.unlinked": "リンクされていません",
|
||||||
"account.modal.unlink.title": "アカウントのリンクを解除",
|
"account.modal.unlink.title": "アカウントのリンクを解除",
|
||||||
"account.modal.unlink.description": "ソーシャルアカウントのリンクを解除すると、ログイン認証情報を忘れた場合にカウントへアクセスできなくなる可能性があります。",
|
"account.modal.unlink.description": "ソーシャルアカウントのリンクを解除すると、ログイン認証情報を忘れた場合、アカウントを失う可能性があります。",
|
||||||
"account.notify.oauth.unlinked.success": "リンク解除に成功しました",
|
"account.notify.oauth.unlinked.success": "リンク解除に成功しました",
|
||||||
"account.card.security.title": "セキュリティ",
|
"account.card.security.title": "セキュリティ",
|
||||||
"account.card.security.totp.enable.description": "2段階認証を有効にするには、現在のパスワードを入力してください",
|
"account.card.security.totp.enable.description": "2段階認証を有効にするため、現在のパスワードを入力してください",
|
||||||
"account.card.security.totp.disable.description": "2段階認証を無効にするには、現在のパスワードを入力してください",
|
"account.card.security.totp.disable.description": "2段階認証を無効にするため、現在のパスワードを入力してください",
|
||||||
"account.card.security.totp.button.start": "開始",
|
"account.card.security.totp.button.start": "開始",
|
||||||
"account.modal.totp.title": "2段階認証を有効にする",
|
"account.modal.totp.title": "2段階認証を有効にする",
|
||||||
"account.modal.totp.step1": "ステップ1: 認証アプリを追加する",
|
"account.modal.totp.step1": "ステップ1: 認証アプリを追加する",
|
||||||
@@ -216,7 +216,7 @@ export default {
|
|||||||
// /upload
|
// /upload
|
||||||
"upload.title": "アップロード",
|
"upload.title": "アップロード",
|
||||||
"upload.notify.confirm-leave": "このページから離れますか?アップロードはキャンセルされます。",
|
"upload.notify.confirm-leave": "このページから離れますか?アップロードはキャンセルされます。",
|
||||||
"upload.notify.generic-error": "共有の最終処理でエラーが発生しました。",
|
"upload.notify.generic-error": "共有を仕上げている最中にエラーが発生しました。",
|
||||||
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
|
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
|
||||||
"upload.reverse-share.error.invalid.title": "無効なファイルリクエストリンク",
|
"upload.reverse-share.error.invalid.title": "無効なファイルリクエストリンク",
|
||||||
"upload.reverse-share.error.invalid.description": "このファイルリクエストは期限が切れているか無効です。",
|
"upload.reverse-share.error.invalid.description": "このファイルリクエストは期限が切れているか無効です。",
|
||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "「{shareId}」が共有されました",
|
"share.title": "「{shareId}」が共有されました",
|
||||||
"share.description": "あなたと共有したファイルをご確認ください!",
|
"share.description": "あなたと共有したファイルをご確認ください!",
|
||||||
"share.fileCount": "{count, plural, =1 {# ファイル} other {# ファイル}} · {size} (圧縮により ZIP ファイルはより小さくなる場合があります)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "訪問者の上限を超えました",
|
"share.error.visitor-limit-exceeded.title": "訪問者の上限を超えました",
|
||||||
"share.error.visitor-limit-exceeded.description": "この共有からの訪問者の回数が制限を超えています。",
|
"share.error.visitor-limit-exceeded.description": "この共有からの訪問者の回数が制限を超えています。",
|
||||||
"share.error.removed.title": "共有が削除されました",
|
"share.error.removed.title": "共有が削除されました",
|
||||||
@@ -420,7 +419,7 @@ export default {
|
|||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect ユーザー名の要求",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect ユーザー名の要求",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID トークンのユーザー名要求。この設定が何かわからない場合は空白のままにしてください。",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID トークンのユーザー名要求。この設定が何かわからない場合は空白のままにしてください。",
|
||||||
"admin.config.oauth.oidc-role-path": "OpenID Connectトークンのロールへのパス",
|
"admin.config.oauth.oidc-role-path": "OpenID Connectトークンのロールへのパス",
|
||||||
"admin.config.oauth.oidc-role-path.description": "ロールの配列を参照する有効なJMESパスでなければなりません。 " + "OpenID Connectのロールを使用してアクセス権を管理することは、他のIDプロバイダが設定されておらず、パスワードログインが無効になっている場合にのみ推奨されます。この構成がわからない場合は空白のままにしてください。 " + "この設定が何であるか分からない場合は空白のままにしてください。",
|
"admin.config.oauth.oidc-role-path.description": "ロールの配列を参照する有効なJMESパスでなければなりません。" + "OpenID Connectのロールを使用してアクセス権を管理することは、他のIDプロバイダが設定されておらず、パスワードログインが無効になっている場合にのみ推奨されます。この構成がわからない場合は空白のままにしてください。" + "この設定が何であるか分からない場合は空白のままにしてください。",
|
||||||
"admin.config.oauth.oidc-role-general-access": "一般的なアクセスのためのOpenID Connectのロール",
|
"admin.config.oauth.oidc-role-general-access": "一般的なアクセスのためのOpenID Connectのロール",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "一般的なアクセスに必要なロール。ログインするユーザーのロールに存在する必要があります。 " + "この設定が何であるか分からない場合は空白のままにしてください。",
|
"admin.config.oauth.oidc-role-general-access.description": "一般的なアクセスに必要なロール。ログインするユーザーのロールに存在する必要があります。 " + "この設定が何であるか分からない場合は空白のままにしてください。",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "管理者アクセスのための OpenID Connectのロール",
|
"admin.config.oauth.oidc-role-admin-access": "管理者アクセスのための OpenID Connectのロール",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "チェックサムを使用",
|
|
||||||
"admin.config.s3.use-checksum.description": "チェックサムをサポートしていないバックエンド(例:B2)では無効にしてください。",
|
|
||||||
"admin.config.category.legal": "法的事項",
|
"admin.config.category.legal": "法的事項",
|
||||||
"admin.config.legal.enabled": "法的通知を有効にする",
|
"admin.config.legal.enabled": "法的通知を有効にする",
|
||||||
"admin.config.legal.enabled.description": "フッターにインプリントとプライバシーポリシーへのリンクを表示するか。",
|
"admin.config.legal.enabled.description": "フッターにインプリントとプライバシーポリシーへのリンクを表示するか。",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "공유 {shareId}",
|
"share.title": "공유 {shareId}",
|
||||||
"share.description": "내가 당신과 공유한 것을 보세요!",
|
"share.description": "내가 당신과 공유한 것을 보세요!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "방문자 한도 초과",
|
"share.error.visitor-limit-exceeded.title": "방문자 한도 초과",
|
||||||
"share.error.visitor-limit-exceeded.description": "이 공유의 방문자 한도를 초과했습니다.",
|
"share.error.visitor-limit-exceeded.description": "이 공유의 방문자 한도를 초과했습니다.",
|
||||||
"share.error.removed.title": "공유가 삭제됨",
|
"share.error.removed.title": "공유가 삭제됨",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Share {shareId}",
|
"share.title": "Share {shareId}",
|
||||||
"share.description": "Kijk eens wat ik met je heb gedeeld!",
|
"share.description": "Kijk eens wat ik met je heb gedeeld!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Bezoekerslimiet overschreden",
|
"share.error.visitor-limit-exceeded.title": "Bezoekerslimiet overschreden",
|
||||||
"share.error.visitor-limit-exceeded.description": "De bezoekerslimiet van deze share is overschreden.",
|
"share.error.visitor-limit-exceeded.description": "De bezoekerslimiet van deze share is overschreden.",
|
||||||
"share.error.removed.title": "Share was verwijderd",
|
"share.error.removed.title": "Share was verwijderd",
|
||||||
@@ -358,7 +357,7 @@ export default {
|
|||||||
"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.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": "",
|
"admin.config.smtp.enabled": "Enable",
|
||||||
"admin.config.smtp.enabled.description": "Of SMTP is ingeschakeld. Stel dit alleen in op true als u de host hebt ingevoerd, poort, e-mail, gebruiker en wachtwoord van uw SMTP-server.",
|
"admin.config.smtp.enabled.description": "Of SMTP is ingeschakeld. Stel dit alleen in op true als u de host hebt ingevoerd, poort, e-mail, gebruiker en wachtwoord van uw SMTP-server.",
|
||||||
"admin.config.smtp.host": "Host",
|
"admin.config.smtp.host": "Host",
|
||||||
"admin.config.smtp.host.description": "Host van de SMTP-server",
|
"admin.config.smtp.host.description": "Host van de SMTP-server",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Nie pamiętasz hasła?",
|
"resetPassword.title": "Nie pamiętasz hasła?",
|
||||||
"resetPassword.description": "Wprowadź swój e-mail, aby zresetować swoje hasło.",
|
"resetPassword.description": "Wprowadź swój e-mail, aby zresetować swoje hasło.",
|
||||||
"resetPassword.notify.success": "Jeśli podany adres e-mail istnieje, wiadomość z linkiem umożliwiającym zresetowanie hasła została wysłana.",
|
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||||
"resetPassword.button.back": "Powrót do strony logowania",
|
"resetPassword.button.back": "Powrót do strony logowania",
|
||||||
"resetPassword.text.resetPassword": "Resetuj hasło",
|
"resetPassword.text.resetPassword": "Resetuj hasło",
|
||||||
"resetPassword.text.enterNewPassword": "Wprowadź nowe hasło",
|
"resetPassword.text.enterNewPassword": "Wprowadź nowe hasło",
|
||||||
@@ -129,7 +129,7 @@ export default {
|
|||||||
"account.shares.table.expiry-never": "Never",
|
"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": "Usuń udostępnianie: {share}",
|
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||||
"account.shares.modal.delete.description": "Czy na pewno chcesz usunąć to udostępnianie?",
|
"account.shares.modal.delete.description": "Czy na pewno chcesz usunąć to udostępnianie?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
@@ -156,7 +156,7 @@ export default {
|
|||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "Send email notifications",
|
||||||
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
|
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
|
||||||
"account.reverseShares.modal.simplified": "Tryb uproszczony",
|
"account.reverseShares.modal.simplified": "Tryb uproszczony",
|
||||||
"account.reverseShares.modal.simplified.description": "",
|
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||||
"account.reverseShares.modal.public-access": "Dostęp publiczny",
|
"account.reverseShares.modal.public-access": "Dostęp publiczny",
|
||||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||||
"account.reverseShares.modal.max-use.label": "Limit użyć",
|
"account.reverseShares.modal.max-use.label": "Limit użyć",
|
||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Udostępnij {shareId}",
|
"share.title": "Udostępnij {shareId}",
|
||||||
"share.description": "Spójrz, co ci udostępniłem!",
|
"share.description": "Spójrz, co ci udostępniłem!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Przekroczono limit odwiedzających",
|
"share.error.visitor-limit-exceeded.title": "Przekroczono limit odwiedzających",
|
||||||
"share.error.visitor-limit-exceeded.description": "Limit odwiedzających dla tego udziału został przekroczony.",
|
"share.error.visitor-limit-exceeded.description": "Limit odwiedzających dla tego udziału został przekroczony.",
|
||||||
"share.error.removed.title": "Udostępnianie usunięte",
|
"share.error.removed.title": "Udostępnianie usunięte",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Compartilhar {shareId}",
|
"share.title": "Compartilhar {shareId}",
|
||||||
"share.description": "Veja o que eu compartilhei com você!",
|
"share.description": "Veja o que eu compartilhei com você!",
|
||||||
"share.fileCount": "{count, plural, one {}=1 {# arquivo} other {# arquivos}} · {size} (arquivo zip pode ser menor devido à compressão)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Limite de visitantes excedido",
|
"share.error.visitor-limit-exceeded.title": "Limite de visitantes excedido",
|
||||||
"share.error.visitor-limit-exceeded.description": "O limite de visitantes deste compartilhamento foi excedido.",
|
"share.error.visitor-limit-exceeded.description": "O limite de visitantes deste compartilhamento foi excedido.",
|
||||||
"share.error.removed.title": "Compartilhamento removido",
|
"share.error.removed.title": "Compartilhamento removido",
|
||||||
@@ -365,7 +364,7 @@ export default {
|
|||||||
"admin.config.smtp.port": "Porta",
|
"admin.config.smtp.port": "Porta",
|
||||||
"admin.config.smtp.port.description": "Porta do Servidor SMTP",
|
"admin.config.smtp.port.description": "Porta do Servidor SMTP",
|
||||||
"admin.config.smtp.email": "E-mail",
|
"admin.config.smtp.email": "E-mail",
|
||||||
"admin.config.smtp.email.description": "Endereço de e-mail de onde os e-mails são enviados",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "Nome de usuário",
|
"admin.config.smtp.username": "Nome de usuário",
|
||||||
"admin.config.smtp.username.description": "Nome de usuário do servidor SMTP",
|
"admin.config.smtp.username.description": "Nome de usuário do servidor SMTP",
|
||||||
"admin.config.smtp.password": "Senha",
|
"admin.config.smtp.password": "Senha",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Usar Checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Desligar para backends que não suportem checksum (por exemplo, B2).",
|
|
||||||
"admin.config.category.legal": "Aviso legal",
|
"admin.config.category.legal": "Aviso legal",
|
||||||
"admin.config.legal.enabled": "Habilitar avisos legais",
|
"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.enabled.description": "Exibir um link para imprimir e política de privacidade no rodapé.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Загрузка {shareId}",
|
"share.title": "Загрузка {shareId}",
|
||||||
"share.description": "Посмотрите, чем я поделился с вами!",
|
"share.description": "Посмотрите, чем я поделился с вами!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Превышен лимит посетителей",
|
"share.error.visitor-limit-exceeded.title": "Превышен лимит посетителей",
|
||||||
"share.error.visitor-limit-exceeded.description": "Превышен лимит посетителей.",
|
"share.error.visitor-limit-exceeded.description": "Превышен лимит посетителей.",
|
||||||
"share.error.removed.title": "Загрузка удалена",
|
"share.error.removed.title": "Загрузка удалена",
|
||||||
@@ -279,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Приватное доступ",
|
"share.error.access-denied.title": "Приватное доступ",
|
||||||
"share.error.access-denied.description": "У текущей учетной записи нет разрешения на доступ к этому ресурсу",
|
"share.error.access-denied.description": "У текущей учетной записи нет разрешения на доступ к этому ресурсу",
|
||||||
"share.modal.password.title": "Требуется пароль",
|
"share.modal.password.title": "Требуется пароль",
|
||||||
"share.modal.password.description": "Пожалуйста, введите пароль для доступа к этому ресурсу.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Пароль",
|
"share.modal.password": "Пароль",
|
||||||
"share.modal.error.invalid-password": "Неверный пароль",
|
"share.modal.error.invalid-password": "Неверный пароль",
|
||||||
"share.button.download-all": "Скачать все",
|
"share.button.download-all": "Скачать все",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Deli {shareId}",
|
"share.title": "Deli {shareId}",
|
||||||
"share.description": "Poglej kaj sem delil s taboj!",
|
"share.description": "Poglej kaj sem delil s taboj!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Število ogledov je prekoračena",
|
"share.error.visitor-limit-exceeded.title": "Število ogledov je prekoračena",
|
||||||
"share.error.visitor-limit-exceeded.description": "Število ogledov za to delitev je bila prekoračena.",
|
"share.error.visitor-limit-exceeded.description": "Število ogledov za to delitev je bila prekoračena.",
|
||||||
"share.error.removed.title": "Delitev je odstranjena",
|
"share.error.removed.title": "Delitev je odstranjena",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Deljenje {shareId}",
|
"share.title": "Deljenje {shareId}",
|
||||||
"share.description": "Pogledajte šta sam podelio sa vama!",
|
"share.description": "Pogledajte šta sam podelio sa vama!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Prekoračeno je ograničenje posetilaca",
|
"share.error.visitor-limit-exceeded.title": "Prekoračeno je ograničenje posetilaca",
|
||||||
"share.error.visitor-limit-exceeded.description": "Ograničenje posetilaca iz ovog deljenja je premašeno.",
|
"share.error.visitor-limit-exceeded.description": "Ograničenje posetilaca iz ovog deljenja je premašeno.",
|
||||||
"share.error.removed.title": "Deljenje je uklonjeno",
|
"share.error.removed.title": "Deljenje je uklonjeno",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Дељење {shareId}",
|
"share.title": "Дељење {shareId}",
|
||||||
"share.description": "Погледајте шта сам поделио са вама!",
|
"share.description": "Погледајте шта сам поделио са вама!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Прекорачено је ограничење посетилаца",
|
"share.error.visitor-limit-exceeded.title": "Прекорачено је ограничење посетилаца",
|
||||||
"share.error.visitor-limit-exceeded.description": "Ограничење посетилаца из овог дељења је премашено.",
|
"share.error.visitor-limit-exceeded.description": "Ограничење посетилаца из овог дељења је премашено.",
|
||||||
"share.error.removed.title": "Дељење је уклоњено",
|
"share.error.removed.title": "Дељење је уклоњено",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "Ladda upp",
|
"navbar.upload": "Ladda upp",
|
||||||
"navbar.signin": "Logga in",
|
"navbar.signin": "Logga in",
|
||||||
"navbar.home": "Startsida",
|
"navbar.home": "Startsida",
|
||||||
"navbar.signup": "Registrera dig",
|
"navbar.signup": "Sign up",
|
||||||
"navbar.links.shares": "Mina delningar",
|
"navbar.links.shares": "Mina delningar",
|
||||||
"navbar.links.reverse": "Omvända delningar",
|
"navbar.links.reverse": "Omvända delningar",
|
||||||
"navbar.avatar.account": "Mitt konto",
|
"navbar.avatar.account": "Mitt konto",
|
||||||
@@ -16,9 +16,9 @@ export default {
|
|||||||
"home.bullet.a.name": "Lokalt installerad",
|
"home.bullet.a.name": "Lokalt installerad",
|
||||||
"home.bullet.a.description": "Hosta Pingvin Share på din egen maskin.",
|
"home.bullet.a.description": "Hosta Pingvin Share på din egen maskin.",
|
||||||
"home.bullet.b.name": "Sekretess",
|
"home.bullet.b.name": "Sekretess",
|
||||||
"home.bullet.b.description": "Dina filer är dina och kommer aldrig att nås av tredje part.",
|
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||||
"home.bullet.c.name": "Ingen irriterande filstorleksbegränsning",
|
"home.bullet.c.name": "Ingen irriterande filstorleksbegränsning",
|
||||||
"home.bullet.c.description": "Ladda upp filer så stora du vill. Endast hårddisken kommer vara din begränsning.",
|
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||||
"home.button.start": "Kom igång",
|
"home.button.start": "Kom igång",
|
||||||
"home.button.source": "Källkod",
|
"home.button.source": "Källkod",
|
||||||
// END /
|
// END /
|
||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
"signIn.notify.totp-required.title": "Tvåfaktorsautentisering krävs",
|
"signIn.notify.totp-required.title": "Tvåfaktorsautentisering krävs",
|
||||||
"signIn.notify.totp-required.description": "Vänligen ange din tvåfaktorsautentiseringskod",
|
"signIn.notify.totp-required.description": "Vänligen ange din tvåfaktorsautentiseringskod",
|
||||||
"signIn.oauth.or": "ELLER",
|
"signIn.oauth.or": "ELLER",
|
||||||
"signIn.oauth.signInWith": "Logga in med",
|
"signIn.oauth.signInWith": "Sign in with",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -58,12 +58,12 @@ export default {
|
|||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Glömt ditt lösenord?",
|
"resetPassword.title": "Glömt ditt lösenord?",
|
||||||
"resetPassword.description": "Ange din e-postadress för att återställa ditt lösenord.",
|
"resetPassword.description": "Ange din e-postadress för att återställa ditt lösenord.",
|
||||||
"resetPassword.notify.success": "Ett meddelande med en länk för att återställa ditt lösenord har skickats om den angivna e-postadressen finns registrerad.",
|
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||||
"resetPassword.button.back": "Tillbaka till inloggningssidan",
|
"resetPassword.button.back": "Tillbaka till inloggningssidan",
|
||||||
"resetPassword.text.resetPassword": "Återställ lösenord",
|
"resetPassword.text.resetPassword": "Återställ lösenord",
|
||||||
"resetPassword.text.enterNewPassword": "Ange ditt nya lösenord",
|
"resetPassword.text.enterNewPassword": "Ange ditt nya lösenord",
|
||||||
"resetPassword.input.password": "Nytt lösenord",
|
"resetPassword.input.password": "Nytt lösenord",
|
||||||
"resetPassword.notify.passwordReset": "Ditt lösenord har återställts.",
|
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Mitt konto",
|
"account.title": "Mitt konto",
|
||||||
"account.card.info.title": "Kontoinformation",
|
"account.card.info.title": "Kontoinformation",
|
||||||
@@ -73,7 +73,7 @@ export default {
|
|||||||
"account.card.password.title": "Lösenord",
|
"account.card.password.title": "Lösenord",
|
||||||
"account.card.password.old": "Gammalt lösenord",
|
"account.card.password.old": "Gammalt lösenord",
|
||||||
"account.card.password.new": "Nytt lösenord",
|
"account.card.password.new": "Nytt lösenord",
|
||||||
"account.card.password.noPasswordSet": "Du har inget lösenord. För att logga in med din e-postadress och lösenord måste du skapa ett lösenord.",
|
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||||
"account.notify.password.success": "Lösenordet har ändrats",
|
"account.notify.password.success": "Lösenordet har ändrats",
|
||||||
"account.card.oauth.title": "Inloggning via sociala nätverk",
|
"account.card.oauth.title": "Inloggning via sociala nätverk",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
"account.card.oauth.unlink": "Avlänka",
|
"account.card.oauth.unlink": "Avlänka",
|
||||||
"account.card.oauth.unlinked": "Avlänkad",
|
"account.card.oauth.unlinked": "Avlänkad",
|
||||||
"account.modal.unlink.title": "Avlänka konto",
|
"account.modal.unlink.title": "Avlänka konto",
|
||||||
"account.modal.unlink.description": "Om du kopplar bort dina sociala konton kan det leda till att du förlorar ditt konto om du inte kommer ihåg dina inloggningsuppgifter",
|
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
||||||
"account.notify.oauth.unlinked.success": "Avlänkning utförd",
|
"account.notify.oauth.unlinked.success": "Avlänkning utförd",
|
||||||
"account.card.security.title": "Säkerhet",
|
"account.card.security.title": "Säkerhet",
|
||||||
"account.card.security.totp.enable.description": "Ange ditt nuvarande lösenord för att aktivera TOTP",
|
"account.card.security.totp.enable.description": "Ange ditt nuvarande lösenord för att aktivera TOTP",
|
||||||
@@ -121,15 +121,15 @@ export default {
|
|||||||
"account.shares.table.name": "Namn",
|
"account.shares.table.name": "Namn",
|
||||||
"account.shares.table.description": "Beskrivning",
|
"account.shares.table.description": "Beskrivning",
|
||||||
"account.shares.table.visitors": "Besökare",
|
"account.shares.table.visitors": "Besökare",
|
||||||
"account.shares.table.expiresAt": "Förfaller",
|
"account.shares.table.expiresAt": "Expires on",
|
||||||
"account.shares.table.createdAt": "Skapad",
|
"account.shares.table.createdAt": "Created on",
|
||||||
"account.shares.table.size": "Storlek",
|
"account.shares.table.size": "Storlek",
|
||||||
"account.shares.table.password-protected": "Lösenordsskyddad",
|
"account.shares.table.password-protected": "Password protected",
|
||||||
"account.shares.table.visitor-count": "{count} av {max}",
|
"account.shares.table.visitor-count": "{count} of {max}",
|
||||||
"account.shares.table.expiry-never": "Aldrig",
|
"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": "Ta bort delning: {share}",
|
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||||
"account.shares.modal.delete.description": "Vill du verkligen ta bort denna delning?",
|
"account.shares.modal.delete.description": "Vill du verkligen ta bort denna delning?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
@@ -153,12 +153,12 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.year-singular": "År",
|
"account.reverseShares.modal.expiration.year-singular": "År",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "År",
|
"account.reverseShares.modal.expiration.year-plural": "År",
|
||||||
"account.reverseShares.modal.max-size.label": "Max storlek på delning",
|
"account.reverseShares.modal.max-size.label": "Max storlek på delning",
|
||||||
"account.reverseShares.modal.send-email": "Skicka e-postaviseringar",
|
"account.reverseShares.modal.send-email": "Send email notifications",
|
||||||
"account.reverseShares.modal.send-email.description": "Skicka ett e-postavisering när en delning skapas med denna länk för omvänd delning.",
|
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
|
||||||
"account.reverseShares.modal.simplified": "Enkelt läge",
|
"account.reverseShares.modal.simplified": "Simple mode",
|
||||||
"account.reverseShares.modal.simplified.description": "Gör det enkelt för den som laddar upp filen att dela den med dig. De kommer bara att kunna anpassa namn och beskrivning av delningen.",
|
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||||
"account.reverseShares.modal.public-access": "Allmän åtkomst",
|
"account.reverseShares.modal.public-access": "Public access",
|
||||||
"account.reverseShares.modal.public-access.description": "Gör delningar skapade med denna länk för omvänd delning publik. Om inaktiverad, kommer endast du och delningsskaparen att ha tillgång till den.",
|
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||||
"account.reverseShares.modal.max-use.label": "Maxanvändningar",
|
"account.reverseShares.modal.max-use.label": "Maxanvändningar",
|
||||||
"account.reverseShares.modal.max-use.description": "Den maximala mängden gånger denna URL kan användas för att skapa en delning.",
|
"account.reverseShares.modal.max-use.description": "Den maximala mängden gånger denna URL kan användas för att skapa en delning.",
|
||||||
"account.reverseShare.never-expires": "Denna omvända delning kommer aldrig att förfalla.",
|
"account.reverseShare.never-expires": "Denna omvända delning kommer aldrig att förfalla.",
|
||||||
@@ -177,7 +177,7 @@ export default {
|
|||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Administration",
|
"admin.title": "Administration",
|
||||||
"admin.button.users": "Användarhantering",
|
"admin.button.users": "Användarhantering",
|
||||||
"admin.button.shares": "Delningshantering",
|
"admin.button.shares": "Share management",
|
||||||
"admin.button.config": "Konfiguration",
|
"admin.button.config": "Konfiguration",
|
||||||
"admin.version": "Version",
|
"admin.version": "Version",
|
||||||
// END /admin
|
// END /admin
|
||||||
@@ -186,14 +186,14 @@ export default {
|
|||||||
"admin.users.table.username": "Användarnamn",
|
"admin.users.table.username": "Användarnamn",
|
||||||
"admin.users.table.email": "E-post",
|
"admin.users.table.email": "E-post",
|
||||||
"admin.users.table.admin": "Administratör",
|
"admin.users.table.admin": "Administratör",
|
||||||
"admin.users.edit.update.title": "Redigera användare: {username}",
|
"admin.users.edit.update.title": "Edit user: {username}",
|
||||||
"admin.users.edit.update.admin-privileges": "Administratörsbehörigheter",
|
"admin.users.edit.update.admin-privileges": "Administratörsbehörigheter",
|
||||||
"admin.users.edit.update.change-password.title": "Ändra lösenord",
|
"admin.users.edit.update.change-password.title": "Ändra lösenord",
|
||||||
"admin.users.edit.update.change-password.field": "Nytt lösenord",
|
"admin.users.edit.update.change-password.field": "Nytt lösenord",
|
||||||
"admin.users.edit.update.change-password.button": "Spara nytt lösenord",
|
"admin.users.edit.update.change-password.button": "Spara nytt lösenord",
|
||||||
"admin.users.edit.update.notify.password.success": "Lösenordet har ändrats",
|
"admin.users.edit.update.notify.password.success": "Lösenordet har ändrats",
|
||||||
"admin.users.edit.delete.title": "Ta bort användare: {username} ?",
|
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
||||||
"admin.users.edit.delete.description": "Vill du verkligen ta bort denna användare och alla deras delningar?",
|
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Skapa användare",
|
"admin.users.modal.create.title": "Skapa användare",
|
||||||
"admin.users.modal.create.username": "Användarnamn",
|
"admin.users.modal.create.username": "Användarnamn",
|
||||||
@@ -205,24 +205,24 @@ export default {
|
|||||||
"admin.users.modal.create.admin.description": "Om detta markeras kommer användaren att kunna komma åt administratörspanelen.",
|
"admin.users.modal.create.admin.description": "Om detta markeras kommer användaren att kunna komma åt administratörspanelen.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Delningshantering",
|
"admin.shares.title": "Share management",
|
||||||
"admin.shares.table.id": "Delnings ID",
|
"admin.shares.table.id": "Share ID",
|
||||||
"admin.shares.table.username": "Skapare",
|
"admin.shares.table.username": "Creator",
|
||||||
"admin.shares.table.visitors": "Besökare",
|
"admin.shares.table.visitors": "Visitors",
|
||||||
"admin.shares.table.expires": "Förfaller",
|
"admin.shares.table.expires": "Expires on",
|
||||||
"admin.shares.edit.delete.title": "Ta bort delning: {id}",
|
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||||
"admin.shares.edit.delete.description": "Vill du verkligen ta bort denna delning?",
|
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Ladda upp",
|
"upload.title": "Ladda upp",
|
||||||
"upload.notify.confirm-leave": "Är du säker på att du vill lämna denna sida? Din uppladdning kommer att avbrytas.",
|
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||||
"upload.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.",
|
"upload.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.",
|
||||||
"upload.notify.count-failed": "{count} filer kunde inte laddas upp. Försöker igen.",
|
"upload.notify.count-failed": "{count} filer kunde inte laddas upp. Försöker igen.",
|
||||||
"upload.reverse-share.error.invalid.title": "Ogiltig länk för omvänd delning",
|
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||||
"upload.reverse-share.error.invalid.description": "Denna omvänd delning har gått ut eller är ogiltig.",
|
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Ladda upp filer",
|
"upload.dropzone.title": "Ladda upp filer",
|
||||||
"upload.dropzone.description": "Dra och släpp filer här för att starta din delning. Vi kan endast acceptera filer som är mindre än {maxSize} totalt.",
|
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||||
"upload.dropzone.notify.file-too-big": "Dina filer överskrider den maximala storleken på {maxSize}.",
|
"upload.dropzone.notify.file-too-big": "Dina filer överskrider den maximala storleken på {maxSize}.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "Namn",
|
"upload.filelist.name": "Namn",
|
||||||
@@ -234,8 +234,8 @@ export default {
|
|||||||
"upload.modal.not-signed-in": "Du är inte inloggad",
|
"upload.modal.not-signed-in": "Du är inte inloggad",
|
||||||
"upload.modal.not-signed-in-description": "Du kommer inte att kunna ta bort din delning manuellt och visa antalet besökare.",
|
"upload.modal.not-signed-in-description": "Du kommer inte att kunna ta bort din delning manuellt och visa antalet besökare.",
|
||||||
"upload.modal.expires.never": "aldrig",
|
"upload.modal.expires.never": "aldrig",
|
||||||
"upload.modal.expires.never-long": "Permanent delning",
|
"upload.modal.expires.never-long": "Permanent share",
|
||||||
"upload.modal.expires.error.too-long": "Förfallodatum överskrider maximalt av {max}.",
|
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||||
"upload.modal.link.label": "Länk",
|
"upload.modal.link.label": "Länk",
|
||||||
"upload.modal.expires.label": "Förfaller",
|
"upload.modal.expires.label": "Förfaller",
|
||||||
"upload.modal.expires.minute-singular": "Minut",
|
"upload.modal.expires.minute-singular": "Minut",
|
||||||
@@ -250,9 +250,9 @@ export default {
|
|||||||
"upload.modal.expires.month-plural": "Månader",
|
"upload.modal.expires.month-plural": "Månader",
|
||||||
"upload.modal.expires.year-singular": "År",
|
"upload.modal.expires.year-singular": "År",
|
||||||
"upload.modal.expires.year-plural": "År",
|
"upload.modal.expires.year-plural": "År",
|
||||||
"upload.modal.accordion.name-and-description.title": "Namn och beskrivning",
|
"upload.modal.accordion.name-and-description.title": "Name and description",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "Namn",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Anteckning till mottagare av denna delning",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
||||||
"upload.modal.accordion.email.title": "E-postmottagare",
|
"upload.modal.accordion.email.title": "E-postmottagare",
|
||||||
"upload.modal.accordion.email.placeholder": "Ange e-postmottagare",
|
"upload.modal.accordion.email.placeholder": "Ange e-postmottagare",
|
||||||
"upload.modal.accordion.email.invalid-email": "Ogiltig e-postadress",
|
"upload.modal.accordion.email.invalid-email": "Ogiltig e-postadress",
|
||||||
@@ -265,30 +265,29 @@ export default {
|
|||||||
"upload.modal.completed.never-expires": "Denna delning kommer aldrig att upphöra.",
|
"upload.modal.completed.never-expires": "Denna delning kommer aldrig att upphöra.",
|
||||||
"upload.modal.completed.expires-on": "Denna delning upphör att gälla {expiration}.",
|
"upload.modal.completed.expires-on": "Denna delning upphör att gälla {expiration}.",
|
||||||
"upload.modal.completed.share-ready": "Delning redo",
|
"upload.modal.completed.share-ready": "Delning redo",
|
||||||
"upload.modal.completed.notified-reverse-share-creator": "Vi har meddelat skaparen av omvänd delning. Du kan också manuellt dela denna länk med dem på andra sätt.",
|
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
||||||
// END /upload
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Delning {shareId}",
|
"share.title": "Delning {shareId}",
|
||||||
"share.description": "Titta vad jag har delat med dig!",
|
"share.description": "Titta vad jag har delat med dig!",
|
||||||
"share.fileCount": "{count, plural, =1 {# fil} other {# filer}} · {size} (zip-filen kan vara mindre på grund av komprimering)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Besökargränsen överskriden",
|
"share.error.visitor-limit-exceeded.title": "Besökargränsen överskriden",
|
||||||
"share.error.visitor-limit-exceeded.description": "Gränsen för antalet besökare för denna delning har överskridits.",
|
"share.error.visitor-limit-exceeded.description": "Gränsen för antalet besökare för denna delning har överskridits.",
|
||||||
"share.error.removed.title": "Delning borttagen",
|
"share.error.removed.title": "Delning borttagen",
|
||||||
"share.error.not-found.title": "Delningen hittades inte",
|
"share.error.not-found.title": "Delningen hittades inte",
|
||||||
"share.error.not-found.description": "Delningen du letar efter existerar inte.",
|
"share.error.not-found.description": "Delningen du letar efter existerar inte.",
|
||||||
"share.error.access-denied.title": "Privat delning",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "Det aktuella kontot har inte behörighet att komma åt denna delning",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Lösenord krävs",
|
"share.modal.password.title": "Lösenord krävs",
|
||||||
"share.modal.password.description": "Ange lösenordet för att komma åt denna delning.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Lösenord",
|
"share.modal.password": "Lösenord",
|
||||||
"share.modal.error.invalid-password": "Ogiltigt lösenord",
|
"share.modal.error.invalid-password": "Ogiltigt lösenord",
|
||||||
"share.button.download-all": "Ladda ner allt",
|
"share.button.download-all": "Ladda ner allt",
|
||||||
"share.notify.download-all-preparing": "Delningen förbereds. Försök igen om några minuter.",
|
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||||
"share.modal.file-link": "Fillänk",
|
"share.modal.file-link": "Fillänk",
|
||||||
"share.table.name": "Namn",
|
"share.table.name": "Namn",
|
||||||
"share.table.size": "Storlek",
|
"share.table.size": "Storlek",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Förhandsgranskning stöds ej",
|
"share.modal.file-preview.error.not-supported.title": "Förhandsgranskning stöds ej",
|
||||||
"share.modal.file-preview.error.not-supported.description": "Förhandsvisningar stöds inte för denna typ av filer. Ladda ner filen för att se den.",
|
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "Redigera {shareId}",
|
"share.edit.title": "Redigera {shareId}",
|
||||||
@@ -297,14 +296,14 @@ export default {
|
|||||||
"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
|
||||||
"imprint.title": "Avtryck",
|
"imprint.title": "Imprint",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Integritetspolicy",
|
"privacy.title": "Privacy Policy",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.config-file-warning.title": "Konfigurationsfil finns",
|
"admin.config.config-file-warning.title": "Configuration file present",
|
||||||
"admin.config.config-file-warning.description": "Eftersom du har en konfigurerad Pingvin Share med en konfigurationsfil kan du inte ändra konfigurationen genom UI.",
|
"admin.config.config-file-warning.description": "As you have a configured Pingvin Share with a configuration file, you can't change the configuration through the UI.",
|
||||||
"admin.config.title": "Konfiguration",
|
"admin.config.title": "Konfiguration",
|
||||||
"admin.config.category.general": "Allmänt",
|
"admin.config.category.general": "Allmänt",
|
||||||
"admin.config.category.share": "Delning",
|
"admin.config.category.share": "Delning",
|
||||||
@@ -315,70 +314,70 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "Namn på applikationen",
|
"admin.config.general.app-name.description": "Namn på applikationen",
|
||||||
"admin.config.general.app-url": "Appens URL",
|
"admin.config.general.app-url": "Appens URL",
|
||||||
"admin.config.general.app-url.description": "På vilken URL Pingvin Share finns",
|
"admin.config.general.app-url.description": "På vilken URL Pingvin Share finns",
|
||||||
"admin.config.general.secure-cookies": "Skydda kakor",
|
"admin.config.general.secure-cookies": "Secure cookies",
|
||||||
"admin.config.general.secure-cookies.description": "Om du vill ställa in den säkra flaggan på kakor. Om aktiverad, kommer webbplatsen inte att fungera när den används via HTTP.",
|
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||||
"admin.config.general.show-home-page": "Visa startsidan",
|
"admin.config.general.show-home-page": "Visa startsidan",
|
||||||
"admin.config.general.show-home-page.description": "Om du vill visa startsidan",
|
"admin.config.general.show-home-page.description": "Om du vill visa startsidan",
|
||||||
"admin.config.general.session-duration": "Sessionsvaraktighet",
|
"admin.config.general.session-duration": "Session Duration",
|
||||||
"admin.config.general.session-duration.description": "Tid efter vilken en användare måste logga in igen (standard: 3 månader).",
|
"admin.config.general.session-duration.description": "Time after which a user must log in again (default: 3 months).",
|
||||||
"admin.config.general.logo": "Logotyp",
|
"admin.config.general.logo": "Logotyp",
|
||||||
"admin.config.general.logo.description": "Ändra din logotyp genom att ladda upp en ny bild. Bilden måste vara en PNG och bör ha formatet 1:1.",
|
"admin.config.general.logo.description": "Ändra din logotyp genom att ladda upp en ny bild. Bilden måste vara en PNG och bör ha formatet 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Välj bild",
|
"admin.config.general.logo.placeholder": "Välj bild",
|
||||||
"admin.config.email.enable-share-email-recipients": "Aktivera delning av e-postmottagare",
|
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||||
"admin.config.email.enable-share-email-recipients.description": "Om du vill tillåta e-postdelning med mottagare. Aktivera endast detta om SMTP är aktiverat.",
|
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||||
"admin.config.email.share-recipients-subject": "Delning ämne",
|
"admin.config.email.share-recipients-subject": "Delning ämne",
|
||||||
"admin.config.email.share-recipients-subject.description": "Ämne för e-postmeddelandet som skickas till delningsmottagarna.",
|
"admin.config.email.share-recipients-subject.description": "Ämne för e-postmeddelandet som skickas till delningsmottagarna.",
|
||||||
"admin.config.email.share-recipients-message": "Delning meddelande",
|
"admin.config.email.share-recipients-message": "Delning meddelande",
|
||||||
"admin.config.email.share-recipients-message.description": "Meddelande som skickas till delningens mottagare. Tillgängliga variabler:\n {creator} - Användarnamnet för skaparen av delningen\n {creatorEmail} - E-postadressen för skaparen av delningen\n {shareUrl} - URL för delningen\n {desc} - Beskrivningen av delningen\n {expires} - Förfallodatumet för delningen\n Variablerna kommer att ersättas med det faktiska värdet.",
|
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||||
"admin.config.email.reverse-share-subject": "Omvänd delning ämne",
|
"admin.config.email.reverse-share-subject": "Omvänd delning ämne",
|
||||||
"admin.config.email.reverse-share-subject.description": "Ämne för det skickade e-postmeddelandet när någon skapade en delning med din omvända delningslänk.",
|
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||||
"admin.config.email.reverse-share-message": "Omvänd delning meddelande",
|
"admin.config.email.reverse-share-message": "Omvänd delning meddelande",
|
||||||
"admin.config.email.reverse-share-message.description": "Meddelande som skickas när någon skapade en delning med din länk för omvänd delning. {shareUrl} kommer att ersättas med skaparens namn och delningens URL.",
|
"admin.config.email.reverse-share-message.description": "Meddelande som skickas när någon skapade en delning med din länk för omvänd delning. {shareUrl} kommer att ersättas med skaparens namn och delningens URL.",
|
||||||
"admin.config.email.reset-password-subject": "Återställ lösenord ämne",
|
"admin.config.email.reset-password-subject": "Återställ lösenord ämne",
|
||||||
"admin.config.email.reset-password-subject.description": "Ämne för det skickade e-postmeddelandet när en användare begär en återställning av lösenordet.",
|
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||||
"admin.config.email.reset-password-message": "Återställ lösenord meddelande",
|
"admin.config.email.reset-password-message": "Återställ lösenord meddelande",
|
||||||
"admin.config.email.reset-password-message.description": "Meddelande som skickas när en användare begär en lösenordsåterställning. {url} kommer att ersättas med länken för lösenordsåterställningen.",
|
"admin.config.email.reset-password-message.description": "Meddelande som skickas när en användare begär en lösenordsåterställning. {url} kommer att ersättas med länken för lösenordsåterställningen.",
|
||||||
"admin.config.email.invite-subject": "Inbjudan ämne",
|
"admin.config.email.invite-subject": "Inbjudan ämne",
|
||||||
"admin.config.email.invite-subject.description": "Ämne för det skickade e-postmeddelandet när en administratör bjuder in en användare.",
|
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||||
"admin.config.email.invite-message": "Inbjudningsmeddelanden",
|
"admin.config.email.invite-message": "Inbjudningsmeddelanden",
|
||||||
"admin.config.email.invite-message.description": "Meddelande som skickas när en administratör bjuder in en användare. {url} kommer att ersättas med inbjudningsadressen och {password} med lösenordet.",
|
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||||
"admin.config.share.allow-registration": "Tillåt registrering",
|
"admin.config.share.allow-registration": "Tillåt registrering",
|
||||||
"admin.config.share.allow-registration.description": "Om registrering är tillåten",
|
"admin.config.share.allow-registration.description": "Om registrering är tillåten",
|
||||||
"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. 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": "Standardlängd på delnings-ID",
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
"admin.config.share.share-id-length.description": "Standardlängd för genererat ID för en delning. Detta värde används också för att generera länkar för omvända delningar. Ett värde under 8 anses inte vara säkert.",
|
"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",
|
"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": "Justera bitstorleken för dina uppladdningar för att balansera effektivitet och tillförlitlighet enligt din internetanslutning. Mindre bitar kan öka framgångsgraden för instabila anslutningar, medan större bitar snabbar upp uppladdningar för stabila anslutningar.",
|
"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": "Öppna automatiskt skapa delningsmodal",
|
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||||
"admin.config.share.auto-open-share-modal.description": "Modalen för att skapa delning visas automatiskt när en användare väljer filer, vilket tar bort behovet av att manuellt klicka på knappen.",
|
"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": "Aktivera",
|
"admin.config.smtp.enabled": "Enable",
|
||||||
"admin.config.smtp.enabled.description": "Om SMTP skall vara aktiverat. Ange endast detta som sant om du angav adress, port, e-post, användare och lösenord för din SMTP-server.",
|
"admin.config.smtp.enabled.description": "Om SMTP skall vara aktiverat. Ange endast detta som sant om du angav adress, port, e-post, användare och lösenord för din SMTP-server.",
|
||||||
"admin.config.smtp.host": "Adress",
|
"admin.config.smtp.host": "Adress",
|
||||||
"admin.config.smtp.host.description": "Adress för SMTP-servern",
|
"admin.config.smtp.host.description": "Adress för SMTP-servern",
|
||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "Port",
|
||||||
"admin.config.smtp.port.description": "Port för SMTP-servern",
|
"admin.config.smtp.port.description": "Port för SMTP-servern",
|
||||||
"admin.config.smtp.email": "E-post",
|
"admin.config.smtp.email": "E-post",
|
||||||
"admin.config.smtp.email.description": "E-postadress som e-postmeddelanden skickas från",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "Användarnamn",
|
"admin.config.smtp.username": "Användarnamn",
|
||||||
"admin.config.smtp.username.description": "Användarnamn för SMTP-servern",
|
"admin.config.smtp.username.description": "Användarnamn för SMTP-servern",
|
||||||
"admin.config.smtp.password": "Lösenord",
|
"admin.config.smtp.password": "Lösenord",
|
||||||
"admin.config.smtp.password.description": "Lösenord för SMTP-servern",
|
"admin.config.smtp.password.description": "Lösenord för SMTP-servern",
|
||||||
"admin.config.smtp.button.test": "Skicka testmeddelande",
|
"admin.config.smtp.button.test": "Skicka testmeddelande",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Lita på obehöriga SMTP-servercertifikat",
|
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Sätt endast detta till sant om du behöver lita på självsignerade certifikat.",
|
"admin.config.smtp.allow-unauthorized-certificates.description": "Only set this to true if you need to trust self signed certificates.",
|
||||||
"admin.config.oauth.allow-registration": "Tillåt registrering",
|
"admin.config.oauth.allow-registration": "Tillåt registrering",
|
||||||
"admin.config.oauth.allow-registration.description": "Tillåt användare att registrera sig via social inloggning",
|
"admin.config.oauth.allow-registration.description": "Tillåt användare att registrera sig via social inloggning",
|
||||||
"admin.config.oauth.ignore-totp": "Ignorera TOTP",
|
"admin.config.oauth.ignore-totp": "Ignorera TOTP",
|
||||||
"admin.config.oauth.ignore-totp.description": "Om du vill ignorera TOTP när användaren använder social inloggning",
|
"admin.config.oauth.ignore-totp.description": "Om du vill ignorera TOTP när användaren använder social inloggning",
|
||||||
"admin.config.oauth.disable-password": "Inaktivera lösenordsinloggning",
|
"admin.config.oauth.disable-password": "Disable password login",
|
||||||
"admin.config.oauth.disable-password.description": "Om du vill inaktivera lösenordsinloggning\nSe till att en OAuth leverantör är korrekt konfigurerad innan du aktiverar denna konfiguration för att undvika att bli låst.",
|
"admin.config.oauth.disable-password.description": "Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "Om GitHub-inloggning är aktiverad",
|
"admin.config.oauth.github-enabled.description": "Om GitHub-inloggning är aktiverad",
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
||||||
@@ -401,8 +400,8 @@ export default {
|
|||||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret för Microsoft OAuth",
|
"admin.config.oauth.microsoft-client-secret.description": "Client secret för Microsoft OAuth",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Om inloggning via Discord är aktiverat",
|
"admin.config.oauth.discord-enabled.description": "Om inloggning via Discord är aktiverat",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord begränsade användare",
|
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||||
"admin.config.oauth.discord-limited-users.description": "Begränsa inloggning till specifika användare genom deras Discord-ID. Lämna det tomt för att inaktivera.",
|
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord begränsa till server ID",
|
"admin.config.oauth.discord-limited-guild": "Discord begränsa till server ID",
|
||||||
"admin.config.oauth.discord-limited-guild.description": "Begränsa inloggning till användare på en specifik server. Lämna tomt för att inaktivera.",
|
"admin.config.oauth.discord-limited-guild.description": "Begränsa inloggning till användare på en specifik server. Lämna tomt för att inaktivera.",
|
||||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||||
@@ -413,72 +412,70 @@ export default {
|
|||||||
"admin.config.oauth.oidc-enabled.description": "Om OpenID-inloggning är aktiverat",
|
"admin.config.oauth.oidc-enabled.description": "Om OpenID-inloggning är aktiverat",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen",
|
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen",
|
||||||
"admin.config.oauth.oidc-sign-out": "Logga ut från OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Om \"Logga ut\" knappen kommer att logga ut från OpenID Connect leverantör",
|
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||||
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
"admin.config.oauth.oidc-scope.description": "Scopes som ska begäras från OpenID Connect-provider.",
|
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamn claim",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamnsanspråk",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.",
|
"admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.",
|
||||||
"admin.config.oauth.oidc-role-path": "Sökväg till roller i OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
"admin.config.oauth.oidc-role-path.description": "Måste vara en giltig JMES-sökväg som refererar till en lista med roller. " + "Hantera åtkomsträttigheter med OpenID Connect-roller rekommenderas endast om ingen annan identitetsleverantör är konfigurerad och lösenord inloggning är inaktiverad. " + "Lämna det tomt om du inte vet vad denna konfiguration är.",
|
"admin.config.oauth.oidc-role-path.description": "Must be a valid JMES path referencing an array of roles. " + "Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " + "Leave it blank if you don't know what this config is.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect-roll för allmän åtkomst",
|
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Roll som krävs för allmän åtkomst. Måste finnas i en användares roller för att de ska kunna logga in. " + "Lämna det tomt om du inte vet vad denna konfiguration är.",
|
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Leave it blank if you don't know what this config is.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect roll för administratörsåtkomst",
|
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Roll som krävs för administratörsåtkomst. Måste finnas i en användares roller för att de ska kunna komma ät administratörspanelen. " + "Lämna det tomt om du inte vet vad denna konfiguration är.",
|
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s roles for them to access the admin panel. " + "Leave it blank if you don't know what this config is.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
||||||
"admin.config.oauth.oidc-client-id.description": "Client ID för OpenID OAuth",
|
"admin.config.oauth.oidc-client-id.description": "Client ID för OpenID OAuth",
|
||||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "Client secret för OpenID OAuth",
|
"admin.config.oauth.oidc-client-secret.description": "Client secret för OpenID OAuth",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Aktivera LDAP",
|
"admin.config.ldap.enabled": "Enable LDAP",
|
||||||
"admin.config.ldap.enabled.description": "Använd LDAP-autentisering för användarinloggning",
|
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
||||||
"admin.config.ldap.url": "Server-URL",
|
"admin.config.ldap.url": "Server URL",
|
||||||
"admin.config.ldap.url.description": "URL till LDAP-servern",
|
"admin.config.ldap.url.description": "URL of the LDAP server",
|
||||||
"admin.config.ldap.bind-dn": "Bind DN",
|
"admin.config.ldap.bind-dn": "Bind DN",
|
||||||
"admin.config.ldap.bind-dn.description": "Standardanvändaren som används för att utföra användarens sökning",
|
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||||
"admin.config.ldap.bind-password": "Bind lösenord",
|
"admin.config.ldap.bind-password": "Bind password",
|
||||||
"admin.config.ldap.bind-password.description": "Lösenord som används för att utföra användarsökningen",
|
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
|
||||||
"admin.config.ldap.search-base": "Användarbas",
|
"admin.config.ldap.search-base": "User base",
|
||||||
"admin.config.ldap.search-base.description": "Bas plats, där användarsökningen kommer att utföras",
|
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
||||||
"admin.config.ldap.search-query": "Användar fråga",
|
"admin.config.ldap.search-query": "User query",
|
||||||
"admin.config.ldap.search-query.description": "Användarfrågan kommer att användas för att söka i 'Användarbasen' för LDAP-användaren. %username% kan användas som platshållare för användaren angiven indata.",
|
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||||
"admin.config.ldap.admin-groups": "Administratörsgrupp",
|
"admin.config.ldap.admin-groups": "Admin group",
|
||||||
"admin.config.ldap.admin-groups.description": "Grupp krävs för administrativ åtkomst.",
|
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
||||||
"admin.config.ldap.field-name-member-of": "Attributnamn för användargrupper",
|
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||||
"admin.config.ldap.field-name-member-of.description": "LDAP-attributnamn för grupperna, en användare är medlem av. Detta används när du söker efter administratörsgruppen.",
|
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||||
"admin.config.ldap.field-name-email": "Attributnamn för e-postadress",
|
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP-attributnamn för e-postadress till en användare.",
|
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||||
"admin.config.notify.success": "Konfigurationen har uppdaterats.",
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
"admin.config.notify.logo-success": "Logotypen har uppdaterats. Det kan ta några minuter att uppdatera på webbplatsen.",
|
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
"admin.config.notify.no-changes": "Inga ändringar att spara.",
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Aktiverad",
|
"admin.config.s3.enabled": "Enabled",
|
||||||
"admin.config.s3.enabled.description": "Om S3 ska användas för att lagra de delade filerna istället för det lokala filsystemet.",
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
"admin.config.s3.endpoint": "Endpoint",
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
"admin.config.s3.endpoint.description": "Webbadressen till S3 bucket.",
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
"admin.config.s3.region": "Region",
|
"admin.config.s3.region": "Region",
|
||||||
"admin.config.s3.region.description": "Regionen av S3 bucket.",
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
"admin.config.s3.bucket-name": "Bucket namn",
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
"admin.config.s3.bucket-name.description": "Namnet på S3 bucket.",
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
"admin.config.s3.bucket-path": "Sökväg",
|
"admin.config.s3.bucket-path": "Path",
|
||||||
"admin.config.s3.bucket-path.description": "Standardsökvägen som ska användas för att lagra filerna i S3 bucket.",
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
"admin.config.s3.key": "Nyckel",
|
"admin.config.s3.key": "Key",
|
||||||
"admin.config.s3.key.description": "Nyckeln som gör att du kan komma åt S3 bucket.",
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
"admin.config.s3.secret": "Hemlighet",
|
"admin.config.s3.secret": "Secret",
|
||||||
"admin.config.s3.secret.description": "Hemligheten som gör att du kan komma åt S3 bucket.",
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
"admin.config.s3.use-checksum": "Använd kontrollsumma",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.s3.use-checksum.description": "Stäng av för backends som inte stöder kontrollsumma (t.ex. B2).",
|
"admin.config.legal.enabled": "Enable legal notices",
|
||||||
"admin.config.category.legal": "Juridisk",
|
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
"admin.config.legal.enabled": "Aktivera juridiska meddelanden",
|
"admin.config.legal.imprint-text": "Imprint text",
|
||||||
"admin.config.legal.enabled.description": "Om en länk till utgivarinformation och integritetspolicy ska visas i sidfoten.",
|
"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-text": "Utgivarinformationstext",
|
"admin.config.legal.imprint-url": "Imprint URL",
|
||||||
"admin.config.legal.imprint-text.description": "Texten som ska visas i utgivarinformationen. Stödjer Markdown. Lämna tomt för att länka till en extern sida för utgivarinformation.",
|
"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.imprint-url": "Länk till utgivarinformation",
|
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
||||||
"admin.config.legal.imprint-url.description": "Om du redan har en sida för utgivarinformation kan du länka till den här istället för att använda textfältet.",
|
"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-text": "Integritetspolicytext",
|
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
||||||
"admin.config.legal.privacy-policy-text.description": "Texten som ska visas i integritetspolicy. Stödjer Markdown. Lämna tomt för att länka till en extern sida för integritetspolicy.",
|
"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.",
|
||||||
"admin.config.legal.privacy-policy-url": "Länk till integritetspolicy",
|
|
||||||
"admin.config.legal.privacy-policy-url.description": "Om du redan har en sida för integritetspolicy kan du länka till den här istället för att använda textfältet.",
|
|
||||||
// 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",
|
||||||
@@ -493,10 +490,10 @@ export default {
|
|||||||
"error.msg.no_user": "Användare som är länkad till detta {0} konto finns inte.",
|
"error.msg.no_user": "Användare som är länkad till detta {0} konto finns inte.",
|
||||||
"error.msg.no_email": "Kan inte hämta e-postadress från detta {0} konto.",
|
"error.msg.no_email": "Kan inte hämta e-postadress från detta {0} konto.",
|
||||||
"error.msg.already_linked": "Detta {0} konto är redan länkat till ett annat konto.",
|
"error.msg.already_linked": "Detta {0} konto är redan länkat till ett annat konto.",
|
||||||
"error.msg.not_linked": "Detta {0} konto har ännu inte länkat till något konto.",
|
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||||
"error.msg.unverified_account": "Detta {0} -konto är overifierat, försök igen efter verifiering.",
|
"error.msg.unverified_account": "Detta {0} -konto är overifierat, försök igen efter verifiering.",
|
||||||
"error.msg.user_not_allowed": "Du är inte tillåten att logga in.",
|
"error.msg.user_not_allowed": "Du är inte tillåten att logga in.",
|
||||||
"error.msg.cannot_get_user_info": "Kan inte hämta din användarinformation från detta {0} konto.",
|
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||||
"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",
|
||||||
@@ -514,9 +511,9 @@ export default {
|
|||||||
"common.button.generate": "Generera",
|
"common.button.generate": "Generera",
|
||||||
"common.button.done": "Klar",
|
"common.button.done": "Klar",
|
||||||
"common.text.link": "Länk",
|
"common.text.link": "Länk",
|
||||||
"common.text.navigate-to-link": "Besök länk",
|
"common.text.navigate-to-link": "Visit link",
|
||||||
"common.text.or": "eller",
|
"common.text.or": "eller",
|
||||||
"common.text.redirecting": "Omdirigerar...",
|
"common.text.redirecting": "Redirecting...",
|
||||||
"common.button.go-back": "Gå tillbaka",
|
"common.button.go-back": "Gå tillbaka",
|
||||||
"common.button.go-home": "Gå hem",
|
"common.button.go-home": "Gå hem",
|
||||||
"common.notify.copied": "Din länk har kopierats till urklipp",
|
"common.notify.copied": "Din länk har kopierats till urklipp",
|
||||||
@@ -527,8 +524,8 @@ export default {
|
|||||||
"common.error.invalid-email": "Ogiltig e-postadress",
|
"common.error.invalid-email": "Ogiltig e-postadress",
|
||||||
"common.error.too-short": "Måste minst vara {length} tecken långt",
|
"common.error.too-short": "Måste minst vara {length} tecken långt",
|
||||||
"common.error.too-long": "Får högst innehålla {length} tecken",
|
"common.error.too-long": "Får högst innehålla {length} tecken",
|
||||||
"common.error.number-too-small": "Måste vara minst {min}",
|
"common.error.number-too-small": "Must be at least {min}",
|
||||||
"common.error.number-too-large": "Måste vara som mest {max}",
|
"common.error.number-too-large": "Must be at most {max}",
|
||||||
"common.error.exact-length": "Måste vara exakt {length} tecken långt",
|
"common.error.exact-length": "Måste vara exakt {length} tecken långt",
|
||||||
"common.error.invalid-number": "Måste vara ett tal",
|
"common.error.invalid-number": "Måste vara ett tal",
|
||||||
"common.error.field-required": "Obligatoriskt fält"
|
"common.error.field-required": "Obligatoriskt fält"
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export default {
|
|||||||
"signin.button.submit": "เข้าสู่ระบบ",
|
"signin.button.submit": "เข้าสู่ระบบ",
|
||||||
"signIn.notify.totp-required.title": "ยืนยันตรวจสอบสิทธิ์สองปัจจัย",
|
"signIn.notify.totp-required.title": "ยืนยันตรวจสอบสิทธิ์สองปัจจัย",
|
||||||
"signIn.notify.totp-required.description": "กรุณาใส่รหัสยืนยันตัวตนสองปัจจัย",
|
"signIn.notify.totp-required.description": "กรุณาใส่รหัสยืนยันตัวตนสองปัจจัย",
|
||||||
"signIn.oauth.or": "หรือ",
|
"signIn.oauth.or": "OR",
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
"signIn.oauth.signInWith": "Sign in with",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
@@ -465,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
@@ -485,7 +483,7 @@ export default {
|
|||||||
"error.title": "Error",
|
"error.title": "Error",
|
||||||
"error.description": "Oops!",
|
"error.description": "Oops!",
|
||||||
"error.button.back": "Go back",
|
"error.button.back": "Go back",
|
||||||
"error.msg.default": "มีบางอย่างผิดพลาด",
|
"error.msg.default": "Something went wrong.",
|
||||||
"error.msg.access_denied": "You canceled the authentication process, please try again.",
|
"error.msg.access_denied": "You canceled the authentication process, please try again.",
|
||||||
"error.msg.expired_token": "The authentication process took too long, please try again.",
|
"error.msg.expired_token": "The authentication process took too long, please try again.",
|
||||||
"error.msg.invalid_token": "Internal Error",
|
"error.msg.invalid_token": "Internal Error",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "{shareId} Paylaşımı",
|
"share.title": "{shareId} Paylaşımı",
|
||||||
"share.description": "Sizinle paylaştıklarımı bir göz atın!",
|
"share.description": "Sizinle paylaştıklarımı bir göz atın!",
|
||||||
"share.fileCount": "{count, plural, =1 {# dosya} other {# dosya}} · {size} (sıkıştırma nedeniyle zip dosyası daha küçük olabilir)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Ziyaretçi limiti aşıldı",
|
"share.error.visitor-limit-exceeded.title": "Ziyaretçi limiti aşıldı",
|
||||||
"share.error.visitor-limit-exceeded.description": "Bu paylaşımın ziyaretçi limiti aşıldı.",
|
"share.error.visitor-limit-exceeded.description": "Bu paylaşımın ziyaretçi limiti aşıldı.",
|
||||||
"share.error.removed.title": "Paylaşım kaldırıldı",
|
"share.error.removed.title": "Paylaşım kaldırıldı",
|
||||||
@@ -466,8 +465,6 @@ export default {
|
|||||||
"admin.config.s3.key.description": "S3 kovasına erişmenizi sağlayan anahtar.",
|
"admin.config.s3.key.description": "S3 kovasına erişmenizi sağlayan anahtar.",
|
||||||
"admin.config.s3.secret": "Gizli",
|
"admin.config.s3.secret": "Gizli",
|
||||||
"admin.config.s3.secret.description": "S3 kovasına erişmenizi sağlayan gizli anahtar.",
|
"admin.config.s3.secret.description": "S3 kovasına erişmenizi sağlayan gizli anahtar.",
|
||||||
"admin.config.s3.use-checksum": "Doğrulama kullan",
|
|
||||||
"admin.config.s3.use-checksum.description": "Doğrulama desteklemeyen arka uçlar için kapatın (ör. B2).",
|
|
||||||
"admin.config.category.legal": "Yasal",
|
"admin.config.category.legal": "Yasal",
|
||||||
"admin.config.legal.enabled": "Yasal Bildirimleri Etkinleştir",
|
"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.enabled.description": "Alt bilgi kısmında künyeye ve gizlilik politikasına bir bağlantı gösterilip gösterilmeyeceğini belirtir.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Завантаження {shareId}",
|
"share.title": "Завантаження {shareId}",
|
||||||
"share.description": "Подивіться, чим я поділився з вами!",
|
"share.description": "Подивіться, чим я поділився з вами!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Перевищено ліміт відвідувачів",
|
"share.error.visitor-limit-exceeded.title": "Перевищено ліміт відвідувачів",
|
||||||
"share.error.visitor-limit-exceeded.description": "Перевищено ліміт відвідувачів.",
|
"share.error.visitor-limit-exceeded.description": "Перевищено ліміт відвідувачів.",
|
||||||
"share.error.removed.title": "Завантаження видалено",
|
"share.error.removed.title": "Завантаження видалено",
|
||||||
@@ -303,8 +302,8 @@ export default {
|
|||||||
"privacy.title": "Політика конфіденційності",
|
"privacy.title": "Політика конфіденційності",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.config-file-warning.title": "Файл конфігурації присутній",
|
"admin.config.config-file-warning.title": "Configuration file present",
|
||||||
"admin.config.config-file-warning.description": "Оскільки у вас налаштовано Pingvin Share за допомогою конфігураційного файлу, ви не можете змінювати конфігурацію через інтерфейс користувача.",
|
"admin.config.config-file-warning.description": "As you have a configured Pingvin Share with a configuration file, you can't change the configuration through the UI.",
|
||||||
"admin.config.title": "Конфігурація",
|
"admin.config.title": "Конфігурація",
|
||||||
"admin.config.category.general": "Загальне",
|
"admin.config.category.general": "Загальне",
|
||||||
"admin.config.category.share": "Завантаження",
|
"admin.config.category.share": "Завантаження",
|
||||||
@@ -320,7 +319,7 @@ export default {
|
|||||||
"admin.config.general.show-home-page": "Показувати домашню сторінку",
|
"admin.config.general.show-home-page": "Показувати домашню сторінку",
|
||||||
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
|
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
|
||||||
"admin.config.general.session-duration": "Тривалість сеансу",
|
"admin.config.general.session-duration": "Тривалість сеансу",
|
||||||
"admin.config.general.session-duration.description": "Час, після якого користувач повинен увійти в систему знову (за замовчуванням: 3 місяці).",
|
"admin.config.general.session-duration.description": "Time after which a user must log in again (default: 3 months).",
|
||||||
"admin.config.general.logo": "Логотип",
|
"admin.config.general.logo": "Логотип",
|
||||||
"admin.config.general.logo.description": "Змініть свій логотип, завантаживши нове зображення. Зображення має бути PNG і повинно мати формат 1:1.",
|
"admin.config.general.logo.description": "Змініть свій логотип, завантаживши нове зображення. Зображення має бути PNG і повинно мати формат 1:1.",
|
||||||
"admin.config.general.logo.placeholder": "Виберіть зображення",
|
"admin.config.general.logo.placeholder": "Виберіть зображення",
|
||||||
@@ -365,7 +364,7 @@ export default {
|
|||||||
"admin.config.smtp.port": "Порт",
|
"admin.config.smtp.port": "Порт",
|
||||||
"admin.config.smtp.port.description": "Порт SMTP сервера",
|
"admin.config.smtp.port.description": "Порт SMTP сервера",
|
||||||
"admin.config.smtp.email": "Електронна пошта",
|
"admin.config.smtp.email": "Електронна пошта",
|
||||||
"admin.config.smtp.email.description": "Адреса ел. пошти, з якої надсилаються листи",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "Логін",
|
"admin.config.smtp.username": "Логін",
|
||||||
"admin.config.smtp.username.description": "Ім'я користувача SMTP-сервера",
|
"admin.config.smtp.username.description": "Ім'я користувача SMTP-сервера",
|
||||||
"admin.config.smtp.password": "Пароль",
|
"admin.config.smtp.password": "Пароль",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Використовувати контрольну суму",
|
|
||||||
"admin.config.s3.use-checksum.description": "Вимкніть для непідтримуваних контрольних сум (напр. B2).",
|
|
||||||
"admin.config.category.legal": "Юридична інформація",
|
"admin.config.category.legal": "Юридична інформація",
|
||||||
"admin.config.legal.enabled": "Увімкнути правові сповіщення",
|
"admin.config.legal.enabled": "Увімкнути правові сповіщення",
|
||||||
"admin.config.legal.enabled.description": "Чи відображати посилання на вихідні дані та політику конфіденційності у нижньому колонтитулі.",
|
"admin.config.legal.enabled.description": "Чи відображати посилання на вихідні дані та політику конфіденційності у нижньому колонтитулі.",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Share {shareId}",
|
"share.title": "Share {shareId}",
|
||||||
"share.description": "Look what I've shared with you!",
|
"share.description": "Look what I've shared with you!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
||||||
"share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
|
"share.error.visitor-limit-exceeded.description": "The visitor limit from this share has been exceeded.",
|
||||||
"share.error.removed.title": "Share removed",
|
"share.error.removed.title": "Share removed",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ export default {
|
|||||||
"account.shares.table.createdAt": "创建于",
|
"account.shares.table.createdAt": "创建于",
|
||||||
"account.shares.table.size": "文件大小",
|
"account.shares.table.size": "文件大小",
|
||||||
"account.shares.table.password-protected": "密码保护",
|
"account.shares.table.password-protected": "密码保护",
|
||||||
"account.shares.table.visitor-count": "{count}/{max}",
|
"account.shares.table.visitor-count": "{count} of {max}",
|
||||||
"account.shares.table.expiry-never": "永不",
|
"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": "共享链接",
|
||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "共享 {shareId}",
|
"share.title": "共享 {shareId}",
|
||||||
"share.description": "瞧瞧我给你共享了些什么!",
|
"share.description": "瞧瞧我给你共享了些什么!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "访问次数达到上限",
|
"share.error.visitor-limit-exceeded.title": "访问次数达到上限",
|
||||||
"share.error.visitor-limit-exceeded.description": "访问次数达到上限",
|
"share.error.visitor-limit-exceeded.description": "访问次数达到上限",
|
||||||
"share.error.removed.title": "共享已删除",
|
"share.error.removed.title": "共享已删除",
|
||||||
@@ -315,7 +314,7 @@ export default {
|
|||||||
"admin.config.general.app-name.description": "自定义 App 的名称",
|
"admin.config.general.app-name.description": "自定义 App 的名称",
|
||||||
"admin.config.general.app-url": "App 的地址",
|
"admin.config.general.app-url": "App 的地址",
|
||||||
"admin.config.general.app-url.description": "Pingvin Share 的 URL 地址",
|
"admin.config.general.app-url.description": "Pingvin Share 的 URL 地址",
|
||||||
"admin.config.general.secure-cookies": "安全 Cookie",
|
"admin.config.general.secure-cookies": "Secure cookies",
|
||||||
"admin.config.general.secure-cookies.description": "是否为 cookie 设置安全标志。如果启用,当通过 HTTP 访问时站点将无法运行。",
|
"admin.config.general.secure-cookies.description": "是否为 cookie 设置安全标志。如果启用,当通过 HTTP 访问时站点将无法运行。",
|
||||||
"admin.config.general.show-home-page": "显示首页",
|
"admin.config.general.show-home-page": "显示首页",
|
||||||
"admin.config.general.show-home-page.description": "是否显示首页",
|
"admin.config.general.show-home-page.description": "是否显示首页",
|
||||||
@@ -365,7 +364,7 @@ export default {
|
|||||||
"admin.config.smtp.port": "端口",
|
"admin.config.smtp.port": "端口",
|
||||||
"admin.config.smtp.port.description": "SMTP 主机端口",
|
"admin.config.smtp.port.description": "SMTP 主机端口",
|
||||||
"admin.config.smtp.email": "发送邮箱",
|
"admin.config.smtp.email": "发送邮箱",
|
||||||
"admin.config.smtp.email.description": "发件人电子邮件地址",
|
"admin.config.smtp.email.description": "Email address from which the emails get sent",
|
||||||
"admin.config.smtp.username": "用户名",
|
"admin.config.smtp.username": "用户名",
|
||||||
"admin.config.smtp.username.description": "SMTP 主机用户名",
|
"admin.config.smtp.username.description": "SMTP 主机用户名",
|
||||||
"admin.config.smtp.password": "密码",
|
"admin.config.smtp.password": "密码",
|
||||||
@@ -401,7 +400,7 @@ export default {
|
|||||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth App 的 Client secret",
|
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth App 的 Client secret",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "是否启用 Discord 账号登录",
|
"admin.config.oauth.discord-enabled.description": "是否启用 Discord 账号登录",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord 受限用户",
|
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||||
"admin.config.oauth.discord-limited-users.description": "使用Discord ID限制登录到特定的用户。留空以禁用。",
|
"admin.config.oauth.discord-limited-users.description": "使用Discord ID限制登录到特定的用户。留空以禁用。",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord 的 limited server ID",
|
"admin.config.oauth.discord-limited-guild": "Discord 的 limited server ID",
|
||||||
"admin.config.oauth.discord-limited-guild.description": "限制特定服务器中的用户登录。留空来禁用。",
|
"admin.config.oauth.discord-limited-guild.description": "限制特定服务器中的用户登录。留空来禁用。",
|
||||||
@@ -466,8 +465,6 @@ export default {
|
|||||||
"admin.config.s3.key.description": "允许您访问 S3 桶的密钥。",
|
"admin.config.s3.key.description": "允许您访问 S3 桶的密钥。",
|
||||||
"admin.config.s3.secret": "Secret",
|
"admin.config.s3.secret": "Secret",
|
||||||
"admin.config.s3.secret.description": "允许您访问 S3 桶的密钥。",
|
"admin.config.s3.secret.description": "允许您访问 S3 桶的密钥。",
|
||||||
"admin.config.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "合规",
|
"admin.config.category.legal": "合规",
|
||||||
"admin.config.legal.enabled": "启用合规提醒",
|
"admin.config.legal.enabled": "启用合规提醒",
|
||||||
"admin.config.legal.enabled.description": "是否在页脚中显示版权信息和隐私政策。",
|
"admin.config.legal.enabled.description": "是否在页脚中显示版权信息和隐私政策。",
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ export default {
|
|||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "分享 {shareId}",
|
"share.title": "分享 {shareId}",
|
||||||
"share.description": "瞧瞧我給您分享了些什麽!",
|
"share.description": "瞧瞧我給您分享了些什麽!",
|
||||||
"share.fileCount": "{count, plural, =1 {# file} other {# files}} · {size} (zip file may be smaller due to compression)",
|
|
||||||
"share.error.visitor-limit-exceeded.title": "查看次數達到上限",
|
"share.error.visitor-limit-exceeded.title": "查看次數達到上限",
|
||||||
"share.error.visitor-limit-exceeded.description": "查看次數達到上限",
|
"share.error.visitor-limit-exceeded.description": "查看次數達到上限",
|
||||||
"share.error.removed.title": "分享已刪除",
|
"share.error.removed.title": "分享已刪除",
|
||||||
@@ -466,8 +465,6 @@ 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.s3.use-checksum": "Use checksum",
|
|
||||||
"admin.config.s3.use-checksum.description": "Turn off for backends that do not support checksum (e.g. B2).",
|
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"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.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import { Box, Group, Text, Title } from "@mantine/core";
|
|||||||
import { useModals } from "@mantine/modals";
|
import { useModals } from "@mantine/modals";
|
||||||
import { GetServerSidePropsContext } from "next";
|
import { GetServerSidePropsContext } from "next";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { FormattedMessage } from "react-intl";
|
|
||||||
import Meta from "../../../components/Meta";
|
import Meta from "../../../components/Meta";
|
||||||
import DownloadAllButton from "../../../components/share/DownloadAllButton";
|
import DownloadAllButton from "../../../components/share/DownloadAllButton";
|
||||||
import FileList from "../../../components/share/FileList";
|
import FileList from "../../../components/share/FileList";
|
||||||
@@ -12,7 +11,6 @@ import useTranslate from "../../../hooks/useTranslate.hook";
|
|||||||
import shareService from "../../../services/share.service";
|
import shareService from "../../../services/share.service";
|
||||||
import { Share as ShareType } from "../../../types/share.type";
|
import { Share as ShareType } from "../../../types/share.type";
|
||||||
import toast from "../../../utils/toast.util";
|
import toast from "../../../utils/toast.util";
|
||||||
import { byteToHumanSizeString } from "../../../utils/fileSize.util";
|
|
||||||
|
|
||||||
export function getServerSideProps(context: GetServerSidePropsContext) {
|
export function getServerSideProps(context: GetServerSidePropsContext) {
|
||||||
return {
|
return {
|
||||||
@@ -109,25 +107,7 @@ const Share = ({ shareId }: { shareId: string }) => {
|
|||||||
<Box style={{ maxWidth: "70%" }}>
|
<Box style={{ maxWidth: "70%" }}>
|
||||||
<Title order={3}>{share?.name || share?.id}</Title>
|
<Title order={3}>{share?.name || share?.id}</Title>
|
||||||
<Text size="sm">{share?.description}</Text>
|
<Text size="sm">{share?.description}</Text>
|
||||||
{share?.files?.length > 0 && (
|
|
||||||
<Text size="sm" color="dimmed" mt={5}>
|
|
||||||
<FormattedMessage
|
|
||||||
id="share.fileCount"
|
|
||||||
values={{
|
|
||||||
count: share?.files?.length || 0,
|
|
||||||
size: byteToHumanSizeString(
|
|
||||||
share?.files?.reduce(
|
|
||||||
(total: number, file: { size: string }) =>
|
|
||||||
total + parseInt(file.size),
|
|
||||||
0,
|
|
||||||
) || 0,
|
|
||||||
),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Text>
|
|
||||||
)}
|
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
{share?.files.length > 1 && <DownloadAllButton shareId={shareId} />}
|
{share?.files.length > 1 && <DownloadAllButton shareId={shareId} />}
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import {
|
import {
|
||||||
SiDiscord,
|
FaDiscord,
|
||||||
SiGithub,
|
FaGithub,
|
||||||
SiGoogle,
|
FaGoogle,
|
||||||
SiMicrosoft,
|
FaMicrosoft,
|
||||||
SiOpenid,
|
FaOpenid,
|
||||||
} from "react-icons/si";
|
} from "react-icons/fa6";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import api from "../services/api.service";
|
import api from "../services/api.service";
|
||||||
|
|
||||||
@@ -14,11 +14,11 @@ const getOAuthUrl = (appUrl: string, provider: string) => {
|
|||||||
|
|
||||||
const getOAuthIcon = (provider: string) => {
|
const getOAuthIcon = (provider: string) => {
|
||||||
return {
|
return {
|
||||||
google: <SiGoogle />,
|
google: <FaGoogle />,
|
||||||
microsoft: <SiMicrosoft />,
|
microsoft: <FaMicrosoft />,
|
||||||
github: <SiGithub />,
|
github: <FaGithub />,
|
||||||
discord: <SiDiscord />,
|
discord: <FaDiscord />,
|
||||||
oidc: <SiOpenid />,
|
oidc: <FaOpenid />,
|
||||||
}[provider];
|
}[provider];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.13.0",
|
"version": "1.10.4",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.13.0",
|
"version": "1.10.4",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"conventional-changelog-cli": "^3.0.0"
|
"conventional-changelog-cli": "^3.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.13.0",
|
"version": "1.10.4",
|
||||||
"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",
|
||||||
@@ -11,9 +11,5 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"conventional-changelog-cli": "^3.0.0"
|
"conventional-changelog-cli": "^3.0.0"
|
||||||
},
|
|
||||||
"prettier": {
|
|
||||||
"singleQuote": false,
|
|
||||||
"trailingComma": "all"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,16 +3,11 @@
|
|||||||
# Copy default logo to the frontend public folder if it doesn't exist
|
# Copy default logo to the frontend public folder if it doesn't exist
|
||||||
cp -rn /tmp/img/* /opt/app/frontend/public/img
|
cp -rn /tmp/img/* /opt/app/frontend/public/img
|
||||||
|
|
||||||
if [ "$CADDY_DISABLED" != "true" ]; then
|
# Start Caddy
|
||||||
# Start Caddy
|
if [ "$TRUST_PROXY" = "true" ]; then
|
||||||
echo "Starting Caddy..."
|
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile.trust-proxy &
|
||||||
if [ "$TRUST_PROXY" = "true" ]; then
|
|
||||||
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile.trust-proxy &
|
|
||||||
else
|
|
||||||
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile &
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "Caddy is disabled. Skipping..."
|
caddy start --adapter caddyfile --config /opt/app/reverse-proxy/Caddyfile &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run the frontend server
|
# Run the frontend server
|
||||||
|
|||||||
Reference in New Issue
Block a user