Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b642f419b | ||
|
|
75cd3895d9 | ||
|
|
d3b38b27d1 | ||
|
|
398a5532dc | ||
|
|
70b577f5ac | ||
|
|
0d71146a2c | ||
|
|
a53f0711fb | ||
|
|
8a7db6bf97 | ||
|
|
f78777b284 | ||
|
|
3a534c7512 | ||
|
|
2b7d3c0a8a | ||
|
|
7fea358410 | ||
|
|
f65c1ef7d8 | ||
|
|
9e4496dc03 | ||
|
|
235772a54b | ||
|
|
784e80db5b | ||
|
|
0442ece9ba | ||
|
|
7f9f8b6fe7 | ||
|
|
bf1b2633c8 | ||
|
|
b3ea96c191 |
23
.github/workflows/build-docker-image.yml
vendored
23
.github/workflows/build-docker-image.yml
vendored
@@ -11,24 +11,43 @@ jobs:
|
|||||||
- name: checkout code
|
- name: checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Docker metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
ghcr.io/${{ github.repository }}
|
||||||
|
${{ github.repository }}
|
||||||
|
tags: |
|
||||||
|
type=semver,pattern={{version}},prefix=v
|
||||||
|
type=semver,pattern={{major}}.{{minor}},prefix=v
|
||||||
|
type=semver,pattern={{major}},prefix=v
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
- name: Login to Docker registry
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: stonith404/pingvin-share:latest,stonith404/pingvin-share:${{ github.ref_name }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
|||||||
22
CHANGELOG.md
22
CHANGELOG.md
@@ -1,3 +1,25 @@
|
|||||||
|
## [1.9.0](https://github.com/stonith404/pingvin-share/compare/v1.8.2...v1.9.0) (2025-02-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* ability to add email to recipients list by clicking enter ([#760](https://github.com/stonith404/pingvin-share/issues/760)) ([70b577f](https://github.com/stonith404/pingvin-share/commit/70b577f5ac8385cfc6a22ffee4c7e317e3cc6403))
|
||||||
|
|
||||||
|
## [1.8.2](https://github.com/stonith404/pingvin-share/compare/v1.8.1...v1.8.2) (2025-01-21)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* normal share gets attached to previously visited reverse share ([3a534c7](https://github.com/stonith404/pingvin-share/commit/3a534c7512ef82f3fa982f80e364f53c957306a0))
|
||||||
|
* wrong TOTP validation for password ([2b7d3c0](https://github.com/stonith404/pingvin-share/commit/2b7d3c0a8a3e527fc1f7f86795731d5ac77eda49))
|
||||||
|
|
||||||
|
## [1.8.1](https://github.com/stonith404/pingvin-share/compare/v1.8.0...v1.8.1) (2025-01-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* wrong validation for expiration in reverse share modal ([b3ea96c](https://github.com/stonith404/pingvin-share/commit/b3ea96c1916980863fc6903c64cd2a7b32d66cfb))
|
||||||
|
|
||||||
## [1.8.0](https://github.com/stonith404/pingvin-share/compare/v1.7.2...v1.8.0) (2025-01-02)
|
## [1.8.0](https://github.com/stonith404/pingvin-share/compare/v1.7.2...v1.8.0) (2025-01-02)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
4
backend/package-lock.json
generated
4
backend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-backend",
|
"name": "pingvin-share-backend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share-backend",
|
"name": "pingvin-share-backend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.679.0",
|
"@aws-sdk/client-s3": "^3.679.0",
|
||||||
"@nestjs/cache-manager": "^2.2.2",
|
"@nestjs/cache-manager": "^2.2.2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-backend",
|
"name": "pingvin-share-backend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"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",
|
||||||
|
|||||||
@@ -345,7 +345,9 @@ export class AuthService {
|
|||||||
if (refreshToken) {
|
if (refreshToken) {
|
||||||
const now = moment();
|
const now = moment();
|
||||||
const sessionDuration = this.config.get("general.sessionDuration");
|
const sessionDuration = this.config.get("general.sessionDuration");
|
||||||
const maxAge = moment(now).add(sessionDuration.value, sessionDuration.unit).diff(now);
|
const maxAge = moment(now)
|
||||||
|
.add(sessionDuration.value, sessionDuration.unit)
|
||||||
|
.diff(now);
|
||||||
response.cookie("refresh_token", refreshToken, {
|
response.cookie("refresh_token", refreshToken, {
|
||||||
path: "/api/auth/token",
|
path: "/api/auth/token",
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { PickType } from "@nestjs/swagger";
|
import { IsString } from "class-validator";
|
||||||
import { UserDTO } from "src/user/dto/user.dto";
|
|
||||||
|
|
||||||
export class EnableTotpDTO extends PickType(UserDTO, ["password"] as const) {}
|
export class EnableTotpDTO {
|
||||||
|
@IsString()
|
||||||
|
password: string;
|
||||||
|
}
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ export class ConfigService extends EventEmitter {
|
|||||||
if (configVariable.type == "boolean") return value == "true";
|
if (configVariable.type == "boolean") return value == "true";
|
||||||
if (configVariable.type == "string" || configVariable.type == "text")
|
if (configVariable.type == "string" || configVariable.type == "text")
|
||||||
return value;
|
return value;
|
||||||
if (configVariable.type == "timespan")
|
if (configVariable.type == "timespan") return stringToTimespan(value);
|
||||||
return stringToTimespan(value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getByCategory(category: string) {
|
async getByCategory(category: string) {
|
||||||
|
|||||||
@@ -26,10 +26,11 @@ export class ReverseShareService {
|
|||||||
.toDate();
|
.toDate();
|
||||||
|
|
||||||
const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration);
|
const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration);
|
||||||
|
const maxExpiration = this.config.get("share.maxExpiration");
|
||||||
if (
|
if (
|
||||||
this.config.get("share.maxExpiration") !== 0 &&
|
maxExpiration.value !== 0 &&
|
||||||
parsedExpiration >
|
parsedExpiration >
|
||||||
moment().add(this.config.get("share.maxExpiration"), "hours").toDate()
|
moment().add(maxExpiration.value, maxExpiration.unit).toDate()
|
||||||
) {
|
) {
|
||||||
throw new BadRequestException(
|
throw new BadRequestException(
|
||||||
"Expiration date exceeds maximum expiration date",
|
"Expiration date exceeds maximum expiration date",
|
||||||
|
|||||||
@@ -61,9 +61,7 @@ export class ShareService {
|
|||||||
maxExpiration.value !== 0 &&
|
maxExpiration.value !== 0 &&
|
||||||
(expiresNever ||
|
(expiresNever ||
|
||||||
parsedExpiration >
|
parsedExpiration >
|
||||||
moment()
|
moment().add(maxExpiration.value, maxExpiration.unit).toDate())
|
||||||
.add(maxExpiration.value, maxExpiration.unit)
|
|
||||||
.toDate())
|
|
||||||
) {
|
) {
|
||||||
throw new BadRequestException(
|
throw new BadRequestException(
|
||||||
"Expiration date exceeds maximum expiration date",
|
"Expiration date exceeds maximum expiration date",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
pingvin-share:
|
pingvin-share:
|
||||||
image: stonith404/pingvin-share
|
image: stonith404/pingvin-share # or ghcr.io/stonith404/pingvin-share
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 3000:3000
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Before you submit the pull request for review please ensure that
|
|||||||
When `TYPE` can be:
|
When `TYPE` can be:
|
||||||
|
|
||||||
- **feat** - is a new feature
|
- **feat** - is a new feature
|
||||||
- **doc** - documentation only changes
|
- **docs** - documentation only changes
|
||||||
- **fix** - a bug fix
|
- **fix** - a bug fix
|
||||||
- **refactor** - code change that neither fixes a bug nor adds a feature
|
- **refactor** - code change that neither fixes a bug nor adds a feature
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ id: integrations
|
|||||||
|
|
||||||
ClamAV is used to scan shares for malicious files and remove them if found.
|
ClamAV is used to scan shares for malicious files and remove them if found.
|
||||||
|
|
||||||
Please note that ClamAV needs a lot of [ressources](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements).
|
Please note that ClamAV needs a lot of [resources](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements).
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
|
|||||||
@@ -46,4 +46,4 @@ docker compose up -d
|
|||||||
npm run build
|
npm run build
|
||||||
pm2 restart pingvin-share-frontend
|
pm2 restart pingvin-share-frontend
|
||||||
```
|
```
|
||||||
Note that environemnt variables are not picked up when using pm2 restart, if you actually want to change configs, you need to run ````pm2 --update-env restart````
|
Note that environment variables are not picked up when using pm2 restart, if you actually want to change configs, you need to run ````pm2 --update-env restart````
|
||||||
|
|||||||
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "^11.13.3",
|
"@emotion/react": "^11.13.3",
|
||||||
"@emotion/server": "^11.11.0",
|
"@emotion/server": "^11.11.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share-frontend",
|
"name": "pingvin-share-frontend",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
|
|||||||
@@ -96,7 +96,9 @@ const AdminConfigInput = ({
|
|||||||
{configVariable.type == "timespan" && (
|
{configVariable.type == "timespan" && (
|
||||||
<TimespanInput
|
<TimespanInput
|
||||||
value={stringToTimespan(configVariable.value)}
|
value={stringToTimespan(configVariable.value)}
|
||||||
onChange={(timespan) => onValueChange(configVariable, timespanToString(timespan))}
|
onChange={(timespan) =>
|
||||||
|
onValueChange(configVariable, timespanToString(timespan))
|
||||||
|
}
|
||||||
w={201}
|
w={201}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -3,81 +3,86 @@ import { Timespan } from "../../types/timespan.type";
|
|||||||
import { NativeSelect, NumberInput } from "@mantine/core";
|
import { NativeSelect, NumberInput } from "@mantine/core";
|
||||||
import useTranslate from "../../hooks/useTranslate.hook";
|
import useTranslate from "../../hooks/useTranslate.hook";
|
||||||
|
|
||||||
const TimespanInput = ({ label, value, onChange, ...restProps }: {
|
const TimespanInput = ({
|
||||||
label?: string,
|
label,
|
||||||
value: Timespan,
|
value,
|
||||||
onChange: (timespan: Timespan) => void,
|
onChange,
|
||||||
[key: string]: any,
|
...restProps
|
||||||
|
}: {
|
||||||
|
label?: string;
|
||||||
|
value: Timespan;
|
||||||
|
onChange: (timespan: Timespan) => void;
|
||||||
|
[key: string]: any;
|
||||||
}) => {
|
}) => {
|
||||||
const [unit, setUnit] = useState(value.unit);
|
const [unit, setUnit] = useState(value.unit);
|
||||||
const [inputValue, setInputValue] = useState(value.value);
|
const [inputValue, setInputValue] = useState(value.value);
|
||||||
const t = useTranslate();
|
const t = useTranslate();
|
||||||
|
|
||||||
const version = inputValue == 1 ? "singular" : "plural";
|
|
||||||
const unitSelect = (
|
|
||||||
<NativeSelect
|
|
||||||
data={[
|
|
||||||
{
|
|
||||||
value: "minutes",
|
|
||||||
label: t(`upload.modal.expires.minute-${version}`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: "hours",
|
|
||||||
label: t(`upload.modal.expires.hour-${version}`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: "days",
|
|
||||||
label: t(`upload.modal.expires.day-${version}`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: "weeks",
|
|
||||||
label: t(`upload.modal.expires.week-${version}`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: "months",
|
|
||||||
label: t(`upload.modal.expires.month-${version}`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: "years",
|
|
||||||
label: t(`upload.modal.expires.year-${version}`),
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
value={unit}
|
|
||||||
rightSectionWidth={28}
|
|
||||||
styles={{
|
|
||||||
input: {
|
|
||||||
fontWeight: 500,
|
|
||||||
borderTopLeftRadius: 0,
|
|
||||||
borderBottomLeftRadius: 0,
|
|
||||||
width: 120,
|
|
||||||
marginRight: -2,
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
onChange={event => {
|
|
||||||
const unit = event.currentTarget.value as Timespan["unit"];
|
|
||||||
setUnit(unit);
|
|
||||||
onChange({ value: inputValue, unit });
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
const version = inputValue == 1 ? "singular" : "plural";
|
||||||
<NumberInput
|
const unitSelect = (
|
||||||
label={label}
|
<NativeSelect
|
||||||
value={inputValue}
|
data={[
|
||||||
min={0}
|
{
|
||||||
max={999999}
|
value: "minutes",
|
||||||
precision={0}
|
label: t(`upload.modal.expires.minute-${version}`),
|
||||||
rightSection={unitSelect}
|
},
|
||||||
rightSectionWidth={120}
|
{
|
||||||
onChange={value => {
|
value: "hours",
|
||||||
const inputVal = value || 0;
|
label: t(`upload.modal.expires.hour-${version}`),
|
||||||
setInputValue(inputVal);
|
},
|
||||||
onChange({ value: inputVal, unit });
|
{
|
||||||
}}
|
value: "days",
|
||||||
{...restProps}
|
label: t(`upload.modal.expires.day-${version}`),
|
||||||
/>
|
},
|
||||||
);
|
{
|
||||||
|
value: "weeks",
|
||||||
|
label: t(`upload.modal.expires.week-${version}`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "months",
|
||||||
|
label: t(`upload.modal.expires.month-${version}`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "years",
|
||||||
|
label: t(`upload.modal.expires.year-${version}`),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
value={unit}
|
||||||
|
rightSectionWidth={28}
|
||||||
|
styles={{
|
||||||
|
input: {
|
||||||
|
fontWeight: 500,
|
||||||
|
borderTopLeftRadius: 0,
|
||||||
|
borderBottomLeftRadius: 0,
|
||||||
|
width: 120,
|
||||||
|
marginRight: -2,
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
onChange={(event) => {
|
||||||
|
const unit = event.currentTarget.value as Timespan["unit"];
|
||||||
|
setUnit(unit);
|
||||||
|
onChange({ value: inputValue, unit });
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<NumberInput
|
||||||
|
label={label}
|
||||||
|
value={inputValue}
|
||||||
|
min={0}
|
||||||
|
max={999999}
|
||||||
|
precision={0}
|
||||||
|
rightSection={unitSelect}
|
||||||
|
rightSectionWidth={120}
|
||||||
|
onChange={(value) => {
|
||||||
|
const inputVal = value || 0;
|
||||||
|
setInputValue(inputVal);
|
||||||
|
onChange({ value: inputVal, unit });
|
||||||
|
}}
|
||||||
|
{...restProps}
|
||||||
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default TimespanInput;
|
export default TimespanInput;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import useTranslate, {
|
|||||||
translateOutsideContext,
|
translateOutsideContext,
|
||||||
} from "../../../hooks/useTranslate.hook";
|
} from "../../../hooks/useTranslate.hook";
|
||||||
import shareService from "../../../services/share.service";
|
import shareService from "../../../services/share.service";
|
||||||
|
import { Timespan } from "../../../types/timespan.type";
|
||||||
import { getExpirationPreview } from "../../../utils/date.util";
|
import { getExpirationPreview } from "../../../utils/date.util";
|
||||||
import toast from "../../../utils/toast.util";
|
import toast from "../../../utils/toast.util";
|
||||||
import FileSizeInput from "../../core/FileSizeInput";
|
import FileSizeInput from "../../core/FileSizeInput";
|
||||||
@@ -28,7 +29,7 @@ import showCompletedReverseShareModal from "./showCompletedReverseShareModal";
|
|||||||
const showCreateReverseShareModal = (
|
const showCreateReverseShareModal = (
|
||||||
modals: ModalsContextProps,
|
modals: ModalsContextProps,
|
||||||
showSendEmailNotificationOption: boolean,
|
showSendEmailNotificationOption: boolean,
|
||||||
maxExpirationInHours: number,
|
maxExpiration: Timespan,
|
||||||
getReverseShares: () => void,
|
getReverseShares: () => void,
|
||||||
) => {
|
) => {
|
||||||
const t = translateOutsideContext();
|
const t = translateOutsideContext();
|
||||||
@@ -38,7 +39,7 @@ const showCreateReverseShareModal = (
|
|||||||
<Body
|
<Body
|
||||||
showSendEmailNotificationOption={showSendEmailNotificationOption}
|
showSendEmailNotificationOption={showSendEmailNotificationOption}
|
||||||
getReverseShares={getReverseShares}
|
getReverseShares={getReverseShares}
|
||||||
maxExpirationInHours={maxExpirationInHours}
|
maxExpiration={maxExpiration}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
@@ -47,11 +48,11 @@ const showCreateReverseShareModal = (
|
|||||||
const Body = ({
|
const Body = ({
|
||||||
getReverseShares,
|
getReverseShares,
|
||||||
showSendEmailNotificationOption,
|
showSendEmailNotificationOption,
|
||||||
maxExpirationInHours,
|
maxExpiration,
|
||||||
}: {
|
}: {
|
||||||
getReverseShares: () => void;
|
getReverseShares: () => void;
|
||||||
showSendEmailNotificationOption: boolean;
|
showSendEmailNotificationOption: boolean;
|
||||||
maxExpirationInHours: number;
|
maxExpiration: Timespan;
|
||||||
}) => {
|
}) => {
|
||||||
const modals = useModals();
|
const modals = useModals();
|
||||||
const t = useTranslate();
|
const t = useTranslate();
|
||||||
@@ -91,13 +92,17 @@ const Body = ({
|
|||||||
) as moment.unitOfTime.DurationConstructor,
|
) as moment.unitOfTime.DurationConstructor,
|
||||||
);
|
);
|
||||||
if (
|
if (
|
||||||
maxExpirationInHours != 0 &&
|
maxExpiration.value != 0 &&
|
||||||
expirationDate.isAfter(moment().add(maxExpirationInHours, "hours"))
|
expirationDate.isAfter(
|
||||||
|
moment().add(maxExpiration.value, maxExpiration.unit),
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
form.setFieldError(
|
form.setFieldError(
|
||||||
"expiration_num",
|
"expiration_num",
|
||||||
t("upload.modal.expires.error.too-long", {
|
t("upload.modal.expires.error.too-long", {
|
||||||
max: moment.duration(maxExpirationInHours, "hours").humanize(),
|
max: moment
|
||||||
|
.duration(maxExpiration.value, maxExpiration.unit)
|
||||||
|
.humanize(),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -184,7 +184,10 @@ const CreateUploadModalBody = ({
|
|||||||
options.maxExpiration.value != 0 &&
|
options.maxExpiration.value != 0 &&
|
||||||
(form.values.never_expires ||
|
(form.values.never_expires ||
|
||||||
expirationDate.isAfter(
|
expirationDate.isAfter(
|
||||||
moment().add(options.maxExpiration.value, options.maxExpiration.unit),
|
moment().add(
|
||||||
|
options.maxExpiration.value,
|
||||||
|
options.maxExpiration.unit,
|
||||||
|
),
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
form.setFieldError(
|
form.setFieldError(
|
||||||
@@ -407,7 +410,7 @@ const CreateUploadModalBody = ({
|
|||||||
{...form.getInputProps("recipients")}
|
{...form.getInputProps("recipients")}
|
||||||
onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {
|
onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||||
// Add email on comma or semicolon
|
// Add email on comma or semicolon
|
||||||
if (e.key === "," || e.key === ";") {
|
if (e.key === "Enter" || e.key === "," || e.key === ";") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const inputValue = (
|
const inputValue = (
|
||||||
e.target as HTMLInputElement
|
e.target as HTMLInputElement
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import german from "./translations/de-DE";
|
|||||||
import greek from "./translations/el-GR";
|
import greek from "./translations/el-GR";
|
||||||
import english from "./translations/en-US";
|
import english from "./translations/en-US";
|
||||||
import spanish from "./translations/es-ES";
|
import spanish from "./translations/es-ES";
|
||||||
|
import estonian from "./translations/et-EE";
|
||||||
import finnish from "./translations/fi-FI";
|
import finnish from "./translations/fi-FI";
|
||||||
import french from "./translations/fr-FR";
|
import french from "./translations/fr-FR";
|
||||||
import croatian from "./translations/hr-HR";
|
import croatian from "./translations/hr-HR";
|
||||||
@@ -168,4 +169,9 @@ export const LOCALES = {
|
|||||||
code: "hr-HR",
|
code: "hr-HR",
|
||||||
messages: croatian,
|
messages: croatian,
|
||||||
},
|
},
|
||||||
|
ESTONIAN: {
|
||||||
|
name: "Eesti",
|
||||||
|
code: "et-EE",
|
||||||
|
messages: estonian,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "كلمة السر مطلوبة",
|
"share.modal.password.title": "كلمة السر مطلوبة",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"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": "تنزيل الكل",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ 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": "Please enter the password to acces this share.",
|
"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",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Privat deling",
|
"share.error.access-denied.title": "Privat deling",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Adgangskode påkrævet",
|
"share.modal.password.title": "Adgangskode påkrævet",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Adgangskode",
|
"share.modal.password": "Adgangskode",
|
||||||
"share.modal.error.invalid-password": "Ugyldig adgangskode",
|
"share.modal.error.invalid-password": "Ugyldig adgangskode",
|
||||||
"share.button.download-all": "Download alle",
|
"share.button.download-all": "Download alle",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export default {
|
|||||||
"navbar.home": "Startseite",
|
"navbar.home": "Startseite",
|
||||||
"navbar.signup": "Registrieren",
|
"navbar.signup": "Registrieren",
|
||||||
"navbar.links.shares": "Meine Freigaben",
|
"navbar.links.shares": "Meine Freigaben",
|
||||||
"navbar.links.reverse": "Externe Freigaben",
|
"navbar.links.reverse": "Datei Anfrage",
|
||||||
"navbar.avatar.account": "Mein Konto",
|
"navbar.avatar.account": "Mein Konto",
|
||||||
"navbar.avatar.admin": "Verwaltung",
|
"navbar.avatar.admin": "Verwaltung",
|
||||||
"navbar.avatar.signout": "Abmelden",
|
"navbar.avatar.signout": "Abmelden",
|
||||||
@@ -133,10 +133,10 @@ export default {
|
|||||||
"account.shares.modal.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
"account.shares.modal.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "Externe Freigaben",
|
"account.reverseShares.title": "Datei Anfragen",
|
||||||
"account.reverseShares.description": "Eine externe Freigabe erlaubt dir eine einzigartige URL zu erstellen, die externen Benutzern erlaubt, Dateien hochzuladen.",
|
"account.reverseShares.description": "Eine Datei Anfrage erlaubt dir eine einzigartige URL zu erstellen, die externen Benutzern erlaubt, Dateien hochzuladen.",
|
||||||
"account.reverseShares.title.empty": "Es ist leer hier 👀",
|
"account.reverseShares.title.empty": "Es ist leer hier 👀",
|
||||||
"account.reverseShares.description.empty": "Du hast keine externen Freigaben.",
|
"account.reverseShares.description.empty": "Du hast keine Datei Anfrage.",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
"account.reverseShares.modal.title": "Externe Freigabe erstellen",
|
"account.reverseShares.modal.title": "Externe Freigabe erstellen",
|
||||||
"account.reverseShares.modal.expiration.label": "Gültig bis",
|
"account.reverseShares.modal.expiration.label": "Gültig bis",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Freigabe erfolgreich aktualisiert",
|
"share.edit.notify.save-success": "Freigabe erfolgreich aktualisiert",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Impressum",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Datenschutzerklärung",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Einstellungen",
|
"admin.config.title": "Einstellungen",
|
||||||
@@ -345,8 +345,8 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares.description": "Gibt an, ob nicht authentifizierte Benutzer Freigaben erstellen können",
|
"admin.config.share.allow-unauthenticated-shares.description": "Gibt an, ob nicht authentifizierte Benutzer Freigaben erstellen können",
|
||||||
"admin.config.share.max-expiration": "Max. Ablaufdatum",
|
"admin.config.share.max-expiration": "Max. Ablaufdatum",
|
||||||
"admin.config.share.max-expiration.description": "Maximale Ablaufzeit. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
|
"admin.config.share.max-expiration.description": "Maximale Ablaufzeit. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
|
||||||
"admin.config.share.share-id-length": "Default share ID length",
|
"admin.config.share.share-id-length": "Standardlänge der Freigabe-ID",
|
||||||
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
"admin.config.share.share-id-length.description": "Standardlänge für die generierte ID einer Freigabe. Dieser Wert wird auch verwendet, um Links für umgekehrte Freigaben zu generieren. Ein Wert unter 8 wird als nicht sicher betrachtet.",
|
||||||
"admin.config.share.max-size": "Maximale Größe",
|
"admin.config.share.max-size": "Maximale Größe",
|
||||||
"admin.config.share.max-size.description": "Maximale Größe einer Freigabe",
|
"admin.config.share.max-size.description": "Maximale Größe einer Freigabe",
|
||||||
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
|
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
|
||||||
@@ -445,9 +445,9 @@ export default {
|
|||||||
"admin.config.ldap.field-name-member-of.description": "LDAP-Attributname für die Gruppen, in denen ein Benutzer Mitglied ist. Dies wird bei der Überprüfung der Admin-Gruppe verwendet.",
|
"admin.config.ldap.field-name-member-of.description": "LDAP-Attributname für die Gruppen, in denen ein Benutzer Mitglied ist. Dies wird bei der Überprüfung der Admin-Gruppe verwendet.",
|
||||||
"admin.config.ldap.field-name-email": "Attributname für die E-Mail-Adresse des Benutzers",
|
"admin.config.ldap.field-name-email": "Attributname für die E-Mail-Adresse des Benutzers",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP-Attributname für die E-Mail-Adresse eines Benutzers.",
|
"admin.config.ldap.field-name-email.description": "LDAP-Attributname für die E-Mail-Adresse eines Benutzers.",
|
||||||
"admin.config.notify.success": "Configuration updated successfully.",
|
"admin.config.notify.success": "Konfiguration erfolgreich aktualisiert.",
|
||||||
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
"admin.config.notify.logo-success": "Logo erfolgreich aktualisiert. Es kann einige Minuten dauern, bis es auf der Website aktualisiert wird.",
|
||||||
"admin.config.notify.no-changes": "No changes to save.",
|
"admin.config.notify.no-changes": "Keine Änderungen zu speichern.",
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Aktiviert",
|
"admin.config.s3.enabled": "Aktiviert",
|
||||||
"admin.config.s3.enabled.description": "Ob S3 verwendet werden soll, um die freigegebenen Dateien anstelle des lokalen Dateisystems zu speichern.",
|
"admin.config.s3.enabled.description": "Ob S3 verwendet werden soll, um die freigegebenen Dateien anstelle des lokalen Dateisystems zu speichern.",
|
||||||
|
|||||||
@@ -278,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": "Please enter the password to acces this share.",
|
"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": "Λήψη όλων",
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ export default {
|
|||||||
|
|
||||||
"share.modal.password.title": "Password required",
|
"share.modal.password.title": "Password required",
|
||||||
"share.modal.password.description":
|
"share.modal.password.description":
|
||||||
"Please enter the password to acces this share.",
|
"Please enter the password to access this share.",
|
||||||
"share.modal.password": "Password",
|
"share.modal.password": "Password",
|
||||||
"share.modal.error.invalid-password": "Invalid password",
|
"share.modal.error.invalid-password": "Invalid password",
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export default {
|
|||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "Una plataforma <h>autoalojada</h> para compartir archivos.",
|
"home.title": "Una plataforma <h>autoalojada</h> para compartir archivos.",
|
||||||
"home.description": "¿En realidad quieres dejar tus archivos personales en manos de terceros como WeTransfer?",
|
"home.description": "¿De verdad quieres dejar tus archivos personales en manos de terceros como WeTransfer?",
|
||||||
"home.bullet.a.name": "Autoalojada",
|
"home.bullet.a.name": "Autoalojada",
|
||||||
"home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.",
|
"home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.",
|
||||||
"home.bullet.b.name": "Privacidad",
|
"home.bullet.b.name": "Privacidad",
|
||||||
@@ -124,9 +124,9 @@ export default {
|
|||||||
"account.shares.table.expiresAt": "Vence el",
|
"account.shares.table.expiresAt": "Vence el",
|
||||||
"account.shares.table.createdAt": "Creado el",
|
"account.shares.table.createdAt": "Creado el",
|
||||||
"account.shares.table.size": "Tamaño",
|
"account.shares.table.size": "Tamaño",
|
||||||
"account.shares.table.password-protected": "Password protected",
|
"account.shares.table.password-protected": "Protegido por contraseña",
|
||||||
"account.shares.table.visitor-count": "{count} of {max}",
|
"account.shares.table.visitor-count": "{count} de {max}",
|
||||||
"account.shares.table.expiry-never": "Never",
|
"account.shares.table.expiry-never": "Nunca",
|
||||||
"account.shares.modal.share-informations": "Información del compartido",
|
"account.shares.modal.share-informations": "Información del compartido",
|
||||||
"account.shares.modal.share-link": "Enlace",
|
"account.shares.modal.share-link": "Enlace",
|
||||||
"account.shares.modal.delete.title": "Eliminar enlace compartido: {share}",
|
"account.shares.modal.delete.title": "Eliminar enlace compartido: {share}",
|
||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Compartición privada",
|
"share.error.access-denied.title": "Compartición privada",
|
||||||
"share.error.access-denied.description": "La cuenta actual no tiene permiso para acceder a este compartido",
|
"share.error.access-denied.description": "La cuenta actual no tiene permiso para acceder a este compartido",
|
||||||
"share.modal.password.title": "Se requiere contraseña",
|
"share.modal.password.title": "Se requiere contraseña",
|
||||||
"share.modal.password.description": "Por favor, ingresa la contraseña para acceder a este enlace compartido.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Contraseña",
|
"share.modal.password": "Contraseña",
|
||||||
"share.modal.error.invalid-password": "Contraseña inválida",
|
"share.modal.error.invalid-password": "Contraseña inválida",
|
||||||
"share.button.download-all": "Descargar todo",
|
"share.button.download-all": "Descargar todo",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Compartir actualizado correctamente",
|
"share.edit.notify.save-success": "Compartir actualizado correctamente",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Aviso legal",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Política de privacidad",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Configuración",
|
"admin.config.title": "Configuración",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión",
|
"admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Si los usuarios que no han iniciado sesión pueden compartir",
|
"admin.config.share.allow-unauthenticated-shares.description": "Si los usuarios que no han iniciado sesión pueden compartir",
|
||||||
"admin.config.share.max-expiration": "Expiración máxima",
|
"admin.config.share.max-expiration": "Expiración máxima",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Plazo máximo de caducidad. Establecer en 0 para enlaces sin caducidad.",
|
||||||
"admin.config.share.share-id-length": "Longitud de ID compartido por defecto",
|
"admin.config.share.share-id-length": "Longitud de ID compartido por defecto",
|
||||||
"admin.config.share.share-id-length.description": "Longitud predeterminada para el ID generado de un compartido. Este valor también se usa para generar enlaces compartidos de uso inverso. Un valor inferior a 8 no se considera seguro.",
|
"admin.config.share.share-id-length.description": "Longitud predeterminada para el ID generado de un compartido. Este valor también se usa para generar enlaces compartidos de uso inverso. Un valor inferior a 8 no se considera seguro.",
|
||||||
"admin.config.share.max-size": "Tamaño máximo",
|
"admin.config.share.max-size": "Tamaño máximo",
|
||||||
@@ -449,31 +449,31 @@ export default {
|
|||||||
"admin.config.notify.logo-success": "Logo actualizado correctamente. Puede tardar unos minutos en actualizarse en el sitio web.",
|
"admin.config.notify.logo-success": "Logo actualizado correctamente. Puede tardar unos minutos en actualizarse en el sitio web.",
|
||||||
"admin.config.notify.no-changes": "No hay cambios que guardar.",
|
"admin.config.notify.no-changes": "No hay cambios que guardar.",
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Enabled",
|
"admin.config.s3.enabled": "Habilitado",
|
||||||
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
"admin.config.s3.enabled.description": "Si se debería utilizar S3 en lugar del sistema de archivos local para almacenar los archivos compartidos.",
|
||||||
"admin.config.s3.endpoint": "Endpoint",
|
"admin.config.s3.endpoint": "Punto de acceso/endpoint",
|
||||||
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
"admin.config.s3.endpoint.description": "La URL del bucket S3.",
|
||||||
"admin.config.s3.region": "Region",
|
"admin.config.s3.region": "Región",
|
||||||
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
"admin.config.s3.region.description": "La región del bucket S3.",
|
||||||
"admin.config.s3.bucket-name": "Bucket name",
|
"admin.config.s3.bucket-name": "Nombre del bucket",
|
||||||
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
"admin.config.s3.bucket-name.description": "El nombre del bucket S3.",
|
||||||
"admin.config.s3.bucket-path": "Path",
|
"admin.config.s3.bucket-path": "Ruta",
|
||||||
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
"admin.config.s3.bucket-path.description": "La ruta predeterminada que se debe usar para almacenar los archivos en el bucket S3.",
|
||||||
"admin.config.s3.key": "Key",
|
"admin.config.s3.key": "Clave",
|
||||||
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
"admin.config.s3.key.description": "La clave que permite el acceso al bucket S3.",
|
||||||
"admin.config.s3.secret": "Secret",
|
"admin.config.s3.secret": "Secreto",
|
||||||
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
"admin.config.s3.secret.description": "El secreto que permite acceder al bucket S3.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Habilitar avisos legales",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Mostrar un enlace al aviso legal y a la política de privacidad en el pie de página.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Texto del aviso legal",
|
||||||
"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.description": "El texto que debería mostrarse en el aviso legal. Soporta Markdown. Dejar en blanco para enlazar a un enlace externo.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "URL del aviso legal",
|
||||||
"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.description": "Si ya tiene una página de aviso legal, puede enlazarlo aquí en lugar de utilizar el campo de texto.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Texto de la política de privacidad",
|
||||||
"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.description": "El texto que debe mostrarse en la política de privacidad. Compatible con Markdown. Dejar en blanco para enlazar a una página de política de privacidad externa.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "URL de la política de privacidad",
|
||||||
"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.description": "Si ya tiene una página de política de privacidad puede enlazarla aquí en lugar de usar el campo de texto.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Oops esta página no existe.",
|
"404.description": "Oops esta página no existe.",
|
||||||
"404.button.home": "Regrésame al inicio",
|
"404.button.home": "Regrésame al inicio",
|
||||||
|
|||||||
730
frontend/src/i18n/translations/et-EE.ts
Normal file
730
frontend/src/i18n/translations/et-EE.ts
Normal file
@@ -0,0 +1,730 @@
|
|||||||
|
export default {
|
||||||
|
// Navbar
|
||||||
|
"navbar.upload": "Upload",
|
||||||
|
"navbar.signin": "Sign in",
|
||||||
|
"navbar.home": "Home",
|
||||||
|
"navbar.signup": "Sign up",
|
||||||
|
|
||||||
|
"navbar.links.shares": "My shares",
|
||||||
|
"navbar.links.reverse": "Reverse shares",
|
||||||
|
|
||||||
|
"navbar.avatar.account": "My account",
|
||||||
|
"navbar.avatar.admin": "Administration",
|
||||||
|
"navbar.avatar.signout": "Sign out",
|
||||||
|
// END navbar
|
||||||
|
|
||||||
|
// /
|
||||||
|
"home.title": "A <h>self-hosted</h> file sharing platform.",
|
||||||
|
|
||||||
|
"home.description":
|
||||||
|
"Do you really want to give your personal files in the hand of third parties like WeTransfer?",
|
||||||
|
"home.bullet.a.name": "Self-Hosted",
|
||||||
|
"home.bullet.a.description": "Host Pingvin Share on your own machine.",
|
||||||
|
"home.bullet.b.name": "Privacy",
|
||||||
|
"home.bullet.b.description":
|
||||||
|
"Your files are yours and will never be accessed by third parties.",
|
||||||
|
"home.bullet.c.name": "No annoying file size limit",
|
||||||
|
"home.bullet.c.description":
|
||||||
|
"Upload files as big as you want. Only your hard drive will be your limit.",
|
||||||
|
|
||||||
|
"home.button.start": "Get started",
|
||||||
|
"home.button.source": "Source code",
|
||||||
|
// END /
|
||||||
|
|
||||||
|
// /auth/signin
|
||||||
|
"signin.title": "Welcome back",
|
||||||
|
"signin.description": "You don't have an account yet?",
|
||||||
|
"signin.button.signup": "Sign up",
|
||||||
|
"signin.input.email-or-username": "Email or username",
|
||||||
|
"signin.input.email-or-username.placeholder": "Your email or username",
|
||||||
|
"signin.input.password": "Password",
|
||||||
|
"signin.input.password.placeholder": "Your password",
|
||||||
|
"signin.button.submit": "Sign in",
|
||||||
|
"signIn.notify.totp-required.title": "Two-factor authentication required",
|
||||||
|
"signIn.notify.totp-required.description":
|
||||||
|
"Please enter your two-factor authentication code",
|
||||||
|
"signIn.oauth.or": "OR",
|
||||||
|
"signIn.oauth.signInWith": "Sign in with",
|
||||||
|
"signIn.oauth.github": "GitHub",
|
||||||
|
"signIn.oauth.google": "Google",
|
||||||
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
|
"signIn.oauth.discord": "Discord",
|
||||||
|
"signIn.oauth.oidc": "OpenID",
|
||||||
|
|
||||||
|
// END /auth/signin
|
||||||
|
|
||||||
|
// /auth/signup
|
||||||
|
"signup.title": "Create an account",
|
||||||
|
"signup.description": "Already have an account?",
|
||||||
|
"signup.button.signin": "Sign in",
|
||||||
|
"signup.input.username": "Username",
|
||||||
|
"signup.input.username.placeholder": "Your username",
|
||||||
|
"signup.input.email": "Email",
|
||||||
|
"signup.input.email.placeholder": "Your email",
|
||||||
|
"signup.button.submit": "Let's get started",
|
||||||
|
|
||||||
|
// END /auth/signup
|
||||||
|
|
||||||
|
// /auth/totp
|
||||||
|
"totp.title": "TOTP Authentication",
|
||||||
|
"totp.button.signIn": "Sign in",
|
||||||
|
|
||||||
|
// END /auth/totp
|
||||||
|
|
||||||
|
// /auth/reset-password
|
||||||
|
"resetPassword.title": "Forgot your password?",
|
||||||
|
"resetPassword.description": "Enter your email to reset your password.",
|
||||||
|
"resetPassword.notify.success":
|
||||||
|
"A message with a link to reset your password has been sent if the provided email exists.",
|
||||||
|
"resetPassword.button.back": "Back to sign in page",
|
||||||
|
"resetPassword.text.resetPassword": "Reset password",
|
||||||
|
"resetPassword.text.enterNewPassword": "Enter your new password",
|
||||||
|
"resetPassword.input.password": "New password",
|
||||||
|
"resetPassword.notify.passwordReset":
|
||||||
|
"Your password has been successfully reset.",
|
||||||
|
|
||||||
|
// /account
|
||||||
|
"account.title": "My account",
|
||||||
|
|
||||||
|
"account.card.info.title": "Account info",
|
||||||
|
"account.card.info.username": "Username",
|
||||||
|
"account.card.info.email": "Email",
|
||||||
|
"account.notify.info.success": "Account updated successfully",
|
||||||
|
|
||||||
|
"account.card.password.title": "Password",
|
||||||
|
"account.card.password.old": "Old password",
|
||||||
|
"account.card.password.new": "New password",
|
||||||
|
"account.card.password.noPasswordSet":
|
||||||
|
"You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||||
|
"account.notify.password.success": "Password changed successfully",
|
||||||
|
|
||||||
|
"account.card.oauth.title": "Social login",
|
||||||
|
"account.card.oauth.github": "GitHub",
|
||||||
|
"account.card.oauth.google": "Google",
|
||||||
|
"account.card.oauth.microsoft": "Microsoft",
|
||||||
|
"account.card.oauth.discord": "Discord",
|
||||||
|
"account.card.oauth.oidc": "OpenID",
|
||||||
|
"account.card.oauth.link": "Link",
|
||||||
|
"account.card.oauth.unlink": "Unlink",
|
||||||
|
"account.card.oauth.unlinked": "Unlinked",
|
||||||
|
"account.modal.unlink.title": "Unlink account",
|
||||||
|
"account.modal.unlink.description":
|
||||||
|
"Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
||||||
|
"account.notify.oauth.unlinked.success": "Unlinked successfully",
|
||||||
|
|
||||||
|
"account.card.security.title": "Security",
|
||||||
|
"account.card.security.totp.enable.description":
|
||||||
|
"Enter your current password to start enabling TOTP",
|
||||||
|
"account.card.security.totp.disable.description":
|
||||||
|
"Enter your current password to disable TOTP",
|
||||||
|
"account.card.security.totp.button.start": "Start",
|
||||||
|
"account.modal.totp.title": "Enable TOTP",
|
||||||
|
"account.modal.totp.step1": "Step 1: Add your authenticator",
|
||||||
|
"account.modal.totp.step2": "Step 2: Validate your code",
|
||||||
|
"account.modal.totp.enterManually": "Enter manually",
|
||||||
|
"account.modal.totp.code": "Code",
|
||||||
|
"common.button.clickToCopy": "Click to copy",
|
||||||
|
"account.modal.totp.verify": "Verify",
|
||||||
|
"account.notify.totp.disable": "TOTP disabled successfully",
|
||||||
|
"account.notify.totp.enable": "TOTP enabled successfully",
|
||||||
|
|
||||||
|
"account.card.language.title": "Language",
|
||||||
|
"account.card.language.description":
|
||||||
|
"The project is translated by the community. Some languages might be incomplete.",
|
||||||
|
"account.card.color.title": "Color scheme",
|
||||||
|
|
||||||
|
// ThemeSwitcher.tsx
|
||||||
|
"account.theme.dark": "Dark",
|
||||||
|
"account.theme.light": "Light",
|
||||||
|
"account.theme.system": "System",
|
||||||
|
|
||||||
|
"account.button.delete": "Delete Account",
|
||||||
|
"account.modal.delete.title": "Delete Account",
|
||||||
|
"account.modal.delete.description":
|
||||||
|
"Do you really want to delete your account including all your active shares?",
|
||||||
|
// END /account
|
||||||
|
|
||||||
|
// /account/shares
|
||||||
|
"account.shares.title": "My shares",
|
||||||
|
"account.shares.title.empty": "It's empty here 👀",
|
||||||
|
"account.shares.description.empty": "You don't have any shares.",
|
||||||
|
"account.shares.button.create": "Create one",
|
||||||
|
|
||||||
|
"account.shares.info.title": "Share informations",
|
||||||
|
"account.shares.table.id": "ID",
|
||||||
|
"account.shares.table.name": "Name",
|
||||||
|
"account.shares.table.description": "Description",
|
||||||
|
"account.shares.table.visitors": "Visitors",
|
||||||
|
"account.shares.table.expiresAt": "Expires on",
|
||||||
|
"account.shares.table.createdAt": "Created on",
|
||||||
|
"account.shares.table.size": "Size",
|
||||||
|
"account.shares.table.password-protected": "Password protected",
|
||||||
|
"account.shares.table.visitor-count": "{count} of {max}",
|
||||||
|
"account.shares.table.expiry-never": "Never",
|
||||||
|
|
||||||
|
"account.shares.modal.share-informations": "Share informations",
|
||||||
|
"account.shares.modal.share-link": "Share link",
|
||||||
|
|
||||||
|
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||||
|
"account.shares.modal.delete.description":
|
||||||
|
"Do you really want to delete this share?",
|
||||||
|
|
||||||
|
// END /account/shares
|
||||||
|
|
||||||
|
// /account/reverseShares
|
||||||
|
"account.reverseShares.title": "Reverse shares",
|
||||||
|
"account.reverseShares.description":
|
||||||
|
"A reverse share allows you to generate a unique URL that allows external users to create a share.",
|
||||||
|
|
||||||
|
"account.reverseShares.title.empty": "It's empty here 👀",
|
||||||
|
"account.reverseShares.description.empty":
|
||||||
|
"You don't have any reverse shares.",
|
||||||
|
|
||||||
|
// showCreateReverseShareModal.tsx
|
||||||
|
"account.reverseShares.modal.title": "Create reverse share",
|
||||||
|
"account.reverseShares.modal.expiration.label": "Expiration",
|
||||||
|
"account.reverseShares.modal.expiration.minute-singular": "Minute",
|
||||||
|
"account.reverseShares.modal.expiration.minute-plural": "Minutes",
|
||||||
|
"account.reverseShares.modal.expiration.hour-singular": "Hour",
|
||||||
|
"account.reverseShares.modal.expiration.hour-plural": "Hours",
|
||||||
|
"account.reverseShares.modal.expiration.day-singular": "Day",
|
||||||
|
"account.reverseShares.modal.expiration.day-plural": "Days",
|
||||||
|
"account.reverseShares.modal.expiration.week-singular": "Week",
|
||||||
|
"account.reverseShares.modal.expiration.week-plural": "Weeks",
|
||||||
|
"account.reverseShares.modal.expiration.month-singular": "Month",
|
||||||
|
"account.reverseShares.modal.expiration.month-plural": "Months",
|
||||||
|
"account.reverseShares.modal.expiration.year-singular": "Year",
|
||||||
|
"account.reverseShares.modal.expiration.year-plural": "Years",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.max-size.label": "Max share size",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.send-email": "Send email notifications",
|
||||||
|
"account.reverseShares.modal.send-email.description":
|
||||||
|
"Sends you an email notification when a share is created with this reverse share link.",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.simplified": "Simple mode",
|
||||||
|
"account.reverseShares.modal.simplified.description":
|
||||||
|
"Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.public-access": "Public access",
|
||||||
|
"account.reverseShares.modal.public-access.description":
|
||||||
|
"Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.max-use.label": "Max uses",
|
||||||
|
"account.reverseShares.modal.max-use.description":
|
||||||
|
"The maximum amount of times this URL can be used to create a share.",
|
||||||
|
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
||||||
|
"account.reverseShare.expires-on":
|
||||||
|
"This reverse share will expire on {expiration}.",
|
||||||
|
|
||||||
|
"account.reverseShares.table.no-shares": "No shares created yet",
|
||||||
|
"account.reverseShares.table.count.singular": "share",
|
||||||
|
"account.reverseShares.table.count.plural": "shares",
|
||||||
|
"account.reverseShares.table.shares": "Shares",
|
||||||
|
"account.reverseShares.table.remaining": "Remaining uses",
|
||||||
|
"account.reverseShares.table.max-size": "Max share size",
|
||||||
|
"account.reverseShares.table.expires": "Expires at",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.reverse-share-link": "Reverse share link",
|
||||||
|
|
||||||
|
"account.reverseShares.modal.delete.title": "Delete reverse share",
|
||||||
|
"account.reverseShares.modal.delete.description":
|
||||||
|
"Do you really want to delete this reverse share? If you do, the associated shares will be deleted as well.",
|
||||||
|
|
||||||
|
// END /account/reverseShares
|
||||||
|
|
||||||
|
// /admin
|
||||||
|
"admin.title": "Administration",
|
||||||
|
"admin.button.users": "User management",
|
||||||
|
"admin.button.shares": "Share management",
|
||||||
|
"admin.button.config": "Configuration",
|
||||||
|
"admin.version": "Version",
|
||||||
|
// END /admin
|
||||||
|
|
||||||
|
// /admin/users
|
||||||
|
"admin.users.title": "User management",
|
||||||
|
"admin.users.table.username": "Username",
|
||||||
|
"admin.users.table.email": "Email",
|
||||||
|
"admin.users.table.admin": "Admin",
|
||||||
|
|
||||||
|
"admin.users.edit.update.title": "Edit user: {username}",
|
||||||
|
"admin.users.edit.update.admin-privileges": "Admin privileges",
|
||||||
|
"admin.users.edit.update.change-password.title": "Change password",
|
||||||
|
"admin.users.edit.update.change-password.field": "New password",
|
||||||
|
"admin.users.edit.update.change-password.button": "Save new password",
|
||||||
|
"admin.users.edit.update.notify.password.success":
|
||||||
|
"Password changed successfully",
|
||||||
|
|
||||||
|
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
||||||
|
"admin.users.edit.delete.description":
|
||||||
|
"Do you really want to delete this user and all their shares?",
|
||||||
|
|
||||||
|
// showCreateUserModal.tsx
|
||||||
|
"admin.users.modal.create.title": "Create user",
|
||||||
|
"admin.users.modal.create.username": "Username",
|
||||||
|
"admin.users.modal.create.email": "Email",
|
||||||
|
"admin.users.modal.create.password": "Password",
|
||||||
|
"admin.users.modal.create.manual-password": "Set password manually",
|
||||||
|
"admin.users.modal.create.manual-password.description":
|
||||||
|
"If not checked, the user will receive an email with a link to set their password.",
|
||||||
|
"admin.users.modal.create.admin": "Admin privileges",
|
||||||
|
"admin.users.modal.create.admin.description":
|
||||||
|
"If checked, the user will be able to access the admin panel.",
|
||||||
|
|
||||||
|
// END /admin/users
|
||||||
|
|
||||||
|
// /admin/shares
|
||||||
|
"admin.shares.title": "Share management",
|
||||||
|
"admin.shares.table.id": "Share ID",
|
||||||
|
"admin.shares.table.username": "Creator",
|
||||||
|
"admin.shares.table.visitors": "Visitors",
|
||||||
|
"admin.shares.table.expires": "Expires on",
|
||||||
|
|
||||||
|
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||||
|
"admin.shares.edit.delete.description":
|
||||||
|
"Do you really want to delete this share?",
|
||||||
|
|
||||||
|
// END /admin/shares
|
||||||
|
|
||||||
|
// /upload
|
||||||
|
"upload.title": "Upload",
|
||||||
|
|
||||||
|
"upload.notify.confirm-leave":
|
||||||
|
"Are you sure you want to leave this page? Your upload will be canceled.",
|
||||||
|
"upload.notify.generic-error":
|
||||||
|
"An error occurred while finishing your share.",
|
||||||
|
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
|
||||||
|
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||||
|
"upload.reverse-share.error.invalid.description":
|
||||||
|
"This reverse share has expired or is invalid.",
|
||||||
|
|
||||||
|
// Dropzone.tsx
|
||||||
|
"upload.dropzone.title": "Upload files",
|
||||||
|
"upload.dropzone.description":
|
||||||
|
"Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||||
|
"upload.dropzone.notify.file-too-big":
|
||||||
|
"Your files exceed the maximum share size of {maxSize}.",
|
||||||
|
|
||||||
|
// FileList.tsx
|
||||||
|
"upload.filelist.name": "Name",
|
||||||
|
"upload.filelist.size": "Size",
|
||||||
|
|
||||||
|
// showCreateUploadModal.tsx
|
||||||
|
"upload.modal.title": "Create Share",
|
||||||
|
"upload.modal.link.error.invalid":
|
||||||
|
"Can only contain letters, numbers, underscores, and hyphens",
|
||||||
|
"upload.modal.link.error.taken": "This link is already in use",
|
||||||
|
"upload.modal.not-signed-in": "You're not signed in",
|
||||||
|
"upload.modal.not-signed-in-description":
|
||||||
|
"You will be unable to delete your share manually and view the visitor count.",
|
||||||
|
|
||||||
|
"upload.modal.expires.never": "never",
|
||||||
|
"upload.modal.expires.never-long": "Permanent share",
|
||||||
|
"upload.modal.expires.error.too-long":
|
||||||
|
"Expiration date exceeds the maximum of {max}.",
|
||||||
|
|
||||||
|
"upload.modal.link.label": "Link",
|
||||||
|
"upload.modal.expires.label": "Expiration",
|
||||||
|
"upload.modal.expires.minute-singular": "Minute",
|
||||||
|
"upload.modal.expires.minute-plural": "Minutes",
|
||||||
|
"upload.modal.expires.hour-singular": "Hour",
|
||||||
|
"upload.modal.expires.hour-plural": "Hours",
|
||||||
|
"upload.modal.expires.day-singular": "Day",
|
||||||
|
"upload.modal.expires.day-plural": "Days",
|
||||||
|
"upload.modal.expires.week-singular": "Week",
|
||||||
|
"upload.modal.expires.week-plural": "Weeks",
|
||||||
|
"upload.modal.expires.month-singular": "Month",
|
||||||
|
"upload.modal.expires.month-plural": "Months",
|
||||||
|
"upload.modal.expires.year-singular": "Year",
|
||||||
|
"upload.modal.expires.year-plural": "Years",
|
||||||
|
|
||||||
|
"upload.modal.accordion.name-and-description.title": "Name and description",
|
||||||
|
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
||||||
|
"upload.modal.accordion.name-and-description.description.placeholder":
|
||||||
|
"Note for the recipients of this share",
|
||||||
|
|
||||||
|
"upload.modal.accordion.email.title": "Email recipients",
|
||||||
|
"upload.modal.accordion.email.placeholder": "Enter email recipients",
|
||||||
|
"upload.modal.accordion.email.invalid-email": "Invalid email address",
|
||||||
|
|
||||||
|
"upload.modal.accordion.security.title": "Security options",
|
||||||
|
"upload.modal.accordion.security.password.label": "Password protection",
|
||||||
|
"upload.modal.accordion.security.password.placeholder": "No password",
|
||||||
|
"upload.modal.accordion.security.max-views.label": "Maximum views",
|
||||||
|
"upload.modal.accordion.security.max-views.placeholder": "No limit",
|
||||||
|
|
||||||
|
// showCompletedUploadModal.tsx
|
||||||
|
"upload.modal.completed.never-expires": "This share will never expire.",
|
||||||
|
"upload.modal.completed.expires-on":
|
||||||
|
"This share will expire on {expiration}.",
|
||||||
|
"upload.modal.completed.share-ready": "Share ready",
|
||||||
|
"upload.modal.completed.notified-reverse-share-creator":
|
||||||
|
"We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
||||||
|
|
||||||
|
// END /upload
|
||||||
|
|
||||||
|
// /share/[id]
|
||||||
|
"share.title": "Share {shareId}",
|
||||||
|
"share.description": "Look what I've shared with you!",
|
||||||
|
"share.error.visitor-limit-exceeded.title": "Visitor limit exceeded",
|
||||||
|
"share.error.visitor-limit-exceeded.description":
|
||||||
|
"The visitor limit from this share has been exceeded.",
|
||||||
|
"share.error.removed.title": "Share removed",
|
||||||
|
"share.error.not-found.title": "Share not found",
|
||||||
|
"share.error.not-found.description":
|
||||||
|
"The share you're looking for doesn't exist.",
|
||||||
|
"share.error.access-denied.title": "Private share",
|
||||||
|
"share.error.access-denied.description":
|
||||||
|
"The current account does not have permission to access this share",
|
||||||
|
|
||||||
|
"share.modal.password.title": "Password required",
|
||||||
|
"share.modal.password.description":
|
||||||
|
"Please enter the password to access this share.",
|
||||||
|
"share.modal.password": "Password",
|
||||||
|
"share.modal.error.invalid-password": "Invalid password",
|
||||||
|
|
||||||
|
"share.button.download-all": "Download all",
|
||||||
|
"share.notify.download-all-preparing":
|
||||||
|
"The share is being prepared. Please try again in a few minutes.",
|
||||||
|
|
||||||
|
"share.modal.file-link": "File link",
|
||||||
|
"share.table.name": "Name",
|
||||||
|
"share.table.size": "Size",
|
||||||
|
|
||||||
|
"share.modal.file-preview.error.not-supported.title": "Preview not supported",
|
||||||
|
"share.modal.file-preview.error.not-supported.description":
|
||||||
|
"Previews are not supported for this type of files. Please download the file to view it.",
|
||||||
|
|
||||||
|
// END /share/[id]
|
||||||
|
|
||||||
|
// /share/[id]/edit
|
||||||
|
"share.edit.title": "Edit {shareId}",
|
||||||
|
"share.edit.append-upload": "Append file",
|
||||||
|
"share.edit.notify.generic-error":
|
||||||
|
"An error occurred while finishing your share.",
|
||||||
|
"share.edit.notify.save-success": "Share updated successfully",
|
||||||
|
// END /share/[id]/edit
|
||||||
|
|
||||||
|
// /imprint
|
||||||
|
"imprint.title": "Imprint",
|
||||||
|
// END /imprint
|
||||||
|
|
||||||
|
// /privacy
|
||||||
|
"privacy.title": "Privacy Policy",
|
||||||
|
// END /privacy
|
||||||
|
|
||||||
|
// /admin/config
|
||||||
|
"admin.config.title": "Configuration",
|
||||||
|
"admin.config.category.general": "General",
|
||||||
|
"admin.config.category.share": "Share",
|
||||||
|
"admin.config.category.email": "Email",
|
||||||
|
"admin.config.category.smtp": "SMTP",
|
||||||
|
"admin.config.category.oauth": "Social Login",
|
||||||
|
|
||||||
|
"admin.config.general.app-name": "App name",
|
||||||
|
"admin.config.general.app-name.description": "Name of the application",
|
||||||
|
"admin.config.general.app-url": "App URL",
|
||||||
|
"admin.config.general.app-url.description":
|
||||||
|
"On which URL Pingvin Share is available",
|
||||||
|
"admin.config.general.secure-cookies": "Secure cookies",
|
||||||
|
"admin.config.general.secure-cookies.description":
|
||||||
|
"Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||||
|
"admin.config.general.show-home-page": "Show home page",
|
||||||
|
"admin.config.general.show-home-page.description":
|
||||||
|
"Whether to show the home page",
|
||||||
|
"admin.config.general.session-duration": "Session Duration",
|
||||||
|
"admin.config.general.session-duration.description":
|
||||||
|
"Time in hours after which a user must log in again (default: 3 months).",
|
||||||
|
"admin.config.general.logo": "Logo",
|
||||||
|
"admin.config.general.logo.description":
|
||||||
|
"Change your logo by uploading a new image. The image must be a PNG and should have the format 1:1.",
|
||||||
|
"admin.config.general.logo.placeholder": "Pick image",
|
||||||
|
|
||||||
|
"admin.config.email.enable-share-email-recipients":
|
||||||
|
"Enable email recipient sharing",
|
||||||
|
"admin.config.email.enable-share-email-recipients.description":
|
||||||
|
"Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||||
|
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||||
|
"admin.config.email.share-recipients-subject.description":
|
||||||
|
"Subject of the email which gets sent to the share recipients.",
|
||||||
|
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||||
|
"admin.config.email.share-recipients-message.description":
|
||||||
|
"Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||||
|
"admin.config.email.reverse-share-subject": "Reverse share subject",
|
||||||
|
"admin.config.email.reverse-share-subject.description":
|
||||||
|
"Subject of the sent email when someone created a share with your reverse share link.",
|
||||||
|
"admin.config.email.reverse-share-message": "Reverse share message",
|
||||||
|
"admin.config.email.reverse-share-message.description":
|
||||||
|
"Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
|
||||||
|
"admin.config.email.reset-password-subject": "Reset password subject",
|
||||||
|
"admin.config.email.reset-password-subject.description":
|
||||||
|
"Subject of the sent email when a user requests a password reset.",
|
||||||
|
"admin.config.email.reset-password-message": "Reset password message",
|
||||||
|
"admin.config.email.reset-password-message.description":
|
||||||
|
"Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
|
||||||
|
"admin.config.email.invite-subject": "Invite subject",
|
||||||
|
"admin.config.email.invite-subject.description":
|
||||||
|
"Subject of the sent email when an admin invites a user.",
|
||||||
|
"admin.config.email.invite-message": "Invite message",
|
||||||
|
"admin.config.email.invite-message.description":
|
||||||
|
"Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||||
|
|
||||||
|
"admin.config.share.allow-registration": "Allow registration",
|
||||||
|
"admin.config.share.allow-registration.description":
|
||||||
|
"Whether registration is allowed",
|
||||||
|
"admin.config.share.allow-unauthenticated-shares":
|
||||||
|
"Allow unauthenticated shares",
|
||||||
|
"admin.config.share.allow-unauthenticated-shares.description":
|
||||||
|
"Whether unauthenticated users can create shares",
|
||||||
|
"admin.config.share.max-expiration": "Max expiration",
|
||||||
|
"admin.config.share.max-expiration.description":
|
||||||
|
"Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
||||||
|
"admin.config.share.share-id-length": "Default share ID length",
|
||||||
|
"admin.config.share.share-id-length.description":
|
||||||
|
"Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
||||||
|
"admin.config.share.max-size": "Max size",
|
||||||
|
"admin.config.share.max-size.description": "Maximum share size",
|
||||||
|
"admin.config.share.zip-compression-level": "Zip compression level",
|
||||||
|
"admin.config.share.zip-compression-level.description":
|
||||||
|
"Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
||||||
|
"admin.config.share.chunk-size": "Chunk size",
|
||||||
|
"admin.config.share.chunk-size.description":
|
||||||
|
"Adjust the chunk size for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||||
|
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||||
|
"admin.config.share.auto-open-share-modal.description":
|
||||||
|
"The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||||
|
|
||||||
|
"admin.config.smtp.enabled": "Enable",
|
||||||
|
"admin.config.smtp.enabled.description":
|
||||||
|
"Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
|
||||||
|
"admin.config.smtp.host": "Host",
|
||||||
|
"admin.config.smtp.host.description": "Host of the SMTP server",
|
||||||
|
"admin.config.smtp.port": "Port",
|
||||||
|
"admin.config.smtp.port.description": "Port of the SMTP server",
|
||||||
|
"admin.config.smtp.email": "Email",
|
||||||
|
"admin.config.smtp.email.description":
|
||||||
|
"Email address from wich the emails get sent",
|
||||||
|
"admin.config.smtp.username": "Username",
|
||||||
|
"admin.config.smtp.username.description": "Username of the SMTP server",
|
||||||
|
"admin.config.smtp.password": "Password",
|
||||||
|
"admin.config.smtp.password.description": "Password of the SMTP server",
|
||||||
|
"admin.config.smtp.button.test": "Send test email",
|
||||||
|
"admin.config.smtp.allow-unauthorized-certificates":
|
||||||
|
"Trust unauthorized SMTP server certificates",
|
||||||
|
"admin.config.smtp.allow-unauthorized-certificates.description":
|
||||||
|
"Only set this to true if you need to trust self signed certificates.",
|
||||||
|
|
||||||
|
"admin.config.oauth.allow-registration": "Allow registration",
|
||||||
|
"admin.config.oauth.allow-registration.description":
|
||||||
|
"Allow users to register via social login",
|
||||||
|
"admin.config.oauth.ignore-totp": "Ignore TOTP",
|
||||||
|
"admin.config.oauth.ignore-totp.description":
|
||||||
|
"Whether to ignore TOTP when user using social login",
|
||||||
|
"admin.config.oauth.disable-password": "Disable password login",
|
||||||
|
"admin.config.oauth.disable-password.description":
|
||||||
|
"Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
|
||||||
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
|
"admin.config.oauth.github-enabled.description":
|
||||||
|
"Whether GitHub login is enabled",
|
||||||
|
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
||||||
|
"admin.config.oauth.github-client-id.description":
|
||||||
|
"Client ID of the GitHub OAuth app",
|
||||||
|
"admin.config.oauth.github-client-secret": "GitHub Client secret",
|
||||||
|
"admin.config.oauth.github-client-secret.description":
|
||||||
|
"Client secret of the GitHub OAuth app",
|
||||||
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
|
"admin.config.oauth.google-enabled.description":
|
||||||
|
"Whether Google login is enabled",
|
||||||
|
"admin.config.oauth.google-client-id": "Google Client ID",
|
||||||
|
"admin.config.oauth.google-client-id.description":
|
||||||
|
"Client ID of the Google OAuth app",
|
||||||
|
"admin.config.oauth.google-client-secret": "Google Client secret",
|
||||||
|
"admin.config.oauth.google-client-secret.description":
|
||||||
|
"Client secret of the Google OAuth app",
|
||||||
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
|
"admin.config.oauth.microsoft-enabled.description":
|
||||||
|
"Whether Microsoft login is enabled",
|
||||||
|
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||||
|
"admin.config.oauth.microsoft-tenant.description":
|
||||||
|
"Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
|
||||||
|
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
||||||
|
"admin.config.oauth.microsoft-client-id.description":
|
||||||
|
"Client ID of the Microsoft OAuth app",
|
||||||
|
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
||||||
|
"admin.config.oauth.microsoft-client-secret.description":
|
||||||
|
"Client secret of the Microsoft OAuth app",
|
||||||
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
|
"admin.config.oauth.discord-enabled.description":
|
||||||
|
"Whether Discord login is enabled",
|
||||||
|
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||||
|
"admin.config.oauth.discord-limited-users.description":
|
||||||
|
"Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||||
|
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
||||||
|
"admin.config.oauth.discord-limited-guild.description":
|
||||||
|
"Limit signing in to users in a specific server. Leave it blank to disable.",
|
||||||
|
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||||
|
"admin.config.oauth.discord-client-id.description":
|
||||||
|
"Client ID of the Discord OAuth app",
|
||||||
|
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
||||||
|
"admin.config.oauth.discord-client-secret.description":
|
||||||
|
"Client secret of the Discord OAuth app",
|
||||||
|
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-enabled.description":
|
||||||
|
"Whether OpenID Connect login is enabled",
|
||||||
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||||
|
"admin.config.oauth.oidc-discovery-uri.description":
|
||||||
|
"Discovery URI of the OpenID Connect OAuth app",
|
||||||
|
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||||
|
"admin.config.oauth.oidc-sign-out.description":
|
||||||
|
"Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||||
|
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
||||||
|
"admin.config.oauth.oidc-scope.description":
|
||||||
|
"Scopes which should be requested from the OpenID Connect provider.",
|
||||||
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||||
|
"admin.config.oauth.oidc-username-claim.description":
|
||||||
|
"Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||||
|
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||||
|
"admin.config.oauth.oidc-role-path.description":
|
||||||
|
"Must be a valid JMES path referencing an array of roles. " +
|
||||||
|
"Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " +
|
||||||
|
"Leave it blank if you don't know what this config is.",
|
||||||
|
"admin.config.oauth.oidc-role-general-access":
|
||||||
|
"OpenID Connect role for general access",
|
||||||
|
"admin.config.oauth.oidc-role-general-access.description":
|
||||||
|
"Role required for general access. Must be present in a user’s roles for them to log in. " +
|
||||||
|
"Leave it blank if you don't know what this config is.",
|
||||||
|
"admin.config.oauth.oidc-role-admin-access":
|
||||||
|
"OpenID Connect role for admin access",
|
||||||
|
"admin.config.oauth.oidc-role-admin-access.description":
|
||||||
|
"Role required for administrative access. Must be present in a user’s roles for them to access the admin panel. " +
|
||||||
|
"Leave it blank if you don't know what this config is.",
|
||||||
|
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
||||||
|
"admin.config.oauth.oidc-client-id.description":
|
||||||
|
"Client ID of the OpenID Connect OAuth app",
|
||||||
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||||
|
"admin.config.oauth.oidc-client-secret.description":
|
||||||
|
"Client secret of the OpenID Connect OAuth app",
|
||||||
|
|
||||||
|
"admin.config.category.ldap": "LDAP",
|
||||||
|
"admin.config.ldap.enabled": "Enable LDAP",
|
||||||
|
"admin.config.ldap.enabled.description":
|
||||||
|
"Use LDAP authentication for user login",
|
||||||
|
"admin.config.ldap.url": "Server URL",
|
||||||
|
"admin.config.ldap.url.description": "URL of the LDAP server",
|
||||||
|
"admin.config.ldap.bind-dn": "Bind DN",
|
||||||
|
"admin.config.ldap.bind-dn.description":
|
||||||
|
"Default user used to perform the user search",
|
||||||
|
"admin.config.ldap.bind-password": "Bind password",
|
||||||
|
"admin.config.ldap.bind-password.description":
|
||||||
|
"Password used to perform the user search",
|
||||||
|
"admin.config.ldap.search-base": "User base",
|
||||||
|
"admin.config.ldap.search-base.description":
|
||||||
|
"Base location, where the user search will be performed",
|
||||||
|
"admin.config.ldap.search-query": "User query",
|
||||||
|
"admin.config.ldap.search-query.description":
|
||||||
|
"The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||||
|
"admin.config.ldap.admin-groups": "Admin group",
|
||||||
|
"admin.config.ldap.admin-groups.description":
|
||||||
|
"Group required for administrative access.",
|
||||||
|
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||||
|
"admin.config.ldap.field-name-member-of.description":
|
||||||
|
"LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||||
|
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||||
|
"admin.config.ldap.field-name-email.description":
|
||||||
|
"LDAP attribute name for the email of an user.",
|
||||||
|
"admin.config.notify.success": "Configuration updated successfully.",
|
||||||
|
"admin.config.notify.logo-success":
|
||||||
|
"Logo updated successfully. It may take a few minutes to update on the website.",
|
||||||
|
"admin.config.notify.no-changes": "No changes to save.",
|
||||||
|
|
||||||
|
"admin.config.category.s3": "S3",
|
||||||
|
"admin.config.s3.enabled": "Enabled",
|
||||||
|
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
||||||
|
"admin.config.s3.endpoint": "Endpoint",
|
||||||
|
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
||||||
|
"admin.config.s3.region": "Region",
|
||||||
|
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-name": "Bucket name",
|
||||||
|
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
||||||
|
"admin.config.s3.bucket-path": "Path",
|
||||||
|
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
||||||
|
"admin.config.s3.key": "Key",
|
||||||
|
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
||||||
|
"admin.config.s3.secret": "Secret",
|
||||||
|
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
||||||
|
|
||||||
|
"admin.config.category.legal": "Legal",
|
||||||
|
"admin.config.legal.enabled": "Enable legal notices",
|
||||||
|
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
||||||
|
"admin.config.legal.imprint-text": "Imprint text",
|
||||||
|
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
|
||||||
|
"admin.config.legal.imprint-url": "Imprint URL",
|
||||||
|
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
|
||||||
|
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
||||||
|
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
|
||||||
|
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
||||||
|
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
|
||||||
|
|
||||||
|
// 404
|
||||||
|
"404.description": "Oops this page doesn't exist.",
|
||||||
|
"404.button.home": "Bring me back home",
|
||||||
|
|
||||||
|
// error
|
||||||
|
"error.title": "Error",
|
||||||
|
"error.description": "Oops!",
|
||||||
|
"error.button.back": "Go back",
|
||||||
|
"error.msg.default": "Something went wrong.",
|
||||||
|
"error.msg.access_denied":
|
||||||
|
"You canceled the authentication process, please try again.",
|
||||||
|
"error.msg.expired_token":
|
||||||
|
"The authentication process took too long, please try again.",
|
||||||
|
"error.msg.invalid_token": "Internal Error",
|
||||||
|
"error.msg.no_user": "User linked to this {0} account doesn't exist.",
|
||||||
|
"error.msg.no_email": "Can't get email address from this {0} account.",
|
||||||
|
"error.msg.already_linked":
|
||||||
|
"This {0} account is already linked to another account.",
|
||||||
|
"error.msg.not_linked":
|
||||||
|
"This {0} account hasn't been linked to any account yet.",
|
||||||
|
"error.msg.unverified_account":
|
||||||
|
"This {0} account is unverified, please try again after verification.",
|
||||||
|
"error.msg.user_not_allowed": "You are not allowed to sign in.",
|
||||||
|
"error.msg.cannot_get_user_info":
|
||||||
|
"Cannot get your user info from this {0} account.",
|
||||||
|
"error.param.provider_github": "GitHub",
|
||||||
|
"error.param.provider_google": "Google",
|
||||||
|
"error.param.provider_microsoft": "Microsoft",
|
||||||
|
"error.param.provider_discord": "Discord",
|
||||||
|
"error.param.provider_oidc": "OpenID Connect",
|
||||||
|
|
||||||
|
// Common translations
|
||||||
|
"common.button.save": "Save",
|
||||||
|
"common.button.create": "Create",
|
||||||
|
"common.button.submit": "Submit",
|
||||||
|
"common.button.delete": "Delete",
|
||||||
|
"common.button.cancel": "Cancel",
|
||||||
|
"common.button.confirm": "Confirm",
|
||||||
|
"common.button.disable": "Disable",
|
||||||
|
"common.button.share": "Share",
|
||||||
|
"common.button.generate": "Generate",
|
||||||
|
"common.button.done": "Done",
|
||||||
|
"common.text.link": "Link",
|
||||||
|
"common.text.navigate-to-link": "Visit link",
|
||||||
|
"common.text.or": "or",
|
||||||
|
"common.text.redirecting": "Redirecting...",
|
||||||
|
"common.button.go-back": "Go back",
|
||||||
|
"common.button.go-home": "Go home",
|
||||||
|
"common.notify.copied": "Your link was copied to the clipboard",
|
||||||
|
"common.notify.copied-link": "Your link was copied to the clipboard",
|
||||||
|
"common.success": "Success",
|
||||||
|
|
||||||
|
"common.error": "Error",
|
||||||
|
"common.error.unknown": "An unknown error occurred",
|
||||||
|
"common.error.invalid-email": "Invalid email address",
|
||||||
|
"common.error.too-short": "Must be at least {length} characters",
|
||||||
|
"common.error.too-long": "Must be at most {length} characters",
|
||||||
|
"common.error.number-too-small": "Must be at least {min}",
|
||||||
|
"common.error.number-too-large": "Must be at most {max}",
|
||||||
|
"common.error.exact-length": "Must be exactly {length} characters",
|
||||||
|
"common.error.invalid-number": "Must be a number",
|
||||||
|
"common.error.field-required": "This field is required",
|
||||||
|
};
|
||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Salasana vaaditaan",
|
"share.modal.password.title": "Salasana vaaditaan",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Salasana",
|
"share.modal.password": "Salasana",
|
||||||
"share.modal.error.invalid-password": "Virheellinen salasana",
|
"share.modal.error.invalid-password": "Virheellinen salasana",
|
||||||
"share.button.download-all": "Lataa kaikki",
|
"share.button.download-all": "Lataa kaikki",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Partage privé",
|
"share.error.access-denied.title": "Partage privé",
|
||||||
"share.error.access-denied.description": "Le compte actuel n'a pas la permission d'accéder à ce partage",
|
"share.error.access-denied.description": "Le compte actuel n'a pas la permission d'accéder à ce partage",
|
||||||
"share.modal.password.title": "Mot de passe requis",
|
"share.modal.password.title": "Mot de passe requis",
|
||||||
"share.modal.password.description": "Veuillez entrer le mot de passe d'accès à ce partage.",
|
"share.modal.password.description": "Veuillez entrer le mot de passe pour accéder à ce partage.",
|
||||||
"share.modal.password": "Mot de passe",
|
"share.modal.password": "Mot de passe",
|
||||||
"share.modal.error.invalid-password": "Mot de passe incorrect",
|
"share.modal.error.invalid-password": "Mot de passe incorrect",
|
||||||
"share.button.download-all": "Télécharger tout",
|
"share.button.download-all": "Télécharger tout",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Partage mis à jour avec succès",
|
"share.edit.notify.save-success": "Partage mis à jour avec succès",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Mentions légales",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Politique de confidentialité",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Paramètres",
|
"admin.config.title": "Paramètres",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "Autoriser les partages anonymes",
|
"admin.config.share.allow-unauthenticated-shares": "Autoriser les partages anonymes",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Permet aux visiteurs de créer des partages",
|
"admin.config.share.allow-unauthenticated-shares.description": "Permet aux visiteurs de créer des partages",
|
||||||
"admin.config.share.max-expiration": "Échéance",
|
"admin.config.share.max-expiration": "Échéance",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Expiration du partage en heures. Réglez sur 0 pour qu'il n'expire jamais.",
|
||||||
"admin.config.share.share-id-length": "Taille de l'identifiant généré",
|
"admin.config.share.share-id-length": "Taille de l'identifiant généré",
|
||||||
"admin.config.share.share-id-length.description": "Taille par défaut de l'identifiant généré pour un partage. Cette valeur est aussi utilisée pour générer les liens des partages inverses. Une valeur inférieure à 8 n'est pas considérée sûre.",
|
"admin.config.share.share-id-length.description": "Taille par défaut de l'identifiant généré pour un partage. Cette valeur est aussi utilisée pour générer les liens des partages inverses. Une valeur inférieure à 8 n'est pas considérée sûre.",
|
||||||
"admin.config.share.max-size": "Taille max",
|
"admin.config.share.max-size": "Taille max",
|
||||||
@@ -463,17 +463,17 @@ export default {
|
|||||||
"admin.config.s3.key.description": "La clé qui vous permet d'accéder au bucket S3.",
|
"admin.config.s3.key.description": "La clé qui vous permet d'accéder au bucket S3.",
|
||||||
"admin.config.s3.secret": "Secret",
|
"admin.config.s3.secret": "Secret",
|
||||||
"admin.config.s3.secret.description": "Le secret qui vous permet d'accéder au bucket S3.",
|
"admin.config.s3.secret.description": "Le secret qui vous permet d'accéder au bucket S3.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Juridique",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Activer les mentions légales",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Afficher/Masquer dans le pied de page un lien vers les mentions légales et la politique de confidentialité.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Texte des mentions légales",
|
||||||
"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.description": "Le texte qui doit être affiché dans les mentions légales. Supporte le Markdown. Laissez vide pour mettre un lien vers une page de mentions légales externe.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "URL des mentions légales",
|
||||||
"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.description": "Si vous avez déjà une page de mentions légales, vous pouvez indiquer son URL ici au lieu d'utiliser le champ de texte.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Texte de la politique de confidentialité",
|
||||||
"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.description": "Le texte qui doit être affiché dans la politique de confidentialité. Supporte le Markdown. Laissez vide pour mettre un lien vers une page de politique de confidentialité externe.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "URL de la politique de confidentialité",
|
||||||
"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.description": "Si vous avez déjà une page de politique de confidentialité, vous pouvez indiquer son URL ici au lieu d'utiliser le champ de texte.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Désolé, mais cette page n’existe pas.",
|
"404.description": "Désolé, mais cette page n’existe pas.",
|
||||||
"404.button.home": "Retour à l’accueil",
|
"404.button.home": "Retour à l’accueil",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Privatno dijeljenje",
|
"share.error.access-denied.title": "Privatno dijeljenje",
|
||||||
"share.error.access-denied.description": "Trenutni račun nema dozvolu za pristup ovom dijeljenju.",
|
"share.error.access-denied.description": "Trenutni račun nema dozvolu za pristup ovom dijeljenju.",
|
||||||
"share.modal.password.title": "Lozinka je potrebna",
|
"share.modal.password.title": "Lozinka je potrebna",
|
||||||
"share.modal.password.description": "Molimo unesite lozinku za pristup ovom dijeljenju.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Lozinka",
|
"share.modal.password": "Lozinka",
|
||||||
"share.modal.error.invalid-password": "Neispravna lozinka",
|
"share.modal.error.invalid-password": "Neispravna lozinka",
|
||||||
"share.button.download-all": "Preuzmi sve",
|
"share.button.download-all": "Preuzmi sve",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Privát megosztás",
|
"share.error.access-denied.title": "Privát megosztás",
|
||||||
"share.error.access-denied.description": "Ez a fiók nem rendelkezik jogosultsággal a megosztás eléréséhez",
|
"share.error.access-denied.description": "Ez a fiók nem rendelkezik jogosultsággal a megosztás eléréséhez",
|
||||||
"share.modal.password.title": "Jelszó szükséges",
|
"share.modal.password.title": "Jelszó szükséges",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Jelszó",
|
"share.modal.password": "Jelszó",
|
||||||
"share.modal.error.invalid-password": "Érvénytelen jelszó",
|
"share.modal.error.invalid-password": "Érvénytelen jelszó",
|
||||||
"share.button.download-all": "Mindet letölti",
|
"share.button.download-all": "Mindet letölti",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default {
|
|||||||
// /
|
// /
|
||||||
"home.title": "Una piattaforma di condivisione file <h>self-hosted</h>.",
|
"home.title": "Una piattaforma di condivisione file <h>self-hosted</h>.",
|
||||||
"home.description": "Vuoi davvero dare i tuoi file personali in mano a terzi come WeTransfer?",
|
"home.description": "Vuoi davvero dare i tuoi file personali in mano a terzi come WeTransfer?",
|
||||||
"home.bullet.a.name": "Self-hosted",
|
"home.bullet.a.name": "Self-Hosted",
|
||||||
"home.bullet.a.description": "Configura Pingvin Share sul tuo server.",
|
"home.bullet.a.description": "Configura Pingvin Share sul tuo server.",
|
||||||
"home.bullet.b.name": "Privacy",
|
"home.bullet.b.name": "Privacy",
|
||||||
"home.bullet.b.description": "I tuoi file sono tuoi e non saranno mai accessibili da terze parti.",
|
"home.bullet.b.description": "I tuoi file sono tuoi e non saranno mai accessibili da terze parti.",
|
||||||
@@ -29,7 +29,7 @@ export default {
|
|||||||
"signin.input.email-or-username": "Email o nome utente",
|
"signin.input.email-or-username": "Email o nome utente",
|
||||||
"signin.input.email-or-username.placeholder": "La tua email o nome utente",
|
"signin.input.email-or-username.placeholder": "La tua email o nome utente",
|
||||||
"signin.input.password": "Password",
|
"signin.input.password": "Password",
|
||||||
"signin.input.password.placeholder": "Password",
|
"signin.input.password.placeholder": "La tua password",
|
||||||
"signin.button.submit": "Accedi",
|
"signin.button.submit": "Accedi",
|
||||||
"signIn.notify.totp-required.title": "Autenticazione a due fattori richiesta",
|
"signIn.notify.totp-required.title": "Autenticazione a due fattori richiesta",
|
||||||
"signIn.notify.totp-required.description": "Inserisci il tuo codice di autenticazione a due fattori",
|
"signIn.notify.totp-required.description": "Inserisci il tuo codice di autenticazione a due fattori",
|
||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Condivisione privata",
|
"share.error.access-denied.title": "Condivisione privata",
|
||||||
"share.error.access-denied.description": "L' account non ha il premesso di accedere a questa condivisione",
|
"share.error.access-denied.description": "L' account non ha il premesso di accedere a questa condivisione",
|
||||||
"share.modal.password.title": "Password richiesta",
|
"share.modal.password.title": "Password richiesta",
|
||||||
"share.modal.password.description": "Inserisci la password per accedere a questa condivisione.",
|
"share.modal.password.description": "Per favore inserisci la password per accedere a questa condivisione.",
|
||||||
"share.modal.password": "Password",
|
"share.modal.password": "Password",
|
||||||
"share.modal.error.invalid-password": "Password non valida",
|
"share.modal.error.invalid-password": "Password non valida",
|
||||||
"share.button.download-all": "Scarica tutto",
|
"share.button.download-all": "Scarica tutto",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Condivisione aggiornata correttamente",
|
"share.edit.notify.save-success": "Condivisione aggiornata correttamente",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Note legali",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Informativa sulla privacy",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Configurazione",
|
"admin.config.title": "Configurazione",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "Consenti condivisioni non autenticate",
|
"admin.config.share.allow-unauthenticated-shares": "Consenti condivisioni non autenticate",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni",
|
"admin.config.share.allow-unauthenticated-shares.description": "Indica se gli utenti non autenticati possono creare condivisioni",
|
||||||
"admin.config.share.max-expiration": "Scadenza massima",
|
"admin.config.share.max-expiration": "Scadenza massima",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Scadenza massima della condivisione. Impostare a 0 per consentire la scadenza illimitata.",
|
||||||
"admin.config.share.share-id-length": "Lunghezza ID condivisione predefinita",
|
"admin.config.share.share-id-length": "Lunghezza ID condivisione predefinita",
|
||||||
"admin.config.share.share-id-length.description": "Lunghezza predefinita dell'ID generato per una condivisione. Questo valore viene utilizzato anche per generare collegamenti per condivisioni inverse. Un valore inferiore a 8 non è considerato sicuro.",
|
"admin.config.share.share-id-length.description": "Lunghezza predefinita dell'ID generato per una condivisione. Questo valore viene utilizzato anche per generare collegamenti per condivisioni inverse. Un valore inferiore a 8 non è considerato sicuro.",
|
||||||
"admin.config.share.max-size": "Dim. massima",
|
"admin.config.share.max-size": "Dim. massima",
|
||||||
@@ -463,17 +463,17 @@ export default {
|
|||||||
"admin.config.s3.key.description": "La chiave che consente di accedere al bucket S3.",
|
"admin.config.s3.key.description": "La chiave che consente di accedere al bucket S3.",
|
||||||
"admin.config.s3.secret": "Parola chiave",
|
"admin.config.s3.secret": "Parola chiave",
|
||||||
"admin.config.s3.secret.description": "La parola chiave che consente di accedere al bucket S3.",
|
"admin.config.s3.secret.description": "La parola chiave che consente di accedere al bucket S3.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Legale",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Abilita le notifiche legali",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Indica se mostrare o meno un link alle informative legali e sulla privacy a piè di pagina.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Testo dell'informativa",
|
||||||
"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.description": "Il testo che deve essere mostrato nell'informativa. Supporta il linguaggio Markdown. Lascia vuoto per collegare una pagina informativa esterna.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "URL dell'informativa",
|
||||||
"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.description": "Nel caso avessi già una pagina di informativa puoi collegarla qui invece di usare il campo di testo.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Testo dell'informativa sulla privacy",
|
||||||
"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.description": "Il testo che dovrebbe essere mostrato nell'informativa sulla privacy. Supporta il linguaggio Markdown. Lascia vuoto per collegare una pagina esterna inerente la politica sulla privacy.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "URL dell'informativa sulla privacy",
|
||||||
"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.description": "Nel caso avessi già una pagina di informativa sulla privacy, puoi collegarla qui invece di usare il campo di testo.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ops, questa pagina non esiste.",
|
"404.description": "Ops, questa pagina non esiste.",
|
||||||
"404.button.home": "Riportami a casa",
|
"404.button.home": "Riportami a casa",
|
||||||
|
|||||||
@@ -124,9 +124,9 @@ export default {
|
|||||||
"account.shares.table.expiresAt": "有効期限",
|
"account.shares.table.expiresAt": "有効期限",
|
||||||
"account.shares.table.createdAt": "作成日",
|
"account.shares.table.createdAt": "作成日",
|
||||||
"account.shares.table.size": "サイズ",
|
"account.shares.table.size": "サイズ",
|
||||||
"account.shares.table.password-protected": "Password protected",
|
"account.shares.table.password-protected": "パスワードで保護されています",
|
||||||
"account.shares.table.visitor-count": "{count} of {max}",
|
"account.shares.table.visitor-count": "{count} / {max}",
|
||||||
"account.shares.table.expiry-never": "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": "共有リンク",
|
||||||
"account.shares.modal.delete.title": "共有を削除: {share}",
|
"account.shares.modal.delete.title": "共有を削除: {share}",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "共有の更新に成功しました",
|
"share.edit.notify.save-success": "共有の更新に成功しました",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "インプリント",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "プライバシーポリシー",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "設定",
|
"admin.config.title": "設定",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "ログインしていない状態での共有を許可する",
|
"admin.config.share.allow-unauthenticated-shares": "ログインしていない状態での共有を許可する",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "ログインしていないユーザーに共有の作成を許可するかどうかを選択してください。",
|
"admin.config.share.allow-unauthenticated-shares.description": "ログインしていないユーザーに共有の作成を許可するかどうかを選択してください。",
|
||||||
"admin.config.share.max-expiration": "有効期限の上限",
|
"admin.config.share.max-expiration": "有効期限の上限",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "共有の最大有効期限。無期限を許可するには0に設定します。",
|
||||||
"admin.config.share.share-id-length": "デフォルトの共有IDの長さ",
|
"admin.config.share.share-id-length": "デフォルトの共有IDの長さ",
|
||||||
"admin.config.share.share-id-length.description": "共有の生成されたIDのデフォルトの長さ。この値はファイルリクエストのリンクを生成するためにも使用されます。8未満の値は安全ではないと見なされます。",
|
"admin.config.share.share-id-length.description": "共有の生成されたIDのデフォルトの長さ。この値はファイルリクエストのリンクを生成するためにも使用されます。8未満の値は安全ではないと見なされます。",
|
||||||
"admin.config.share.max-size": "最大ファイルサイズ",
|
"admin.config.share.max-size": "最大ファイルサイズ",
|
||||||
@@ -463,17 +463,17 @@ export default {
|
|||||||
"admin.config.s3.key.description": "S3バケットにアクセスするためのキー。",
|
"admin.config.s3.key.description": "S3バケットにアクセスするためのキー。",
|
||||||
"admin.config.s3.secret": "秘密",
|
"admin.config.s3.secret": "秘密",
|
||||||
"admin.config.s3.secret.description": "S3バケットにアクセスするための秘密。",
|
"admin.config.s3.secret.description": "S3バケットにアクセスするための秘密。",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "法的事項",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "法的通知を有効にする",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "フッターにインプリントとプライバシーポリシーへのリンクを表示するか。",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "インプリントテキスト",
|
||||||
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
|
"admin.config.legal.imprint-text.description": "インプリントに表示されるテキスト。Markdownをサポートします。外部のインプリント ページにリンクするには空白のままにします。",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "インプリントのURL",
|
||||||
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
|
"admin.config.legal.imprint-url.description": "すでにインプリント ページがある場合は、テキストフィールドを使用する代わりにここにリンクすることができます。",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "プライバシーポリシーのテキスト",
|
||||||
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
|
"admin.config.legal.privacy-policy-text.description": "プライバシーポリシーに表示されるテキスト。Markdownをサポートします。外部のプライバシーポリシーにリンクするには空白のままにします。",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "プライバシーポリシーのURL",
|
||||||
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
|
"admin.config.legal.privacy-policy-url.description": "すでにプライバシーポリシーがある場合は、テキストフィールドを使用する代わりにここにリンクすることができます。",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "ページが見つかりません。",
|
"404.description": "ページが見つかりません。",
|
||||||
"404.button.home": "ホームに戻る",
|
"404.button.home": "ホームに戻る",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "비밀번호 필요",
|
"share.modal.password.title": "비밀번호 필요",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"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": "모두 다운로드",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "Dit account heeft geen toestemming om toegang te krijgen tot deze share",
|
"share.error.access-denied.description": "Dit account heeft geen toestemming om toegang te krijgen tot deze share",
|
||||||
"share.modal.password.title": "Wachtwoord vereist",
|
"share.modal.password.title": "Wachtwoord vereist",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Wachtwoord",
|
"share.modal.password": "Wachtwoord",
|
||||||
"share.modal.error.invalid-password": "Ongeldig wachtwoord",
|
"share.modal.error.invalid-password": "Ongeldig wachtwoord",
|
||||||
"share.button.download-all": "Alles downloaden",
|
"share.button.download-all": "Alles downloaden",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Prywatne udostępnienie",
|
"share.error.access-denied.title": "Prywatne udostępnienie",
|
||||||
"share.error.access-denied.description": "Bieżące konto nie ma uprawnień dostępu do tego udostępnienia",
|
"share.error.access-denied.description": "Bieżące konto nie ma uprawnień dostępu do tego udostępnienia",
|
||||||
"share.modal.password.title": "Wymagane hasło",
|
"share.modal.password.title": "Wymagane hasło",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Hasło",
|
"share.modal.password": "Hasło",
|
||||||
"share.modal.error.invalid-password": "Hasło jest nieprawidłowe",
|
"share.modal.error.invalid-password": "Hasło jest nieprawidłowe",
|
||||||
"share.button.download-all": "Pobierz wszystko",
|
"share.button.download-all": "Pobierz wszystko",
|
||||||
|
|||||||
@@ -124,8 +124,8 @@ export default {
|
|||||||
"account.shares.table.expiresAt": "Expira em",
|
"account.shares.table.expiresAt": "Expira em",
|
||||||
"account.shares.table.createdAt": "Criada em",
|
"account.shares.table.createdAt": "Criada em",
|
||||||
"account.shares.table.size": "Tamanho",
|
"account.shares.table.size": "Tamanho",
|
||||||
"account.shares.table.password-protected": "Password protected",
|
"account.shares.table.password-protected": "Protegido por senha",
|
||||||
"account.shares.table.visitor-count": "{count} of {max}",
|
"account.shares.table.visitor-count": "{count} de {max}",
|
||||||
"account.shares.table.expiry-never": "Nunca",
|
"account.shares.table.expiry-never": "Nunca",
|
||||||
"account.shares.modal.share-informations": "Informações do compartilhamento",
|
"account.shares.modal.share-informations": "Informações do compartilhamento",
|
||||||
"account.shares.modal.share-link": "Link do compartilhamento",
|
"account.shares.modal.share-link": "Link do compartilhamento",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Compartilhamento atualizado com sucesso",
|
"share.edit.notify.save-success": "Compartilhamento atualizado com sucesso",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Termos Legais",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Política de Privacidade",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Configuração",
|
"admin.config.title": "Configuração",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
|
"admin.config.share.allow-unauthenticated-shares": "Permitir compartilhamentos sem autenticação",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
|
"admin.config.share.allow-unauthenticated-shares.description": "Se usuários não autenticados podem criar compartilhamentos",
|
||||||
"admin.config.share.max-expiration": "Expiração máxima",
|
"admin.config.share.max-expiration": "Expiração máxima",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Expiração máxima de compartilhamento. Defina 0 para permitir expiração ilimitada.",
|
||||||
"admin.config.share.share-id-length": "Comprimento da ID do compartilhamento padrão",
|
"admin.config.share.share-id-length": "Comprimento da ID do compartilhamento padrão",
|
||||||
"admin.config.share.share-id-length.description": "Comprimento padrão para a ID gerada de um compartilhamento. Este valor também é usado para gerar links para ações reversas. Um valor abaixo de 8 não é considerado seguro.",
|
"admin.config.share.share-id-length.description": "Comprimento padrão para a ID gerada de um compartilhamento. Este valor também é usado para gerar links para ações reversas. Um valor abaixo de 8 não é considerado seguro.",
|
||||||
"admin.config.share.max-size": "Tamanho máximo",
|
"admin.config.share.max-size": "Tamanho máximo",
|
||||||
@@ -463,17 +463,17 @@ export default {
|
|||||||
"admin.config.s3.key.description": "A chave que permite a você acessar o bucket S3.",
|
"admin.config.s3.key.description": "A chave que permite a você acessar o bucket S3.",
|
||||||
"admin.config.s3.secret": "Segredo",
|
"admin.config.s3.secret": "Segredo",
|
||||||
"admin.config.s3.secret.description": "O segredo que permite a você acessar o bucket S3.",
|
"admin.config.s3.secret.description": "O segredo que permite a você acessar o bucket S3.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Aviso legal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Habilitar avisos legais",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Exibir um link para imprimir e política de privacidade no rodapé.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Imprimir texto",
|
||||||
"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.description": "O texto que deve ser mostrado na imagem. Suporta Markdown. Deixe em branco para vincular a página de impressão externa.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "Imprimir URL",
|
||||||
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
|
"admin.config.legal.imprint-url.description": "Se você já tem uma página impressa, você pode vinculá-la aqui ao invés de usar o campo de texto.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Texto da política de privacidade",
|
||||||
"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.description": "O texto que deve ser mostrado na política de privacidade. Suporta Markdown. Deixe em branco para vincular a página de política de privacidade externa.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "URL da política de privacidade",
|
||||||
"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.description": "Se você já tem uma página impressa, você pode vinculá-la aqui ao invés de usar o campo de texto.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Ops, esta página não existe.",
|
"404.description": "Ops, esta página não existe.",
|
||||||
"404.button.home": "Me traga de volta para casa",
|
"404.button.home": "Me traga de volta para casa",
|
||||||
|
|||||||
@@ -278,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": "Скачать все",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Zahtevano geslo",
|
"share.modal.password.title": "Zahtevano geslo",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Geslo",
|
"share.modal.password": "Geslo",
|
||||||
"share.modal.error.invalid-password": "Napačno geslo",
|
"share.modal.error.invalid-password": "Napačno geslo",
|
||||||
"share.button.download-all": "Prenesi vse",
|
"share.button.download-all": "Prenesi vse",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Privatno deljenje",
|
"share.error.access-denied.title": "Privatno deljenje",
|
||||||
"share.error.access-denied.description": "Trenutni nalog nema dozvolu za pristup ovom deljenju",
|
"share.error.access-denied.description": "Trenutni nalog nema dozvolu za pristup ovom deljenju",
|
||||||
"share.modal.password.title": "Obavezna lozinka",
|
"share.modal.password.title": "Obavezna lozinka",
|
||||||
"share.modal.password.description": "Molimo unesite lozinku za pristup ovom deljenju.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Lozinka",
|
"share.modal.password": "Lozinka",
|
||||||
"share.modal.error.invalid-password": "Neispravna lozinka",
|
"share.modal.error.invalid-password": "Neispravna lozinka",
|
||||||
"share.button.download-all": "Preuzmi sve",
|
"share.button.download-all": "Preuzmi sve",
|
||||||
|
|||||||
@@ -278,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": "Преузми све",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Lösenord krävs",
|
"share.modal.password.title": "Lösenord krävs",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"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",
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "ต้องการรหัสผ่าน",
|
"share.modal.password.title": "ต้องการรหัสผ่าน",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"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": "ดาวน์โหลดทั้งหมด",
|
||||||
|
|||||||
@@ -1,40 +1,40 @@
|
|||||||
export default {
|
export default {
|
||||||
// Navbar
|
// Navbar
|
||||||
"navbar.upload": "Yükle",
|
"navbar.upload": "Yükle",
|
||||||
"navbar.signin": "Giriş Yap",
|
"navbar.signin": "Giriş yap",
|
||||||
"navbar.home": "Ana Sayfa",
|
"navbar.home": "Ana Sayfa",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "Kaydol",
|
||||||
"navbar.links.shares": "Paylaşımlarım",
|
"navbar.links.shares": "Paylaşımlarım",
|
||||||
"navbar.links.reverse": "Tersine Paylaşımlar",
|
"navbar.links.reverse": "Ters paylaşımlar",
|
||||||
"navbar.avatar.account": "Hesabım",
|
"navbar.avatar.account": "Hesabım",
|
||||||
"navbar.avatar.admin": "Yönetim",
|
"navbar.avatar.admin": "Yönetim",
|
||||||
"navbar.avatar.signout": "Çıkış Yap",
|
"navbar.avatar.signout": "Çıkış yap",
|
||||||
// END navbar
|
// END navbar
|
||||||
// /
|
// /
|
||||||
"home.title": "<h>Kişisel barındırılan</h> bir dosya paylaşım platformu.",
|
"home.title": "Kendi <h>kendine barındırılan</h> bir dosya paylaşım platformu.",
|
||||||
"home.description": "Kişisel dosyalarınızı WeTransfer gibi üçüncü tarafların eline gerçekten vermek istiyor musunuz?",
|
"home.description": "Kişisel dosyalarınızı WeTransfer gibi üçüncü tarafların eline gerçekten vermek ister misiniz?",
|
||||||
"home.bullet.a.name": "Kişisel Barındırılan",
|
"home.bullet.a.name": "Kendi Kendine Barındırılan",
|
||||||
"home.bullet.a.description": "Pingvin Share'i kendi makinenizde barındırın.",
|
"home.bullet.a.description": "Pingvin Share'i kendi cihazınızda barındırın.",
|
||||||
"home.bullet.b.name": "Gizlilik",
|
"home.bullet.b.name": "Gizlilik",
|
||||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
"home.bullet.b.description": "Dosyalarınız size aittir ve asla üçüncü taraflar tarafından erişilemez.",
|
||||||
"home.bullet.c.name": "Can sıkıcı dosya boyutu sınırı yok",
|
"home.bullet.c.name": "Can sıkıcı boyut sınırı yok",
|
||||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
"home.bullet.c.description": "İstediğiniz kadar büyük dosyaları yükleyin. Sadece sabit diskiniz sınırınız olacak.",
|
||||||
"home.button.start": "Başlayalım",
|
"home.button.start": "Başlayın",
|
||||||
"home.button.source": "Kaynak kodu",
|
"home.button.source": "Kaynak kodu",
|
||||||
// END /
|
// END /
|
||||||
// /auth/signin
|
// /auth/signin
|
||||||
"signin.title": "Tekrar hoşgeldiniz",
|
"signin.title": "Tekrar hoş geldiniz",
|
||||||
"signin.description": "Henüz bir hesabınız yok mu?",
|
"signin.description": "Henüz bir hesabınız yok mu?",
|
||||||
"signin.button.signup": "Kaydol",
|
"signin.button.signup": "Kaydol",
|
||||||
"signin.input.email-or-username": "Eposta veya kullanıcı adı",
|
"signin.input.email-or-username": "E-posta veya kullanıcı adı",
|
||||||
"signin.input.email-or-username.placeholder": "E-Posta veya kullanıcı adı",
|
"signin.input.email-or-username.placeholder": "E-posta adresiniz veya kullanıcı adınız",
|
||||||
"signin.input.password": "Şifre",
|
"signin.input.password": "Şifre",
|
||||||
"signin.input.password.placeholder": "Şifreniz",
|
"signin.input.password.placeholder": "Şifreniz",
|
||||||
"signin.button.submit": "Giriş Yap",
|
"signin.button.submit": "Giriş yap",
|
||||||
"signIn.notify.totp-required.title": "İki faktörlü kimlik doğrulama gerekli",
|
"signIn.notify.totp-required.title": "İki faktörlü kimlik doğrulama gerekli",
|
||||||
"signIn.notify.totp-required.description": "Lütfen iki faktörlü doğrulama kodunuzu girin",
|
"signIn.notify.totp-required.description": "Lütfen iki faktörlü kimlik doğrulama kodunuzu girin",
|
||||||
"signIn.oauth.or": "YA DA",
|
"signIn.oauth.or": "VEYA",
|
||||||
"signIn.oauth.signInWith": "Sign in with",
|
"signIn.oauth.signInWith": "Şununla giriş yap",
|
||||||
"signIn.oauth.github": "GitHub",
|
"signIn.oauth.github": "GitHub",
|
||||||
"signIn.oauth.google": "Google",
|
"signIn.oauth.google": "Google",
|
||||||
"signIn.oauth.microsoft": "Microsoft",
|
"signIn.oauth.microsoft": "Microsoft",
|
||||||
@@ -42,104 +42,104 @@ export default {
|
|||||||
"signIn.oauth.oidc": "OpenID",
|
"signIn.oauth.oidc": "OpenID",
|
||||||
// END /auth/signin
|
// END /auth/signin
|
||||||
// /auth/signup
|
// /auth/signup
|
||||||
"signup.title": "Bir hesap oluştur",
|
"signup.title": "Bir hesap oluşturun",
|
||||||
"signup.description": "Zaten bir hesabınız mı var?",
|
"signup.description": "Zaten bir hesabınız var mı?",
|
||||||
"signup.button.signin": "Giriş Yap",
|
"signup.button.signin": "Giriş yap",
|
||||||
"signup.input.username": "Kullanıcı Adı",
|
"signup.input.username": "Kullanıcı adı",
|
||||||
"signup.input.username.placeholder": "Kullanıcı adınız",
|
"signup.input.username.placeholder": "Kullanıcı adınız",
|
||||||
"signup.input.email": "E-Posta",
|
"signup.input.email": "E-posta",
|
||||||
"signup.input.email.placeholder": "E-Posta adresiniz",
|
"signup.input.email.placeholder": "E-posta adresiniz",
|
||||||
"signup.button.submit": "Haydi Başlayalım",
|
"signup.button.submit": "Başlayalım",
|
||||||
// END /auth/signup
|
// END /auth/signup
|
||||||
// /auth/totp
|
// /auth/totp
|
||||||
"totp.title": "İki Faktörlü Doğrulama",
|
"totp.title": "TOTP Doğrulama",
|
||||||
"totp.button.signIn": "Giriş Yap",
|
"totp.button.signIn": "Giriş yap",
|
||||||
// END /auth/totp
|
// END /auth/totp
|
||||||
// /auth/reset-password
|
// /auth/reset-password
|
||||||
"resetPassword.title": "Şifrenizi mi unuttunuz?",
|
"resetPassword.title": "Şifrenizi mi unuttunuz?",
|
||||||
"resetPassword.description": "Şifrenizi sıfırlamak için E-Postanızı girin.",
|
"resetPassword.description": "Şifrenizi sıfırlamak için e-postanızı girin.",
|
||||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
"resetPassword.notify.success": "Sağlanan e-posta adresi mevcutsa, şifrenizi sıfırlamanız için bir bağlantı gönderildi.",
|
||||||
"resetPassword.button.back": "Giriş sayfasına geri dön",
|
"resetPassword.button.back": "Giriş sayfasına geri dön",
|
||||||
"resetPassword.text.resetPassword": "Şifreyi sıfırla",
|
"resetPassword.text.resetPassword": "Şifreyi sıfırla",
|
||||||
"resetPassword.text.enterNewPassword": "Yeni şifrenizi girin",
|
"resetPassword.text.enterNewPassword": "Yeni şifrenizi girin",
|
||||||
"resetPassword.input.password": "Yeni şifre",
|
"resetPassword.input.password": "Yeni şifre",
|
||||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
"resetPassword.notify.passwordReset": "Şifreniz başarıyla sıfırlandı.",
|
||||||
// /account
|
// /account
|
||||||
"account.title": "Hesabım",
|
"account.title": "Hesabım",
|
||||||
"account.card.info.title": "Hesap Bilgisi",
|
"account.card.info.title": "Hesap bilgileri",
|
||||||
"account.card.info.username": "Kullanıcı Adı",
|
"account.card.info.username": "Kullanıcı adı",
|
||||||
"account.card.info.email": "E-Posta",
|
"account.card.info.email": "E-posta",
|
||||||
"account.notify.info.success": "Hesap başarıyla güncellendi",
|
"account.notify.info.success": "Hesap başarıyla güncellendi",
|
||||||
"account.card.password.title": "Şifre",
|
"account.card.password.title": "Şifre",
|
||||||
"account.card.password.old": "Eski şifre",
|
"account.card.password.old": "Eski şifre",
|
||||||
"account.card.password.new": "Yeni şifre",
|
"account.card.password.new": "Yeni şifre",
|
||||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
"account.card.password.noPasswordSet": "Şifreniz ayarlanmadı. E-posta ve şifre kullanarak giriş yapmak için bir şifre oluşturmanız gerekiyor.",
|
||||||
"account.notify.password.success": "Şifre başarıyla değiştirildi",
|
"account.notify.password.success": "Şifre başarıyla değiştirildi",
|
||||||
"account.card.oauth.title": "Sosyal Medya girişi",
|
"account.card.oauth.title": "Sosyal giriş",
|
||||||
"account.card.oauth.github": "GitHub",
|
"account.card.oauth.github": "GitHub",
|
||||||
"account.card.oauth.google": "Google",
|
"account.card.oauth.google": "Google",
|
||||||
"account.card.oauth.microsoft": "Microsoft",
|
"account.card.oauth.microsoft": "Microsoft",
|
||||||
"account.card.oauth.discord": "Discord",
|
"account.card.oauth.discord": "Discord",
|
||||||
"account.card.oauth.oidc": "OpenID",
|
"account.card.oauth.oidc": "OpenID",
|
||||||
"account.card.oauth.link": "Bağlantı",
|
"account.card.oauth.link": "Bağla",
|
||||||
"account.card.oauth.unlink": "Bağlantıyı kes",
|
"account.card.oauth.unlink": "Bağlantıyı kaldır",
|
||||||
"account.card.oauth.unlinked": "Bağlantısız",
|
"account.card.oauth.unlinked": "Bağlantı kaldırıldı",
|
||||||
"account.modal.unlink.title": "Hesabın bağlantısını kaldır",
|
"account.modal.unlink.title": "Hesabın bağlantısını kaldır",
|
||||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
"account.modal.unlink.description": "Sosyal hesaplarınızın bağlantısını kaldırmanız giriş bilgilerinizi hatırlamıyorsanız hesabınızı kaybetmenize neden olabilir",
|
||||||
"account.notify.oauth.unlinked.success": "Bağlantı Başarıyla Kaldırıldı",
|
"account.notify.oauth.unlinked.success": "Başarıyla bağlantı kaldırıldı",
|
||||||
"account.card.security.title": "Güvenlik",
|
"account.card.security.title": "Güvenlik",
|
||||||
"account.card.security.totp.enable.description": "İki faktörlü doğrulamayı aktif etmek için şu anki şifrenizi girin",
|
"account.card.security.totp.enable.description": "TOTP'yi etkinleştirmek için mevcut şifrenizi girin",
|
||||||
"account.card.security.totp.disable.description": "İki faktörlü doğrulamayı kaldırmak için şu anki şifrenizi girin",
|
"account.card.security.totp.disable.description": "TOTP'yi devre dışı bırakmak için mevcut şifrenizi girin",
|
||||||
"account.card.security.totp.button.start": "Başlat",
|
"account.card.security.totp.button.start": "Başlat",
|
||||||
"account.modal.totp.title": "2FA aç",
|
"account.modal.totp.title": "TOTP'yi Etkinleştir",
|
||||||
"account.modal.totp.step1": "Adım 1: Kimlik doğrulayıcınızı ekleyin",
|
"account.modal.totp.step1": "1. Adım: Kimlik doğrulayıcınızı ekleyin",
|
||||||
"account.modal.totp.step2": "Adım 2: Kodunuzu doğrulayın",
|
"account.modal.totp.step2": "2. Adım: Kodunuzu doğrulayın",
|
||||||
"account.modal.totp.enterManually": "Manuel olarak girin",
|
"account.modal.totp.enterManually": "Manuel olarak girin",
|
||||||
"account.modal.totp.code": "Kod",
|
"account.modal.totp.code": "Kod",
|
||||||
"common.button.clickToCopy": "Kopyalamak için tıkla",
|
"common.button.clickToCopy": "Kopyalamak için tıklayın",
|
||||||
"account.modal.totp.verify": "Doğrula",
|
"account.modal.totp.verify": "Doğrula",
|
||||||
"account.notify.totp.disable": "2FA başarıyla kaldırıldı",
|
"account.notify.totp.disable": "TOTP başarıyla devre dışı bırakıldı",
|
||||||
"account.notify.totp.enable": "2FA başarıyla etkinleştirildi",
|
"account.notify.totp.enable": "TOTP başarıyla etkinleştirildi",
|
||||||
"account.card.language.title": "Dil",
|
"account.card.language.title": "Dil",
|
||||||
"account.card.language.description": "Proje topluluk tarafından çevrilmiştir. Bazı diller eksik olabilir.",
|
"account.card.language.description": "Proje topluluk tarafından çevrilmiştir. Bazı diller eksik olabilir.",
|
||||||
"account.card.color.title": "Renk Şeması",
|
"account.card.color.title": "Renk şeması",
|
||||||
// ThemeSwitcher.tsx
|
// ThemeSwitcher.tsx
|
||||||
"account.theme.dark": "Koyu",
|
"account.theme.dark": "Karanlık",
|
||||||
"account.theme.light": "Açık",
|
"account.theme.light": "Aydınlık",
|
||||||
"account.theme.system": "Sistem",
|
"account.theme.system": "Sistem",
|
||||||
"account.button.delete": "Hesabı sil",
|
"account.button.delete": "Hesabı Sil",
|
||||||
"account.modal.delete.title": "Hesabı sil",
|
"account.modal.delete.title": "Hesabı Sil",
|
||||||
"account.modal.delete.description": "Tüm aktif paylaşımlarınız dahil hesabınızı gerçekten silmek istiyor musunuz?",
|
"account.modal.delete.description": "Tüm aktif paylaşımlarınız dahil hesabınızı gerçekten silmek istiyor musunuz?",
|
||||||
// END /account
|
// END /account
|
||||||
// /account/shares
|
// /account/shares
|
||||||
"account.shares.title": "Paylaşımlarım",
|
"account.shares.title": "Paylaşımlarım",
|
||||||
"account.shares.title.empty": "Burası bomboş 👀",
|
"account.shares.title.empty": "Burası boş 👀",
|
||||||
"account.shares.description.empty": "Hiç paylaşımınız yok.",
|
"account.shares.description.empty": "Hiç paylaşımınız yok.",
|
||||||
"account.shares.button.create": "Bir tane oluşturun",
|
"account.shares.button.create": "Bir tane oluştur",
|
||||||
"account.shares.info.title": "Bilgiler paylaşın",
|
"account.shares.info.title": "Paylaşım Bilgileri",
|
||||||
"account.shares.table.id": "ID",
|
"account.shares.table.id": "ID",
|
||||||
"account.shares.table.name": "İsim",
|
"account.shares.table.name": "Adı",
|
||||||
"account.shares.table.description": "Açıklama",
|
"account.shares.table.description": "Açıklama",
|
||||||
"account.shares.table.visitors": "Ziyaretçiler",
|
"account.shares.table.visitors": "Ziyaretçiler",
|
||||||
"account.shares.table.expiresAt": "Expires on",
|
"account.shares.table.expiresAt": "Bitiş Tarihi",
|
||||||
"account.shares.table.createdAt": "Created on",
|
"account.shares.table.createdAt": "Oluşturulma Tarihi",
|
||||||
"account.shares.table.size": "Boyut",
|
"account.shares.table.size": "Boyut",
|
||||||
"account.shares.table.password-protected": "Password protected",
|
"account.shares.table.password-protected": "Şifre Koruması",
|
||||||
"account.shares.table.visitor-count": "{count} of {max}",
|
"account.shares.table.visitor-count": "{count} / {max}",
|
||||||
"account.shares.table.expiry-never": "Never",
|
"account.shares.table.expiry-never": "Hiçbir Zaman",
|
||||||
"account.shares.modal.share-informations": "Bilgiler paylaşın",
|
"account.shares.modal.share-informations": "Paylaşım Bilgileri",
|
||||||
"account.shares.modal.share-link": "Bağlantıyı paylaş",
|
"account.shares.modal.share-link": "Paylaşım Bağlantısı",
|
||||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
"account.shares.modal.delete.title": "Paylaşımı Sil: {share}",
|
||||||
"account.shares.modal.delete.description": "Bu paylaşımı silmek istediğinize emin misiniz?",
|
"account.shares.modal.delete.description": "Bu paylaşımı silmek istediğinize emin misiniz?",
|
||||||
// END /account/shares
|
// END /account/shares
|
||||||
// /account/reverseShares
|
// /account/reverseShares
|
||||||
"account.reverseShares.title": "Tersine Paylaşımlar",
|
"account.reverseShares.title": "Ters Paylaşımlar",
|
||||||
"account.reverseShares.description": "Ters paylaşım, harici kullanıcıların bir paylaşım oluşturmasına olanak tanıyan benzersiz bir URL oluşturmanızı sağlar.",
|
"account.reverseShares.description": "Ters paylaşım, harici kullanıcıların paylaşım oluşturmasını sağlayan benzersiz bir URL oluşturmanıza olanak tanır.",
|
||||||
"account.reverseShares.title.empty": "Burası bomboş 👀",
|
"account.reverseShares.title.empty": "Burası boş 👀",
|
||||||
"account.reverseShares.description.empty": "Hiç tersine paylaşımınız yok.",
|
"account.reverseShares.description.empty": "Hiç ters paylaşımınız yok.",
|
||||||
// showCreateReverseShareModal.tsx
|
// showCreateReverseShareModal.tsx
|
||||||
"account.reverseShares.modal.title": "Tersine paylaşım oluşturun",
|
"account.reverseShares.modal.title": "Ters Paylaşım Oluştur",
|
||||||
"account.reverseShares.modal.expiration.label": "Sona erme",
|
"account.reverseShares.modal.expiration.label": "Son Kullanım Süresi",
|
||||||
"account.reverseShares.modal.expiration.minute-singular": "Dakika",
|
"account.reverseShares.modal.expiration.minute-singular": "Dakika",
|
||||||
"account.reverseShares.modal.expiration.minute-plural": "Dakika",
|
"account.reverseShares.modal.expiration.minute-plural": "Dakika",
|
||||||
"account.reverseShares.modal.expiration.hour-singular": "Saat",
|
"account.reverseShares.modal.expiration.hour-singular": "Saat",
|
||||||
@@ -152,92 +152,92 @@ export default {
|
|||||||
"account.reverseShares.modal.expiration.month-plural": "Ay",
|
"account.reverseShares.modal.expiration.month-plural": "Ay",
|
||||||
"account.reverseShares.modal.expiration.year-singular": "Yıl",
|
"account.reverseShares.modal.expiration.year-singular": "Yıl",
|
||||||
"account.reverseShares.modal.expiration.year-plural": "Yıl",
|
"account.reverseShares.modal.expiration.year-plural": "Yıl",
|
||||||
"account.reverseShares.modal.max-size.label": "Maks paylaşım boyutu",
|
"account.reverseShares.modal.max-size.label": "Maksimum Paylaşım Boyutu",
|
||||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
"account.reverseShares.modal.send-email": "E-posta Bildirimleri Gönder",
|
||||||
"account.reverseShares.modal.send-email.description": "Sends you an email notification when a share is created with this reverse share link.",
|
"account.reverseShares.modal.send-email.description": "Bu ters paylaşım bağlantısıyla bir paylaşım oluşturulduğunda size e-posta bildirimi gönderir.",
|
||||||
"account.reverseShares.modal.simplified": "Simple mode",
|
"account.reverseShares.modal.simplified": "Basit Mod",
|
||||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
"account.reverseShares.modal.simplified.description": "Dosya yükleyen kişinin, paylaşımı sizinle paylaşmasını kolaylaştırır. Yalnızca paylaşımın adını ve açıklamasını özelleştirebilirler.",
|
||||||
"account.reverseShares.modal.public-access": "Public access",
|
"account.reverseShares.modal.public-access": "Genel Erişim",
|
||||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
"account.reverseShares.modal.public-access.description": "Bu ters paylaşım ile oluşturulan paylaşımları genel yapın. Devre dışı bırakılırsa, yalnızca siz ve paylaşımı oluşturan kişi bunu görüntüleyebilir.",
|
||||||
"account.reverseShares.modal.max-use.label": "Maks Kullanım",
|
"account.reverseShares.modal.max-use.label": "Maksimum Kullanım",
|
||||||
"account.reverseShares.modal.max-use.description": "Bu URL'nin bir paylaşım oluşturmak için kullanılabileceği maksimum sayı.",
|
"account.reverseShares.modal.max-use.description": "Bu URL'nin paylaşım oluşturmak için kaç kez kullanılabileceğinin maksimum sayısı.",
|
||||||
"account.reverseShare.never-expires": "Bu tersine paylaşım asla sona ermeyecek.",
|
"account.reverseShare.never-expires": "Bu ters paylaşım asla sona ermeyecek.",
|
||||||
"account.reverseShare.expires-on": "Bu tersine paylaşım {expiration} tarihinde sona erecek.",
|
"account.reverseShare.expires-on": "Bu ters paylaşım {expiration} tarihinde sona erecek.",
|
||||||
"account.reverseShares.table.no-shares": "Henüz paylaşım oluşturulmadı",
|
"account.reverseShares.table.no-shares": "Henüz bir paylaşım oluşturulmadı",
|
||||||
"account.reverseShares.table.count.singular": "paylaşım",
|
"account.reverseShares.table.count.singular": "paylaşım",
|
||||||
"account.reverseShares.table.count.plural": "paylaşım",
|
"account.reverseShares.table.count.plural": "paylaşımlar",
|
||||||
"account.reverseShares.table.shares": "Paylaşım",
|
"account.reverseShares.table.shares": "Paylaşımlar",
|
||||||
"account.reverseShares.table.remaining": "Kalan kullanımların",
|
"account.reverseShares.table.remaining": "Kalan Kullanım",
|
||||||
"account.reverseShares.table.max-size": "Maks paylaşım boyutu",
|
"account.reverseShares.table.max-size": "Maksimum Paylaşım Boyutu",
|
||||||
"account.reverseShares.table.expires": "Sona erme tarihi",
|
"account.reverseShares.table.expires": "Son Kullanım Tarihi",
|
||||||
"account.reverseShares.modal.reverse-share-link": "Tersine paylaşım bağlantısı",
|
"account.reverseShares.modal.reverse-share-link": "Ters Paylaşım Bağlantısı",
|
||||||
"account.reverseShares.modal.delete.title": "Tersine paylaşımı sil",
|
"account.reverseShares.modal.delete.title": "Ters Paylaşımı Sil",
|
||||||
"account.reverseShares.modal.delete.description": "Bu tersine paylaşımı gerçekten silmek istiyor musunuz? Bunu yaparsanız, ilişkili paylaşımlar da silinecektir.",
|
"account.reverseShares.modal.delete.description": "Bu ters paylaşımı silmek istediğinize emin misiniz? Eğer silerseniz, ilişkili paylaşımlar da silinecektir.",
|
||||||
// END /account/reverseShares
|
// END /account/reverseShares
|
||||||
// /admin
|
// /admin
|
||||||
"admin.title": "Yönetim",
|
"admin.title": "Yönetim",
|
||||||
"admin.button.users": "Kullanıcı yönetimi",
|
"admin.button.users": "Kullanıcı Yönetimi",
|
||||||
"admin.button.shares": "Paylaşım yönetimi",
|
"admin.button.shares": "Paylaşım Yönetimi",
|
||||||
"admin.button.config": "Konfigürasyon",
|
"admin.button.config": "Yapılandırma",
|
||||||
"admin.version": "Sürüm",
|
"admin.version": "Sürüm",
|
||||||
// END /admin
|
// END /admin
|
||||||
// /admin/users
|
// /admin/users
|
||||||
"admin.users.title": "Kullanıcı yönetimi",
|
"admin.users.title": "Kullanıcı Yönetimi",
|
||||||
"admin.users.table.username": "Kullanıcı Adı",
|
"admin.users.table.username": "Kullanıcı Adı",
|
||||||
"admin.users.table.email": "E-Posta",
|
"admin.users.table.email": "E-posta",
|
||||||
"admin.users.table.admin": "Yönetici",
|
"admin.users.table.admin": "Yönetici",
|
||||||
"admin.users.edit.update.title": "Edit user: {username}",
|
"admin.users.edit.update.title": "Kullanıcıyı Düzenle: {username}",
|
||||||
"admin.users.edit.update.admin-privileges": "Yönetici ayrıcalıkları",
|
"admin.users.edit.update.admin-privileges": "Yönetici Yetkileri",
|
||||||
"admin.users.edit.update.change-password.title": "Şifreyi değiştir",
|
"admin.users.edit.update.change-password.title": "Şifreyi Değiştir",
|
||||||
"admin.users.edit.update.change-password.field": "Yeni şifre",
|
"admin.users.edit.update.change-password.field": "Yeni Şifre",
|
||||||
"admin.users.edit.update.change-password.button": "Yeni şifreyi kaydet",
|
"admin.users.edit.update.change-password.button": "Yeni Şifreyi Kaydet",
|
||||||
"admin.users.edit.update.notify.password.success": "Şifre başarıyla değiştirildi",
|
"admin.users.edit.update.notify.password.success": "Şifre başarıyla değiştirildi",
|
||||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
"admin.users.edit.delete.title": "Kullanıcıyı Sil: {username} ?",
|
||||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all their shares?",
|
"admin.users.edit.delete.description": "Bu kullanıcıyı ve tüm paylaşımlarını gerçekten silmek istiyor musunuz?",
|
||||||
// showCreateUserModal.tsx
|
// showCreateUserModal.tsx
|
||||||
"admin.users.modal.create.title": "Kullanıcı oluştur",
|
"admin.users.modal.create.title": "Kullanıcı Oluştur",
|
||||||
"admin.users.modal.create.username": "Kullanıcı Adı",
|
"admin.users.modal.create.username": "Kullanıcı Adı",
|
||||||
"admin.users.modal.create.email": "E-Posta",
|
"admin.users.modal.create.email": "E-posta",
|
||||||
"admin.users.modal.create.password": "Şifre",
|
"admin.users.modal.create.password": "Şifre",
|
||||||
"admin.users.modal.create.manual-password": "Şifreyi manuel olarak ayarla",
|
"admin.users.modal.create.manual-password": "Şifreyi Elle Ayarla",
|
||||||
"admin.users.modal.create.manual-password.description": "İşaretlenmezse, kullanıcı şifresini ayarlamak için bağlantı içeren bir e-posta alacaktır.",
|
"admin.users.modal.create.manual-password.description": "İşaretlenmezse, kullanıcıya şifresini ayarlayabileceği bir bağlantı içeren e-posta gönderilir.",
|
||||||
"admin.users.modal.create.admin": "Yönetici ayrıcalıkları",
|
"admin.users.modal.create.admin": "Yönetici Yetkileri",
|
||||||
"admin.users.modal.create.admin.description": "İşaretlenirse, kullanıcı yönetici paneline erişebilir.",
|
"admin.users.modal.create.admin.description": "İşaretlenirse, kullanıcı yönetim paneline erişebilir.",
|
||||||
// END /admin/users
|
// END /admin/users
|
||||||
// /admin/shares
|
// /admin/shares
|
||||||
"admin.shares.title": "Paylaşım yönetimi",
|
"admin.shares.title": "Paylaşım Yönetimi",
|
||||||
"admin.shares.table.id": "Paylaşım ID",
|
"admin.shares.table.id": "Paylaşım ID",
|
||||||
"admin.shares.table.username": "Yapımcı",
|
"admin.shares.table.username": "Oluşturan",
|
||||||
"admin.shares.table.visitors": "Ziyaretçi",
|
"admin.shares.table.visitors": "Ziyaretçiler",
|
||||||
"admin.shares.table.expires": "Expires on",
|
"admin.shares.table.expires": "Bitiş Tarihi",
|
||||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
"admin.shares.edit.delete.title": "Paylaşımı Sil: {id}",
|
||||||
"admin.shares.edit.delete.description": "Bu paylaşımı gerçekten silmek istiyor musun?",
|
"admin.shares.edit.delete.description": "Bu paylaşımı gerçekten silmek istiyor musunuz?",
|
||||||
// END /admin/shares
|
// END /admin/shares
|
||||||
// /upload
|
// /upload
|
||||||
"upload.title": "Yükle",
|
"upload.title": "Yükle",
|
||||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
"upload.notify.confirm-leave": "Bu sayfadan ayrılmak istediğinize emin misiniz? Yükleme iptal edilecek.",
|
||||||
"upload.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.",
|
"upload.notify.generic-error": "Paylaşım tamamlanırken bir hata oluştu.",
|
||||||
"upload.notify.count-failed": "{count} dosya yüklenemedi. Yeniden deneniyor.",
|
"upload.notify.count-failed": "{count} dosya yüklenemedi. Tekrar deneniyor.",
|
||||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
"upload.reverse-share.error.invalid.title": "Geçersiz Ters Paylaşım Bağlantısı",
|
||||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
"upload.reverse-share.error.invalid.description": "Bu ters paylaşım süresi dolmuş veya geçersiz.",
|
||||||
// Dropzone.tsx
|
// Dropzone.tsx
|
||||||
"upload.dropzone.title": "Dosya yükle",
|
"upload.dropzone.title": "Dosyaları Yükle",
|
||||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
"upload.dropzone.description": "Paylaşımınızı başlatmak için dosyaları buraya sürükleyip bırakın. Toplamda en fazla {maxSize} boyutunda dosyaları kabul ediyoruz.",
|
||||||
"upload.dropzone.notify.file-too-big": "Dosyalarınızın boyutu {maxSize} paylaşım sınırını geçti.",
|
"upload.dropzone.notify.file-too-big": "Dosyalarınız maksimum paylaşım boyutunu ({maxSize}) aşıyor.",
|
||||||
// FileList.tsx
|
// FileList.tsx
|
||||||
"upload.filelist.name": "İsim",
|
"upload.filelist.name": "Ad",
|
||||||
"upload.filelist.size": "Boyut",
|
"upload.filelist.size": "Boyut",
|
||||||
// showCreateUploadModal.tsx
|
// showCreateUploadModal.tsx
|
||||||
"upload.modal.title": "Paylaşım Oluştur",
|
"upload.modal.title": "Paylaşım Oluştur",
|
||||||
"upload.modal.link.error.invalid": "Sadece harf, sayı, alt çizgi ve kısa çizgi içerebilir",
|
"upload.modal.link.error.invalid": "Sadece harf, rakam, alt çizgi ve kısa çizgi içerebilir.",
|
||||||
"upload.modal.link.error.taken": "Bu bağlantı halen kullanımda",
|
"upload.modal.link.error.taken": "Bu bağlantı zaten kullanımda.",
|
||||||
"upload.modal.not-signed-in": "Oturum açmadınız",
|
"upload.modal.not-signed-in": "Giriş yapmadınız.",
|
||||||
"upload.modal.not-signed-in-description": "Paylaşımınızı manuel olarak silemeyecek ve ziyaret sayısını göremeyeceksiniz.",
|
"upload.modal.not-signed-in-description": "Paylaşımınızı manuel olarak silemez ve ziyaretçi sayısını göremezsiniz.",
|
||||||
"upload.modal.expires.never": "asla",
|
"upload.modal.expires.never": "Hiçbir zaman",
|
||||||
"upload.modal.expires.never-long": "Permanent share",
|
"upload.modal.expires.never-long": "Kalıcı paylaşım",
|
||||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
"upload.modal.expires.error.too-long": "Son kullanma tarihi maksimum {max} sınırını aşıyor.",
|
||||||
"upload.modal.link.label": "Bağlantı",
|
"upload.modal.link.label": "Bağlantı",
|
||||||
"upload.modal.expires.label": "Sona erme tarihi",
|
"upload.modal.expires.label": "Bitiş Tarihi",
|
||||||
"upload.modal.expires.minute-singular": "Dakika",
|
"upload.modal.expires.minute-singular": "Dakika",
|
||||||
"upload.modal.expires.minute-plural": "Dakika",
|
"upload.modal.expires.minute-plural": "Dakika",
|
||||||
"upload.modal.expires.hour-singular": "Saat",
|
"upload.modal.expires.hour-singular": "Saat",
|
||||||
@@ -250,253 +250,253 @@ export default {
|
|||||||
"upload.modal.expires.month-plural": "Ay",
|
"upload.modal.expires.month-plural": "Ay",
|
||||||
"upload.modal.expires.year-singular": "Yıl",
|
"upload.modal.expires.year-singular": "Yıl",
|
||||||
"upload.modal.expires.year-plural": "Yıl",
|
"upload.modal.expires.year-plural": "Yıl",
|
||||||
"upload.modal.accordion.name-and-description.title": "İsim ve açıklama",
|
"upload.modal.accordion.name-and-description.title": "Ad ve Açıklama",
|
||||||
"upload.modal.accordion.name-and-description.name.placeholder": "İsim",
|
"upload.modal.accordion.name-and-description.name.placeholder": "Ad",
|
||||||
"upload.modal.accordion.name-and-description.description.placeholder": "Bu paylaşımın alıcıları için not",
|
"upload.modal.accordion.name-and-description.description.placeholder": "Bu paylaşımın alıcıları için bir not",
|
||||||
"upload.modal.accordion.email.title": "E-Posta alıcıları",
|
"upload.modal.accordion.email.title": "E-posta Alıcıları",
|
||||||
"upload.modal.accordion.email.placeholder": "E-Posta alıcılarını yazın",
|
"upload.modal.accordion.email.placeholder": "E-posta alıcılarını girin",
|
||||||
"upload.modal.accordion.email.invalid-email": "Geçersiz E-Posta adresi",
|
"upload.modal.accordion.email.invalid-email": "Geçersiz e-posta adresi",
|
||||||
"upload.modal.accordion.security.title": "Güvenlik seçenekleri",
|
"upload.modal.accordion.security.title": "Güvenlik Seçenekleri",
|
||||||
"upload.modal.accordion.security.password.label": "Şifre koruması",
|
"upload.modal.accordion.security.password.label": "Şifre Koruması",
|
||||||
"upload.modal.accordion.security.password.placeholder": "Şifresiz",
|
"upload.modal.accordion.security.password.placeholder": "Şifre Yok",
|
||||||
"upload.modal.accordion.security.max-views.label": "En fazla görüntüleme",
|
"upload.modal.accordion.security.max-views.label": "Maksimum Görüntüleme",
|
||||||
"upload.modal.accordion.security.max-views.placeholder": "Sınır yok",
|
"upload.modal.accordion.security.max-views.placeholder": "Sınırsız",
|
||||||
// showCompletedUploadModal.tsx
|
// showCompletedUploadModal.tsx
|
||||||
"upload.modal.completed.never-expires": "Bu paylaşım asla sona ermeyecek.",
|
"upload.modal.completed.never-expires": "Bu paylaşımın süresi hiçbir zaman dolmayacak.",
|
||||||
"upload.modal.completed.expires-on": "Bu paylaşım {expiration} tarihinde sona erecek.",
|
"upload.modal.completed.expires-on": "Bu paylaşım {expiration} tarihinde sona erecek.",
|
||||||
"upload.modal.completed.share-ready": "Paylaşım hazır",
|
"upload.modal.completed.share-ready": "Paylaşım hazır.",
|
||||||
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
"upload.modal.completed.notified-reverse-share-creator": "Ters paylaşımın yaratıcısını bilgilendirdik. Bu bağlantıyı diğer yollarla manuel olarak da paylaşabilirsiniz.",
|
||||||
// END /upload
|
// END /upload
|
||||||
// /share/[id]
|
// /share/[id]
|
||||||
"share.title": "Paylaş {shareId}",
|
"share.title": "{shareId} Paylaşımı",
|
||||||
"share.description": "Seninle ne paylaştığıma bak!",
|
"share.description": "Sizinle paylaştıklarımı bir göz atın!",
|
||||||
"share.error.visitor-limit-exceeded.title": "Ziyaretçi sınırı aşıldı",
|
"share.error.visitor-limit-exceeded.title": "Ziyaretçi limiti aşıldı",
|
||||||
"share.error.visitor-limit-exceeded.description": "Bu paylaşımdaki ziyaretçi sınırı 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ı",
|
||||||
"share.error.not-found.title": "Paylaşım bulunamadı",
|
"share.error.not-found.title": "Paylaşım bulunamadı",
|
||||||
"share.error.not-found.description": "Aradığınız paylaşım bulunmuyor.",
|
"share.error.not-found.description": "Aradığınız paylaşım mevcut değil.",
|
||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Özel paylaşım",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "Mevcut hesabın bu paylaşıma erişim izni yok.",
|
||||||
"share.modal.password.title": "Şifre gerekli",
|
"share.modal.password.title": "Şifre gerekli",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Bu paylaşıma erişmek için lütfen şifreyi girin.",
|
||||||
"share.modal.password": "Şifre",
|
"share.modal.password": "Şifre",
|
||||||
"share.modal.error.invalid-password": "Geçersiz şifre",
|
"share.modal.error.invalid-password": "Geçersiz şifre",
|
||||||
"share.button.download-all": "Tümünü indir",
|
"share.button.download-all": "Tümünü indir",
|
||||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
"share.notify.download-all-preparing": "Paylaşım hazırlanıyor. Lütfen birkaç dakika sonra tekrar deneyin.",
|
||||||
"share.modal.file-link": "Dosya bağlantısı",
|
"share.modal.file-link": "Dosya bağlantısı",
|
||||||
"share.table.name": "İsim",
|
"share.table.name": "Ad",
|
||||||
"share.table.size": "Boyut",
|
"share.table.size": "Boyut",
|
||||||
"share.modal.file-preview.error.not-supported.title": "Önizleme desteklenmiyor",
|
"share.modal.file-preview.error.not-supported.title": "Önizleme desteklenmiyor",
|
||||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
"share.modal.file-preview.error.not-supported.description": "Bu dosya türü için önizleme desteklenmiyor. Lütfen dosyayı görüntülemek için indirin.",
|
||||||
// END /share/[id]
|
// END /share/[id]
|
||||||
// /share/[id]/edit
|
// /share/[id]/edit
|
||||||
"share.edit.title": "{shareId} düzenle",
|
"share.edit.title": "{shareId} Paylaşımını Düzenle",
|
||||||
"share.edit.append-upload": "Dosya ekle",
|
"share.edit.append-upload": "Dosya ekle",
|
||||||
"share.edit.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.",
|
"share.edit.notify.generic-error": "Paylaşımınızı tamamlarken bir hata oluştu.",
|
||||||
"share.edit.notify.save-success": "Paylaşım başarıyla güncellendi",
|
"share.edit.notify.save-success": "Paylaşım başarıyla güncellendi",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Künye",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Gizlilik Politikası",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Konfigürasyon",
|
"admin.config.title": "Yapılandırma",
|
||||||
"admin.config.category.general": "Genel",
|
"admin.config.category.general": "Genel",
|
||||||
"admin.config.category.share": "Paylaş",
|
"admin.config.category.share": "Paylaş",
|
||||||
"admin.config.category.email": "E-Posta",
|
"admin.config.category.email": "E-posta",
|
||||||
"admin.config.category.smtp": "SMTP",
|
"admin.config.category.smtp": "SMTP",
|
||||||
"admin.config.category.oauth": "Sosyal Medya Girişi",
|
"admin.config.category.oauth": "Sosyal Giriş",
|
||||||
"admin.config.general.app-name": "Uygulama adı",
|
"admin.config.general.app-name": "Uygulama adı",
|
||||||
"admin.config.general.app-name.description": "Uygulamanın adı",
|
"admin.config.general.app-name.description": "Uygulamanın adı",
|
||||||
"admin.config.general.app-url": "Uygulama URL'si",
|
"admin.config.general.app-url": "Uygulama URL'si",
|
||||||
"admin.config.general.app-url.description": "Pingvin Share'in hangi bağlantıda kullanılacağı",
|
"admin.config.general.app-url.description": "Pingvin Share hangi URL üzerinden kullanılabilir",
|
||||||
"admin.config.general.secure-cookies": "Secure cookies",
|
"admin.config.general.secure-cookies": "Güvenli çerezler",
|
||||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
"admin.config.general.secure-cookies.description": "Çerezlere güvenli bayrağı koyulup koyulmayacağı. Etkinleştirildiğinde, site HTTP üzerinden erişildiğinde çalışmaz.",
|
||||||
"admin.config.general.show-home-page": "Ana sayfayı göster",
|
"admin.config.general.show-home-page": "Ana sayfayı göster",
|
||||||
"admin.config.general.show-home-page.description": "Ana sayfanın görünürlüğü",
|
"admin.config.general.show-home-page.description": "Ana sayfanın gösterilip gösterilmeyeceği",
|
||||||
"admin.config.general.session-duration": "Oturum Süresi",
|
"admin.config.general.session-duration": "Oturum Süresi",
|
||||||
"admin.config.general.session-duration.description": "Kullanıcının ne kadar sürede bir tekrar giriş yapacağı (normalde 3 ay).",
|
"admin.config.general.session-duration.description": "Bir kullanıcının tekrar oturum açması gereken saat cinsinden süre (varsayılan: 3 ay).",
|
||||||
"admin.config.general.logo": "Logo",
|
"admin.config.general.logo": "Logo",
|
||||||
"admin.config.general.logo.description": "Yeni resim yükleyerek logo'nuzu değiştirin. Resim PNG ve 1'e 1 ölçekte olmalı.",
|
"admin.config.general.logo.description": "Yeni bir resim yükleyerek logonuzu değiştirin. Resim PNG formatında olmalı ve 1:1 oranında olmalıdır.",
|
||||||
"admin.config.general.logo.placeholder": "Resim seç",
|
"admin.config.general.logo.placeholder": "Resim seç",
|
||||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
"admin.config.email.enable-share-email-recipients": "E-posta alıcılarının paylaşımını etkinleştir",
|
||||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
"admin.config.email.enable-share-email-recipients.description": "E-postaların alıcılarla paylaşılmasına izin verilip verilmeyeceği. Sadece SMTP etkinleştirildiğinde bunu etkinleştirin.",
|
||||||
"admin.config.email.share-recipients-subject": "Paylaşım alıcılarının konusu",
|
"admin.config.email.share-recipients-subject": "Paylaşım alıcılarının konusu",
|
||||||
"admin.config.email.share-recipients-subject.description": "Paylaşım alıcılarına gönderilecek e-postanın konusu.",
|
"admin.config.email.share-recipients-subject.description": "Paylaşım alıcılarına gönderilen e-postanın konusu.",
|
||||||
"admin.config.email.share-recipients-message": "Paylaşım alıcılarının mesajı",
|
"admin.config.email.share-recipients-message": "Paylaşım alıcılarına mesaj",
|
||||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
"admin.config.email.share-recipients-message.description": "Paylaşım alıcılarına gönderilen mesaj. Kullanılabilir değişkenler:\n {creator} - Paylaşımı oluşturanın kullanıcı adı\n {creatorEmail} - Paylaşımı oluşturanın e-posta adresi\n {shareUrl} - Paylaşım URL'si\n {desc} - Paylaşım açıklaması\n {expires} - Paylaşımın son kullanma tarihi\n Bu değişkenler gerçek değerlerle değiştirilecektir.",
|
||||||
"admin.config.email.reverse-share-subject": "Tersine paylaşım konusu",
|
"admin.config.email.reverse-share-subject": "Ters paylaşım konusu",
|
||||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
"admin.config.email.reverse-share-subject.description": "Birisi ters paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen e-postanın konusu.",
|
||||||
"admin.config.email.reverse-share-message": "Tersine paylaşım mesajı",
|
"admin.config.email.reverse-share-message": "Ters paylaşım mesajı",
|
||||||
"admin.config.email.reverse-share-message.description": "Birisi sizin tersine paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen mesaj. {shareUrl}, oluşturucunun adı ve paylaşım URL'si ile değiştirilecektir.",
|
"admin.config.email.reverse-share-message.description": "Birisi ters paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen mesaj. {shareUrl}, paylaşımı oluşturan kişinin adı ve paylaşım URL'si ile değiştirilecektir.",
|
||||||
"admin.config.email.reset-password-subject": "Şifre sıfırlama konusu",
|
"admin.config.email.reset-password-subject": "Şifre sıfırlama konusu",
|
||||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
"admin.config.email.reset-password-subject.description": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilen e-postanın konusu.",
|
||||||
"admin.config.email.reset-password-message": "Şifre sıfırlama mesajı",
|
"admin.config.email.reset-password-message": "Şifre sıfırlama mesajı",
|
||||||
"admin.config.email.reset-password-message.description": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilecek mesaj. {url} şifre sıfırlama URL'si ile değiştirilecektir.",
|
"admin.config.email.reset-password-message.description": "Bir kullanıcı şifre sıfırlama talebinde bulunduğunda gönderilen mesaj. {url}, şifre sıfırlama URL'si ile değiştirilecektir.",
|
||||||
"admin.config.email.invite-subject": "Davet konusu",
|
"admin.config.email.invite-subject": "Davet konusu",
|
||||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
"admin.config.email.invite-subject.description": "Bir yönetici bir kullanıcıyı davet ettiğinde gönderilen e-postanın konusu.",
|
||||||
"admin.config.email.invite-message": "Davet mesajı",
|
"admin.config.email.invite-message": "Davet mesajı",
|
||||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
"admin.config.email.invite-message.description": "Bir yönetici bir kullanıcıyı davet ettiğinde gönderilen mesaj. {url}, davet URL'si ile; {email}, e-posta adresi ile ve {password}, kullanıcının şifresi ile değiştirilecektir.",
|
||||||
"admin.config.share.allow-registration": "Kayda izin ver",
|
"admin.config.share.allow-registration": "Kayıta izin ver",
|
||||||
"admin.config.share.allow-registration.description": "Kaydın izin verilip verilmeyeceği",
|
"admin.config.share.allow-registration.description": "Kaydın izinli olup olmadığı",
|
||||||
"admin.config.share.allow-unauthenticated-shares": "Giriş yapmamış kullanıcılara izin ver",
|
"admin.config.share.allow-unauthenticated-shares": "Doğrulanmamış paylaşımlara izin ver",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Giriş yapmamış kullanıcıların paylaşım oluşturup oluşturamayacağı",
|
"admin.config.share.allow-unauthenticated-shares.description": "Doğrulanmamış kullanıcıların paylaşım oluşturmasına izin verilip verilmeyeceği",
|
||||||
"admin.config.share.max-expiration": "Maks sona erme",
|
"admin.config.share.max-expiration": "Maksimum son kullanma süresi",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Maksimum paylaşım süresi. Sınırsız süreye izin vermek için 0 olarak ayarlayın.",
|
||||||
"admin.config.share.share-id-length": "Default share ID length",
|
"admin.config.share.share-id-length": "Varsayılan paylaşım ID uzunluğu",
|
||||||
"admin.config.share.share-id-length.description": "Default length for the generated ID of a share. This value is also used to generate links for reverse shares. A value below 8 is not considered secure.",
|
"admin.config.share.share-id-length.description": "Bir paylaşım için oluşturulan varsayılan ID uzunluğu. Bu değer, ters paylaşımlar için bağlantı oluştururken de kullanılır. 8'in altındaki bir değer güvenli olarak kabul edilmez.",
|
||||||
"admin.config.share.max-size": "Maks boyut",
|
"admin.config.share.max-size": "Maksimum boyut",
|
||||||
"admin.config.share.max-size.description": "Maks paylaşım boyutu",
|
"admin.config.share.max-size.description": "Maksimum paylaşım boyutu",
|
||||||
"admin.config.share.zip-compression-level": "Zip sıkıştırma seviyesi",
|
"admin.config.share.zip-compression-level": "ZIP sıkıştırma seviyesi",
|
||||||
"admin.config.share.zip-compression-level.description": "Dosya boyutu ve sıkıştırma hızı arasında denge kurmak için seviyeyi ayarlayın. Geçerli değerler 0 ile 9 arasında değişir; 0 sıkıştırma yok ve 9 maksimum sıkıştırma anlamına gelir. ",
|
"admin.config.share.zip-compression-level.description": "Dosya boyutu ve sıkıştırma hızı arasındaki dengeyi ayarlayın. Geçerli değerler 0 ile 9 arasındadır; 0 sıkıştırma yok, 9 maksimum sıkıştırma anlamına gelir.",
|
||||||
"admin.config.share.chunk-size": "Yığın boyutu",
|
"admin.config.share.chunk-size": "Parça boyutu",
|
||||||
"admin.config.share.chunk-size.description": "Adjust the chunk size for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
"admin.config.share.chunk-size.description": "Yüklemeleriniz için verimlilik ve güvenilirliği internet bağlantınıza göre dengelemek için parça boyutunu ayarlayın. Daha küçük parçalar, dengesiz bağlantılar için başarı oranını artırabilirken, daha büyük parçalar sabit bağlantılar için yükleme hızını artırır.",
|
||||||
"admin.config.share.auto-open-share-modal": "Paylaşım oluşturma modalini otomatik aç",
|
"admin.config.share.auto-open-share-modal": "Paylaşım oluşturma penceresini otomatik aç",
|
||||||
"admin.config.share.auto-open-share-modal.description": "Bir kullanıcı dosyaları seçtiğinde paylaşım oluşturma modu otomatik olarak görünür ve düğmeye manuel olarak tıklama ihtiyacını ortadan kaldırır.",
|
"admin.config.share.auto-open-share-modal.description": "Kullanıcı dosya seçtiğinde paylaşım oluşturma penceresi otomatik olarak görünür, manuel olarak düğmeye tıklamaya gerek kalmaz.",
|
||||||
"admin.config.smtp.enabled": "Enable",
|
"admin.config.smtp.enabled": "Etkinleştir",
|
||||||
"admin.config.smtp.enabled.description": "SMTP'nin etkin olup olmadığı. Bunu yalnızca SMTP sunucunuzun ana bilgisayarını, bağlantı noktasını, e-postasını, kullanıcısını ve şifresini girdiyseniz true olarak ayarlayın.",
|
"admin.config.smtp.enabled.description": "SMTP'nin etkin olup olmadığı. Sadece ana bilgisayar, port, e-posta, kullanıcı ve SMTP sunucunuzun şifresini girdiyseniz bunu true olarak ayarlayın.",
|
||||||
"admin.config.smtp.host": "Host",
|
"admin.config.smtp.host": "Sunucu",
|
||||||
"admin.config.smtp.host.description": "SMTP sunucusunun hostu",
|
"admin.config.smtp.host.description": "SMTP sunucusunun ana bilgisayarı",
|
||||||
"admin.config.smtp.port": "Port",
|
"admin.config.smtp.port": "Port",
|
||||||
"admin.config.smtp.port.description": "SMTP sunucusunun portu",
|
"admin.config.smtp.port.description": "SMTP sunucusunun portu",
|
||||||
"admin.config.smtp.email": "E-Posta",
|
"admin.config.smtp.email": "E-posta",
|
||||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
"admin.config.smtp.email.description": "E-postaların gönderileceği e-posta adresi",
|
||||||
"admin.config.smtp.username": "Kullanıcı Adı",
|
"admin.config.smtp.username": "Kullanıcı adı",
|
||||||
"admin.config.smtp.username.description": "SMTP sunucusunun kullanıcı adı",
|
"admin.config.smtp.username.description": "SMTP sunucusunun kullanıcı adı",
|
||||||
"admin.config.smtp.password": "Şifre",
|
"admin.config.smtp.password": "Şifre",
|
||||||
"admin.config.smtp.password.description": "SMTP sunucusunun şifresi",
|
"admin.config.smtp.password.description": "SMTP sunucusunun şifresi",
|
||||||
"admin.config.smtp.button.test": "Test e-postası gönder",
|
"admin.config.smtp.button.test": "Test e-postası gönder",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
"admin.config.smtp.allow-unauthorized-certificates": "Yetkisiz SMTP sunucu sertifikalarına güven",
|
||||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Only set this to true if you need to trust self signed certificates.",
|
"admin.config.smtp.allow-unauthorized-certificates.description": "Sadece kendi imzaladığınız sertifikalara güvenmeniz gerekiyorsa bunu true olarak ayarlayın.",
|
||||||
"admin.config.oauth.allow-registration": "Kayıtlara izin ver",
|
"admin.config.oauth.allow-registration": "Kayıt olmayı etkinleştir",
|
||||||
"admin.config.oauth.allow-registration.description": "Sosyal Medya kayıtlarına izin verilip verilmeyeceği",
|
"admin.config.oauth.allow-registration.description": "Kullanıcıların sosyal giriş yoluyla kayıt olmasına izin ver",
|
||||||
"admin.config.oauth.ignore-totp": "2FA görmezden gel",
|
"admin.config.oauth.ignore-totp": "TOTP'yi yoksay",
|
||||||
"admin.config.oauth.ignore-totp.description": "Sosyal Medya ile giriş yapıldıktıktan sonra 2FA görmezden gelinip gelinmeyeceği",
|
"admin.config.oauth.ignore-totp.description": "Kullanıcı sosyal giriş yaparken TOTP'nin yoksayılıp yoksayılmayacağı",
|
||||||
"admin.config.oauth.disable-password": "Disable password login",
|
"admin.config.oauth.disable-password": "Şifre girişini devre dışı bırak",
|
||||||
"admin.config.oauth.disable-password.description": "Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
|
"admin.config.oauth.disable-password.description": "Şifre girişinin devre dışı bırakılıp bırakılmayacağı\nBu yapılandırmayı etkinleştirmeden önce bir OAuth sağlayıcısının doğru şekilde yapılandırıldığından emin olun, aksi takdirde hesaba erişiminiz engellenebilir.",
|
||||||
"admin.config.oauth.github-enabled": "GitHub",
|
"admin.config.oauth.github-enabled": "GitHub",
|
||||||
"admin.config.oauth.github-enabled.description": "GitHub girişine izin verilip verilmeyeceği",
|
"admin.config.oauth.github-enabled.description": "GitHub girişinin etkin olup olmadığı",
|
||||||
"admin.config.oauth.github-client-id": "GitHub Client ID",
|
"admin.config.oauth.github-client-id": "GitHub İstemci Kimliği",
|
||||||
"admin.config.oauth.github-client-id.description": "GitHub OAuth uygulamasının Client ID'si",
|
"admin.config.oauth.github-client-id.description": "GitHub OAuth uygulamasının İstemci Kimliği",
|
||||||
"admin.config.oauth.github-client-secret": "GitHub Client Secret",
|
"admin.config.oauth.github-client-secret": "GitHub İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.github-client-secret.description": "GitHub OAuth uygulamasının Client Secret'i",
|
"admin.config.oauth.github-client-secret.description": "GitHub OAuth uygulamasının İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.google-enabled": "Google",
|
"admin.config.oauth.google-enabled": "Google",
|
||||||
"admin.config.oauth.google-enabled.description": "Google girişi izin verilip verilmeyeceği",
|
"admin.config.oauth.google-enabled.description": "Google girişinin etkin olup olmadığı",
|
||||||
"admin.config.oauth.google-client-id": "Google Client ID",
|
"admin.config.oauth.google-client-id": "Google İstemci Kimliği",
|
||||||
"admin.config.oauth.google-client-id.description": "Google OAuth uygulamasının Client ID'si",
|
"admin.config.oauth.google-client-id.description": "Google OAuth uygulamasının İstemci Kimliği",
|
||||||
"admin.config.oauth.google-client-secret": "Google Client Secret",
|
"admin.config.oauth.google-client-secret": "Google İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.google-client-secret.description": "Google OAuth uygulamasının Client Secret'i",
|
"admin.config.oauth.google-client-secret.description": "Google OAuth uygulamasının İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||||
"admin.config.oauth.microsoft-enabled.description": "Microsoft girişine izin verilip verilmeyeceği",
|
"admin.config.oauth.microsoft-enabled.description": "Microsoft girişinin etkin olup olmadığı",
|
||||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
"admin.config.oauth.microsoft-tenant": "Microsoft Kiracı",
|
||||||
"admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth uygulamasının Tenant kimliği\nyaygın: Hem kişisel Microsoft hesabına hem de Microsoft Entra ID'den bir iş veya okul hesabına sahip kullanıcılar uygulamada oturum açabilir. kuruluşlar: Yalnızca Microsoft Entra ID'den iş veya okul hesabı olan kullanıcılar uygulamada oturum açabilir.\ntüketiciler: Yalnızca kişisel Microsoft hesabı olan kullanıcılar uygulamada oturum açabilir.\nMicrosoft Entra Tenant etki alanı adı veya GUID biçimindeki Tenant kimliği: Yalnızca belirli bir Microsoft Entra Tenant kullanıcısı (iş veya okul hesabına sahip dizin üyeleri veya kişisel Microsoft hesabına sahip dizin konukları) uygulamada oturum açabilir.",
|
"admin.config.oauth.microsoft-tenant.description": "Microsoft OAuth uygulamasının Kiracı Kimliği\ncommon: Hem kişisel Microsoft hesaplarına hem de Microsoft Entra ID'den iş veya okul hesaplarına sahip kullanıcılar uygulamaya giriş yapabilir.\norganizations: Sadece Microsoft Entra ID'den iş veya okul hesaplarına sahip kullanıcılar uygulamaya giriş yapabilir.\nconsumers: Sadece kişisel Microsoft hesabı olan kullanıcılar uygulamaya giriş yapabilir.\nMicrosoft Entra kiracısının alan adı veya GUID formatındaki kiracı kimliği: Sadece belirli bir Microsoft Entra kiracısındaki kullanıcılar (iş veya okul hesapları olan dizin üyeleri veya kişisel Microsoft hesabı olan dizin konukları) uygulamaya giriş yapabilir.",
|
||||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client ID",
|
"admin.config.oauth.microsoft-client-id": "Microsoft İstemci Kimliği",
|
||||||
"admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth uygulamasının Client ID'si",
|
"admin.config.oauth.microsoft-client-id.description": "Microsoft OAuth uygulamasının İstemci Kimliği",
|
||||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client secret",
|
"admin.config.oauth.microsoft-client-secret": "Microsoft İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth uygulamasının Client Secret'i",
|
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth uygulamasının İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.discord-enabled": "Discord",
|
"admin.config.oauth.discord-enabled": "Discord",
|
||||||
"admin.config.oauth.discord-enabled.description": "Discord girişine izin verilip verilmeyeceği",
|
"admin.config.oauth.discord-enabled.description": "Discord girişinin etkin olup olmadığı",
|
||||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
"admin.config.oauth.discord-limited-users": "Discord ile sınırlı kullanıcılar",
|
||||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
"admin.config.oauth.discord-limited-users.description": "Belirli kullanıcıların Discord ID'leri ile giriş yapmasını sınırla. Devre dışı bırakmak için boş bırakın.",
|
||||||
"admin.config.oauth.discord-limited-guild": "Discord limitli sunucu ID'si",
|
"admin.config.oauth.discord-limited-guild": "Discord ile sınırlı sunucu ID'si",
|
||||||
"admin.config.oauth.discord-limited-guild.description": "Oturum açmayı belirli bir sunucudaki kullanıcılarla sınırlayın. Devre dışı bırakmak için boş bırakın.",
|
"admin.config.oauth.discord-limited-guild.description": "Belirli bir sunucudaki kullanıcıların giriş yapmasını sınırla. Devre dışı bırakmak için boş bırakın.",
|
||||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
"admin.config.oauth.discord-client-id": "Discord İstemci Kimliği",
|
||||||
"admin.config.oauth.discord-client-id.description": "Discord OAuth uygulamasının Client ID'si",
|
"admin.config.oauth.discord-client-id.description": "Discord OAuth uygulamasının İstemci Kimliği",
|
||||||
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
"admin.config.oauth.discord-client-secret": "Discord İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.discord-client-secret.description": "Discord OAuth uygulamasının Client Secret'i",
|
"admin.config.oauth.discord-client-secret.description": "Discord OAuth uygulamasının İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.oidc-enabled": "OpenID Bağlantısı",
|
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||||
"admin.config.oauth.oidc-enabled.description": "OpenID girişine izin verilip verilmeyeceği",
|
"admin.config.oauth.oidc-enabled.description": "OpenID Connect girişinin etkin olup olmadığı",
|
||||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Keşfetme URI'si",
|
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Keşif URI'si",
|
||||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth uygulamasının Keşfetme URI'si",
|
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth uygulamasının Keşif URI'si",
|
||||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
"admin.config.oauth.oidc-sign-out": "OpenID Connect'ten çıkış yap",
|
||||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
"admin.config.oauth.oidc-sign-out.description": "“Çıkış yap” düğmesinin OpenID Connect sağlayıcısından çıkış yapıp yapmayacağı",
|
||||||
"admin.config.oauth.oidc-scope": "OpenID Connect scope",
|
"admin.config.oauth.oidc-scope": "OpenID Connect kapsamı",
|
||||||
"admin.config.oauth.oidc-scope.description": "Scopes which should be requested from the OpenID Connect provider.",
|
"admin.config.oauth.oidc-scope.description": "OpenID Connect sağlayıcısından talep edilmesi gereken kapsamlar.",
|
||||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı sahiplenme",
|
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı alanı",
|
||||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID belirtecinde kullanıcı adı sahiplenme. Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID tokenindeki kullanıcı adı alanı. Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
"admin.config.oauth.oidc-role-path": "OpenID Connect tokenindeki rollerin yolu",
|
||||||
"admin.config.oauth.oidc-role-path.description": "Must be a valid JMES path referencing an array of roles. " + "Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-path.description": "Bir dizi rolü referans alan geçerli bir JMES yolu olmalıdır. " + "Erişim haklarını OpenID Connect rolleri kullanarak yönetmek, başka bir kimlik sağlayıcı yapılandırılmamışsa ve şifreli giriş devre dışıysa önerilir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
"admin.config.oauth.oidc-role-general-access": "Genel erişim için OpenID Connect rolü",
|
||||||
"admin.config.oauth.oidc-role-general-access.description": "Role required for general access. Must be present in a user’s roles for them to log in. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-general-access.description": "Genel erişim için gerekli rol. Kullanıcıların giriş yapabilmesi için rollerinde bulunması gerekir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
"admin.config.oauth.oidc-role-admin-access": "Yönetici erişimi için OpenID Connect rolü",
|
||||||
"admin.config.oauth.oidc-role-admin-access.description": "Role required for administrative access. Must be present in a user’s roles for them to access the admin panel. " + "Leave it blank if you don't know what this config is.",
|
"admin.config.oauth.oidc-role-admin-access.description": "Yönetici paneline erişim için gerekli rol. Kullanıcıların yönetici paneline erişebilmesi için rollerinde bulunması gerekir. " + "Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
"admin.config.oauth.oidc-client-id": "OpenID Connect İstemci Kimliği",
|
||||||
"admin.config.oauth.oidc-client-id.description": "OpenID Connect OAuth uygulamasının Client ID'si",
|
"admin.config.oauth.oidc-client-id.description": "OpenID Connect OAuth uygulamasının İstemci Kimliği",
|
||||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
"admin.config.oauth.oidc-client-secret": "OpenID Connect İstemci Gizli Anahtarı",
|
||||||
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth uygulamasının Client Secret'i",
|
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth uygulamasının İstemci Gizli Anahtarı",
|
||||||
"admin.config.category.ldap": "LDAP",
|
"admin.config.category.ldap": "LDAP",
|
||||||
"admin.config.ldap.enabled": "Enable LDAP",
|
"admin.config.ldap.enabled": "LDAP'ı etkinleştir",
|
||||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
"admin.config.ldap.enabled.description": "Kullanıcı girişinde LDAP kimlik doğrulamasını kullan",
|
||||||
"admin.config.ldap.url": "Server URL",
|
"admin.config.ldap.url": "Sunucu URL'si",
|
||||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
"admin.config.ldap.url.description": "LDAP sunucusunun URL'si",
|
||||||
"admin.config.ldap.bind-dn": "Bind DN",
|
"admin.config.ldap.bind-dn": "Bind DN",
|
||||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
"admin.config.ldap.bind-dn.description": "Kullanıcı aramasını gerçekleştirmek için kullanılan varsayılan kullanıcı",
|
||||||
"admin.config.ldap.bind-password": "Bind password",
|
"admin.config.ldap.bind-password": "Bağlantı şifresi",
|
||||||
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
|
"admin.config.ldap.bind-password.description": "Kullanıcı aramasını gerçekleştirmek için kullanılan şifre",
|
||||||
"admin.config.ldap.search-base": "User base",
|
"admin.config.ldap.search-base": "Kullanıcı temeli",
|
||||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
"admin.config.ldap.search-base.description": "Kullanıcı aramasının yapılacağı temel konum",
|
||||||
"admin.config.ldap.search-query": "User query",
|
"admin.config.ldap.search-query": "Kullanıcı sorgusu",
|
||||||
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
"admin.config.ldap.search-query.description": "Kullanıcı sorgusu, LDAP kullanıcısını aramak için 'Kullanıcı temeli' üzerinde kullanılacaktır. Kullanıcı girişine karşılık gelen %username% yer tutucusu kullanılabilir.",
|
||||||
"admin.config.ldap.admin-groups": "Admin group",
|
"admin.config.ldap.admin-groups": "Yönetici grubu",
|
||||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
"admin.config.ldap.admin-groups.description": "Yönetimsel erişim için gerekli grup.",
|
||||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
"admin.config.ldap.field-name-member-of": "Kullanıcı grupları nitelik adı",
|
||||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
"admin.config.ldap.field-name-member-of.description": "Kullanıcının üye olduğu gruplar için LDAP nitelik adı. Bu, yönetici grubunu kontrol ederken kullanılır.",
|
||||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
"admin.config.ldap.field-name-email": "Kullanıcı e-posta nitelik adı",
|
||||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
"admin.config.ldap.field-name-email.description": "Kullanıcının e-posta adresi için LDAP nitelik adı.",
|
||||||
"admin.config.notify.success": "Configuration updated successfully.",
|
"admin.config.notify.success": "Yapılandırma başarıyla güncellendi.",
|
||||||
"admin.config.notify.logo-success": "Logo updated successfully. It may take a few minutes to update on the website.",
|
"admin.config.notify.logo-success": "Logo başarıyla güncellendi. Web sitesinde güncellenmesi birkaç dakika sürebilir.",
|
||||||
"admin.config.notify.no-changes": "No changes to save.",
|
"admin.config.notify.no-changes": "Kaydedilecek bir değişiklik yok.",
|
||||||
"admin.config.category.s3": "S3",
|
"admin.config.category.s3": "S3",
|
||||||
"admin.config.s3.enabled": "Enabled",
|
"admin.config.s3.enabled": "Etkin",
|
||||||
"admin.config.s3.enabled.description": "Whether S3 should be used to store the shared files instead of the local file system.",
|
"admin.config.s3.enabled.description": "Paylaşılan dosyaların yerel dosya sistemi yerine S3 üzerinde depolanıp depolanmayacağını belirtir.",
|
||||||
"admin.config.s3.endpoint": "Endpoint",
|
"admin.config.s3.endpoint": "Bağlantı Noktası",
|
||||||
"admin.config.s3.endpoint.description": "The URL of the S3 bucket.",
|
"admin.config.s3.endpoint.description": "S3 kovasının URL'si.",
|
||||||
"admin.config.s3.region": "Region",
|
"admin.config.s3.region": "Bölge",
|
||||||
"admin.config.s3.region.description": "The region of the S3 bucket.",
|
"admin.config.s3.region.description": "S3 kovasının bulunduğu bölge.",
|
||||||
"admin.config.s3.bucket-name": "Bucket name",
|
"admin.config.s3.bucket-name": "Kova Adı",
|
||||||
"admin.config.s3.bucket-name.description": "The name of the S3 bucket.",
|
"admin.config.s3.bucket-name.description": "S3 kovasının adı.",
|
||||||
"admin.config.s3.bucket-path": "Path",
|
"admin.config.s3.bucket-path": "Yol",
|
||||||
"admin.config.s3.bucket-path.description": "The default path which should be used to store the files in the S3 bucket.",
|
"admin.config.s3.bucket-path.description": "Dosyaların S3 kovasında depolanması için varsayılan yol.",
|
||||||
"admin.config.s3.key": "Key",
|
"admin.config.s3.key": "Anahtar",
|
||||||
"admin.config.s3.key.description": "The key which allows you to access the S3 bucket.",
|
"admin.config.s3.key.description": "S3 kovasına erişmenizi sağlayan anahtar.",
|
||||||
"admin.config.s3.secret": "Secret",
|
"admin.config.s3.secret": "Gizli",
|
||||||
"admin.config.s3.secret.description": "The secret which allows you to access the S3 bucket.",
|
"admin.config.s3.secret.description": "S3 kovasına erişmenizi sağlayan gizli anahtar.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Yasal",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Yasal Bildirimleri Etkinleştir",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Alt bilgi kısmında künyeye ve gizlilik politikasına bir bağlantı gösterilip gösterilmeyeceğini belirtir.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Künye Metni",
|
||||||
"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.description": "Künyede gösterilecek metin. Markdown destekler. Dış bir künye sayfasına bağlanmak için boş bırakın.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "Künye URL'si",
|
||||||
"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.description": "Halihazırda bir künye sayfanız varsa, buraya bağlantı verebilirsiniz.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Gizlilik Politikası Metni",
|
||||||
"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.description": "Gizlilik politikasında gösterilecek metin. Markdown destekler. Dış bir gizlilik politikası sayfasına bağlanmak için boş bırakın.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "Gizlilik Politikası URL'si",
|
||||||
"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.description": "Halihazırda bir gizlilik politikası sayfanız varsa, buraya bağlantı verebilirsiniz.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Haydaa, böyle bir sayfa yok.",
|
"404.description": "Hata! Bu sayfa mevcut değil.",
|
||||||
"404.button.home": "Beni eve götür",
|
"404.button.home": "Beni anasayfaya götür",
|
||||||
// error
|
// error
|
||||||
"error.title": "Hata",
|
"error.title": "Hata",
|
||||||
"error.description": "Haydaa!",
|
"error.description": "Oops!",
|
||||||
"error.button.back": "Geri dön",
|
"error.button.back": "Geri dön",
|
||||||
"error.msg.default": "Bir şeyler ters gitti.",
|
"error.msg.default": "Bir şeyler ters gitti.",
|
||||||
"error.msg.access_denied": "Doğrulama aşamasını iptal ettin, lütfen yeniden dene.",
|
"error.msg.access_denied": "Kimlik doğrulama işlemini iptal ettiniz, lütfen tekrar deneyin.",
|
||||||
"error.msg.expired_token": "Doğrulama aşaması çok uzun sürdü, lütfen yeniden dene.",
|
"error.msg.expired_token": "Kimlik doğrulama işlemi çok uzun sürdü, lütfen tekrar deneyin.",
|
||||||
"error.msg.invalid_token": "Dahili Hata",
|
"error.msg.invalid_token": "Dahili Hata",
|
||||||
"error.msg.no_user": "Bu {0} hesabına bağlı kullanıcı mevcut değil.",
|
"error.msg.no_user": "Bu {0} hesabıyla bağlantılı bir kullanıcı mevcut değil.",
|
||||||
"error.msg.no_email": "Bu {0} hesaptan e-posta adresi alınamıyor.",
|
"error.msg.no_email": "Bu {0} hesabından e-posta adresi alınamıyor.",
|
||||||
"error.msg.already_linked": "Bu {0} hesabı zaten başka bir hesaba bağlı.",
|
"error.msg.already_linked": "Bu {0} hesabı zaten başka bir hesapla bağlantılı.",
|
||||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
"error.msg.not_linked": "Bu {0} hesabı henüz hiçbir hesapla bağlantılı değil.",
|
||||||
"error.msg.unverified_account": "Bu {0} hesabı doğrulanmamış, lütfen doğruladıktan sonra yeniden dene.",
|
"error.msg.unverified_account": "Bu {0} hesabı doğrulanmamış, lütfen doğrulamadan sonra tekrar deneyin.",
|
||||||
"error.msg.user_not_allowed": "Giriş yapmana izin verilmiyor.",
|
"error.msg.user_not_allowed": "Giriş yapma izniniz yok.",
|
||||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
"error.msg.cannot_get_user_info": "Bu {0} hesabından kullanıcı bilgilerinize ulaşılamıyor.",
|
||||||
"error.param.provider_github": "GitHub",
|
"error.param.provider_github": "GitHub",
|
||||||
"error.param.provider_google": "Google",
|
"error.param.provider_google": "Google",
|
||||||
"error.param.provider_microsoft": "Microsoft",
|
"error.param.provider_microsoft": "Microsoft",
|
||||||
"error.param.provider_discord": "Discord",
|
"error.param.provider_discord": "Discord",
|
||||||
"error.param.provider_oidc": "OpenID Bağlantısı",
|
"error.param.provider_oidc": "OpenID Connect",
|
||||||
// Common translations
|
// Common translations
|
||||||
"common.button.save": "Kaydet",
|
"common.button.save": "Kaydet",
|
||||||
"common.button.create": "Oluştur",
|
"common.button.create": "Oluştur",
|
||||||
@@ -504,27 +504,27 @@ export default {
|
|||||||
"common.button.delete": "Sil",
|
"common.button.delete": "Sil",
|
||||||
"common.button.cancel": "İptal",
|
"common.button.cancel": "İptal",
|
||||||
"common.button.confirm": "Onayla",
|
"common.button.confirm": "Onayla",
|
||||||
"common.button.disable": "Etkisizleştir",
|
"common.button.disable": "Devre Dışı Bırak",
|
||||||
"common.button.share": "Paylaş",
|
"common.button.share": "Paylaş",
|
||||||
"common.button.generate": "Oluştur",
|
"common.button.generate": "Oluştur",
|
||||||
"common.button.done": "Tamam",
|
"common.button.done": "Tamamlandı",
|
||||||
"common.text.link": "Bağlantı",
|
"common.text.link": "Bağlantı",
|
||||||
"common.text.navigate-to-link": "Visit link",
|
"common.text.navigate-to-link": "Bağlantıya git",
|
||||||
"common.text.or": "ya da",
|
"common.text.or": "veya",
|
||||||
"common.text.redirecting": "Redirecting...",
|
"common.text.redirecting": "Yönlendiriliyor...",
|
||||||
"common.button.go-back": "Geri dön",
|
"common.button.go-back": "Geri dön",
|
||||||
"common.button.go-home": "Ana sayfaya dön",
|
"common.button.go-home": "Anasayfaya git",
|
||||||
"common.notify.copied": "Bağlantınız kopyalandı",
|
"common.notify.copied": "Bağlantınız panoya kopyalandı",
|
||||||
"common.notify.copied-link": "Bağlantınız kopyalandı",
|
"common.notify.copied-link": "Bağlantınız panoya kopyalandı",
|
||||||
"common.success": "Başarılı",
|
"common.success": "Başarılı",
|
||||||
"common.error": "Hata",
|
"common.error": "Hata",
|
||||||
"common.error.unknown": "Bilinmeyen hata meydana geldi",
|
"common.error.unknown": "Bilinmeyen bir hata oluştu",
|
||||||
"common.error.invalid-email": "Geçersiz E-Posta adresi",
|
"common.error.invalid-email": "Geçersiz e-posta adresi",
|
||||||
"common.error.too-short": "En azından {length} karakter olmalı",
|
"common.error.too-short": "En az {length} karakter olmalıdır",
|
||||||
"common.error.too-long": "En fazla {length} karakter olmalı",
|
"common.error.too-long": "En fazla {length} karakter olmalıdır",
|
||||||
"common.error.number-too-small": "Must be at least {min}",
|
"common.error.number-too-small": "En az {min} olmalıdır",
|
||||||
"common.error.number-too-large": "Must be at most {max}",
|
"common.error.number-too-large": "En fazla {max} olmalıdır",
|
||||||
"common.error.exact-length": "Tam tamına {length} karakter olmalı",
|
"common.error.exact-length": "Tam olarak {length} karakter olmalıdır",
|
||||||
"common.error.invalid-number": "Bir sayı olmalı",
|
"common.error.invalid-number": "Bir sayı olmalıdır",
|
||||||
"common.error.field-required": "Bu alan gerekli"
|
"common.error.field-required": "Bu alan gereklidir"
|
||||||
};
|
};
|
||||||
@@ -124,8 +124,8 @@ export default {
|
|||||||
"account.shares.table.expiresAt": "Діє до",
|
"account.shares.table.expiresAt": "Діє до",
|
||||||
"account.shares.table.createdAt": "Створено",
|
"account.shares.table.createdAt": "Створено",
|
||||||
"account.shares.table.size": "Розмір",
|
"account.shares.table.size": "Розмір",
|
||||||
"account.shares.table.password-protected": "Password protected",
|
"account.shares.table.password-protected": "Захищено паролем",
|
||||||
"account.shares.table.visitor-count": "{count} of {max}",
|
"account.shares.table.visitor-count": "{count} із {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": "Поділитися посиланням",
|
||||||
@@ -296,10 +296,10 @@ export default {
|
|||||||
"share.edit.notify.save-success": "Посилання на ресурс успішно оновлено",
|
"share.edit.notify.save-success": "Посилання на ресурс успішно оновлено",
|
||||||
// END /share/[id]/edit
|
// END /share/[id]/edit
|
||||||
// /imprint
|
// /imprint
|
||||||
"imprint.title": "Imprint",
|
"imprint.title": "Вихідні дані",
|
||||||
// END /imprint
|
// END /imprint
|
||||||
// /privacy
|
// /privacy
|
||||||
"privacy.title": "Privacy Policy",
|
"privacy.title": "Політика конфіденційності",
|
||||||
// END /privacy
|
// END /privacy
|
||||||
// /admin/config
|
// /admin/config
|
||||||
"admin.config.title": "Конфігурація",
|
"admin.config.title": "Конфігурація",
|
||||||
@@ -344,7 +344,7 @@ export default {
|
|||||||
"admin.config.share.allow-unauthenticated-shares": "Дозволити неавторизовані завантаження",
|
"admin.config.share.allow-unauthenticated-shares": "Дозволити неавторизовані завантаження",
|
||||||
"admin.config.share.allow-unauthenticated-shares.description": "Чи можуть неавторизовані користувачі створювати завантаження",
|
"admin.config.share.allow-unauthenticated-shares.description": "Чи можуть неавторизовані користувачі створювати завантаження",
|
||||||
"admin.config.share.max-expiration": "Максимальний термін дії",
|
"admin.config.share.max-expiration": "Максимальний термін дії",
|
||||||
"admin.config.share.max-expiration.description": "Maximum share expiration. Set to 0 to allow unlimited expiration.",
|
"admin.config.share.max-expiration.description": "Максимальний термін дії спільного доступу. Встановіть 0, щоб дозволити необмежений термін дії.",
|
||||||
"admin.config.share.share-id-length": "Стандартна довжина ID завантаження",
|
"admin.config.share.share-id-length": "Стандартна довжина ID завантаження",
|
||||||
"admin.config.share.share-id-length.description": "Стандартна довжина для згенерованого ID завантаження. Це значення також використовується для створення посилань для зворотних завантажень. Значення менше 8 не вважається безпечним.",
|
"admin.config.share.share-id-length.description": "Стандартна довжина для згенерованого ID завантаження. Це значення також використовується для створення посилань для зворотних завантажень. Значення менше 8 не вважається безпечним.",
|
||||||
"admin.config.share.max-size": "Максимальний розмір",
|
"admin.config.share.max-size": "Максимальний розмір",
|
||||||
@@ -463,17 +463,17 @@ export default {
|
|||||||
"admin.config.s3.key.description": "Ключ, який дозволяє отримати доступ до S3 бакету.",
|
"admin.config.s3.key.description": "Ключ, який дозволяє отримати доступ до S3 бакету.",
|
||||||
"admin.config.s3.secret": "Секрет",
|
"admin.config.s3.secret": "Секрет",
|
||||||
"admin.config.s3.secret.description": "Секрет, який дозволяє отримати доступ до S3 бакету.",
|
"admin.config.s3.secret.description": "Секрет, який дозволяє отримати доступ до S3 бакету.",
|
||||||
"admin.config.category.legal": "Legal",
|
"admin.config.category.legal": "Юридична інформація",
|
||||||
"admin.config.legal.enabled": "Enable legal notices",
|
"admin.config.legal.enabled": "Увімкнути правові сповіщення",
|
||||||
"admin.config.legal.enabled.description": "Whether to show a link to imprint and privacy policy in the footer.",
|
"admin.config.legal.enabled.description": "Чи відображати посилання на вихідні дані та політику конфіденційності у нижньому колонтитулі.",
|
||||||
"admin.config.legal.imprint-text": "Imprint text",
|
"admin.config.legal.imprint-text": "Текст вихідних даних",
|
||||||
"admin.config.legal.imprint-text.description": "The text which should be shown in the imprint. Supports Markdown. Leave blank to link to an external imprint page.",
|
"admin.config.legal.imprint-text.description": "Текст, який має відображатися у вихідних даних. Підтримує Markdown. Залиште порожнім, щоб вставити посилання на зовнішню сторінку з вихідними даними.",
|
||||||
"admin.config.legal.imprint-url": "Imprint URL",
|
"admin.config.legal.imprint-url": "URL вихідних даних",
|
||||||
"admin.config.legal.imprint-url.description": "If you already have an imprint page you can link it here instead of using the text field.",
|
"admin.config.legal.imprint-url.description": "Якщо у вас вже є сторінка з вихідними даними, ви можете вставити посилання на неї тут замість використання текстового поля.",
|
||||||
"admin.config.legal.privacy-policy-text": "Privacy policy text",
|
"admin.config.legal.privacy-policy-text": "Текст політики конфіденційності",
|
||||||
"admin.config.legal.privacy-policy-text.description": "The text which should be shown in the privacy policy. Supports Markdown. Leave blank to link to an external privacy policy page.",
|
"admin.config.legal.privacy-policy-text.description": "Текст, що має бути показано в політиці конфіденційності. Підтримує Markdown. Залиште порожнім, щоб надати посилання на сторінку зовнішньої політики конфіденційності.",
|
||||||
"admin.config.legal.privacy-policy-url": "Privacy policy URL",
|
"admin.config.legal.privacy-policy-url": "Політика конфіденційності URL",
|
||||||
"admin.config.legal.privacy-policy-url.description": "If you already have a privacy policy page you can link it here instead of using the text field.",
|
"admin.config.legal.privacy-policy-url.description": "Якщо у вас вже є сторінка політики конфіденційності, то ви можете зв'язати її тут замість використання текстового поля.",
|
||||||
// 404
|
// 404
|
||||||
"404.description": "Бляха, цієї строрінки не існує.",
|
"404.description": "Бляха, цієї строрінки не існує.",
|
||||||
"404.button.home": "Поверни мене додому",
|
"404.button.home": "Поверни мене додому",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export default {
|
|||||||
"navbar.upload": "Tải lên",
|
"navbar.upload": "Tải lên",
|
||||||
"navbar.signin": "Đăng nhập",
|
"navbar.signin": "Đăng nhập",
|
||||||
"navbar.home": "Trang chủ",
|
"navbar.home": "Trang chủ",
|
||||||
"navbar.signup": "Sign up",
|
"navbar.signup": "Đăng ký",
|
||||||
"navbar.links.shares": "Chia sẻ của tôi",
|
"navbar.links.shares": "Chia sẻ của tôi",
|
||||||
"navbar.links.reverse": "Reverse shares",
|
"navbar.links.reverse": "Reverse shares",
|
||||||
"navbar.avatar.account": "Tài khoản",
|
"navbar.avatar.account": "Tài khoản",
|
||||||
@@ -163,7 +163,7 @@ export default {
|
|||||||
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
|
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
|
||||||
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
||||||
"account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
|
"account.reverseShare.expires-on": "This reverse share will expire on {expiration}.",
|
||||||
"account.reverseShares.table.no-shares": "No shares created yet",
|
"account.reverseShares.table.no-shares": "Chưa tạo chia sẻ nào",
|
||||||
"account.reverseShares.table.count.singular": "share",
|
"account.reverseShares.table.count.singular": "share",
|
||||||
"account.reverseShares.table.count.plural": "shares",
|
"account.reverseShares.table.count.plural": "shares",
|
||||||
"account.reverseShares.table.shares": "Shares",
|
"account.reverseShares.table.shares": "Shares",
|
||||||
@@ -278,7 +278,7 @@ export default {
|
|||||||
"share.error.access-denied.title": "Private share",
|
"share.error.access-denied.title": "Private share",
|
||||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||||
"share.modal.password.title": "Cần mật khẩu để mở khoá",
|
"share.modal.password.title": "Cần mật khẩu để mở khoá",
|
||||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
"share.modal.password.description": "Please enter the password to access this share.",
|
||||||
"share.modal.password": "Mật khẩu",
|
"share.modal.password": "Mật khẩu",
|
||||||
"share.modal.error.invalid-password": "Mật khẩu không hợp lệ",
|
"share.modal.error.invalid-password": "Mật khẩu không hợp lệ",
|
||||||
"share.button.download-all": "Tải xuống tất cả",
|
"share.button.download-all": "Tải xuống tất cả",
|
||||||
|
|||||||
@@ -278,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": "Please enter the password to acces this share.",
|
"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": "全部下载",
|
||||||
|
|||||||
@@ -278,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": "全部下載",
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import shareService from "../../services/share.service";
|
|||||||
import { FileUpload } from "../../types/File.type";
|
import { FileUpload } from "../../types/File.type";
|
||||||
import { CreateShare, Share } from "../../types/share.type";
|
import { CreateShare, Share } from "../../types/share.type";
|
||||||
import toast from "../../utils/toast.util";
|
import toast from "../../utils/toast.util";
|
||||||
|
import { useRouter } from "next/router";
|
||||||
|
|
||||||
const promiseLimit = pLimit(3);
|
const promiseLimit = pLimit(3);
|
||||||
let errorToastShown = false;
|
let errorToastShown = false;
|
||||||
@@ -33,6 +34,7 @@ const Upload = ({
|
|||||||
simplified: boolean;
|
simplified: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const modals = useModals();
|
const modals = useModals();
|
||||||
|
const router = useRouter();
|
||||||
const t = useTranslate();
|
const t = useTranslate();
|
||||||
|
|
||||||
const { user } = useUser();
|
const { user } = useUser();
|
||||||
@@ -54,7 +56,8 @@ const Upload = ({
|
|||||||
setisUploading(true);
|
setisUploading(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
createdShare = await shareService.create(share);
|
const isReverseShare = router.pathname != "/upload";
|
||||||
|
createdShare = await shareService.create(share, isReverseShare);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
toast.axiosError(e);
|
toast.axiosError(e);
|
||||||
setisUploading(false);
|
setisUploading(false);
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ const get = (key: string, configVariables: Config[]): any => {
|
|||||||
if (configVariable.type == "boolean") return value == "true";
|
if (configVariable.type == "boolean") return value == "true";
|
||||||
if (configVariable.type == "string" || configVariable.type == "text")
|
if (configVariable.type == "string" || configVariable.type == "text")
|
||||||
return value;
|
return value;
|
||||||
if (configVariable.type == "timespan")
|
if (configVariable.type == "timespan") return stringToTimespan(value);
|
||||||
return stringToTimespan(value);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const finishSetup = async (): Promise<AdminConfig[]> => {
|
const finishSetup = async (): Promise<AdminConfig[]> => {
|
||||||
|
|||||||
@@ -15,7 +15,10 @@ const list = async (): Promise<MyShare[]> => {
|
|||||||
return (await api.get(`shares/all`)).data;
|
return (await api.get(`shares/all`)).data;
|
||||||
};
|
};
|
||||||
|
|
||||||
const create = async (share: CreateShare) => {
|
const create = async (share: CreateShare, isReverseShare = false) => {
|
||||||
|
if (!isReverseShare) {
|
||||||
|
deleteCookie("reverse_share_token");
|
||||||
|
}
|
||||||
return (await api.post("shares", share)).data;
|
return (await api.post("shares", share)).data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,8 @@
|
|||||||
export type TimeUnit = "minutes" | "hours" | "days" | "weeks" | "months" | "years";
|
export type TimeUnit =
|
||||||
|
| "minutes"
|
||||||
|
| "hours"
|
||||||
|
| "days"
|
||||||
|
| "weeks"
|
||||||
|
| "months"
|
||||||
|
| "years";
|
||||||
export type Timespan = { value: number; unit: TimeUnit };
|
export type Timespan = { value: number; unit: TimeUnit };
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export const getExpirationPreview = (
|
|||||||
|
|
||||||
export const timespanToString = (timespan: Timespan) => {
|
export const timespanToString = (timespan: Timespan) => {
|
||||||
return `${timespan.value} ${timespan.unit}`;
|
return `${timespan.value} ${timespan.unit}`;
|
||||||
}
|
};
|
||||||
|
|
||||||
export const stringToTimespan = (value: string): Timespan => {
|
export const stringToTimespan = (value: string): Timespan => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pingvin-share",
|
"name": "pingvin-share",
|
||||||
"version": "1.8.0",
|
"version": "1.9.0",
|
||||||
"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.8.0",
|
"version": "1.9.0",
|
||||||
"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",
|
||||||
|
|||||||
Reference in New Issue
Block a user