Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
468b25828b | ||
|
|
9d4bb55a09 | ||
|
|
f78ffd69e7 | ||
|
|
17528f999a | ||
|
|
c8f05f2475 | ||
|
|
424e2564d5 | ||
|
|
18d8cbbbab | ||
|
|
c7dacb26e8 | ||
|
|
b6d98c7c42 | ||
|
|
c52ec71920 | ||
|
|
6cf5c66fe2 | ||
|
|
51478b6a9f | ||
|
|
6f45c3b1fb | ||
|
|
ff2dd81055 | ||
|
|
c26de4e881 | ||
|
|
4ef7ebb062 | ||
|
|
d870b5721a | ||
|
|
d8084e401d | ||
|
|
e1a5d19544 | ||
|
|
4ce64206be | ||
|
|
77eef187b7 | ||
|
|
c7138bcf5d | ||
|
|
ab4f19e921 | ||
|
|
428c1d2b99 | ||
|
|
c89ca7e64b | ||
|
|
297e8c0ab1 | ||
|
|
446f9dd209 | ||
|
|
acbff6e129 | ||
|
|
546d2c1ce4 | ||
|
|
37839e6b18 | ||
|
|
0b355b94c4 | ||
|
|
6444a9d553 | ||
|
|
08079744a0 | ||
|
|
558dd2fb15 | ||
|
|
fe085b58a5 | ||
|
|
958b79d787 | ||
|
|
ede9c2a816 | ||
|
|
e195565630 | ||
|
|
520f9abcf7 | ||
|
|
bfbe8de98a | ||
|
|
d5cd3002a1 | ||
|
|
77a092a3cf | ||
|
|
613bae9033 | ||
|
|
2e692241c5 | ||
|
|
1e96011793 | ||
|
|
522a041ca1 | ||
|
|
ce6430da9f | ||
|
|
2b3ce3ffd2 | ||
|
|
104cc06145 | ||
|
|
4a50a5aa3b | ||
|
|
d6b8b56247 | ||
|
|
5883dff4cf |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,6 +7,9 @@ node_modules
|
||||
/frontend/.next/
|
||||
/frontend/out/
|
||||
|
||||
# yarn
|
||||
yarn.lock
|
||||
|
||||
# build
|
||||
build/
|
||||
dist/
|
||||
|
||||
87
CHANGELOG.md
87
CHANGELOG.md
@@ -1,3 +1,90 @@
|
||||
## [1.5.0](https://github.com/stonith404/pingvin-share/compare/v1.4.0...v1.5.0) (2024-11-24)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **share:** add share ID length setting ([#677](https://github.com/stonith404/pingvin-share/issues/677)) ([9d4bb55](https://github.com/stonith404/pingvin-share/commit/9d4bb55a0945450f8a42c212d7f23983db38f37f))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* totp can't be enabled if user is a ldap user ([c8f05f2](https://github.com/stonith404/pingvin-share/commit/c8f05f2475a5a54550cf64ef57c8b612580273be))
|
||||
|
||||
## [1.4.0](https://github.com/stonith404/pingvin-share/compare/v1.3.0...v1.4.0) (2024-11-17)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add "creatorEmail" config bariable to share recipient email message ([c7dacb2](https://github.com/stonith404/pingvin-share/commit/c7dacb26e87504a1c5e6b0d87cdcd5ed91b9cdf5))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remote arbitrary file overwrite on file upload endpoint ([6cf5c66](https://github.com/stonith404/pingvin-share/commit/6cf5c66fe2eda1e0a525edf7440d047fe2f0e35b))
|
||||
|
||||
## [1.3.0](https://github.com/stonith404/pingvin-share/compare/v1.2.4...v1.3.0) (2024-11-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add 'secureCookies' configuration variable to explicitly set the secure flag and prevent confusion ([4ce6420](https://github.com/stonith404/pingvin-share/commit/4ce64206be7440a99299e1ed238ced7408c0563d))
|
||||
* add confirm dialog for leaving the page if an upload is in progress ([d8084e4](https://github.com/stonith404/pingvin-share/commit/d8084e401d7572b2d6e38ffa20cb678a0fb0e615))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* improve share completed dialog redirection for reverse shares ([4ef7ebb](https://github.com/stonith404/pingvin-share/commit/4ef7ebb0622f16d2d2c4d114b5fc15298e2ba24f))
|
||||
* prevent deletion of last admin account ([e1a5d19](https://github.com/stonith404/pingvin-share/commit/e1a5d195448e3d741b77fb982ce515489a360562))
|
||||
* throw error if no disk space is left ([c26de4e](https://github.com/stonith404/pingvin-share/commit/c26de4e881edfe6c7db617c0aeba89871397ebe2))
|
||||
* use current window url instead of app url in frontend ([6f45c3b](https://github.com/stonith404/pingvin-share/commit/6f45c3b1fbf4a95b29e5742878b55a1afa0b8886))
|
||||
|
||||
## [1.2.4](https://github.com/stonith404/pingvin-share/compare/v1.2.3...v1.2.4) (2024-10-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* don't enforce password lenght for sign in form because of LDAP ([428c1d2](https://github.com/stonith404/pingvin-share/commit/428c1d2b993a05a25cc94aabe56216b9ab969fa1))
|
||||
* use app name as totp issuer ([c89ca7e](https://github.com/stonith404/pingvin-share/commit/c89ca7e64b08f437dd1b7e9bf2b9d674cc612228))
|
||||
|
||||
## [1.2.3](https://github.com/stonith404/pingvin-share/compare/v1.2.2...v1.2.3) (2024-10-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* share password can be bypassed if a deleted share with the same id was visited before ([acbff6e](https://github.com/stonith404/pingvin-share/commit/acbff6e129d236452180f8b96775457d135ac080))
|
||||
|
||||
## [1.2.2](https://github.com/stonith404/pingvin-share/compare/v1.2.1...v1.2.2) (2024-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **admin:** change general config icon to gear ([#649](https://github.com/stonith404/pingvin-share/issues/649)) ([958b79d](https://github.com/stonith404/pingvin-share/commit/958b79d787585c367a693872fd105a326e6e8d38))
|
||||
* environment variable `API_URL` can't be changed ([fe085b5](https://github.com/stonith404/pingvin-share/commit/fe085b58a5f3c0152df12957aa150c0876c2a074))
|
||||
|
||||
## [1.2.1](https://github.com/stonith404/pingvin-share/compare/v1.2.0...v1.2.1) (2024-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* disallow passwort reset if it's a ldap user ([2e69224](https://github.com/stonith404/pingvin-share/commit/2e692241c57b001c9312302523c6374c0c24ea0c))
|
||||
* error message for invalid max use count of reverse share ([613bae9](https://github.com/stonith404/pingvin-share/commit/613bae90330a76c0964352a3fe927df3697309eb))
|
||||
* **oauth:** add `post_logout_redirect_uri` to OAuth logout redirect URI ([#638](https://github.com/stonith404/pingvin-share/issues/638)) ([bfbe8de](https://github.com/stonith404/pingvin-share/commit/bfbe8de98a6a7a2d32dd8d4dddbcc1d4ce6388f4))
|
||||
* share can't be created if an invalid email is entered in mail recipients ([d5cd300](https://github.com/stonith404/pingvin-share/commit/d5cd3002a1661e58d584e12280be36f17948c38c))
|
||||
* trim username, email and password on sign in and sign up page ([77a092a](https://github.com/stonith404/pingvin-share/commit/77a092a3cf089a4aa8b9897b5ad14e5500181d10))
|
||||
|
||||
## [1.2.0](https://github.com/stonith404/pingvin-share/compare/v1.1.3...v1.2.0) (2024-10-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **oauth:** add ability to limit user IDs for Discord authentication ([#621](https://github.com/stonith404/pingvin-share/issues/621)) ([5883dff](https://github.com/stonith404/pingvin-share/commit/5883dff4cf0abe99b3ac8f0b56fdc9d04e80b51c))
|
||||
* **oauth:** Add option to logout from OpenID Connect provider ([2b3ce3f](https://github.com/stonith404/pingvin-share/commit/2b3ce3ffd250f7e3052d43c1c1e76947abf91e55)), closes [#598](https://github.com/stonith404/pingvin-share/issues/598)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* use unique port env variable for backend ([d6b8b56](https://github.com/stonith404/pingvin-share/commit/d6b8b56247814087c2b676fe2367300172b5a94b))
|
||||
|
||||
## [1.1.3](https://github.com/stonith404/pingvin-share/compare/v1.1.2...v1.1.3) (2024-09-27)
|
||||
|
||||
|
||||
|
||||
269
backend/package-lock.json
generated
269
backend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pingvin-share-backend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pingvin-share-backend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"dependencies": {
|
||||
"@nestjs/cache-manager": "^2.2.2",
|
||||
"@nestjs/common": "^10.4.3",
|
||||
@@ -20,7 +20,6 @@
|
||||
"@nestjs/throttler": "^6.2.1",
|
||||
"@prisma/client": "^5.19.1",
|
||||
"@types/jmespath": "^0.15.2",
|
||||
"@types/ldapjs": "^3.0.6",
|
||||
"archiver": "^7.0.1",
|
||||
"argon2": "^0.41.1",
|
||||
"body-parser": "^1.20.3",
|
||||
@@ -31,7 +30,6 @@
|
||||
"content-disposition": "^0.5.4",
|
||||
"cookie-parser": "^1.4.6",
|
||||
"jmespath": "^0.16.0",
|
||||
"ldapjs": "^3.0.7",
|
||||
"ldapts": "^7.2.0",
|
||||
"mime-types": "^2.1.35",
|
||||
"moment": "^2.30.1",
|
||||
@@ -65,6 +63,7 @@
|
||||
"@types/qrcode-svg": "^1.1.5",
|
||||
"@types/sharp": "^0.32.0",
|
||||
"@types/supertest": "^6.0.2",
|
||||
"@types/uuid": "^10.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.6.0",
|
||||
"@typescript-eslint/parser": "^8.6.0",
|
||||
"cross-env": "^7.0.3",
|
||||
@@ -1028,101 +1027,6 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/asn1": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-2.0.0.tgz",
|
||||
"integrity": "sha512-G9+DkEOirNgdPmD0I8nu57ygQJKOOgFEMKknEuQvIHbGLwP3ny1mY+OTUYLCbCaGJP4sox5eYgBJRuSUpnAddA==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@ldapjs/attribute": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/attribute/-/attribute-1.0.0.tgz",
|
||||
"integrity": "sha512-ptMl2d/5xJ0q+RgmnqOi3Zgwk/TMJYG7dYMC0Keko+yZU6n+oFM59MjQOUht5pxJeS4FWrImhu/LebX24vJNRQ==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "2.0.0",
|
||||
"@ldapjs/protocol": "^1.2.1",
|
||||
"process-warning": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/change": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/change/-/change-1.0.0.tgz",
|
||||
"integrity": "sha512-EOQNFH1RIku3M1s0OAJOzGfAohuFYXFY4s73wOhRm4KFGhmQQ7MChOh2YtYu9Kwgvuq1B0xKciXVzHCGkB5V+Q==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "2.0.0",
|
||||
"@ldapjs/attribute": "1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/controls": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/controls/-/controls-2.1.0.tgz",
|
||||
"integrity": "sha512-2pFdD1yRC9V9hXfAWvCCO2RRWK9OdIEcJIos/9cCVP9O4k72BY1bLDQQ4KpUoJnl4y/JoD4iFgM+YWT3IfITWw==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "^1.2.0",
|
||||
"@ldapjs/protocol": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/controls/node_modules/@ldapjs/asn1": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-1.2.0.tgz",
|
||||
"integrity": "sha512-KX/qQJ2xxzvO2/WOvr1UdQ+8P5dVvuOLk/C9b1bIkXxZss8BaR28njXdPgFCpj5aHaf1t8PmuVnea+N9YG9YMw==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@ldapjs/dn": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/dn/-/dn-1.1.0.tgz",
|
||||
"integrity": "sha512-R72zH5ZeBj/Fujf/yBu78YzpJjJXG46YHFo5E4W1EqfNpo1UsVPqdLrRMXeKIsJT3x9dJVIfR6OpzgINlKpi0A==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "2.0.0",
|
||||
"process-warning": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/filter": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/filter/-/filter-2.1.1.tgz",
|
||||
"integrity": "sha512-TwPK5eEgNdUO1ABPBUQabcZ+h9heDORE4V9WNZqCtYLKc06+6+UAJ3IAbr0L0bYTnkkWC/JEQD2F+zAFsuikNw==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "2.0.0",
|
||||
"@ldapjs/protocol": "^1.2.1",
|
||||
"process-warning": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/messages": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/messages/-/messages-1.3.0.tgz",
|
||||
"integrity": "sha512-K7xZpXJ21bj92jS35wtRbdcNrwmxAtPwy4myeh9duy/eR3xQKvikVycbdWVzkYEAVE5Ce520VXNOwCHjomjCZw==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "^2.0.0",
|
||||
"@ldapjs/attribute": "^1.0.0",
|
||||
"@ldapjs/change": "^1.0.0",
|
||||
"@ldapjs/controls": "^2.1.0",
|
||||
"@ldapjs/dn": "^1.1.0",
|
||||
"@ldapjs/filter": "^2.1.1",
|
||||
"@ldapjs/protocol": "^1.2.1",
|
||||
"process-warning": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ldapjs/protocol": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ldapjs/protocol/-/protocol-1.2.1.tgz",
|
||||
"integrity": "sha512-O89xFDLW2gBoZWNXuXpBSM32/KealKCTb3JGtJdtUQc7RjAk8XzrRgyz02cPAwGKwKPxy0ivuC7UP9bmN87egQ==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@ljharb/through": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz",
|
||||
@@ -1337,13 +1241,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/platform-express": {
|
||||
"version": "10.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.3.tgz",
|
||||
"integrity": "sha512-ss7gkofVm3eO+1P9iRhmGq6Xcjg+mIN3dWisKJZYelSV+msb0QpJmqChLvWjLkWtlqDnx915FKUk0IzCa0TVzw==",
|
||||
"version": "10.4.8",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.8.tgz",
|
||||
"integrity": "sha512-bDz6wQD9LzGeK6uAAFv9l9AbrpyPwHStNObL8J95HBAXJesOblVlQMBAhdfci1YVMQUfOc36qq0IpRSa1II9Mg==",
|
||||
"dependencies": {
|
||||
"body-parser": "1.20.3",
|
||||
"cors": "2.8.5",
|
||||
"express": "4.21.0",
|
||||
"express": "4.21.1",
|
||||
"multer": "1.4.4-lts.1",
|
||||
"tslib": "2.7.0"
|
||||
},
|
||||
@@ -1903,15 +1807,6 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/ldapjs": {
|
||||
"version": "3.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-3.0.6.tgz",
|
||||
"integrity": "sha512-E2Tn1ltJDYBsidOT9QG4engaQeQzRQ9aYNxVmjCkD33F7cIeLPgrRDXAYs0O35mK2YDU20c/+ZkNjeAPRGLM0Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/luxon": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz",
|
||||
@@ -2058,6 +1953,12 @@
|
||||
"@types/superagent": "^8.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
|
||||
"integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/validator": {
|
||||
"version": "13.11.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz",
|
||||
@@ -2438,12 +2339,6 @@
|
||||
"node": ">=6.5"
|
||||
}
|
||||
},
|
||||
"node_modules/abstract-logging": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
|
||||
"integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
@@ -2775,6 +2670,7 @@
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
@@ -2821,18 +2717,6 @@
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
|
||||
"integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
|
||||
},
|
||||
"node_modules/backoff": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz",
|
||||
"integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"precond": "0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
@@ -3499,33 +3383,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
||||
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-parser": {
|
||||
"version": "1.4.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
|
||||
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
|
||||
"version": "1.4.7",
|
||||
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
|
||||
"integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
|
||||
"dependencies": {
|
||||
"cookie": "0.4.1",
|
||||
"cookie": "0.7.2",
|
||||
"cookie-signature": "1.0.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-parser/node_modules/cookie": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
|
||||
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
@@ -4280,16 +4156,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
|
||||
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
|
||||
"version": "4.21.1",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
|
||||
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.20.3",
|
||||
"content-disposition": "0.5.4",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.6.0",
|
||||
"cookie": "0.7.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
@@ -4320,6 +4196,14 @@
|
||||
"node": ">= 0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/express/node_modules/cookie": {
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
|
||||
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/express/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
@@ -4362,6 +4246,7 @@
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
|
||||
"dev": true,
|
||||
"engines": [
|
||||
"node >=0.6.0"
|
||||
]
|
||||
@@ -5519,49 +5404,6 @@
|
||||
"node": ">= 0.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/ldapjs": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-3.0.7.tgz",
|
||||
"integrity": "sha512-1ky+WrN+4CFMuoekUOv7Y1037XWdjKpu0xAPwSP+9KdvmV9PG+qOKlssDV6a+U32apwxdD3is/BZcWOYzN30cg==",
|
||||
"deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ldapjs/asn1": "^2.0.0",
|
||||
"@ldapjs/attribute": "^1.0.0",
|
||||
"@ldapjs/change": "^1.0.0",
|
||||
"@ldapjs/controls": "^2.1.0",
|
||||
"@ldapjs/dn": "^1.1.0",
|
||||
"@ldapjs/filter": "^2.1.1",
|
||||
"@ldapjs/messages": "^1.3.0",
|
||||
"@ldapjs/protocol": "^1.2.1",
|
||||
"abstract-logging": "^2.0.1",
|
||||
"assert-plus": "^1.0.0",
|
||||
"backoff": "^2.5.0",
|
||||
"once": "^1.4.0",
|
||||
"vasync": "^2.2.1",
|
||||
"verror": "^1.10.1"
|
||||
}
|
||||
},
|
||||
"node_modules/ldapjs/node_modules/core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ldapjs/node_modules/verror": {
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz",
|
||||
"integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "^1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ldapts": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ldapts/-/ldapts-7.2.0.tgz",
|
||||
@@ -6166,14 +6008,6 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/onetime": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||
@@ -6691,14 +6525,6 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/precond": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
|
||||
"integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/prelude-ls": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
|
||||
@@ -6782,12 +6608,6 @@
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"node_modules/process-warning": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz",
|
||||
"integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/promise-coalesce": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/promise-coalesce/-/promise-coalesce-1.1.2.tgz",
|
||||
@@ -8165,22 +7985,11 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/vasync": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz",
|
||||
"integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==",
|
||||
"engines": [
|
||||
"node >=0.6.0"
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
|
||||
"dev": true,
|
||||
"engines": [
|
||||
"node >=0.6.0"
|
||||
],
|
||||
@@ -8193,7 +8002,8 @@
|
||||
"node_modules/verror/node_modules/core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
|
||||
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/wait-on": {
|
||||
"version": "8.0.1",
|
||||
@@ -8374,11 +8184,6 @@
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
},
|
||||
"node_modules/xmlbuilder": {
|
||||
"version": "15.1.1",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pingvin-share-backend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"scripts": {
|
||||
"build": "nest build",
|
||||
"dev": "cross-env NODE_ENV=development nest start --watch",
|
||||
@@ -68,6 +68,7 @@
|
||||
"@types/qrcode-svg": "^1.1.5",
|
||||
"@types/sharp": "^0.32.0",
|
||||
"@types/supertest": "^6.0.2",
|
||||
"@types/uuid": "^10.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.6.0",
|
||||
"@typescript-eslint/parser": "^8.6.0",
|
||||
"cross-env": "^7.0.3",
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "RefreshToken" ADD COLUMN "oauthIDToken" TEXT;
|
||||
@@ -40,6 +40,8 @@ model RefreshToken {
|
||||
|
||||
userId String
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
oauthIDToken String? // prefixed with the ID of the issuing OAuth provider, separated by a colon
|
||||
}
|
||||
|
||||
model LoginToken {
|
||||
|
||||
@@ -20,6 +20,10 @@ const configVariables: ConfigVariables = {
|
||||
defaultValue: "http://localhost:3000",
|
||||
secret: false,
|
||||
},
|
||||
secureCookies: {
|
||||
type: "boolean",
|
||||
defaultValue: "false",
|
||||
},
|
||||
showHomePage: {
|
||||
type: "boolean",
|
||||
defaultValue: "true",
|
||||
@@ -47,6 +51,11 @@ const configVariables: ConfigVariables = {
|
||||
defaultValue: "0",
|
||||
secret: false,
|
||||
},
|
||||
shareIdLength: {
|
||||
type: "number",
|
||||
defaultValue: "8",
|
||||
secret: false,
|
||||
},
|
||||
maxSize: {
|
||||
type: "number",
|
||||
defaultValue: "1000000000",
|
||||
@@ -80,7 +89,7 @@ const configVariables: ConfigVariables = {
|
||||
shareRecipientsMessage: {
|
||||
type: "text",
|
||||
defaultValue:
|
||||
"Hey!\n\n{creator} shared some files with you, view or download the files with this link: {shareUrl}\n\nThe share will expire {expires}.\n\nNote: {desc}\n\nShared securely with Pingvin Share 🐧",
|
||||
"Hey!\n\n{creator} ({creatorEmail}) shared some files with you, view or download the files with this link: {shareUrl}\n\nThe share will expire {expires}.\n\nNote: {desc}\n\nShared securely with Pingvin Share 🐧",
|
||||
},
|
||||
reverseShareSubject: {
|
||||
type: "string",
|
||||
@@ -254,6 +263,10 @@ const configVariables: ConfigVariables = {
|
||||
type: "string",
|
||||
defaultValue: "",
|
||||
},
|
||||
"discord-limitedUsers": {
|
||||
type: "string",
|
||||
defaultValue: "",
|
||||
},
|
||||
"discord-clientId": {
|
||||
type: "string",
|
||||
defaultValue: "",
|
||||
@@ -271,6 +284,10 @@ const configVariables: ConfigVariables = {
|
||||
type: "string",
|
||||
defaultValue: "",
|
||||
},
|
||||
"oidc-signOut": {
|
||||
type: "boolean",
|
||||
defaultValue: "false",
|
||||
},
|
||||
"oidc-usernameClaim": {
|
||||
type: "string",
|
||||
defaultValue: "",
|
||||
|
||||
@@ -120,7 +120,7 @@ export class AuthController {
|
||||
})
|
||||
@HttpCode(202)
|
||||
async requestResetPassword(@Param("email") email: string) {
|
||||
this.authService.requestResetPassword(email);
|
||||
await this.authService.requestResetPassword(email);
|
||||
}
|
||||
|
||||
@Post("resetPassword")
|
||||
@@ -172,10 +172,12 @@ export class AuthController {
|
||||
@Req() request: Request,
|
||||
@Res({ passthrough: true }) response: Response,
|
||||
) {
|
||||
await this.authService.signOut(request.cookies.access_token);
|
||||
const redirectURI = await this.authService.signOut(
|
||||
request.cookies.access_token,
|
||||
);
|
||||
|
||||
const isSecure = this.config.get("general.appUrl").startsWith("https");
|
||||
response.cookie("access_token", "accessToken", {
|
||||
const isSecure = this.config.get("general.secureCookies");
|
||||
response.cookie("access_token", "", {
|
||||
maxAge: -1,
|
||||
secure: isSecure,
|
||||
});
|
||||
@@ -185,6 +187,10 @@ export class AuthController {
|
||||
maxAge: -1,
|
||||
secure: isSecure,
|
||||
});
|
||||
|
||||
if (typeof redirectURI === "string") {
|
||||
return { redirectURI: redirectURI.toString() };
|
||||
}
|
||||
}
|
||||
|
||||
@Post("totp/enable")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { forwardRef, Module } from "@nestjs/common";
|
||||
import { JwtModule } from "@nestjs/jwt";
|
||||
import { EmailModule } from "src/email/email.module";
|
||||
import { AuthController } from "./auth.controller";
|
||||
@@ -7,6 +7,7 @@ import { AuthTotpService } from "./authTotp.service";
|
||||
import { JwtStrategy } from "./strategy/jwt.strategy";
|
||||
import { LdapService } from "./ldap.service";
|
||||
import { UserModule } from "../user/user.module";
|
||||
import { OAuthModule } from "../oauth/oauth.module";
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -14,6 +15,7 @@ import { UserModule } from "../user/user.module";
|
||||
global: true,
|
||||
}),
|
||||
EmailModule,
|
||||
forwardRef(() => OAuthModule),
|
||||
UserModule,
|
||||
],
|
||||
controllers: [AuthController],
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import {
|
||||
BadRequestException,
|
||||
ForbiddenException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
Logger,
|
||||
UnauthorizedException,
|
||||
@@ -14,11 +16,12 @@ import * as moment from "moment";
|
||||
import { ConfigService } from "src/config/config.service";
|
||||
import { EmailService } from "src/email/email.service";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
import { OAuthService } from "../oauth/oauth.service";
|
||||
import { GenericOidcProvider } from "../oauth/provider/genericOidc.provider";
|
||||
import { UserSevice } from "../user/user.service";
|
||||
import { AuthRegisterDTO } from "./dto/authRegister.dto";
|
||||
import { AuthSignInDTO } from "./dto/authSignIn.dto";
|
||||
import { LdapService } from "./ldap.service";
|
||||
import { inspect } from "util";
|
||||
import { UserSevice } from "../user/user.service";
|
||||
|
||||
@Injectable()
|
||||
export class AuthService {
|
||||
@@ -29,6 +32,7 @@ export class AuthService {
|
||||
private emailService: EmailService,
|
||||
private ldapService: LdapService,
|
||||
private userService: UserSevice,
|
||||
@Inject(forwardRef(() => OAuthService)) private oAuthService: OAuthService,
|
||||
) {}
|
||||
private readonly logger = new Logger(AuthService.name);
|
||||
|
||||
@@ -113,13 +117,10 @@ export class AuthService {
|
||||
throw new UnauthorizedException("Wrong email or password");
|
||||
}
|
||||
|
||||
async generateToken(user: User, isOAuth = false) {
|
||||
async generateToken(user: User, oauth?: { idToken?: string }) {
|
||||
// TODO: Make all old loginTokens invalid when a new one is created
|
||||
// Check if the user has TOTP enabled
|
||||
if (
|
||||
user.totpVerified &&
|
||||
!(isOAuth && this.config.get("oauth.ignoreTotp"))
|
||||
) {
|
||||
if (user.totpVerified && !(oauth && this.config.get("oauth.ignoreTotp"))) {
|
||||
const loginToken = await this.createLoginToken(user.id);
|
||||
|
||||
return { loginToken };
|
||||
@@ -127,6 +128,7 @@ export class AuthService {
|
||||
|
||||
const { refreshToken, refreshTokenId } = await this.createRefreshToken(
|
||||
user.id,
|
||||
oauth?.idToken,
|
||||
);
|
||||
const accessToken = await this.createAccessToken(user, refreshTokenId);
|
||||
|
||||
@@ -144,6 +146,15 @@ export class AuthService {
|
||||
|
||||
if (!user) return;
|
||||
|
||||
if (user.ldapDN) {
|
||||
this.logger.log(
|
||||
`Failed password reset request for user ${email} because it is an LDAP user`,
|
||||
);
|
||||
throw new BadRequestException(
|
||||
"This account can't reset its password here. Please contact your administrator.",
|
||||
);
|
||||
}
|
||||
|
||||
// Delete old reset password token
|
||||
if (user.resetPasswordToken) {
|
||||
await this.prisma.resetPasswordToken.delete({
|
||||
@@ -158,7 +169,7 @@ export class AuthService {
|
||||
},
|
||||
});
|
||||
|
||||
await this.emailService.sendResetPasswordEmail(user.email, token);
|
||||
this.emailService.sendResetPasswordEmail(user.email, token);
|
||||
}
|
||||
|
||||
async resetPassword(token: string, newPassword: string) {
|
||||
@@ -225,12 +236,57 @@ export class AuthService {
|
||||
}) || {};
|
||||
|
||||
if (refreshTokenId) {
|
||||
const oauthIDToken = await this.prisma.refreshToken
|
||||
.findFirst({
|
||||
select: { oauthIDToken: true },
|
||||
where: { id: refreshTokenId },
|
||||
})
|
||||
.then((refreshToken) => refreshToken?.oauthIDToken)
|
||||
.catch((e) => {
|
||||
// Ignore error if refresh token doesn't exist
|
||||
if (e.code != "P2025") throw e;
|
||||
});
|
||||
await this.prisma.refreshToken
|
||||
.delete({ where: { id: refreshTokenId } })
|
||||
.catch((e) => {
|
||||
// Ignore error if refresh token doesn't exist
|
||||
if (e.code != "P2025") throw e;
|
||||
});
|
||||
|
||||
if (typeof oauthIDToken === "string") {
|
||||
const [providerName, idTokenHint] = oauthIDToken.split(":");
|
||||
const provider = this.oAuthService.availableProviders()[providerName];
|
||||
let signOutFromProviderSupportedAndActivated = false;
|
||||
try {
|
||||
signOutFromProviderSupportedAndActivated = this.config.get(
|
||||
`oauth.${providerName}-signOut`,
|
||||
);
|
||||
} catch (_) {
|
||||
// Ignore error if the provider is not supported or if the provider sign out is not activated
|
||||
}
|
||||
if (
|
||||
provider instanceof GenericOidcProvider &&
|
||||
signOutFromProviderSupportedAndActivated
|
||||
) {
|
||||
const configuration = await provider.getConfiguration();
|
||||
if (
|
||||
configuration.frontchannel_logout_supported &&
|
||||
URL.canParse(configuration.end_session_endpoint)
|
||||
) {
|
||||
const redirectURI = new URL(configuration.end_session_endpoint);
|
||||
redirectURI.searchParams.append(
|
||||
"post_logout_redirect_uri",
|
||||
this.config.get("general.appUrl"),
|
||||
);
|
||||
redirectURI.searchParams.append("id_token_hint", idTokenHint);
|
||||
redirectURI.searchParams.append(
|
||||
"client_id",
|
||||
this.config.get(`oauth.${providerName}-clientId`),
|
||||
);
|
||||
return redirectURI.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,13 +305,14 @@ export class AuthService {
|
||||
);
|
||||
}
|
||||
|
||||
async createRefreshToken(userId: string) {
|
||||
async createRefreshToken(userId: string, idToken?: string) {
|
||||
const { id, token } = await this.prisma.refreshToken.create({
|
||||
data: {
|
||||
userId,
|
||||
expiresAt: moment()
|
||||
.add(this.config.get("general.sessionDuration"), "hours")
|
||||
.toDate(),
|
||||
oauthIDToken: idToken,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -277,7 +334,7 @@ export class AuthService {
|
||||
refreshToken?: string,
|
||||
accessToken?: string,
|
||||
) {
|
||||
const isSecure = this.config.get("general.appUrl").startsWith("https");
|
||||
const isSecure = this.config.get("general.secureCookies");
|
||||
if (accessToken)
|
||||
response.cookie("access_token", accessToken, {
|
||||
sameSite: "lax",
|
||||
@@ -311,4 +368,12 @@ export class AuthService {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async verifyPassword(user: User, password: string) {
|
||||
if (!user.password && this.config.get("ldap.enabled")) {
|
||||
return !!this.ldapService.authenticateUser(user.username, password);
|
||||
}
|
||||
|
||||
return argon.verify(user.password, password);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ import {
|
||||
UnauthorizedException,
|
||||
} from "@nestjs/common";
|
||||
import { User } from "@prisma/client";
|
||||
import * as argon from "argon2";
|
||||
import { authenticator, totp } from "otplib";
|
||||
import * as qrcode from "qrcode-svg";
|
||||
import { ConfigService } from "src/config/config.service";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
import { AuthService } from "./auth.service";
|
||||
import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto";
|
||||
@@ -16,6 +16,7 @@ import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto";
|
||||
export class AuthTotpService {
|
||||
constructor(
|
||||
private prisma: PrismaService,
|
||||
private configService: ConfigService,
|
||||
private authService: AuthService,
|
||||
) {}
|
||||
|
||||
@@ -63,7 +64,7 @@ export class AuthTotpService {
|
||||
}
|
||||
|
||||
async enableTotp(user: User, password: string) {
|
||||
if (!(await argon.verify(user.password, password)))
|
||||
if (!this.authService.verifyPassword(user, password))
|
||||
throw new ForbiddenException("Invalid password");
|
||||
|
||||
// Check if we have a secret already
|
||||
@@ -76,13 +77,10 @@ export class AuthTotpService {
|
||||
throw new BadRequestException("TOTP is already enabled");
|
||||
}
|
||||
|
||||
const issuer = this.configService.get("general.appName");
|
||||
const secret = authenticator.generateSecret();
|
||||
|
||||
const otpURL = totp.keyuri(
|
||||
user.username || user.email,
|
||||
"pingvin-share",
|
||||
secret,
|
||||
);
|
||||
const otpURL = totp.keyuri(user.username || user.email, issuer, secret);
|
||||
|
||||
await this.prisma.user.update({
|
||||
where: { id: user.id },
|
||||
@@ -107,9 +105,8 @@ export class AuthTotpService {
|
||||
};
|
||||
}
|
||||
|
||||
// TODO: Maybe require a token to verify that the user who started enabling totp is the one who is verifying it?
|
||||
async verifyTotp(user: User, password: string, code: string) {
|
||||
if (!(await argon.verify(user.password, password)))
|
||||
if (!this.authService.verifyPassword(user, password))
|
||||
throw new ForbiddenException("Invalid password");
|
||||
|
||||
const { totpSecret } = await this.prisma.user.findUnique({
|
||||
@@ -138,7 +135,7 @@ export class AuthTotpService {
|
||||
}
|
||||
|
||||
async disableTotp(user: User, password: string, code: string) {
|
||||
if (!(await argon.verify(user.password, password)))
|
||||
if (!this.authService.verifyPassword(user, password))
|
||||
throw new ForbiddenException("Invalid password");
|
||||
|
||||
const { totpSecret } = await this.prisma.user.findUnique({
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import { PickType } from "@nestjs/swagger";
|
||||
import { IsEmail, IsOptional, IsString } from "class-validator";
|
||||
import { UserDTO } from "src/user/dto/user.dto";
|
||||
|
||||
export class AuthSignInDTO extends PickType(UserDTO, ["password"] as const) {
|
||||
export class AuthSignInDTO {
|
||||
@IsEmail()
|
||||
@IsOptional()
|
||||
email: string;
|
||||
@@ -10,4 +8,7 @@ export class AuthSignInDTO extends PickType(UserDTO, ["password"] as const) {
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
username: string;
|
||||
|
||||
@IsString()
|
||||
password: string;
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ export class EmailService {
|
||||
.get("email.shareRecipientsMessage")
|
||||
.replaceAll("\\n", "\n")
|
||||
.replaceAll("{creator}", creator?.username ?? "Someone")
|
||||
.replaceAll("{creatorEmail}", creator?.email ?? "")
|
||||
.replaceAll("{shareUrl}", shareUrl)
|
||||
.replaceAll("{desc}", description ?? "No description")
|
||||
.replaceAll(
|
||||
|
||||
@@ -3,21 +3,23 @@ import {
|
||||
HttpException,
|
||||
HttpStatus,
|
||||
Injectable,
|
||||
InternalServerErrorException,
|
||||
NotFoundException,
|
||||
} from "@nestjs/common";
|
||||
import { JwtService } from "@nestjs/jwt";
|
||||
import * as crypto from "crypto";
|
||||
import * as fs from "fs";
|
||||
import { createReadStream } from "fs";
|
||||
import * as fs from "fs/promises";
|
||||
import * as mime from "mime-types";
|
||||
import { ConfigService } from "src/config/config.service";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
import { validate as isValidUUID } from "uuid";
|
||||
import { SHARE_DIRECTORY } from "../constants";
|
||||
|
||||
@Injectable()
|
||||
export class FileService {
|
||||
constructor(
|
||||
private prisma: PrismaService,
|
||||
private jwtService: JwtService,
|
||||
private config: ConfigService,
|
||||
) {}
|
||||
|
||||
@@ -27,7 +29,11 @@ export class FileService {
|
||||
file: { id?: string; name: string },
|
||||
shareId: string,
|
||||
) {
|
||||
if (!file.id) file.id = crypto.randomUUID();
|
||||
if (!file.id) {
|
||||
file.id = crypto.randomUUID();
|
||||
} else if (!isValidUUID(file.id)) {
|
||||
throw new BadRequestException("Invalid file ID format");
|
||||
}
|
||||
|
||||
const share = await this.prisma.share.findUnique({
|
||||
where: { id: shareId },
|
||||
@@ -39,8 +45,8 @@ export class FileService {
|
||||
|
||||
let diskFileSize: number;
|
||||
try {
|
||||
diskFileSize = fs.statSync(
|
||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
||||
diskFileSize = (
|
||||
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`)
|
||||
).size;
|
||||
} catch {
|
||||
diskFileSize = 0;
|
||||
@@ -59,6 +65,13 @@ export class FileService {
|
||||
|
||||
const buffer = Buffer.from(data, "base64");
|
||||
|
||||
// Check if there is enough space on the server
|
||||
const space = await fs.statfs(SHARE_DIRECTORY);
|
||||
const availableSpace = space.bavail * space.bsize;
|
||||
if (availableSpace < buffer.byteLength) {
|
||||
throw new InternalServerErrorException("Not enough space on the server");
|
||||
}
|
||||
|
||||
// Check if share size limit is exceeded
|
||||
const fileSizeSum = share.files.reduce(
|
||||
(n, { size }) => n + parseInt(size),
|
||||
@@ -78,19 +91,19 @@ export class FileService {
|
||||
);
|
||||
}
|
||||
|
||||
fs.appendFileSync(
|
||||
await fs.appendFile(
|
||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
||||
buffer,
|
||||
);
|
||||
|
||||
const isLastChunk = chunk.index == chunk.total - 1;
|
||||
if (isLastChunk) {
|
||||
fs.renameSync(
|
||||
await fs.rename(
|
||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`,
|
||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}`,
|
||||
);
|
||||
const fileSize = fs.statSync(
|
||||
`${SHARE_DIRECTORY}/${shareId}/${file.id}`,
|
||||
const fileSize = (
|
||||
await fs.stat(`${SHARE_DIRECTORY}/${shareId}/${file.id}`)
|
||||
).size;
|
||||
await this.prisma.file.create({
|
||||
data: {
|
||||
@@ -112,7 +125,7 @@ export class FileService {
|
||||
|
||||
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||
|
||||
const file = fs.createReadStream(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||
const file = createReadStream(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||
|
||||
return {
|
||||
metaData: {
|
||||
@@ -131,19 +144,19 @@ export class FileService {
|
||||
|
||||
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||
|
||||
fs.unlinkSync(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||
await fs.unlink(`${SHARE_DIRECTORY}/${shareId}/${fileId}`);
|
||||
|
||||
await this.prisma.file.delete({ where: { id: fileId } });
|
||||
}
|
||||
|
||||
async deleteAllFiles(shareId: string) {
|
||||
await fs.promises.rm(`${SHARE_DIRECTORY}/${shareId}`, {
|
||||
await fs.rm(`${SHARE_DIRECTORY}/${shareId}`, {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
}
|
||||
|
||||
getZip(shareId: string) {
|
||||
return fs.createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`);
|
||||
return createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,9 @@ async function bootstrap() {
|
||||
SwaggerModule.setup("api/swagger", app, document);
|
||||
}
|
||||
|
||||
await app.listen(parseInt(process.env.PORT) || 8080);
|
||||
await app.listen(
|
||||
parseInt(process.env.BACKEND_PORT || process.env.PORT || "8080"),
|
||||
);
|
||||
|
||||
const logger = new Logger("UnhandledAsyncError");
|
||||
process.on("unhandledRejection", (e) => logger.error(e));
|
||||
|
||||
@@ -4,4 +4,5 @@ export interface OAuthSignInDto {
|
||||
providerUsername: string;
|
||||
email: string;
|
||||
isAdmin?: boolean;
|
||||
idToken?: string;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { forwardRef, Module } from "@nestjs/common";
|
||||
import { OAuthController } from "./oauth.controller";
|
||||
import { OAuthService } from "./oauth.service";
|
||||
import { AuthModule } from "../auth/auth.module";
|
||||
@@ -51,6 +51,7 @@ import { MicrosoftProvider } from "./provider/microsoft.provider";
|
||||
inject: ["OAUTH_PROVIDERS"],
|
||||
},
|
||||
],
|
||||
imports: [AuthModule],
|
||||
imports: [forwardRef(() => AuthModule)],
|
||||
exports: [OAuthService],
|
||||
})
|
||||
export class OAuthModule {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Inject, Injectable, Logger } from "@nestjs/common";
|
||||
import { forwardRef, Inject, Injectable, Logger } from "@nestjs/common";
|
||||
import { User } from "@prisma/client";
|
||||
import { nanoid } from "nanoid";
|
||||
import { AuthService } from "../auth/auth.service";
|
||||
@@ -6,14 +6,17 @@ import { ConfigService } from "../config/config.service";
|
||||
import { PrismaService } from "../prisma/prisma.service";
|
||||
import { OAuthSignInDto } from "./dto/oauthSignIn.dto";
|
||||
import { ErrorPageException } from "./exceptions/errorPage.exception";
|
||||
import { OAuthProvider } from "./provider/oauthProvider.interface";
|
||||
|
||||
@Injectable()
|
||||
export class OAuthService {
|
||||
constructor(
|
||||
private prisma: PrismaService,
|
||||
private config: ConfigService,
|
||||
private auth: AuthService,
|
||||
@Inject(forwardRef(() => AuthService)) private auth: AuthService,
|
||||
@Inject("OAUTH_PLATFORMS") private platforms: string[],
|
||||
@Inject("OAUTH_PROVIDERS")
|
||||
private oAuthProviders: Record<string, OAuthProvider<unknown>>,
|
||||
) {}
|
||||
private readonly logger = new Logger(OAuthService.name);
|
||||
|
||||
@@ -27,6 +30,18 @@ export class OAuthService {
|
||||
.map(([platform, _]) => platform);
|
||||
}
|
||||
|
||||
availableProviders(): Record<string, OAuthProvider<unknown>> {
|
||||
return Object.fromEntries(
|
||||
Object.entries(this.oAuthProviders)
|
||||
.map(([providerName, provider]) => [
|
||||
[providerName, provider],
|
||||
this.config.get(`oauth.${providerName}-enabled`),
|
||||
])
|
||||
.filter(([_, enabled]) => enabled)
|
||||
.map(([provider, _]) => provider),
|
||||
);
|
||||
}
|
||||
|
||||
async status(user: User) {
|
||||
const oauthUsers = await this.prisma.oAuthUser.findMany({
|
||||
select: {
|
||||
@@ -55,7 +70,7 @@ export class OAuthService {
|
||||
},
|
||||
});
|
||||
this.logger.log(`Successful login for user ${user.email} from IP ${ip}`);
|
||||
return this.auth.generateToken(updatedUser, true);
|
||||
return this.auth.generateToken(updatedUser, { idToken: user.idToken });
|
||||
}
|
||||
|
||||
return this.signUp(user, ip);
|
||||
@@ -156,7 +171,7 @@ export class OAuthService {
|
||||
},
|
||||
});
|
||||
await this.updateIsAdmin(user);
|
||||
return this.auth.generateToken(existingUser, true);
|
||||
return this.auth.generateToken(existingUser, { idToken: user.idToken });
|
||||
}
|
||||
|
||||
const result = await this.auth.signUp(
|
||||
|
||||
@@ -81,12 +81,17 @@ export class DiscordProvider implements OAuthProvider<DiscordToken> {
|
||||
if (guild) {
|
||||
await this.checkLimitedGuild(token, guild);
|
||||
}
|
||||
const limitedUsers = this.config.get("oauth.discord-limitedUsers");
|
||||
if (limitedUsers) {
|
||||
await this.checkLimitedUsers(user, limitedUsers);
|
||||
}
|
||||
|
||||
return {
|
||||
provider: "discord",
|
||||
providerId: user.id,
|
||||
providerUsername: user.global_name ?? user.username,
|
||||
email: user.email,
|
||||
idToken: `discord:${token.idToken}`,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -107,6 +112,12 @@ export class DiscordProvider implements OAuthProvider<DiscordToken> {
|
||||
throw new ErrorPageException("user_not_allowed");
|
||||
}
|
||||
}
|
||||
|
||||
async checkLimitedUsers(user: DiscordUser, userIds: string) {
|
||||
if (!userIds.split(",").includes(user.id)) {
|
||||
throw new ErrorPageException("user_not_allowed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export interface DiscordToken {
|
||||
|
||||
@@ -197,6 +197,7 @@ export abstract class GenericOidcProvider implements OAuthProvider<OidcToken> {
|
||||
providerId: idTokenData.sub,
|
||||
providerUsername: username,
|
||||
...(isAdmin !== undefined && { isAdmin }),
|
||||
idToken: `${this.name}:${token.idToken}`,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -251,6 +252,8 @@ export interface OidcConfiguration {
|
||||
id_token_signing_alg_values_supported: string[];
|
||||
scopes_supported?: string[];
|
||||
claims_supported?: string[];
|
||||
frontchannel_logout_supported?: boolean;
|
||||
end_session_endpoint?: string;
|
||||
}
|
||||
|
||||
export interface OidcJwk {
|
||||
|
||||
@@ -61,6 +61,7 @@ export class GitHubProvider implements OAuthProvider<GitHubToken> {
|
||||
providerId: user.id.toString(),
|
||||
providerUsername: user.name ?? user.login,
|
||||
email,
|
||||
idToken: `github:${token.idToken}`,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -315,11 +315,21 @@ export class ShareService {
|
||||
},
|
||||
});
|
||||
|
||||
if (
|
||||
share?.security?.password &&
|
||||
!(await argon.verify(share.security.password, password))
|
||||
) {
|
||||
throw new ForbiddenException("Wrong password", "wrong_password");
|
||||
if (share?.security?.password) {
|
||||
if (!password) {
|
||||
throw new ForbiddenException(
|
||||
"This share is password protected",
|
||||
"share_password_required",
|
||||
);
|
||||
}
|
||||
|
||||
const isPasswordValid = await argon.verify(
|
||||
share.security.password,
|
||||
password,
|
||||
);
|
||||
if (!isPasswordValid) {
|
||||
throw new ForbiddenException("Wrong password", "wrong_password");
|
||||
}
|
||||
}
|
||||
|
||||
if (share.security?.maxViews && share.security.maxViews <= share.views) {
|
||||
@@ -335,12 +345,13 @@ export class ShareService {
|
||||
}
|
||||
|
||||
async generateShareToken(shareId: string) {
|
||||
const { expiration } = await this.prisma.share.findUnique({
|
||||
const { expiration, createdAt } = await this.prisma.share.findUnique({
|
||||
where: { id: shareId },
|
||||
});
|
||||
|
||||
const tokenPayload = {
|
||||
shareId,
|
||||
shareCreatedAt: moment(createdAt).unix(),
|
||||
iat: moment().unix(),
|
||||
};
|
||||
|
||||
@@ -356,7 +367,7 @@ export class ShareService {
|
||||
}
|
||||
|
||||
async verifyShareToken(shareId: string, token: string) {
|
||||
const { expiration } = await this.prisma.share.findUnique({
|
||||
const { expiration, createdAt } = await this.prisma.share.findUnique({
|
||||
where: { id: shareId },
|
||||
});
|
||||
|
||||
@@ -367,7 +378,10 @@ export class ShareService {
|
||||
ignoreExpiration: moment(expiration).isSame(0),
|
||||
});
|
||||
|
||||
return claims.shareId == shareId;
|
||||
return (
|
||||
claims.shareId == shareId &&
|
||||
claims.shareCreatedAt == moment(createdAt).unix()
|
||||
);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
HttpCode,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
@@ -14,12 +15,12 @@ import { Response } from "express";
|
||||
import { GetUser } from "src/auth/decorator/getUser.decorator";
|
||||
import { AdministratorGuard } from "src/auth/guard/isAdmin.guard";
|
||||
import { JwtGuard } from "src/auth/guard/jwt.guard";
|
||||
import { ConfigService } from "../config/config.service";
|
||||
import { CreateUserDTO } from "./dto/createUser.dto";
|
||||
import { UpdateOwnUserDTO } from "./dto/updateOwnUser.dto";
|
||||
import { UpdateUserDto } from "./dto/updateUser.dto";
|
||||
import { UserDTO } from "./dto/user.dto";
|
||||
import { UserSevice } from "./user.service";
|
||||
import { ConfigService } from "../config/config.service";
|
||||
|
||||
@Controller("users")
|
||||
export class UserController {
|
||||
@@ -48,12 +49,15 @@ export class UserController {
|
||||
}
|
||||
|
||||
@Delete("me")
|
||||
@HttpCode(204)
|
||||
@UseGuards(JwtGuard)
|
||||
async deleteCurrentUser(
|
||||
@GetUser() user: User,
|
||||
@Res({ passthrough: true }) response: Response,
|
||||
) {
|
||||
const isSecure = this.config.get("general.appUrl").startsWith("https");
|
||||
await this.userService.delete(user.id);
|
||||
|
||||
const isSecure = this.config.get("general.secureCookies");
|
||||
|
||||
response.cookie("access_token", "accessToken", {
|
||||
maxAge: -1,
|
||||
@@ -65,7 +69,6 @@ export class UserController {
|
||||
maxAge: -1,
|
||||
secure: isSecure,
|
||||
});
|
||||
return new UserDTO().from(await this.userService.delete(user.id));
|
||||
}
|
||||
|
||||
// Global user operations
|
||||
|
||||
@@ -2,15 +2,15 @@ import { BadRequestException, Injectable, Logger } from "@nestjs/common";
|
||||
import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library";
|
||||
import * as argon from "argon2";
|
||||
import * as crypto from "crypto";
|
||||
import { Entry } from "ldapts";
|
||||
import { AuthSignInDTO } from "src/auth/dto/authSignIn.dto";
|
||||
import { EmailService } from "src/email/email.service";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
import { inspect } from "util";
|
||||
import { ConfigService } from "../config/config.service";
|
||||
import { FileService } from "../file/file.service";
|
||||
import { CreateUserDTO } from "./dto/createUser.dto";
|
||||
import { UpdateUserDto } from "./dto/updateUser.dto";
|
||||
import { ConfigService } from "../config/config.service";
|
||||
import { Entry } from "ldapts";
|
||||
import { AuthSignInDTO } from "src/auth/dto/authSignIn.dto";
|
||||
import { inspect } from "util";
|
||||
|
||||
@Injectable()
|
||||
export class UserSevice {
|
||||
@@ -89,6 +89,16 @@ export class UserSevice {
|
||||
});
|
||||
if (!user) throw new BadRequestException("User not found");
|
||||
|
||||
if (user.isAdmin) {
|
||||
const userCount = await this.prisma.user.count({
|
||||
where: { isAdmin: true },
|
||||
});
|
||||
|
||||
if (userCount === 1) {
|
||||
throw new BadRequestException("Cannot delete the last admin user");
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(
|
||||
user.shares.map((share) => this.fileService.deleteAllFiles(share.id)),
|
||||
);
|
||||
|
||||
@@ -36,7 +36,7 @@ For installation specific configuration, you can use environment variables. The
|
||||
|
||||
| Variable | Default Value | Description |
|
||||
| ---------------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `PORT` | `8080` | The port on which the backend listens. |
|
||||
| `BACKEND_PORT` | `8080` | The port on which the backend listens. |
|
||||
| `DATABASE_URL` | `file:../data/pingvin-share.db?connection_limit=1` | The URL of the SQLite database. |
|
||||
| `DATA_DIRECTORY` | `./data` | The directory where data is stored. |
|
||||
| `CLAMAV_HOST` | `127.0.0.1` or `clamav` when running with Docker | The IP address of the ClamAV server. See the [ClamAV docs](integrations.md#clamav) for more information. |
|
||||
|
||||
@@ -11,6 +11,16 @@ id: installation
|
||||
|
||||
The website is now listening on `http://localhost:3000`, have fun with Pingvin Share 🐧!
|
||||
|
||||
### Installation with Portainer
|
||||
|
||||
1. In the **Stacks** menu, click the **Add stack** button
|
||||
2. Give you stack a name (ex. pingvinshare)
|
||||
3. In the web editor, paste the content of the [docker-compose](https://github.com/stonith404/pingvin-share/blob/main/docker-compose.yml) file.
|
||||
4. Edit the external port and the environment variables (optional).
|
||||
5. Click on **Deploy the stack**.
|
||||
|
||||
Your container is now listening on `http://localhost:<externalport>`, have fun with Pingvin Share 🐧!
|
||||
|
||||
### Stand-alone Installation
|
||||
|
||||
Required tools:
|
||||
|
||||
@@ -40,9 +40,11 @@ Redirect URL: `https://<your-domain>/api/oauth/callback/discord`
|
||||
|
||||
### OpenID Connect
|
||||
|
||||
Generic OpenID Connect provider is also supported, we have tested it on Keycloak, Authentik and Casdoor.
|
||||
Generic OpenID Connect provider is also supported, we have tested it on Keycloak, Authentik, Casdoor and [Pocket ID](https://github.com/stonith404/pocket-id).
|
||||
|
||||
Redirect URL: `https://<your-domain>/api/oauth/callback/oidc`
|
||||
Redirect URI: `https://<your-domain>/api/oauth/callback/oidc`
|
||||
|
||||
Post Logout Redirect URI: `https://<your-domain>`
|
||||
|
||||
## Custom your OAuth 2 Provider
|
||||
|
||||
|
||||
@@ -14,6 +14,11 @@ As Pingvin Share is in early stage, see the release notes for breaking changes b
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
### Portainer
|
||||
|
||||
1. In your container page, click on Recreate.
|
||||
2. Check the Re-Pull image toggle.
|
||||
3. Click on Recreate.
|
||||
|
||||
#### Stand-alone
|
||||
|
||||
|
||||
@@ -18,7 +18,4 @@ module.exports = withPWA({
|
||||
output: "standalone", env: {
|
||||
VERSION: version,
|
||||
},
|
||||
serverRuntimeConfig: {
|
||||
apiURL: process.env.API_URL ?? 'http://localhost:8080',
|
||||
},
|
||||
});
|
||||
|
||||
44
frontend/package-lock.json
generated
44
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pingvin-share-frontend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pingvin-share-frontend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.13.3",
|
||||
"@emotion/server": "^11.11.0",
|
||||
@@ -4357,20 +4357,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
||||
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookies-next": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.2.1.tgz",
|
||||
"integrity": "sha512-qsjtZ8TLlxCSX2JphMQNhkm3V3zIMQ05WrLkBKBwu50npBbBfiZWIdmSMzBGcdGKfMK19E0PIitTfRFAdMGHXg==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.3.0.tgz",
|
||||
"integrity": "sha512-XxeCwLR30cWwRd94sa9X5lRCDLVujtx73tv+N0doQCFIDl83fuuYdxbu/WQUt9aSV7EJx7bkMvJldjvzuFqr4w==",
|
||||
"dependencies": {
|
||||
"@types/cookie": "^0.6.0",
|
||||
"cookie": "^0.6.0"
|
||||
"cookie": "^0.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/core-js-compat": {
|
||||
@@ -8262,9 +8262,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "2.79.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
|
||||
"integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
|
||||
"version": "2.79.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
|
||||
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
},
|
||||
@@ -13067,17 +13067,17 @@
|
||||
}
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
||||
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="
|
||||
},
|
||||
"cookies-next": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.2.1.tgz",
|
||||
"integrity": "sha512-qsjtZ8TLlxCSX2JphMQNhkm3V3zIMQ05WrLkBKBwu50npBbBfiZWIdmSMzBGcdGKfMK19E0PIitTfRFAdMGHXg==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.3.0.tgz",
|
||||
"integrity": "sha512-XxeCwLR30cWwRd94sa9X5lRCDLVujtx73tv+N0doQCFIDl83fuuYdxbu/WQUt9aSV7EJx7bkMvJldjvzuFqr4w==",
|
||||
"requires": {
|
||||
"@types/cookie": "^0.6.0",
|
||||
"cookie": "^0.6.0"
|
||||
"cookie": "^0.7.0"
|
||||
}
|
||||
},
|
||||
"core-js-compat": {
|
||||
@@ -15850,9 +15850,9 @@
|
||||
}
|
||||
},
|
||||
"rollup": {
|
||||
"version": "2.79.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
|
||||
"integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
|
||||
"version": "2.79.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
|
||||
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
||||
"requires": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pingvin-share-frontend",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -5,10 +5,9 @@ import { translateOutsideContext } from "../../hooks/useTranslate.hook";
|
||||
const showReverseShareLinkModal = (
|
||||
modals: ModalsContextProps,
|
||||
reverseShareToken: string,
|
||||
appUrl: string,
|
||||
) => {
|
||||
const t = translateOutsideContext();
|
||||
const link = `${appUrl}/upload/${reverseShareToken}`;
|
||||
const link = `${window.location.origin}/upload/${reverseShareToken}`;
|
||||
return modals.openModal({
|
||||
title: t("account.reverseShares.modal.reverse-share-link"),
|
||||
children: (
|
||||
|
||||
@@ -11,11 +11,10 @@ import CopyTextField from "../upload/CopyTextField";
|
||||
const showShareInformationsModal = (
|
||||
modals: ModalsContextProps,
|
||||
share: MyShare,
|
||||
appUrl: string,
|
||||
maxShareSize: number,
|
||||
) => {
|
||||
const t = translateOutsideContext();
|
||||
const link = `${appUrl}/s/${share.id}`;
|
||||
const link = `${window.location.origin}/s/${share.id}`;
|
||||
|
||||
const formattedShareSize = byteToHumanSizeString(share.size);
|
||||
const formattedMaxShareSize = byteToHumanSizeString(maxShareSize);
|
||||
|
||||
@@ -2,13 +2,9 @@ import { Stack, TextInput } from "@mantine/core";
|
||||
import { ModalsContextProps } from "@mantine/modals/lib/context";
|
||||
import { translateOutsideContext } from "../../hooks/useTranslate.hook";
|
||||
|
||||
const showShareLinkModal = (
|
||||
modals: ModalsContextProps,
|
||||
shareId: string,
|
||||
appUrl: string,
|
||||
) => {
|
||||
const showShareLinkModal = (modals: ModalsContextProps, shareId: string) => {
|
||||
const t = translateOutsideContext();
|
||||
const link = `${appUrl}/s/${shareId}`;
|
||||
const link = `${window.location.origin}/s/${shareId}`;
|
||||
return modals.openModal({
|
||||
title: t("account.shares.modal.share-link"),
|
||||
children: (
|
||||
|
||||
@@ -18,11 +18,12 @@ import {
|
||||
TbSocial,
|
||||
TbSquare,
|
||||
TbBinaryTree,
|
||||
TbSettings,
|
||||
} from "react-icons/tb";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
|
||||
const categories = [
|
||||
{ name: "General", icon: <TbSquare /> },
|
||||
{ name: "General", icon: <TbSettings /> },
|
||||
{ name: "Email", icon: <TbMail /> },
|
||||
{ name: "Share", icon: <TbShare /> },
|
||||
{ name: "SMTP", icon: <TbAt /> },
|
||||
|
||||
@@ -89,15 +89,11 @@ const ManageShareTable = ({
|
||||
onClick={() => {
|
||||
if (window.isSecureContext) {
|
||||
clipboard.copy(
|
||||
`${config.get("general.appUrl")}/s/${share.id}`,
|
||||
`${window.location.origin}/s/${share.id}`,
|
||||
);
|
||||
toast.success(t("common.notify.copied"));
|
||||
} else {
|
||||
showShareLinkModal(
|
||||
modals,
|
||||
share.id,
|
||||
config.get("general.appUrl"),
|
||||
);
|
||||
showShareLinkModal(modals, share.id);
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -81,10 +81,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
|
||||
|
||||
const validationSchema = yup.object().shape({
|
||||
emailOrUsername: yup.string().required(t("common.error.field-required")),
|
||||
password: yup
|
||||
.string()
|
||||
.min(8, t("common.error.too-short", { length: 8 }))
|
||||
.required(t("common.error.field-required")),
|
||||
password: yup.string().required(t("common.error.field-required")),
|
||||
});
|
||||
|
||||
const form = useForm({
|
||||
@@ -97,7 +94,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
|
||||
|
||||
const signIn = async (email: string, password: string) => {
|
||||
await authService
|
||||
.signIn(email, password)
|
||||
.signIn(email.trim(), password.trim())
|
||||
.then(async (response) => {
|
||||
if (response.data["loginToken"]) {
|
||||
// Prompt the user to enter their totp code
|
||||
@@ -131,9 +128,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
|
||||
config.get("oauth.disablePassword")
|
||||
) {
|
||||
setIsRedirectingToOauthProvider(true);
|
||||
router.push(
|
||||
getOAuthUrl(config.get("general.appUrl"), providers.data[0]),
|
||||
);
|
||||
router.push(getOAuthUrl(window.location.origin, providers.data[0]));
|
||||
}
|
||||
})
|
||||
.catch(toast.axiosError);
|
||||
@@ -211,7 +206,7 @@ const SignInForm = ({ redirectPath }: { redirectPath: string }) => {
|
||||
key={provider}
|
||||
component="a"
|
||||
title={t(`signIn.oauth.${provider}`)}
|
||||
href={getOAuthUrl(config.get("general.appUrl"), provider)}
|
||||
href={getOAuthUrl(window.location.origin, provider)}
|
||||
variant="light"
|
||||
fullWidth
|
||||
>
|
||||
|
||||
@@ -48,7 +48,7 @@ const SignUpForm = () => {
|
||||
|
||||
const signUp = async (email: string, username: string, password: string) => {
|
||||
await authService
|
||||
.signUp(email, username, password)
|
||||
.signUp(email.trim(), username.trim(), password.trim())
|
||||
.then(async () => {
|
||||
const user = await refreshUser();
|
||||
if (user?.isAdmin) {
|
||||
|
||||
@@ -65,7 +65,7 @@ const FileList = ({
|
||||
};
|
||||
|
||||
const copyFileLink = (file: FileMetaData) => {
|
||||
const link = `${config.get("general.appUrl")}/api/shares/${
|
||||
const link = `${window.location.origin}/api/shares/${
|
||||
share.id
|
||||
}/files/${file.id}`;
|
||||
|
||||
|
||||
@@ -9,11 +9,13 @@ import {
|
||||
Switch,
|
||||
Text,
|
||||
} from "@mantine/core";
|
||||
import { useForm } from "@mantine/form";
|
||||
import { useForm, yupResolver } from "@mantine/form";
|
||||
import { useModals } from "@mantine/modals";
|
||||
import { ModalsContextProps } from "@mantine/modals/lib/context";
|
||||
import { getCookie, setCookie } from "cookies-next";
|
||||
import moment from "moment";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import * as yup from "yup";
|
||||
import useTranslate, {
|
||||
translateOutsideContext,
|
||||
} from "../../../hooks/useTranslate.hook";
|
||||
@@ -22,7 +24,6 @@ import { getExpirationPreview } from "../../../utils/date.util";
|
||||
import toast from "../../../utils/toast.util";
|
||||
import FileSizeInput from "../FileSizeInput";
|
||||
import showCompletedReverseShareModal from "./showCompletedReverseShareModal";
|
||||
import { getCookie, setCookie } from "cookies-next";
|
||||
|
||||
const showCreateReverseShareModal = (
|
||||
modals: ModalsContextProps,
|
||||
@@ -65,6 +66,16 @@ const Body = ({
|
||||
simplified: !!(getCookie("reverse-share.simplified") ?? false),
|
||||
publicAccess: !!(getCookie("reverse-share.public-access") ?? true),
|
||||
},
|
||||
validate: yupResolver(
|
||||
yup.object().shape({
|
||||
maxUseCount: yup
|
||||
.number()
|
||||
.typeError(t("common.error.invalid-number"))
|
||||
.min(1, t("common.error.number-too-small", { min: 1 }))
|
||||
.max(1000, t("common.error.number-too-large", { max: 1000 }))
|
||||
.required(t("common.error.field-required")),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
const onSubmit = form.onSubmit(async (values) => {
|
||||
|
||||
@@ -13,7 +13,6 @@ import CopyTextField from "../CopyTextField";
|
||||
const showCompletedUploadModal = (
|
||||
modals: ModalsContextProps,
|
||||
share: CompletedShare,
|
||||
appUrl: string,
|
||||
) => {
|
||||
const t = translateOutsideContext();
|
||||
return modals.openModal({
|
||||
@@ -21,16 +20,18 @@ const showCompletedUploadModal = (
|
||||
withCloseButton: false,
|
||||
closeOnEscape: false,
|
||||
title: t("upload.modal.completed.share-ready"),
|
||||
children: <Body share={share} appUrl={appUrl} />,
|
||||
children: <Body share={share} />,
|
||||
});
|
||||
};
|
||||
|
||||
const Body = ({ share, appUrl }: { share: CompletedShare; appUrl: string }) => {
|
||||
const Body = ({ share }: { share: CompletedShare }) => {
|
||||
const modals = useModals();
|
||||
const router = useRouter();
|
||||
const t = useTranslate();
|
||||
|
||||
const link = `${appUrl}/s/${share.id}`;
|
||||
const isReverseShare = !!router.query["reverseShareToken"];
|
||||
|
||||
const link = `${window.location.origin}/s/${share.id}`;
|
||||
|
||||
return (
|
||||
<Stack align="stretch">
|
||||
@@ -65,7 +66,11 @@ const Body = ({ share, appUrl }: { share: CompletedShare; appUrl: string }) => {
|
||||
<Button
|
||||
onClick={() => {
|
||||
modals.closeAll();
|
||||
router.push("/upload");
|
||||
if (isReverseShare) {
|
||||
router.reload();
|
||||
} else {
|
||||
router.push("/upload");
|
||||
}
|
||||
}}
|
||||
>
|
||||
<FormattedMessage id="common.button.done" />
|
||||
|
||||
@@ -19,7 +19,7 @@ import { useForm, yupResolver } from "@mantine/form";
|
||||
import { useModals } from "@mantine/modals";
|
||||
import { ModalsContextProps } from "@mantine/modals/lib/context";
|
||||
import moment from "moment";
|
||||
import { useState } from "react";
|
||||
import React, { useState } from "react";
|
||||
import { TbAlertCircle } from "react-icons/tb";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import * as yup from "yup";
|
||||
@@ -30,7 +30,6 @@ import shareService from "../../../services/share.service";
|
||||
import { FileUpload } from "../../../types/File.type";
|
||||
import { CreateShare } from "../../../types/share.type";
|
||||
import { getExpirationPreview } from "../../../utils/date.util";
|
||||
import React from "react";
|
||||
import toast from "../../../utils/toast.util";
|
||||
|
||||
const showCreateUploadModal = (
|
||||
@@ -38,10 +37,10 @@ const showCreateUploadModal = (
|
||||
options: {
|
||||
isUserSignedIn: boolean;
|
||||
isReverseShare: boolean;
|
||||
appUrl: string;
|
||||
allowUnauthenticatedShares: boolean;
|
||||
enableEmailRecepients: boolean;
|
||||
maxExpirationInHours: number;
|
||||
shareIdLength: number;
|
||||
simplified: boolean;
|
||||
},
|
||||
files: FileUpload[],
|
||||
@@ -74,18 +73,28 @@ const showCreateUploadModal = (
|
||||
});
|
||||
};
|
||||
|
||||
const generateLink = () =>
|
||||
Buffer.from(Math.random().toString(), "utf8")
|
||||
.toString("base64")
|
||||
.substring(10, 17);
|
||||
const generateShareId = (length: number = 16) => {
|
||||
const chars =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
let result = "";
|
||||
const randomArray = new Uint8Array(length >= 3 ? length : 3);
|
||||
crypto.getRandomValues(randomArray);
|
||||
randomArray.forEach((number) => {
|
||||
result += chars[number % chars.length];
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
const generateAvailableLink = async (times = 10): Promise<string> => {
|
||||
const generateAvailableLink = async (
|
||||
shareIdLength: number,
|
||||
times: number = 10,
|
||||
): Promise<string> => {
|
||||
if (times <= 0) {
|
||||
throw new Error("Could not generate available link");
|
||||
}
|
||||
const _link = generateLink();
|
||||
const _link = generateShareId(shareIdLength);
|
||||
if (!(await shareService.isShareIdAvailable(_link))) {
|
||||
return await generateAvailableLink(times - 1);
|
||||
return await generateAvailableLink(shareIdLength, times - 1);
|
||||
} else {
|
||||
return _link;
|
||||
}
|
||||
@@ -101,16 +110,16 @@ const CreateUploadModalBody = ({
|
||||
options: {
|
||||
isUserSignedIn: boolean;
|
||||
isReverseShare: boolean;
|
||||
appUrl: string;
|
||||
allowUnauthenticatedShares: boolean;
|
||||
enableEmailRecepients: boolean;
|
||||
maxExpirationInHours: number;
|
||||
shareIdLength: number;
|
||||
};
|
||||
}) => {
|
||||
const modals = useModals();
|
||||
const t = useTranslate();
|
||||
|
||||
const generatedLink = generateLink();
|
||||
const generatedLink = generateShareId(options.shareIdLength);
|
||||
|
||||
const [showNotSignedInAlert, setShowNotSignedInAlert] = useState(true);
|
||||
|
||||
@@ -232,7 +241,12 @@ const CreateUploadModalBody = ({
|
||||
<Button
|
||||
style={{ flex: "0 0 auto" }}
|
||||
variant="outline"
|
||||
onClick={() => form.setFieldValue("link", generateLink())}
|
||||
onClick={() =>
|
||||
form.setFieldValue(
|
||||
"link",
|
||||
generateShareId(options.shareIdLength),
|
||||
)
|
||||
}
|
||||
>
|
||||
<FormattedMessage id="common.button.generate" />
|
||||
</Button>
|
||||
@@ -245,7 +259,7 @@ const CreateUploadModalBody = ({
|
||||
color: theme.colors.gray[6],
|
||||
})}
|
||||
>
|
||||
{`${options.appUrl}/s/${form.values.link}`}
|
||||
{`${window.location.origin}/s/${form.values.link}`}
|
||||
</Text>
|
||||
{!options.isReverseShare && (
|
||||
<>
|
||||
@@ -371,7 +385,7 @@ const CreateUploadModalBody = ({
|
||||
searchable
|
||||
creatable
|
||||
id="recipient-emails"
|
||||
type="email"
|
||||
inputMode="email"
|
||||
getCreateLabel={(query) => `+ ${query}`}
|
||||
onCreate={(query) => {
|
||||
if (!query.match(/^\S+@\S+\.\S+$/)) {
|
||||
@@ -461,10 +475,10 @@ const SimplifiedCreateUploadModalModal = ({
|
||||
options: {
|
||||
isUserSignedIn: boolean;
|
||||
isReverseShare: boolean;
|
||||
appUrl: string;
|
||||
allowUnauthenticatedShares: boolean;
|
||||
enableEmailRecepients: boolean;
|
||||
maxExpirationInHours: number;
|
||||
shareIdLength: number;
|
||||
};
|
||||
}) => {
|
||||
const modals = useModals();
|
||||
@@ -489,10 +503,12 @@ const SimplifiedCreateUploadModalModal = ({
|
||||
});
|
||||
|
||||
const onSubmit = form.onSubmit(async (values) => {
|
||||
const link = await generateAvailableLink().catch(() => {
|
||||
toast.error(t("upload.modal.link.error.taken"));
|
||||
return undefined;
|
||||
});
|
||||
const link = await generateAvailableLink(options.shareIdLength).catch(
|
||||
() => {
|
||||
toast.error(t("upload.modal.link.error.taken"));
|
||||
return undefined;
|
||||
},
|
||||
);
|
||||
|
||||
if (!link) {
|
||||
return;
|
||||
|
||||
42
frontend/src/hooks/confirm-leave.hook.ts
Normal file
42
frontend/src/hooks/confirm-leave.hook.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { useRouter } from "next/router";
|
||||
import { useEffect } from "react";
|
||||
|
||||
const useConfirmLeave = ({
|
||||
message,
|
||||
enabled,
|
||||
}: {
|
||||
message: string;
|
||||
enabled: boolean;
|
||||
}) => {
|
||||
const router = useRouter();
|
||||
|
||||
useEffect(() => {
|
||||
if (!enabled) return;
|
||||
|
||||
// Show confirmation dialog when route changes
|
||||
const handleRouteChange = () => {
|
||||
const confirmLeave = window.confirm(message);
|
||||
if (!confirmLeave) {
|
||||
router.events.emit("routeChangeError");
|
||||
throw "Route change aborted.";
|
||||
}
|
||||
};
|
||||
|
||||
// Show confirmation when the user tries to leave or reload the page
|
||||
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
|
||||
event.preventDefault();
|
||||
event.returnValue = message;
|
||||
return message;
|
||||
};
|
||||
|
||||
router.events.on("routeChangeStart", handleRouteChange);
|
||||
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||
|
||||
return () => {
|
||||
router.events.off("routeChangeStart", handleRouteChange);
|
||||
window.removeEventListener("beforeunload", handleBeforeUnload);
|
||||
};
|
||||
}, [router, message, enabled]);
|
||||
};
|
||||
|
||||
export default useConfirmLeave;
|
||||
@@ -15,7 +15,7 @@ import polish from "./translations/pl-PL";
|
||||
import portuguese from "./translations/pt-BR";
|
||||
import russian from "./translations/ru-RU";
|
||||
import slovenian from "./translations/sl-SI";
|
||||
import serbian from "./translations/sr-SP";
|
||||
import serbianCyrillic from "./translations/sr-SP";
|
||||
import swedish from "./translations/sv-SE";
|
||||
import thai from "./translations/th-TH";
|
||||
import ukrainian from "./translations/uk-UA";
|
||||
@@ -25,6 +25,7 @@ import turkish from "./translations/tr-TR";
|
||||
import czech from "./translations/cs-CZ";
|
||||
import viatnamese from "./translations/vi-VN";
|
||||
import bulgarian from "./translations/bg-BG";
|
||||
import serbianLatin from "./translations/sr-CS";
|
||||
|
||||
export const LOCALES = {
|
||||
ENGLISH: {
|
||||
@@ -88,9 +89,14 @@ export const LOCALES = {
|
||||
messages: thai,
|
||||
},
|
||||
SERBIAN: {
|
||||
name: "Srpski",
|
||||
name: "Српски",
|
||||
code: "sr-SP",
|
||||
messages: serbian,
|
||||
messages: serbianCyrillic,
|
||||
},
|
||||
SERBIAN_LATIN: {
|
||||
name: "Srpski",
|
||||
code: "sr-CS",
|
||||
messages: serbianLatin,
|
||||
},
|
||||
DUTCH: {
|
||||
name: "Nederlands",
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "رفع",
|
||||
"navbar.signin": "تسجيل الدخول",
|
||||
"navbar.home": "الصفحة الرئيسية",
|
||||
"navbar.signup": "إنشاء حساب",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "مشاركاتي",
|
||||
"navbar.links.reverse": "مشاركاتي العكسية",
|
||||
"navbar.avatar.account": "حسابي",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "استضافة ذاتية",
|
||||
"home.bullet.a.description": "قم باستضافة Pingvin Share على جهازك.",
|
||||
"home.bullet.b.name": "الخصوصية",
|
||||
"home.bullet.b.description": "ملفاتك تخصّك وحدك فقط، ولا ينبغي أبدًا أن تقع بأيدي طرفٍ ثالث.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "ليس هناك أية قيود على حجم الملفات",
|
||||
"home.bullet.c.description": "ارفع أي ملف تريده مهما كان حجمه كبيرًا. إن مساحة قرصك الصلب هي المحدد الوحيد هنا.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "ابدأ",
|
||||
"home.button.source": "النص البرمجي المصدري",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "نسيت كلمة سرّك؟",
|
||||
"resetPassword.description": "اكتب بريدك لتعيد تعيين كلمة السر.",
|
||||
"resetPassword.notify.success": "إذا كان هذا البريد مسجلًا لدينا فستصله الآن رسالة فيها رابط لإعادة تعيين كلمة السرّ.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "العودة لصفحة تسجيل الدخول",
|
||||
"resetPassword.text.resetPassword": "إعادة تعيين كلمة السر",
|
||||
"resetPassword.text.enterNewPassword": "أدخل كلمة السر الجديدة",
|
||||
"resetPassword.input.password": "كلمة السر الجديدة",
|
||||
"resetPassword.notify.passwordReset": "أعدتَ تعيين كلمة السر بنجاح.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "حسابي",
|
||||
"account.card.info.title": "معلومات الحساب",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "كلمة السر",
|
||||
"account.card.password.old": "كلمة السر القديمة",
|
||||
"account.card.password.new": "كلمة السر الجديدة",
|
||||
"account.card.password.noPasswordSet": "ليس لحسابك كلمة سر. إذا أردت تسجيل الدخول باستخدام البريد وكلمة سر، فعليك أن تُعيِّن كلمة سر.",
|
||||
"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": "غيرت كلمة السر بنجاح",
|
||||
"account.card.oauth.title": "الدخول بحساب تواصل اجتماعي",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "فك الربط",
|
||||
"account.card.oauth.unlinked": "تم فك الربط",
|
||||
"account.modal.unlink.title": "فك ربط الحساب",
|
||||
"account.modal.unlink.description": "قد يؤدي إلغاء ربط حساباتك الاجتماعية إلى فقدان وصولك لحسابك إذا كنت لا تتذكر اسم المستخدم وكلمة السر الخاصة بك.",
|
||||
"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": "تم فك الربط بنجاح",
|
||||
"account.card.security.title": "الأمان",
|
||||
"account.card.security.totp.enable.description": "اكتب كلمة سرّك لبدء تمكين TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "الاسم",
|
||||
"account.shares.table.description": "الوصف",
|
||||
"account.shares.table.visitors": "الزوار",
|
||||
"account.shares.table.expiresAt": "تاريخ انتهاء الصلاحية",
|
||||
"account.shares.table.createdAt": "تاريخ الإنشاء",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "الحجم",
|
||||
"account.shares.modal.share-informations": "معلومات المشاركة",
|
||||
"account.shares.modal.share-link": "رابط المشاركة",
|
||||
"account.shares.modal.delete.title": "حذف المشاركة {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "هل تريد حذف هذه المشاركة حقاً؟",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "سنة",
|
||||
"account.reverseShares.modal.expiration.year-plural": "سنوات",
|
||||
"account.reverseShares.modal.max-size.label": "الحد الأقصى لحجم المشاركة",
|
||||
"account.reverseShares.modal.send-email": "أرسل إشعارًا بالبريد",
|
||||
"account.reverseShares.modal.send-email.description": "إرسال إشعار بالبريد الإلكتروني عند إنشاء مشاركة باستخدام رابط المشاركة العكسي هذا.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "الحد الأقصى لعدد الاستخدامات",
|
||||
"account.reverseShares.modal.max-use.description": "أقصى عدد من المرّات التي يمكن فيها استخدام هذا الرابط لإنشاء مشاركة.",
|
||||
"account.reverseShare.never-expires": "لن تنتهي صلاحية هذه المشاركة العكسية أبدًا.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "اسم المستخدم",
|
||||
"admin.users.table.email": "البريد",
|
||||
"admin.users.table.admin": "المدير",
|
||||
"admin.users.edit.update.title": "تحديث المستخدم {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "صلاحيات المدير",
|
||||
"admin.users.edit.update.change-password.title": "تغيير كلمة السر",
|
||||
"admin.users.edit.update.change-password.field": "كلمة السر الجديدة",
|
||||
"admin.users.edit.update.change-password.button": "حفظ كلمة السر الجديدة",
|
||||
"admin.users.edit.update.notify.password.success": "غيرت كلمة السر بنجاح",
|
||||
"admin.users.edit.delete.title": "حذف المستخدم {username}",
|
||||
"admin.users.edit.delete.description": "هل تريد حقاً حذف هذا المستخدم وكل مشاركاته؟",
|
||||
"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": "أنشئ مستخدمًا",
|
||||
"admin.users.modal.create.username": "اسم المستخدم",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "معرّف المشاركة",
|
||||
"admin.shares.table.username": "المُنشئ",
|
||||
"admin.shares.table.visitors": "الزوار",
|
||||
"admin.shares.table.expires": "تاريخ انتهاء الصلاحية",
|
||||
"admin.shares.edit.delete.title": "حذف المشاركة {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "هل تريد حذف هذه المشاركة حقاً؟",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "رفع",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "حدث خطأ أثناء إنهاء مشاركتك.",
|
||||
"upload.notify.count-failed": "فشل رفع {count} ملفات. تجري المحاولة مجددًا.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "رفع الملفات",
|
||||
"upload.dropzone.description": "اسحب الملفات إلى هنا لبدء مشاركتك. يمكننا فقط قبول الملفات التي لا يزيد حجمها عن {maxSize} بالمجمل.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "تتجاوز ملفاتك الحجم الأقصى للمشاركة والذي هو {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "الاسم",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "لم تقم بتسجيل الدخول",
|
||||
"upload.modal.not-signed-in-description": "لن تتمكن من حذف مشاركتك يدوياً أو عرض عدد الزوار.",
|
||||
"upload.modal.expires.never": "أبدًا",
|
||||
"upload.modal.expires.never-long": "لا تنتهي الصلاحية أبداً",
|
||||
"upload.modal.expires.error.too-long": "انتهاء الصلاحية يتجاوز الحد الأقصى لتاريخ انتهاء الصلاحية والذي هو {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "الرابط",
|
||||
"upload.modal.expires.label": "انتهاء الصلاحية",
|
||||
"upload.modal.expires.minute-singular": "دقيقة",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.modal.password.title": "كلمة السر مطلوبة",
|
||||
"share.modal.password.description": "للوصول إلى هذه المشاركة الرجاء إدخال كلمة سر المشاركة.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "كلمة السر",
|
||||
"share.modal.error.invalid-password": "كلمة السر غير صحيحة",
|
||||
"share.button.download-all": "تنزيل الكل",
|
||||
"share.notify.download-all-preparing": "يتم تحضير المشاركة. حاول مرة أخرى في بضع دقائق.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "رابط الملف",
|
||||
"share.table.name": "الاسم",
|
||||
"share.table.size": "الحجم",
|
||||
"share.modal.file-preview.error.not-supported.title": "المعاينة غير مدعومة",
|
||||
"share.modal.file-preview.error.not-supported.description": "معاينة هذا النوع من الملفات غير مدعومة. الرجاء تنزيل الملف لعرضه.",
|
||||
"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": "تحرير {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "اسم التطبيق",
|
||||
"admin.config.general.app-url": "رابط التطبيق",
|
||||
"admin.config.general.app-url.description": "الرابط الذي تكون مشاركة Pingvin صالحة عليه",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "إظهار الصفحة الرئيسية",
|
||||
"admin.config.general.show-home-page.description": "تحديد ما إذا كان سيتم عرض الصفحة الرئيسية",
|
||||
"admin.config.general.session-duration": "مدة الجلسة",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "الشعار",
|
||||
"admin.config.general.logo.description": "يمكنك تغيير شعارك عن طريق تحميل صورة جديدة. يجب أن تكون الصورة PNG ويجب أن يكون تنسيقها 1:1.",
|
||||
"admin.config.general.logo.placeholder": "اختر صورة",
|
||||
"admin.config.email.enable-share-email-recipients": "تفعيل مستلمي البريد الإلكتروني لهذه المشاركة",
|
||||
"admin.config.email.enable-share-email-recipients.description": "السماح لرسائل البريد بأن تُشارك المستلمين. لا تفعّل هذا الخيار ما لم تفعّل SMTP مسبقًا.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "عنوان الرسالة لمستلمي المشاركة",
|
||||
"admin.config.email.share-recipients-subject.description": "عنوان البريد الذي سيُرسَل لمستقبِلي المشاركة.",
|
||||
"admin.config.email.share-recipients-message": "رسالتك لمستقبِلي المشاركة",
|
||||
"admin.config.email.share-recipients-message.description": "الرسالة التي ستُرسل لمستقبِلي المشاركة. يمكنك استخدام هذه المتغيرات:\n{creator} - اسم المستخدم الذي أنشأ المشاركة\n{shareUrl} - رابط المشاركة\n{desc} - وصف المشاركة\n{expires} - تاريخ انتهاء صلاحية المشاركة\nستتم كتابة قيم هذه المتغيرات تلقائيًا.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "عنوان المشاركة العكسية",
|
||||
"admin.config.email.reverse-share-subject.description": "عنوان البريد الذي سيُرسل عندما يُنشئ شخص ما مشاركةً باستخدام رابط المشاركة العكسية الخاص بك.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "رسالة المشاركة العكسية",
|
||||
"admin.config.email.reverse-share-message.description": "الرسالة التي ستُرسل عندما يُنشئ شخص ما مشاركة باستخدام رابط المشاركة الخاص بك. سيُوضع اسم المُنشِئ ورابط المشاركة مكان {shareUrl}.",
|
||||
"admin.config.email.reset-password-subject": "رسالة إعادة تعيين كلمة السر",
|
||||
"admin.config.email.reset-password-subject.description": "عنوان البريد الذي سيُرسل حين يطلب مستخدم ما إعادة تعيين كلمة سرّه.",
|
||||
"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": "رسالة إعادة تعيين كلمة السر",
|
||||
"admin.config.email.reset-password-message.description": "الرسالة التي ستُرسل عندما يطلب المستخدم إعادة تعيين كلمة سرّه. سيُوضع رابط إعادة تعيين كلمة السر مكان {url}.",
|
||||
"admin.config.email.invite-subject": "عنوان الدعوة",
|
||||
"admin.config.email.invite-subject.description": "عنوان البريد الذي سيُرسل عندما يقوم المشرف بدعوة مستخدم ما.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "رسالة الدعوة",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "السماح بالتسجيل",
|
||||
"admin.config.share.allow-registration.description": "إتاحة تسجيل حساب جديد",
|
||||
"admin.config.share.allow-unauthenticated-shares": "السماح بالمشاركات غير المصادق عليها",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "مستوى ضغط الZip",
|
||||
"admin.config.share.zip-compression-level.description": "ضبط الميزان بين حجم الملف وسرعة الضغط. يمكنك إدخال قيم بين 0 إلى 9، حيث 0 تعني بدون ضغط و9 تعني أقصى ضغط. ",
|
||||
"admin.config.share.chunk-size": "حجم القطعة",
|
||||
"admin.config.share.chunk-size.description": "ضبط حجم القطعة (بالبايت) لملفاتك المرفوعة للموازنة بين الكفاءة والفعالية حسب قوة اتصالك بالإنترنت. القطع الأصغر يمكن أن ترفع معدل النجاح في حال كان اتصالك بالإنترنت غير مستقر، بينما القطع الأكبر يمكنها أن تُسرّع رفع الملفات في حال كان الاتصال بالإنترنت مستقرًا.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"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": "مفعل",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "تفعيل الـSMTP. لا تفعّله إلا إذا قمت بإدخال المضيف، والمنفذ، والبريد الإلكتروني، واسم المستخدم، وكلمة السر لخادم الـSMTP.",
|
||||
"admin.config.smtp.host": "المُضيف",
|
||||
"admin.config.smtp.host.description": "مضيف خادم الـSMTP",
|
||||
"admin.config.smtp.port": "المنفذ",
|
||||
"admin.config.smtp.port.description": "منفذ خادم الـSMTP",
|
||||
"admin.config.smtp.email": "البريد الإلكتروني",
|
||||
"admin.config.smtp.email.description": "عنوان البريد الذي ستُرسَل الرسائل منه",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "اسم المستخدم",
|
||||
"admin.config.smtp.username.description": "اسم المستخدم لخادم الـSMTP",
|
||||
"admin.config.smtp.password": "كلمة السر",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "الرّمز السرّي للعميل لتطبيق Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "تفعيل خيار الدخول بحساب Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "مُعرِّف خادم Discord المحدود",
|
||||
"admin.config.oauth.discord-limited-guild.description": "حصر تسجيل الدخول على المستخدمين الموجودين في خادم محدّد. اترك هذا الخيار فارغًا لتعطيله.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "تفعيل الدخول باستخدام OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "رابط الاستكشاف لتطبيق OpenID Connect OAuth",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "طلب اسم المستخدم في رمز معرف OpenID Connect. إذا كنت لا تعرف معنى هذا الإعداد، اتركه فارغًا.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "الرّمز السرّي للعميل لتطبيق OpenID Connect OAuth",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "المستخدم المرتبط بهذا الحساب {0} غير موجود.",
|
||||
"error.msg.no_email": "لا يمكن الحصول على عنوان البريد الإلكتروني من هذا الحساب {0}.",
|
||||
"error.msg.already_linked": "حساب {0} هذا مرتبط بالفعل بحساب آخر.",
|
||||
"error.msg.not_linked": "لم يتم ربط حساب {0} هذا بأي حساب حتى الآن.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "لم يتم التحقق من حساب {0} هذا، يرجى المحاولة مرة أخرى بعد التحقق.",
|
||||
"error.msg.user_not_allowed": "غير مسموح لك بتسجيل الدخول.",
|
||||
"error.msg.cannot_get_user_info": "فشلت عملية جلب معلومات المستخدم الخاصة بك من حساب {0} هذا.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "توليد",
|
||||
"common.button.done": "تم",
|
||||
"common.text.link": "الرابط",
|
||||
"common.text.navigate-to-link": "الذهاب إلى الرابط",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "أو",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "العودة",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "عنوان البريد غير صحيح",
|
||||
"common.error.too-short": "يجب أن يكون على الأقل {length} حرفًا",
|
||||
"common.error.too-long": "يجب أن يكون على الأكثر {length} حرفًا",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "يجب أن يكون بالضبط {length} حرفًا",
|
||||
"common.error.invalid-number": "يجب أن يكون رقماً",
|
||||
"common.error.field-required": "هذا الحقل مطلوب"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Upload",
|
||||
"navbar.signin": "Sign in",
|
||||
"navbar.home": "Home",
|
||||
"navbar.signup": "Sign Up",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "My shares",
|
||||
"navbar.links.reverse": "Обратни споделяния",
|
||||
"navbar.avatar.account": "My account",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"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 your files and should never get into the hands of third parties.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "No annoying file size limit",
|
||||
"home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Get started",
|
||||
"home.button.source": "Source code",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Forgot your password?",
|
||||
"resetPassword.description": "Enter your email to reset your password.",
|
||||
"resetPassword.notify.success": "В случай, че имейлът съществува ще бъде изпратено съобщение с връзка за възстановяване на паролата.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Back to sign in page",
|
||||
"resetPassword.text.resetPassword": "Reset password",
|
||||
"resetPassword.text.enterNewPassword": "Въведете нова парола",
|
||||
"resetPassword.input.password": "Нова парола",
|
||||
"resetPassword.notify.passwordReset": "Your password has been reset successfully.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "My account",
|
||||
"account.card.info.title": "Account info",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Password",
|
||||
"account.card.password.old": "Old password",
|
||||
"account.card.password.new": "New password",
|
||||
"account.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Password changed successfully",
|
||||
"account.card.oauth.title": "Social login",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Unlink",
|
||||
"account.card.oauth.unlinked": "Unlinked",
|
||||
"account.modal.unlink.title": "Unlink account",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.",
|
||||
"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",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Име",
|
||||
"account.shares.table.description": "Description",
|
||||
"account.shares.table.visitors": "Посетители",
|
||||
"account.shares.table.expiresAt": "Expires at",
|
||||
"account.shares.table.createdAt": "Created at",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Size",
|
||||
"account.shares.modal.share-informations": "Share informations",
|
||||
"account.shares.modal.share-link": "Share link",
|
||||
"account.shares.modal.delete.title": "Delete share {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Do you really want to delete this share?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"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 notification",
|
||||
"account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Max uses",
|
||||
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
|
||||
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Username",
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Update user {username}",
|
||||
"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 his shares?",
|
||||
"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",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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 can accept only files that are less than {maxSize} in total.",
|
||||
"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",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"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": "Never Expires",
|
||||
"upload.modal.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.",
|
||||
"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",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "To access this share please enter the password for the share.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Password",
|
||||
"share.modal.error.invalid-password": "Invalid password",
|
||||
"share.button.download-all": "Download all",
|
||||
"share.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "File link",
|
||||
"share.table.name": "Name",
|
||||
"share.table.size": "Size",
|
||||
"share.modal.file-preview.error.not-supported.title": "Preview not supported",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Edit {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Name of the application",
|
||||
"admin.config.general.app-url": "App URL",
|
||||
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Show home page",
|
||||
"admin.config.general.show-home-page.description": "Whether to show the home page",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"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 share email recipients",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||
"admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
|
||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Reverse share subject",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Reverse share message",
|
||||
"admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
|
||||
"admin.config.email.reset-password-subject": "Reset password subject",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Reset password message",
|
||||
"admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
|
||||
"admin.config.email.invite-subject": "Invite subject",
|
||||
"admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Invite message",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
||||
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Enabled",
|
||||
"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 which the emails get sent from",
|
||||
"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",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"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 haven't linked to any account yet.",
|
||||
"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": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Generate",
|
||||
"common.button.done": "Done",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "or",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Go back",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"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"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Nahrát",
|
||||
"navbar.signin": "Přihlásit se",
|
||||
"navbar.home": "Domů",
|
||||
"navbar.signup": "Zaregistrovat se",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Má sdílení",
|
||||
"navbar.links.reverse": "Zpětná sdílení",
|
||||
"navbar.avatar.account": "Můj účet",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Self-Hosted",
|
||||
"home.bullet.a.description": "Hostujte Pingvin Share na svém vlastním počítači.",
|
||||
"home.bullet.b.name": "Soukromí",
|
||||
"home.bullet.b.description": "Vaše soubory jsou vaše soubory a nikdy by se neměly dostat do rukou třetích stran.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Žádný otravný limit pro velikost souborů",
|
||||
"home.bullet.c.description": "Nahrajte tak velké soubory, jak chcete. Limitem je pouze váš pevný disk.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Začít",
|
||||
"home.button.source": "Zdrojový kód",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Zapomněli jste heslo?",
|
||||
"resetPassword.description": "Zadejte svůj e-mail pro obnovení hesla.",
|
||||
"resetPassword.notify.success": "Pokud e-mail existuje, byla na něj odeslána zpráva s odkazem k obnovení hesla.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Zpět na přihlašovací stránku",
|
||||
"resetPassword.text.resetPassword": "Obnovit heslo",
|
||||
"resetPassword.text.enterNewPassword": "Zadejte své nové heslo",
|
||||
"resetPassword.input.password": "Nové heslo",
|
||||
"resetPassword.notify.passwordReset": "Vaše heslo bylo úspěšně obnoveno.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Můj účet",
|
||||
"account.card.info.title": "Informace o účtu",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Heslo",
|
||||
"account.card.password.old": "Staré heslo",
|
||||
"account.card.password.new": "Nové heslo",
|
||||
"account.card.password.noPasswordSet": "Nemáte nastaveno heslo. Pokud se chcete přihlásit pomocí e-mailu a hesla, musíte si nastavit heslo.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Heslo bylo úspěšně změněno",
|
||||
"account.card.oauth.title": "Přihlášení přes sociální sítě",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Odpojit",
|
||||
"account.card.oauth.unlinked": "Odpojeno",
|
||||
"account.modal.unlink.title": "Odpojit účet",
|
||||
"account.modal.unlink.description": "Odpojení vašich sociálních účtů může způsobit ztrátu účtu, pokud si nepamatujete své uživatelské jméno a heslo.",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
||||
"account.notify.oauth.unlinked.success": "Úspěšně odpojeno",
|
||||
"account.card.security.title": "Zabezpečení",
|
||||
"account.card.security.totp.enable.description": "Zadejte své současné heslo, abyste mohli povolit TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Název",
|
||||
"account.shares.table.description": "Popis",
|
||||
"account.shares.table.visitors": "Návštěvníci",
|
||||
"account.shares.table.expiresAt": "Vyprší",
|
||||
"account.shares.table.createdAt": "Vytvořeno",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Velikost",
|
||||
"account.shares.modal.share-informations": "Share informations",
|
||||
"account.shares.modal.share-link": "Odkaz na sdílení",
|
||||
"account.shares.modal.delete.title": "Odstranit sdílení {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Opravdu chcete odstranit toto sdílení?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Rok",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Let",
|
||||
"account.reverseShares.modal.max-size.label": "Max. velikost sdílení",
|
||||
"account.reverseShares.modal.send-email": "Odeslat oznámení e-mailem",
|
||||
"account.reverseShares.modal.send-email.description": "Odeslat e-mailové upozornění, pokud je s tímto odkazem pro zpětné sdílení vytvořeno sdílení.",
|
||||
"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": "Zjednodušený režim",
|
||||
"account.reverseShares.modal.simplified.description": "Usnadněte osobě, která nahrála soubor, sdílet jej s vámi. Budou moci upravit pouze název a popis sdílení.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Veřejný přístup",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Max. použití",
|
||||
"account.reverseShares.modal.max-use.description": "Maximální počet sdílení, která mohou být vytvořena za pomoci tohoto URL.",
|
||||
"account.reverseShare.never-expires": "Toto zpětné sdílení nikdy nevyprší.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Uživatelské jméno",
|
||||
"admin.users.table.email": "E-mail",
|
||||
"admin.users.table.admin": "Administrátor",
|
||||
"admin.users.edit.update.title": "Aktualizovat uživatele {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Administrátorská práva",
|
||||
"admin.users.edit.update.change-password.title": "Změnit heslo",
|
||||
"admin.users.edit.update.change-password.field": "Nové heslo",
|
||||
"admin.users.edit.update.change-password.button": "Uložit nové heslo",
|
||||
"admin.users.edit.update.notify.password.success": "Heslo bylo úspěšně změněno",
|
||||
"admin.users.edit.delete.title": "Odstranit uživatele {username}",
|
||||
"admin.users.edit.delete.description": "Opravdu chcete smazat tohoto uživatele a všechny jeho sdílení?",
|
||||
"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": "Vytvořit uživatele",
|
||||
"admin.users.modal.create.username": "Uživatelské jméno",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "ID sdílení",
|
||||
"admin.shares.table.username": "Autor",
|
||||
"admin.shares.table.visitors": "Návštěvníci",
|
||||
"admin.shares.table.expires": "Vyprší",
|
||||
"admin.shares.edit.delete.title": "Odstranit sdílení {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "Opravdu chcete smazat toto sdílení?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Nahrát",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Při dokončování vašeho sdílení došlo k chybě.",
|
||||
"upload.notify.count-failed": "{count} souborů se nepodařilo nahrát. Zkouším to znovu.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Nahrát soubory",
|
||||
"upload.dropzone.description": "Pro zahájení sdílení přetáhněte soubory sem. Můžeme přijmout pouze soubory, které jsou menší než {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Vaše soubory přesahují maximální velikost {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Název",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Nejste přihlášeni",
|
||||
"upload.modal.not-signed-in-description": "Nebudete moci ručně odstranit své sdílení a zobrazit počet návštěvníků.",
|
||||
"upload.modal.expires.never": "nikdy",
|
||||
"upload.modal.expires.never-long": "Nikdy nevyprší",
|
||||
"upload.modal.expires.error.too-long": "Platnosti přesahuje maximální datum vypršení platnosti {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Odkaz",
|
||||
"upload.modal.expires.label": "Expirace",
|
||||
"upload.modal.expires.minute-singular": "Minuta",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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.modal.password.title": "Heslo vyžadováno",
|
||||
"share.modal.password.description": "Pro přístup k tomuto sdílení zadejte prosím heslo pro toto sdílení.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Heslo",
|
||||
"share.modal.error.invalid-password": "Neplatné heslo",
|
||||
"share.button.download-all": "Stáhnout vše",
|
||||
"share.notify.download-all-preparing": "Sdílení se připravuje. Zkuste to znovu za pár minut.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Odkaz na soubor",
|
||||
"share.table.name": "Název",
|
||||
"share.table.size": "Velikost",
|
||||
"share.modal.file-preview.error.not-supported.title": "Náhled není podporován",
|
||||
"share.modal.file-preview.error.not-supported.description": "Náhled pro tento typ souboru není podporován. Stáhněte si soubor pro jeho zobrazení.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Upravit {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Název aplikace",
|
||||
"admin.config.general.app-url": "URL aplikace",
|
||||
"admin.config.general.app-url.description": "Na kterém URL je Pingvin Share k dispozici",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Zobrazit domovskou stránku",
|
||||
"admin.config.general.show-home-page.description": "Zda zobrazovat domovskou stránku",
|
||||
"admin.config.general.session-duration": "Délka trvání relace",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Změňte své logo nahráním nového obrázku. Obrázek musí být PNG a měl by mít formát 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Vybrat obrázek",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable share email recipients",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
|
||||
"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": "Zpráva, která bude odeslána příjemcům sdílení. Dostupné proměnné:\n {creator} - Uživatelské jméno tvůrce sdílení\n {shareUrl} - URL sdílení\n {desc} - Popis sdílení\n {expires} - Datum vypršení platností sdílení\n Proměnné budou nahrazeny skutečnou hodnotou.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Předmět e-mailu o zpětném sdílení",
|
||||
"admin.config.email.reverse-share-subject.description": "Předmět e-mailu, který bude odeslán, když někdo vytvoří sdílení s vaším odkazem na zpětné sdílení.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Zpráva o zpětném sdílení",
|
||||
"admin.config.email.reverse-share-message.description": "Zpráva, která bude odeslána, když někdo vytvoří sdílení s vaším odkazem na zpětné sdílení. {shareUrl} bude nahrazeno jménem tvůrce a URL pro sdílení.",
|
||||
"admin.config.email.reset-password-subject": "Předmět e-mailu pro obnovení hesla",
|
||||
"admin.config.email.reset-password-subject.description": "Předmět e-mailu, který bude odeslán, když uživatel požádá o obnovení hesla.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Zpráva o obnovení hesla",
|
||||
"admin.config.email.reset-password-message.description": "Zpráva, která bude odeslána, když uživatel požádá o obnovení hesla. {url} bude nahrazeno URL pro obnovení hesla.",
|
||||
"admin.config.email.invite-subject": "Předmět pozvánky",
|
||||
"admin.config.email.invite-subject.description": "Předmět e-mailu, který bude odeslán, když administrátor pozve uživatele.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Zpráva pozvánky",
|
||||
"admin.config.email.invite-message.description": "Zpráva, která bude odeslána, když administrátor pozve uživatele. {url} bude nahrazeno URL pozvánky, {email} e-mailem a {password} heslem uživatele.",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||
"admin.config.share.allow-registration": "Povolit registraci",
|
||||
"admin.config.share.allow-registration.description": "Zda je registrace povolena",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Povolit sdílení neověřeným uživatelům",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Úroveň Zip komprese",
|
||||
"admin.config.share.zip-compression-level.description": "Upravte úroveň pro rovnováhu mezi velikostí souboru a rychlostí komprese. Platné hodnoty se pohybují od 0 do 9, přičemž 0 znamená bez komprese a 9 je maximální komprese. ",
|
||||
"admin.config.share.chunk-size": "Velikost bloku",
|
||||
"admin.config.share.chunk-size.description": "Upravte velikost bloku (v bajtech) pro vaše nahrávání tak, aby byla vyvážena efektivita a spolehlivost podle vašeho internetového připojení. Menší bloky mohou zvýšit spolehlivost nestabilních spojení, zatímco větší bloky urychlují nahrávání při stabilním spojení.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Automaticky otevřít menu vytvoření sdílení",
|
||||
"admin.config.share.auto-open-share-modal.description": "Menu vytvoření sdílení se automaticky zobrazí, když uživatel vybere soubory, čímž se eliminuje potřeba ručně kliknout na tlačítko.",
|
||||
"admin.config.smtp.enabled": "Povoleno",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Zda je SMTP povoleno. Povolte pouze pokud jste zadali hostitele, port, e-mail, uživatele a heslo vašeho SMTP serveru.",
|
||||
"admin.config.smtp.host": "Hostitel",
|
||||
"admin.config.smtp.host.description": "Hostitel SMTP serveru",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "Port SMTP serveru",
|
||||
"admin.config.smtp.email": "E-mail",
|
||||
"admin.config.smtp.email.description": "E-mailová adresa, ze které budou e-maily odesílány",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Uživatelské jméno",
|
||||
"admin.config.smtp.username.description": "Uživatelské jméno SMTP serveru",
|
||||
"admin.config.smtp.password": "Heslo",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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": "Zda je povoleno přihlášení přes Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Omezit přihlášení na uživatele na konkrétním serveru. Ponechte prázdné pro vypnutí.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Zda je povoleno přihlášení přes OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Povolit LDAP",
|
||||
"admin.config.ldap.enabled": "Enable LDAP",
|
||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
||||
"admin.config.ldap.url": "URL serveru",
|
||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "Výchozí uživatel, který bude použit pro vyhledávání uživatelů",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Heslo pro uživatele pro vyhledávání",
|
||||
"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": "Základní umístění, kde budou prováděna hledání uživatelů",
|
||||
"admin.config.ldap.search-query": "User query",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Uživatel propojený s tímto účtem {0} neexistuje.",
|
||||
"error.msg.no_email": "Z tohoto účtu {0} nelze získat e-mailovou adresu.",
|
||||
"error.msg.already_linked": "Tento účet {0} je již propojen s jiným účtem.",
|
||||
"error.msg.not_linked": "Tento účet {0} ještě nebyl propojen s žádným účtem.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Tento účet {0} není ověřen, zkuste to prosím znovu po ověření.",
|
||||
"error.msg.user_not_allowed": "Nemáte oprávnění k přihlášení.",
|
||||
"error.msg.cannot_get_user_info": "Nelze získat informace o vašem uživateli z tohoto účtu {0}.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Generovat",
|
||||
"common.button.done": "Hotovo",
|
||||
"common.text.link": "Odkaz",
|
||||
"common.text.navigate-to-link": "Přejít na odkaz",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "nebo",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Vrátit se zpět",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Invalid email address",
|
||||
"common.error.too-short": "Musí mít alespoň {length} znaků",
|
||||
"common.error.too-long": "Musí mít maximálně {length} znaků",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Musí mít přesně {length} znaků",
|
||||
"common.error.invalid-number": "Musí být číslo",
|
||||
"common.error.field-required": "Toto pole je povinné"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Upload",
|
||||
"navbar.signin": "Log ind",
|
||||
"navbar.home": "Hjem",
|
||||
"navbar.signup": "Opret bruger",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Mine delte filer",
|
||||
"navbar.links.reverse": "Omvendt deling",
|
||||
"navbar.avatar.account": "Min bruger",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Self-Hosted",
|
||||
"home.bullet.a.description": "Host Pingvin Share på din egen maskine.",
|
||||
"home.bullet.b.name": "Privatliv",
|
||||
"home.bullet.b.description": "Dine filer er dine filer og bør ikke komme i hænderne på tredjeparter.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Ingen irriterende grænse for filstørrelse",
|
||||
"home.bullet.c.description": "Upload så store filer, som du vil. Kun din harddisk sætter grænsen.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Kom i gang",
|
||||
"home.button.source": "Source code",
|
||||
// END /
|
||||
@@ -34,7 +34,7 @@ export default {
|
||||
"signIn.notify.totp-required.title": "2-faktor login påkrævet",
|
||||
"signIn.notify.totp-required.description": "Indtast den aktuelle engangskode fra din 2-faktor Authenticator",
|
||||
"signIn.oauth.or": "OR",
|
||||
"signIn.oauth.signInWith": "Sign in with",
|
||||
"signIn.oauth.signInWith": "Log ind med",
|
||||
"signIn.oauth.github": "GitHub",
|
||||
"signIn.oauth.google": "Google",
|
||||
"signIn.oauth.microsoft": "Microsoft",
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Glemt din adgangskode?",
|
||||
"resetPassword.description": "Indtast din e-mail for at nulstille din adgangskode.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Tilbage til login",
|
||||
"resetPassword.text.resetPassword": "Nulstil adgangskode",
|
||||
"resetPassword.text.enterNewPassword": "Indtast din nye adgangskode",
|
||||
"resetPassword.input.password": "Ny adgangskode",
|
||||
"resetPassword.notify.passwordReset": "Adgangskoden er blevet nulstillet.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Min bruger",
|
||||
"account.card.info.title": "Brugerinfo",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Adgangskode",
|
||||
"account.card.password.old": "Gammel adgangskode",
|
||||
"account.card.password.new": "Ny adgangskode",
|
||||
"account.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Adgangskoden er ændret",
|
||||
"account.card.oauth.title": "Social login",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Unlink",
|
||||
"account.card.oauth.unlinked": "Unlinked",
|
||||
"account.modal.unlink.title": "Unlink account",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.",
|
||||
"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": "Sikkerhed",
|
||||
"account.card.security.totp.enable.description": "Indtast din nuværende adgangskode for at begynde opsætningen af 2-faktor login",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Navn",
|
||||
"account.shares.table.description": "Beskrivelse",
|
||||
"account.shares.table.visitors": "Besøgende",
|
||||
"account.shares.table.expiresAt": "Udløber d",
|
||||
"account.shares.table.createdAt": "Oprettet d.",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Størrelse",
|
||||
"account.shares.modal.share-informations": "Share informations",
|
||||
"account.shares.modal.share-link": "Del link",
|
||||
"account.shares.modal.delete.title": "Slet share {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Ønsker du virkelig at slette denne deling?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -135,7 +135,7 @@ export default {
|
||||
"account.reverseShares.title.empty": "Der er tomt her 👀",
|
||||
"account.reverseShares.description.empty": "You don't have any reverse shares.",
|
||||
// showCreateReverseShareModal.tsx
|
||||
"account.reverseShares.modal.title": "Create reverse share",
|
||||
"account.reverseShares.modal.title": "Opret omvendt deling",
|
||||
"account.reverseShares.modal.expiration.label": "Udløb",
|
||||
"account.reverseShares.modal.expiration.minute-singular": "Minut",
|
||||
"account.reverseShares.modal.expiration.minute-plural": "Minutter",
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "År",
|
||||
"account.reverseShares.modal.expiration.year-plural": "År",
|
||||
"account.reverseShares.modal.max-size.label": "Maksimal størrelse for deling",
|
||||
"account.reverseShares.modal.send-email": "Send e-mail notifikation",
|
||||
"account.reverseShares.modal.send-email.description": "Send en e-mail notifikation, når der oprettes en deling med dette omvendte delingslink.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"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": "Offentlig adgang",
|
||||
"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": "Maksimal anvendelser",
|
||||
"account.reverseShares.modal.max-use.description": "Det maksimale antal gange, denne URL kan bruges til at oprette en deling.",
|
||||
"account.reverseShare.never-expires": "Denne omvendte deling udløber aldrig.",
|
||||
@@ -168,7 +168,7 @@ export default {
|
||||
"account.reverseShares.table.max-size": "Maksimal størrelse for deling",
|
||||
"account.reverseShares.table.expires": "Udløber d",
|
||||
"account.reverseShares.modal.reverse-share-link": "Reverse share link",
|
||||
"account.reverseShares.modal.delete.title": "Delete reverse share",
|
||||
"account.reverseShares.modal.delete.title": "Slet omvendt deling",
|
||||
"account.reverseShares.modal.delete.description": "Ønsker du virkelig at slette denne omvendte deling? Hvis du gør det, vil de tilknyttede delinger også blive slettet.",
|
||||
// END /account/reverseShares
|
||||
// /admin
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Brugernavn",
|
||||
"admin.users.table.email": "E-mail",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Opdater bruger {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Admin rettigheder",
|
||||
"admin.users.edit.update.change-password.title": "Skift adgangskode",
|
||||
"admin.users.edit.update.change-password.field": "Ny adgangskode",
|
||||
"admin.users.edit.update.change-password.button": "Gem ny adgangskode",
|
||||
"admin.users.edit.update.notify.password.success": "Adgangskoden er ændret",
|
||||
"admin.users.edit.delete.title": "Slet bruger {username}",
|
||||
"admin.users.edit.delete.description": "Er du sikker på du vil slette denne bruger og tilhørende delinger?",
|
||||
"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": "Opret bruger",
|
||||
"admin.users.modal.create.username": "Brugernavn",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Besøgende",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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": "Der opstod en fejl under afslutningen af din deling.",
|
||||
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Upload filer",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
|
||||
"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": "Navn",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Du er ikke logget ind",
|
||||
"upload.modal.not-signed-in-description": "Du vil ikke være i stand til at slette din deling manuelt og se antallet af besøgende.",
|
||||
"upload.modal.expires.never": "aldrig",
|
||||
"upload.modal.expires.never-long": "Udløber aldrig",
|
||||
"upload.modal.expires.error.too-long": "Udløbsdatoen overskrider den maksimalt tilladte udløbsdato på {max}.",
|
||||
"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": "Udløb",
|
||||
"upload.modal.expires.minute-singular": "Minut",
|
||||
@@ -244,7 +247,7 @@ export default {
|
||||
"upload.modal.expires.month-plural": "Måneder",
|
||||
"upload.modal.expires.year-singular": "År",
|
||||
"upload.modal.expires.year-plural": "År",
|
||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
||||
"upload.modal.accordion.name-and-description.title": "Navn og beskrivelse",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Navn",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
||||
"upload.modal.accordion.email.title": "E-mail modtagere",
|
||||
@@ -269,25 +272,25 @@ export default {
|
||||
"share.error.removed.title": "Deling fjernet",
|
||||
"share.error.not-found.title": "Delingen blev ikke fundet",
|
||||
"share.error.not-found.description": "Den deling, du leder efter, eksisterer ikke.",
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.title": "Privat deling",
|
||||
"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.description": "For at få adgang til denne deling, indtast venligst adgangskoden til delingen.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Adgangskode",
|
||||
"share.modal.error.invalid-password": "Ugyldig adgangskode",
|
||||
"share.button.download-all": "Download alle",
|
||||
"share.notify.download-all-preparing": "Delingen forberedes. Prøv igen om et par minutter.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Fil link",
|
||||
"share.table.name": "Navn",
|
||||
"share.table.size": "Størrelse",
|
||||
"share.modal.file-preview.error.not-supported.title": "Forhåndsvisning ikke understøttet",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Rediger {shareId}",
|
||||
"share.edit.append-upload": "Append file",
|
||||
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
|
||||
"share.edit.notify.save-success": "Share updated successfully",
|
||||
"share.edit.notify.save-success": "Deling opdateret",
|
||||
// END /share/[id]/edit
|
||||
// /admin/config
|
||||
"admin.config.title": "Konfiguration",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Navnet på applikationen",
|
||||
"admin.config.general.app-url": "App URL",
|
||||
"admin.config.general.app-url.description": "På hvilken URL Pingvin Share er tilgængelig",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Vis forside",
|
||||
"admin.config.general.show-home-page.description": "Om forsiden skal vises",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Skift dit logo ved at uploade et nyt billede. Billedet skal være PNG og skal have formatet 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Vælg billede",
|
||||
"admin.config.email.enable-share-email-recipients": "Aktiver deling til e-mail modtagere",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||
"admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
|
||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Reverse share subject",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Reverse share message",
|
||||
"admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
|
||||
"admin.config.email.reset-password-subject": "Reset password subject",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Nulstil adgangskode besked",
|
||||
"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": "Invitations emne",
|
||||
"admin.config.email.invite-subject.description": "Emne for den e-mail, der sendes, når en administrator inviterer en ny bruger.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Invitations besked",
|
||||
"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 password of the user.",
|
||||
"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": "Tillad oprettelser",
|
||||
"admin.config.share.allow-registration.description": "Om alle skal kunne oprette en bruger",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Tillad uautoriserede delinger",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
||||
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Aktiveret",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Om SMTP er aktiveret. Aktiver kun SMTP, hvis du har indtastet SMTP-server vært, port, e-mail, bruger og adgangskode.",
|
||||
"admin.config.smtp.host": "Vært",
|
||||
"admin.config.smtp.host.description": "Vært for SMTP serveren",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "Porten til SMTP serveren",
|
||||
"admin.config.smtp.email": "E-mail",
|
||||
"admin.config.smtp.email.description": "E-mail adressen som der skal afsendes fra",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Brugernavn",
|
||||
"admin.config.smtp.username.description": "Brugernavnet til SMTP serveren",
|
||||
"admin.config.smtp.password": "Adgangskode",
|
||||
@@ -355,13 +360,13 @@ export default {
|
||||
"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": "Tillad registrering",
|
||||
"admin.config.oauth.allow-registration.description": "Allow users to register via social login",
|
||||
"admin.config.oauth.allow-registration.description": "Tillad brugere at registrere sig via socialt 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": "Deaktiver login med password",
|
||||
"admin.config.oauth.disable-password.description": "Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
|
||||
"admin.config.oauth.github-enabled": "GitHub",
|
||||
"admin.config.oauth.github-enabled.description": "Whether GitHub login is enabled",
|
||||
"admin.config.oauth.github-enabled.description": "Om GitHub login er aktiveret",
|
||||
"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",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,20 +414,20 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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.admin-groups": "Admin gruppe",
|
||||
"admin.config.ldap.admin-groups.description": "Gruppe påkrævet for administrativ adgang.",
|
||||
"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",
|
||||
@@ -430,17 +439,17 @@ export default {
|
||||
"error.title": "Fejl",
|
||||
"error.description": "Hovsa!",
|
||||
"error.button.back": "Gå tilbage",
|
||||
"error.msg.default": "Something went wrong.",
|
||||
"error.msg.default": "Noget gik galt.",
|
||||
"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": "Intern Fejl",
|
||||
"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 haven't linked to any account yet.",
|
||||
"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": "Du har ikke tilladelse til at logge ind.",
|
||||
"error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,9 +467,9 @@ export default {
|
||||
"common.button.generate": "Generer",
|
||||
"common.button.done": "Færdig",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "eller",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.text.redirecting": "Omdirigerer...",
|
||||
"common.button.go-back": "Gå tilbage",
|
||||
"common.button.go-home": "Go home",
|
||||
"common.notify.copied": "Linket blev kopieret til udklipsholderen",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Ugyldig e-mail",
|
||||
"common.error.too-short": "Skal være på mindst {length} tegn",
|
||||
"common.error.too-long": "Må højst være {length} tegn",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Skal være præcis {length} tegn",
|
||||
"common.error.invalid-number": "Skal være et tal",
|
||||
"common.error.field-required": "Dette felt er påkrævet"
|
||||
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Selbst gehostet",
|
||||
"home.bullet.a.description": "Betreibe Pingvin Share auf deinem eigenen Server.",
|
||||
"home.bullet.b.name": "Privatsphäre",
|
||||
"home.bullet.b.description": "Deine Dateien gehören dir und sollten niemals in die Hände Dritter gelangen.",
|
||||
"home.bullet.b.description": "Deine Dateien gehören dir und sind niemals durch Dritte zugänglich.",
|
||||
"home.bullet.c.name": "Keine lästige Dateigrößenbegrenzung",
|
||||
"home.bullet.c.description": "Lade Dateien beliebiger Größe hoch. Nur dein Festplattenspeicher stellt die Grenze dar.",
|
||||
"home.bullet.c.description": "Lade so große Dateien hoch, wie du willst. Nur deine Festplatte ist dein Limit.",
|
||||
"home.button.start": "Lege los",
|
||||
"home.button.source": "Quellcode",
|
||||
// END /
|
||||
@@ -26,13 +26,13 @@ export default {
|
||||
"signin.title": "Willkommen zurück",
|
||||
"signin.description": "Du hast noch kein Konto?",
|
||||
"signin.button.signup": "Registrieren",
|
||||
"signin.input.email-or-username": "Email oder Benutzername",
|
||||
"signin.input.email-or-username.placeholder": "Deine Email Adresse oder Benutzername",
|
||||
"signin.input.email-or-username": "E-Mail oder Benutzername",
|
||||
"signin.input.email-or-username.placeholder": "Deine E-Mail-Adresse oder Benutzername",
|
||||
"signin.input.password": "Passwort",
|
||||
"signin.input.password.placeholder": "Dein Passwort",
|
||||
"signin.button.submit": "Anmelden",
|
||||
"signIn.notify.totp-required.title": "Zwei-Faktor-Authentifizierung benötigt",
|
||||
"signIn.notify.totp-required.description": "Bitte füge deinen Zwei-Faktor-Authentifizierungscode ein",
|
||||
"signIn.notify.totp-required.description": "Bitte gib deinen Zwei-Faktor-Authentifizierungscode ein",
|
||||
"signIn.oauth.or": "ODER",
|
||||
"signIn.oauth.signInWith": "Anmelden mit",
|
||||
"signIn.oauth.github": "GitHub",
|
||||
@@ -47,8 +47,8 @@ export default {
|
||||
"signup.button.signin": "Anmelden",
|
||||
"signup.input.username": "Benutzername",
|
||||
"signup.input.username.placeholder": "Dein Benutzername",
|
||||
"signup.input.email": "Email",
|
||||
"signup.input.email.placeholder": "Deine Emailadresse",
|
||||
"signup.input.email": "E-Mail",
|
||||
"signup.input.email.placeholder": "Deine E-Mail-Adresse",
|
||||
"signup.button.submit": "Lass uns loslegen",
|
||||
// END /auth/signup
|
||||
// /auth/totp
|
||||
@@ -57,7 +57,7 @@ export default {
|
||||
// END /auth/totp
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Passwort vergessen?",
|
||||
"resetPassword.description": "Gib deine Email Adresse ein, um dein Passwort zurückzusetzen.",
|
||||
"resetPassword.description": "Gib deine E-Mail-Adresse ein, um dein Passwort zurückzusetzen.",
|
||||
"resetPassword.notify.success": "Wir haben dir einen Link gesendet, unter dem du dein Passwort zurücksetzen kannst.",
|
||||
"resetPassword.button.back": "Zurück zur Anmeldeseite",
|
||||
"resetPassword.text.resetPassword": "Passwort zurücksetzen",
|
||||
@@ -68,7 +68,7 @@ export default {
|
||||
"account.title": "Mein Konto",
|
||||
"account.card.info.title": "Kontoinformationen",
|
||||
"account.card.info.username": "Benutzername",
|
||||
"account.card.info.email": "Email",
|
||||
"account.card.info.email": "E-Mail",
|
||||
"account.notify.info.success": "Konto erfolgreich aktualisiert",
|
||||
"account.card.password.title": "Passwort",
|
||||
"account.card.password.old": "Altes Passwort",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Verknüpfung aufheben",
|
||||
"account.card.oauth.unlinked": "Verknüpfung aufgehoben",
|
||||
"account.modal.unlink.title": "Kontoverknüpfung aufheben",
|
||||
"account.modal.unlink.description": "Das Entfernen der Verknüpfung mit deinem sozialen Konten kann dazu führen, dass du dein Konto verlierst, wenn du dich nicht an deinen Benutzernamen und dein Passwort erinnerst.",
|
||||
"account.modal.unlink.description": "Die Aufhebung der Verknüpfung mit deinen sozialen Konten kann dazu führen, dass du dein Konto verlierst, wenn du dich nicht an deine Anmeldedaten erinnerst",
|
||||
"account.notify.oauth.unlinked.success": "Verknüpfung erfolgreich aufgehoben",
|
||||
"account.card.security.title": "Sicherheit",
|
||||
"account.card.security.totp.enable.description": "Gib dein aktuelles Passwort ein, um TOTP zu aktivieren",
|
||||
@@ -122,18 +122,18 @@ export default {
|
||||
"account.shares.table.description": "Beschreibung",
|
||||
"account.shares.table.visitors": "Besucher",
|
||||
"account.shares.table.expiresAt": "Läuft ab am",
|
||||
"account.shares.table.createdAt": "Erstellt am",
|
||||
"account.shares.table.createdAt": "Angelegt am",
|
||||
"account.shares.table.size": "Größe",
|
||||
"account.shares.modal.share-informations": "Teile deine Information",
|
||||
"account.shares.modal.share-link": "Freigabe teilen",
|
||||
"account.shares.modal.delete.title": "Lösche Freigabe {share}",
|
||||
"account.shares.modal.delete.description": "Möchtest du wirklich diese Freigabe löschen?",
|
||||
"account.shares.modal.delete.title": "Freigabe löschen: {share}",
|
||||
"account.shares.modal.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
"account.reverseShares.title": "Externe Freigaben",
|
||||
"account.reverseShares.description": "Eine externe Freigabe erlaubt dir eine einzigartige URL zu erstellen, die externen Benutzern erlaubt, Dateien hochzuladen.",
|
||||
"account.reverseShares.title.empty": "Es ist leer hier 👀",
|
||||
"account.reverseShares.description.empty": "Du hast keine externen Freigaben erstellt.",
|
||||
"account.reverseShares.description.empty": "Du hast keine externen Freigaben.",
|
||||
// showCreateReverseShareModal.tsx
|
||||
"account.reverseShares.modal.title": "Externe Freigabe erstellen",
|
||||
"account.reverseShares.modal.expiration.label": "Gültig bis",
|
||||
@@ -149,13 +149,13 @@ export default {
|
||||
"account.reverseShares.modal.expiration.month-plural": "Monate",
|
||||
"account.reverseShares.modal.expiration.year-singular": "Jahr",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Jahre",
|
||||
"account.reverseShares.modal.max-size.label": "Max. Freigabengröße",
|
||||
"account.reverseShares.modal.send-email": "Email Benachrichtigung senden",
|
||||
"account.reverseShares.modal.send-email.description": "Sendet eine Email Benachrichtigung, wenn eine Datei auf einer externen Freigabe hochgeladen wurde.",
|
||||
"account.reverseShares.modal.max-size.label": "Maximale Freigabegröße",
|
||||
"account.reverseShares.modal.send-email": "E-Mail Benachrichtigungen senden",
|
||||
"account.reverseShares.modal.send-email.description": "Sendet eine E-Mail Benachrichtigung, wenn eine Datei auf Ihrer externen Freigabe hochgeladen wurde.",
|
||||
"account.reverseShares.modal.simplified": "Einfacher Modus",
|
||||
"account.reverseShares.modal.simplified.description": "Mache es der Person einfach, die die Datei hochlädt, sie mit Dir zu teilen. Sie können nur den Namen und die Beschreibung der Freigabe ändern.",
|
||||
"account.reverseShares.modal.simplified.description": "Mache es der Person, die die Datei hochlädt, einfach, sie mit dir zu teilen. Sie werden nur den Namen und die Beschreibung der Freigabe ändern können.",
|
||||
"account.reverseShares.modal.public-access": "Öffentlicher Zugriff",
|
||||
"account.reverseShares.modal.public-access.description": "Mache die erstellten Freigaben mit dieser Rückfreigabe öffentlich. Wenn deaktiviert, kannst nur du und der Ersteller der Freigaben diese anzeigen.",
|
||||
"account.reverseShares.modal.public-access.description": "Mache die Freigaben die mit dieser externen Freigabe erstellt werden öffentlich. Wenn dies deaktiviert ist, haben nur du und der Ersteller der Freigabe Zugriff darauf.",
|
||||
"account.reverseShares.modal.max-use.label": "Maximale Nutzungen",
|
||||
"account.reverseShares.modal.max-use.description": "Die maximale Anzahl von Verwendungen der URL, um Dateien hochzuladen.",
|
||||
"account.reverseShare.never-expires": "Diese externe Freigabe wird nicht ablaufen.",
|
||||
@@ -168,55 +168,58 @@ export default {
|
||||
"account.reverseShares.table.max-size": "Maximale Freigabegröße",
|
||||
"account.reverseShares.table.expires": "Läuft ab am",
|
||||
"account.reverseShares.modal.reverse-share-link": "Link zu externer Freigabe",
|
||||
"account.reverseShares.modal.delete.title": "Lösche externe Freigabe",
|
||||
"account.reverseShares.modal.delete.description": "Möchtest du wirklich diese externe Freigabe löschen? In diesem Falle werden auch hiermit verbundene Freigaben gelöscht.",
|
||||
"account.reverseShares.modal.delete.title": "Externe Freigabe löschen",
|
||||
"account.reverseShares.modal.delete.description": "Möchtest du diese externe Freigabe wirklich löschen? In diesem Fall werden auch hiermit verbundene Freigaben gelöscht.",
|
||||
// END /account/reverseShares
|
||||
// /admin
|
||||
"admin.title": "Verwaltung",
|
||||
"admin.button.users": "Benutzerverwaltung",
|
||||
"admin.button.shares": "Freigabenverwaltung",
|
||||
"admin.button.shares": "Freigaben Verwaltung",
|
||||
"admin.button.config": "Konfiguration",
|
||||
"admin.version": "Version",
|
||||
// END /admin
|
||||
// /admin/users
|
||||
"admin.users.title": "Benutzerverwaltung",
|
||||
"admin.users.table.username": "Benutzername",
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.email": "E-Mail",
|
||||
"admin.users.table.admin": "Administrator",
|
||||
"admin.users.edit.update.title": "Benutzer {username} aktualisieren",
|
||||
"admin.users.edit.update.title": "Benutzer bearbeiten: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Administratorrechte",
|
||||
"admin.users.edit.update.change-password.title": "Passwort ändern",
|
||||
"admin.users.edit.update.change-password.field": "Neues Passwort",
|
||||
"admin.users.edit.update.change-password.button": "Neues Passwort speichern",
|
||||
"admin.users.edit.update.notify.password.success": "Passwort erfolgreich geändert",
|
||||
"admin.users.edit.delete.title": "Löschen des Nutzers {username}",
|
||||
"admin.users.edit.delete.title": "Benutzer löschen: {username}?",
|
||||
"admin.users.edit.delete.description": "Möchtest du wirklich diesen Benutzer und all seine Freigaben löschen?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Benutzer erstellen",
|
||||
"admin.users.modal.create.username": "Benutzername",
|
||||
"admin.users.modal.create.email": "Email",
|
||||
"admin.users.modal.create.email": "E-Mail",
|
||||
"admin.users.modal.create.password": "Passwort",
|
||||
"admin.users.modal.create.manual-password": "Passwort manuell festlegen",
|
||||
"admin.users.modal.create.manual-password.description": "Wenn nicht aktiviert, erhält der Benutzer eine Email mit einem Link, um sein Passwort festzulegen.",
|
||||
"admin.users.modal.create.manual-password.description": "Wenn nicht aktiviert, erhält der Benutzer eine E-Mail mit einem Link, um sein Passwort festzulegen.",
|
||||
"admin.users.modal.create.admin": "Administratorrechte",
|
||||
"admin.users.modal.create.admin.description": "Wenn aktiviert, kann der Benutzer auf das Administrator-Panel zugreifen.",
|
||||
// END /admin/users
|
||||
// /admin/shares
|
||||
"admin.shares.title": "Freigabenverwaltung",
|
||||
"admin.shares.table.id": "ID teilen",
|
||||
"admin.shares.title": "Freigaben Verwaltung",
|
||||
"admin.shares.table.id": "Freigabe ID",
|
||||
"admin.shares.table.username": "Ersteller",
|
||||
"admin.shares.table.visitors": "Besucher",
|
||||
"admin.shares.table.expires": "Läuft ab am",
|
||||
"admin.shares.edit.delete.title": "Lösche Freigabe {id}",
|
||||
"admin.shares.edit.delete.description": "Möchtest du wirklich diese Freigabe löschen?",
|
||||
"admin.shares.edit.delete.title": "Freigabe löschen: {id}",
|
||||
"admin.shares.edit.delete.description": "Möchtest du diese Freigabe wirklich löschen?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Upload",
|
||||
"upload.notify.confirm-leave": "Bist du sicher, dass du diese Seite verlassen willst? Dein Upload wird abgebrochen.",
|
||||
"upload.notify.generic-error": "Während der Erstellung der Freigabe ist ein Fehler aufgetreten.",
|
||||
"upload.notify.count-failed": "{count} Dateien konnten nicht hochgeladen werden. Wird erneut versucht.",
|
||||
"upload.reverse-share.error.invalid.title": "Ungültiger Link zu externer Freigabe",
|
||||
"upload.reverse-share.error.invalid.description": "Diese externe Freigabe ist abgelaufen oder ungültig.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Dateien hochladen",
|
||||
"upload.dropzone.description": "Ziehe Dateien hierher, um deine Freigabe zu starten. Wir können nur Dateien akzeptieren, die insgesamt weniger als {maxSize} groß sind.",
|
||||
"upload.dropzone.description": "Ziehe Dateien per Drag'n'Drop hierher, um deine Freigabe zu starten. Wir akzeptieren nur Dateien mit einer Gesamtgröße von bis zu {maxSize}.",
|
||||
"upload.dropzone.notify.file-too-big": "Ihre Dateien überschreiten die maximale Freigabegröße von {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Name",
|
||||
@@ -227,9 +230,9 @@ export default {
|
||||
"upload.modal.link.error.taken": "Dieser Link wird bereits verwendet",
|
||||
"upload.modal.not-signed-in": "Du bist nicht angemeldet",
|
||||
"upload.modal.not-signed-in-description": "Du wirst deine Freigabe nicht löschen können oder die Besucheranzahl sehen.",
|
||||
"upload.modal.expires.never": "niemals",
|
||||
"upload.modal.expires.never-long": "Läuft nicht ab",
|
||||
"upload.modal.expires.error.too-long": "Ablauf überschreitet das maximale Ablaufdatum von {max}.",
|
||||
"upload.modal.expires.never": "nie",
|
||||
"upload.modal.expires.never-long": "Permanente Freigabe",
|
||||
"upload.modal.expires.error.too-long": "Das Ablaufdatum überschreitet das Maximum von {max}.",
|
||||
"upload.modal.link.label": "Link",
|
||||
"upload.modal.expires.label": "Gültig bis",
|
||||
"upload.modal.expires.minute-singular": "Minute",
|
||||
@@ -243,13 +246,13 @@ export default {
|
||||
"upload.modal.expires.month-singular": "Monat",
|
||||
"upload.modal.expires.month-plural": "Monate",
|
||||
"upload.modal.expires.year-singular": "Jahr",
|
||||
"upload.modal.expires.year-plural": "Year",
|
||||
"upload.modal.expires.year-plural": "Jahre",
|
||||
"upload.modal.accordion.name-and-description.title": "Name und Beschreibung",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Hinweis für die Empfänger dieser Freigabe",
|
||||
"upload.modal.accordion.email.title": "Email Empfänger",
|
||||
"upload.modal.accordion.email.placeholder": "Email der Empfänger eingeben",
|
||||
"upload.modal.accordion.email.invalid-email": "Ungültige Emailadresse",
|
||||
"upload.modal.accordion.email.title": "E-Mail-Empfänger",
|
||||
"upload.modal.accordion.email.placeholder": "E-Mail der Empfänger eingeben",
|
||||
"upload.modal.accordion.email.invalid-email": "Ungültige E-Mail-Adresse",
|
||||
"upload.modal.accordion.security.title": "Sicherheitseinstellungen",
|
||||
"upload.modal.accordion.security.password.label": "Passwortschutz",
|
||||
"upload.modal.accordion.security.password.placeholder": "Kein Passwort",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private Freigabe",
|
||||
"share.error.access-denied.description": "Das aktuelle Konto hat keine Berechtigung, um auf diese Freigabe zuzugreifen",
|
||||
"share.modal.password.title": "Passwort erforderlich",
|
||||
"share.modal.password.description": "Um auf diese Freigabe zuzugreifen, gib bitte das Passwort für die Freigabe ein.",
|
||||
"share.modal.password.description": "Bitte gib das Passwort ein, um auf diese Freigabe zuzugreifen.",
|
||||
"share.modal.password": "Passwort",
|
||||
"share.modal.error.invalid-password": "Ungültiges Passwort",
|
||||
"share.button.download-all": "Alles herunterladen",
|
||||
"share.notify.download-all-preparing": "Die Freigabe wird vorbereitet. Versuche es in ein paar Minuten erneut.",
|
||||
"share.notify.download-all-preparing": "Die Freigabe wird vorbereitet. Bitte versuche es in ein paar Minuten erneut.",
|
||||
"share.modal.file-link": "Dateilink",
|
||||
"share.table.name": "Name",
|
||||
"share.table.size": "Größe",
|
||||
"share.modal.file-preview.error.not-supported.title": "Vorschau wird nicht unterstützt",
|
||||
"share.modal.file-preview.error.not-supported.description": "Eine Vorschau für diesen Dateityp wird nicht unterstützt. Bitte lade die Datei herunter, um sie anzusehen.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Vorschaubilder werden für diesen Dateityp nicht unterstützt. Bitte lade die Datei herunter, um sie anzuzeigen.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "{shareId} bearbeiten",
|
||||
@@ -295,11 +298,13 @@ export default {
|
||||
"admin.config.category.share": "Freigabe",
|
||||
"admin.config.category.email": "E-Mail",
|
||||
"admin.config.category.smtp": "SMTP",
|
||||
"admin.config.category.oauth": "OAuth-Anmeldung",
|
||||
"admin.config.category.oauth": "Anmeldung über soziale Netzwerke",
|
||||
"admin.config.general.app-name": "App-Name",
|
||||
"admin.config.general.app-name.description": "Name der Applikation",
|
||||
"admin.config.general.app-url": "App-URL",
|
||||
"admin.config.general.app-url.description": "Auf welcher URL Pingvin Share verfügbar ist",
|
||||
"admin.config.general.secure-cookies": "Sichere Cookies",
|
||||
"admin.config.general.secure-cookies.description": "Gibt an, ob die secure flag bei Cookies gesetzt werden soll. Falls aktiviert, wird die Seite nicht funktionieren, wenn sie über HTTP aufgerufen wird.",
|
||||
"admin.config.general.show-home-page": "Startseite anzeigen",
|
||||
"admin.config.general.show-home-page.description": "Ob die Startseite angezeigt werden soll",
|
||||
"admin.config.general.session-duration": "Session-Dauer",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Ändere dein Logo durch Hochladen eines Bildes. Das Bild muss im PNG-Format vorliegen und sollte mit Seitenverhältnis 1:1 sein.",
|
||||
"admin.config.general.logo.placeholder": "Bild auswählen",
|
||||
"admin.config.email.enable-share-email-recipients": "Erlaube das Teilen der Freigabe via Email",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Gibt an, ob Emails an Freigabe-Empfänger ermöglicht werden sollen. Aktiviere dies nur, wenn du SMTP aktivierst hast.",
|
||||
"admin.config.email.enable-share-email-recipients": "Erlaube das Teilen der Freigabe via E-Mail",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Gibt an, ob das Teilen von E-Mails mit Empfängern erlaubt werden soll. Aktiviere dies nur, wenn SMTP aktiviert ist.",
|
||||
"admin.config.email.share-recipients-subject": "Betreff für Freigabe-Empfänger",
|
||||
"admin.config.email.share-recipients-subject.description": "Betreff der E-Mail, die an die Freigabe-Empfänger gesendet wird.",
|
||||
"admin.config.email.share-recipients-message": "Nachricht für Freigabe-Empfänger",
|
||||
"admin.config.email.share-recipients-message.description": "Nachricht, die an die Freigabe-Empfänger gesendet wird. Verfügbare Variablen:\n- {creator} - Der Benutzername des Erstellers der Freigabe\n- {shareUrl} - Die URL der Freigabe\n- {desc} - Die Beschreibung der Freigabe\n- {expires} - Das Ablaufdatum der Freigabe\nVariablen werden durch die tatsächlichen Werte ersetzt.",
|
||||
"admin.config.email.share-recipients-message.description": "Nachricht, die an die Freigabe-Empfänger gesendet wird. Verfügbare Variablen:\n- {creator} - Der Benutzername des Erstellers der Freigabe\n- {creatorEmail} - E-Mail-Adresse des Erstellers der Freigabe\n- {shareUrl} - Die URL der Freigabe\n- {desc} - Die Beschreibung der Freigabe\n- {expires} - Das Ablaufdatum der Freigabe\nVariablen werden durch die tatsächlichen Werte ersetzt.",
|
||||
"admin.config.email.reverse-share-subject": "Name der externen Freigabe",
|
||||
"admin.config.email.reverse-share-subject.description": "Betreff der Email, die gesendet wird, wenn jemand eine Datei mit deinem externen Freigabe-Link hochlädt.",
|
||||
"admin.config.email.reverse-share-subject.description": "Betreff der gesendeten E-Mail, wenn jemand eine Freigabe mit Ihrem externen Freigabe-Link erstellt hat.",
|
||||
"admin.config.email.reverse-share-message": "Nachricht für externe Freigabe",
|
||||
"admin.config.email.reverse-share-message.description": "Nachricht, die gesendet wird, wenn jemand eine Freigabe mit deinem externen Freigabe-Link erstellt. {shareUrl} wird durch den Namen des Erstellers und die Freigabe-URL ersetzt.",
|
||||
"admin.config.email.reset-password-subject": "Betreff für Passwortzurücksetzung",
|
||||
"admin.config.email.reset-password-subject.description": "Betreff der E-Mail, die gesendet wird, wenn ein Benutzer eine Passwortzurücksetzung anfordert.",
|
||||
"admin.config.email.reset-password-subject.description": "Betreff der gesendeten E-Mail, wenn ein Benutzer ein Passwort zurücksetzen möchte.",
|
||||
"admin.config.email.reset-password-message": "Nachricht für Passwortzurücksetzung",
|
||||
"admin.config.email.reset-password-message.description": "Nachricht, die gesendet wird, wenn ein Benutzer eine Passwortzurücksetzung anfordert. {url} wird durch die URL für das Zurücksetzen des Passworts ersetzt.",
|
||||
"admin.config.email.invite-subject": "Betreff für Einladung",
|
||||
"admin.config.email.invite-subject.description": "Betreff der E-Mail, die gesendet wird, wenn ein Administrator einen Benutzer einlädt.",
|
||||
"admin.config.email.invite-subject.description": "Betreff der gesendeten E-Mail, wenn ein Administrator einen Benutzer einlädt.",
|
||||
"admin.config.email.invite-message": "Nachricht für Einladung",
|
||||
"admin.config.email.invite-message.description": "Nachricht welche gesendet wird, wenn der Administrator einen Nutzer einlädt. {url} wird ersetzt durch die Einladung URL, {email} mit der die E-Mail und {password} mit dem Passwort des Benutzers.",
|
||||
"admin.config.email.invite-message.description": "Nachricht, die gesendet wird, wenn ein Administrator einen Benutzer einlädt. {url} wird durch die Einladung-URL ersetzt und {password} durch das Passwort ersetzt.",
|
||||
"admin.config.share.allow-registration": "Registrierung erlauben",
|
||||
"admin.config.share.allow-registration.description": "Gibt an, ob eine Registrierung erlaubt ist",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Nicht authentifizierte Freigaben erlauben",
|
||||
@@ -333,14 +338,14 @@ export default {
|
||||
"admin.config.share.max-expiration.description": "Maximale Ablaufzeit in Stunden. Auf 0 setzen, um kein Ablaufdatum zu definieren.",
|
||||
"admin.config.share.max-size": "Maximale Größe",
|
||||
"admin.config.share.max-size.description": "Maximale Größe einer Freigabe in Bytes",
|
||||
"admin.config.share.zip-compression-level": "Zip Komprimierungsstufe",
|
||||
"admin.config.share.zip-compression-level.description": "Passe den Wert an, um ein Gleichgewicht zwischen Dateigröße und Komprimierungsgeschwindigkeit herzustellen. Gültige Werte liegen zwischen 0 und 9, wobei 0 für keine Komprimierung und 9 für maximale Komprimierung steht.",
|
||||
"admin.config.share.chunk-size": "Chunkgröße",
|
||||
"admin.config.share.chunk-size.description": "Passe die Chunkgröße (in Bytes) für deine Uploads an, um die Zuverlässigkeit deiner Internetverbindung auszugleichen. Kleinere Chunks können die Erfolgsraten für instabile Verbindungen verbessern, während größere Chunks Uploads für stabile Verbindungen beschleunigen können.",
|
||||
"admin.config.share.zip-compression-level": "ZIP-Kompressionslevel",
|
||||
"admin.config.share.zip-compression-level.description": "Passe den Wert an, um ein Gleichgewicht zwischen Dateigröße und Kompressionsgeschwindigkeit herzustellen. Gültige Werte liegen zwischen 0 und 9, wobei 0 für keine Komprimierung und 9 für maximale Komprimierung steht. ",
|
||||
"admin.config.share.chunk-size": "Chunk Größe",
|
||||
"admin.config.share.chunk-size.description": "Passe die Chunk-Größe (in Bytes) für deine Uploads an, um Effizienz und Zuverlässigkeit entsprechend deiner Internetverbindung auszubalancieren. Kleinere Chunks können die Erfolgsraten bei instabilen Verbindungen erhöhen, während größere Chunks Uploads bei stabilen Verbindungen beschleunigen.",
|
||||
"admin.config.share.auto-open-share-modal": "Freigabe-Fenster automatisch öffnen",
|
||||
"admin.config.share.auto-open-share-modal.description": "Das Freigabe-Fenster erscheint automatisch, sobald ein Benutzer Dateien ausgewählt hat, ohne extra auf den Button klicken zu müssen.",
|
||||
"admin.config.smtp.enabled": "Aktiviert",
|
||||
"admin.config.smtp.enabled.description": "Gibt an, ob SMTP aktiviert ist. Aktiviere dies nur, wenn du den Host, den Port, die Email, den Benutzernamen und das Passwort deines SMTP-Servers eingegeben hast.",
|
||||
"admin.config.smtp.enabled": "Aktivieren",
|
||||
"admin.config.smtp.enabled.description": "Gibt an, ob SMTP aktiviert ist. Aktiviere dies nur, wenn du den Host, den Port, die E-Mail, den Benutzernamen und das Passwort deines SMTP-Servers eingegeben hast.",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "Host des SMTP-Servers",
|
||||
"admin.config.smtp.port": "Port",
|
||||
@@ -353,50 +358,54 @@ export default {
|
||||
"admin.config.smtp.password.description": "Passwort des SMTP-Servers",
|
||||
"admin.config.smtp.button.test": "Test-E-Mail senden",
|
||||
"admin.config.smtp.allow-unauthorized-certificates": "Vertrauen von nicht authentifizierten SMTP-Server-Zertifikaten",
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Verwenden Sie diese Option nur, wenn Sie selbst signierten Zertifikaten vertrauen müssen.",
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Verwende diese Option nur, wenn du selbst signierten Zertifikaten vertrauen musst.",
|
||||
"admin.config.oauth.allow-registration": "Registrierung erlauben",
|
||||
"admin.config.oauth.allow-registration.description": "Benutzern erlauben, sich über Soziale Netzwerke zu registrieren",
|
||||
"admin.config.oauth.allow-registration.description": "Benutzern erlauben, sich über soziale Netzwerke zu registrieren",
|
||||
"admin.config.oauth.ignore-totp": "TOTP ignorieren",
|
||||
"admin.config.oauth.ignore-totp.description": "Gibt an, ob TOTP ignoriert werden soll, wenn sich der Benutzer über Soziale Netzwerke anmeldet",
|
||||
"admin.config.oauth.ignore-totp.description": "Gibt an, ob TOTP ignoriert werden soll, wenn sich der Benutzer über soziale Netzwerke anmeldet",
|
||||
"admin.config.oauth.disable-password": "Anmelden mit Passwort deaktivieren",
|
||||
"admin.config.oauth.disable-password.description": "Deaktiviert das Anmelden mit Passwort\nStelle vor Aktivierung dieser Konfiguration sicher, dass ein OAuth-Provider korrekt konfiguriert ist, um nicht ausgesperrt zu werden.",
|
||||
"admin.config.oauth.github-enabled": "GitHub",
|
||||
"admin.config.oauth.github-enabled.description": "GitHub Anmeldung erlaubt",
|
||||
"admin.config.oauth.github-client-id": "GitHub Client-ID",
|
||||
"admin.config.oauth.github-client-id.description": "Client-ID der GitHub OAuth-App",
|
||||
"admin.config.oauth.github-client-secret": "GitHub Client-Secret",
|
||||
"admin.config.oauth.github-client-secret.description": "Client-Secret der GitHub OAuth-App",
|
||||
"admin.config.oauth.github-client-secret": "GitHub Client Secret",
|
||||
"admin.config.oauth.github-client-secret.description": "Client Secret der GitHub OAuth App",
|
||||
"admin.config.oauth.google-enabled": "Google",
|
||||
"admin.config.oauth.google-enabled.description": "Google Anmeldung erlaubt",
|
||||
"admin.config.oauth.google-client-id": "Google Client-ID",
|
||||
"admin.config.oauth.google-client-id.description": "Client-ID der Google OAuth-App",
|
||||
"admin.config.oauth.google-client-secret": "Google Client-Secret",
|
||||
"admin.config.oauth.google-client-secret.description": "Client-Secret der Google OAuth-App",
|
||||
"admin.config.oauth.google-client-secret": "Google Client Secret",
|
||||
"admin.config.oauth.google-client-secret.description": "Client Secret der Google OAuth App",
|
||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||
"admin.config.oauth.microsoft-enabled.description": "Microsoft Anmeldung erlaubt",
|
||||
"admin.config.oauth.microsoft-tenant": "Microsoft Mandant",
|
||||
"admin.config.oauth.microsoft-tenant.description": "Mandant-ID der Microsoft OAuth App\ncommon: Benutzer mit einem persönlichen Microsoft-Konto und einem Arbeits- oder Schulkonto von Microsoft Entra ID können sich in der Anwendung anmelden.\norganizations: Nur Benutzer mit Arbeits- oder Schulkonten von Microsoft Entra ID können sich in der Anwendung anmelden.\nconsumers: Nur Benutzer mit einem persönlichen Microsoft-Konto können sich in der Anwendung anmelden.\nDomänenname des Microsoft Entra Mandanten oder die Mandanten-ID im GUID-Format: Nur Benutzer eines bestimmten Microsoft Entra Mandanten (Verzeichnismitglieder mit einem Arbeits- oder Schulkonto oder Verzeichnis Gäste mit einem persönlichen Microsoft-Konto) können sich anmelden.",
|
||||
"admin.config.oauth.microsoft-client-id": "Microsoft Client-ID",
|
||||
"admin.config.oauth.microsoft-client-id.description": "Client-ID der Microsoft OAuth-App",
|
||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client-Secret",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client-Secret der Microsoft OAuth-App",
|
||||
"admin.config.oauth.microsoft-client-secret": "Microsoft Client Secret",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client Secret der Microsoft OAuth App",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Discord Anmeldung erlaubt",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limitierte Benutzer",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limitiere die Anmeldung für spezifische Benutzer anhand ihrer Discord ID. Lasse dieses Feld leer, um es zu deaktivieren.",
|
||||
"admin.config.oauth.discord-limited-guild": "Discord Server-ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Die Anmeldung auf Benutzer in einem bestimmten Server beschränken. Leer lassen, um zu deaktivieren.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client-ID",
|
||||
"admin.config.oauth.discord-client-id.description": "Client-ID der Discord OAuth-App",
|
||||
"admin.config.oauth.discord-client-secret": "Discord Client-Secret",
|
||||
"admin.config.oauth.discord-client-secret.description": "Client-Secret der Discord OAuth-App",
|
||||
"admin.config.oauth.discord-client-secret": "Discord Client Secret",
|
||||
"admin.config.oauth.discord-client-secret.description": "Client Secret der Discord OAuth App",
|
||||
"admin.config.oauth.oidc-enabled": "OpenID Connect",
|
||||
"admin.config.oauth.oidc-enabled.description": "OpenID Connect Anmeldung erlaubt",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Verbindung Discovery URL",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery-URL der OpenID OAuth App",
|
||||
"admin.config.oauth.oidc-sign-out": "Abmelden von OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Wenn aktiviert, wird der Benutzer mit der „Abmelden“-Schaltfläche vom OpenID-Connect-Provider abgemeldet.",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect Benutzername anfordern",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Benutzername im OpenID Token. Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
"admin.config.oauth.oidc-role-path": "Pfad zu den Rollen im OpenID Verbindungs-Token",
|
||||
"admin.config.oauth.oidc-role-path.description": "Muss ein valider JMES-Pfad sein, der zu einem Array an Rollen führt. " + "Die Zugangsverwaltung über Rollen in OpenID Connect ist nur empfohlen, wenn kein anderer Identitätsprovider konfiguriert und die Anmeldung per Password deaktiviert ist. " + "Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect Rolle für allgemeinen Zugriff",
|
||||
"admin.config.oauth.oidc-role-general-access.description": "Rolle für generellen Zugriff. Muss Teil der Rollen eines Benutzers sein, damit dieser sich anmelden kann. " + "Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect Rolle für Admin-Zugriff",
|
||||
"admin.config.oauth.oidc-role-admin-access.description": "Rolle für administrativen Zugriff. Muss Teil der Rollen eines Benutzers sein, damit dieser auf das Administrator-Panel zugreifen kann. " + "Leer lassen, wenn du nicht weißt, was diese Konfiguration bedeutet.",
|
||||
@@ -405,24 +414,24 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client-Secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Client-Secret der OpenID Connect OAuth-App",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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.enabled": "LDAP aktivieren",
|
||||
"admin.config.ldap.enabled.description": "LDAP-Authentifizierung für die Benutzeranmeldung verwenden",
|
||||
"admin.config.ldap.url": "Server-URL",
|
||||
"admin.config.ldap.url.description": "URL des LDAP-Servers",
|
||||
"admin.config.ldap.bind-dn": "Binde DN",
|
||||
"admin.config.ldap.bind-dn.description": "Standard-Benutzer, der zur Benutzersuche verwendet wird",
|
||||
"admin.config.ldap.bind-password": "Binde Passwort",
|
||||
"admin.config.ldap.bind-password.description": "Passwort der zur Benutzersuche verwendet wird",
|
||||
"admin.config.ldap.search-base": "Benutzerbasis",
|
||||
"admin.config.ldap.search-base.description": "Basisstandort, an dem die Benutzersuche durchgeführt wird",
|
||||
"admin.config.ldap.search-query": "Benutzerabfrage",
|
||||
"admin.config.ldap.search-query.description": "Die Benutzer Abfrage wird in der \"Benutzerdatenbank\" gesucht für den LDAP Benutzer. %username% kann als Platzhalter für den Benutzer eingegeben werden.",
|
||||
"admin.config.ldap.admin-groups": "Administratorengruppe",
|
||||
"admin.config.ldap.admin-groups.description": "Gruppe benötigt für den Administrations Zugang.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.admin-groups": "Admin-Gruppe",
|
||||
"admin.config.ldap.admin-groups.description": "Gruppe benötigt für den Administrationszugang.",
|
||||
"admin.config.ldap.field-name-member-of": "Benutzergruppen-Attributname",
|
||||
"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.description": "LDAP-Attributname für die E-Mail-Adresse eines Benutzers.",
|
||||
// 404
|
||||
"404.description": "Ups, diese Seite existiert nicht.",
|
||||
"404.button.home": "Zurück zur Startseite",
|
||||
@@ -430,7 +439,7 @@ export default {
|
||||
"error.title": "Fehler",
|
||||
"error.description": "Ups!",
|
||||
"error.button.back": "Zurück",
|
||||
"error.msg.default": "Etwas ist schief gelaufen.",
|
||||
"error.msg.default": "Etwas ist schiefgelaufen.",
|
||||
"error.msg.access_denied": "Du hast den Authentifizierungsprozess abgebrochen, bitte versuche es erneut.",
|
||||
"error.msg.expired_token": "Der Authentifizierungsprozess hat zu lange gedauert, bitte versuche es erneut.",
|
||||
"error.msg.invalid_token": "Interner Fehler",
|
||||
@@ -440,7 +449,7 @@ export default {
|
||||
"error.msg.not_linked": "Das Konto {0} wurde noch nicht mit einem Konto verknüpft.",
|
||||
"error.msg.unverified_account": "Dieses Konto {0} wurde noch nicht verifiziert, bitte versuche es nach der Verifikation erneut.",
|
||||
"error.msg.user_not_allowed": "Du bist nicht berechtigt, dich anzumelden.",
|
||||
"error.msg.cannot_get_user_info": "Deine Benutzerinformationen können nicht von diesem Konto {0} abgerufen werden.",
|
||||
"error.msg.cannot_get_user_info": "Ihre Benutzerinformationen können von diesem {0} Konto nicht abgerufen werden.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -460,7 +469,7 @@ export default {
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Link öffnen",
|
||||
"common.text.or": "oder",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.text.redirecting": "Umleitung...",
|
||||
"common.button.go-back": "Zurück",
|
||||
"common.button.go-home": "Zur Startseite",
|
||||
"common.notify.copied": "Dein Link wurde in die Zwischenablage kopiert",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Ungültige E-Mail-Adresse",
|
||||
"common.error.too-short": "Muss mindestens {length} Zeichen enthalten",
|
||||
"common.error.too-long": "Muss maximal {length} Zeichen enthalten",
|
||||
"common.error.number-too-small": "Darf mindestens {min} sein",
|
||||
"common.error.number-too-large": "Darf höchstens {max} sein",
|
||||
"common.error.exact-length": "Muss genau {length} Zeichen lang sein",
|
||||
"common.error.invalid-number": "Muss eine Zahl sein",
|
||||
"common.error.field-required": "Dieses Feld ist erforderlich"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Μεταφόρτωση",
|
||||
"navbar.signin": "Είσοδος",
|
||||
"navbar.home": "Αρχική",
|
||||
"navbar.signup": "Εγγραφή",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "",
|
||||
"navbar.links.reverse": "Αντίστροφος σύνδεσμος κοινής χρήσης",
|
||||
"navbar.avatar.account": "Ο λογαριασμός μου",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Ιδιωτική εγκατάσταση",
|
||||
"home.bullet.a.description": "Φιλοξενήστε το Pingvin Share στο δικό σας μηχάνημα.",
|
||||
"home.bullet.b.name": "Απόρρητο",
|
||||
"home.bullet.b.description": "Τα αρχεία σας είναι αρχεία σας και δεν πρέπει ποτέ να μπείτε στα χέρια τρίτων.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Χωρίς όριο μεγέθους αρχείου",
|
||||
"home.bullet.c.description": "Ανεβάστε όσο μεγάλα αρχεία θέλετε. Μόνο ο σκληρός σας δίσκος θα είναι το όριό σας.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Ας αρχίσουμε",
|
||||
"home.button.source": "Πηγαίος κώδικας",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Ξεχάσατε τον κωδικό σας;",
|
||||
"resetPassword.description": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.notify.success": "Εισάγετε το email σας για επαναφορά κωδικού.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Πίσω στη σελίδα εισόδου",
|
||||
"resetPassword.text.resetPassword": "Επαναφορά κωδικού πρόσβασης",
|
||||
"resetPassword.text.enterNewPassword": "Εισάγετε το νέο σας κωδικό",
|
||||
"resetPassword.input.password": "Νέος κωδικός",
|
||||
"resetPassword.notify.passwordReset": "Η επαναφορά του κωδικού πρόσβασης σας ολοκληρώθηκε με επιτυχία!",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Ο λογαριασμός μου",
|
||||
"account.card.info.title": "Πληροφορίες λογαριασμού",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Κωδικόs πρόσβασης",
|
||||
"account.card.password.old": "Παλιός κωδικός",
|
||||
"account.card.password.new": "Νέος κωδικός",
|
||||
"account.card.password.noPasswordSet": "Δεν έχετε ορίσει κωδικό πρόσβασης. Αν θέλετε να συνδεθείτε με email και κωδικό πρόσβασης, πρέπει να ορίσετε έναν κωδικό πρόσβασης.",
|
||||
"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": "Ο κωδικός πρόσβασης άλλαξε επιτυχώς",
|
||||
"account.card.oauth.title": "Σύνδεση με λογαριασμό μέσων κοινωνικού δικτύου",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Αποσύνδεση",
|
||||
"account.card.oauth.unlinked": "Αποσυνδεδεμένο",
|
||||
"account.modal.unlink.title": "Αποσύνδεση Λογαριασμού",
|
||||
"account.modal.unlink.description": "Η αποσύνδεση των κοινωνικών λογαριασμών σας μπορεί να προκαλέσει απώλεια του λογαριασμού σας αν δε θυμάστε το όνομα χρήστη και τον κωδικό πρόσβασης.",
|
||||
"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": "Επιτυχής αποσύνδεση",
|
||||
"account.card.security.title": "Ασφάλεια",
|
||||
"account.card.security.totp.enable.description": "Εισάγετε τον τρέχοντα κωδικό σας για να ξεκινήσετε την ενεργοποίηση του TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Όνομα",
|
||||
"account.shares.table.description": "Περιγραφή",
|
||||
"account.shares.table.visitors": "Επισκέπτες",
|
||||
"account.shares.table.expiresAt": "Λήξη",
|
||||
"account.shares.table.createdAt": "Δημιουργήθηκε",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Μέγεθος",
|
||||
"account.shares.modal.share-informations": "Πληροφορίες διαμοιρασμού",
|
||||
"account.shares.modal.share-link": "Κοινοποίηση συνδέσμου",
|
||||
"account.shares.modal.delete.title": "Διαγραφή κοινοποίησης {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Θέλετε πραγματικά να διαγράψετε αυτό το διαμοιρασμό;",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Έτος",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Έτη",
|
||||
"account.reverseShares.modal.max-size.label": "Μέγιστο μέγεθος κοινοποίησης",
|
||||
"account.reverseShares.modal.send-email": "Αποστολή ειδοποιήσεων με email",
|
||||
"account.reverseShares.modal.send-email.description": "Στείλτε μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου όταν δημιουργείται ένας διαμοιρασμός με αυτόν τον σύνδεσμο ανάστροφης κοινοποίησης.",
|
||||
"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": "Απλή λειτουργία",
|
||||
"account.reverseShares.modal.simplified.description": "Κάντε εύκολο για το άτομο που ανεβάζει το αρχείο να το μοιραστεί μαζί σας. Θα είναι σε θέση να προσαρμόσει μόνο το όνομα και την περιγραφή της κοινοποίησης.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Δημόσια πρόσβαση",
|
||||
"account.reverseShares.modal.public-access.description": "Κάντε τις δημιουργημένες κοινοποιήσεις με αυτή την αντίστροφη κοινή χρήση δημόσιες. Εάν απενεργοποιηθεί, μόνο εσείς και ο δημιουργός της κοινής χρήσης μπορείτε να τη δείτε.",
|
||||
"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": "Μέγιστες χρήσεις",
|
||||
"account.reverseShares.modal.max-use.description": "Ο μέγιστος αριθμός που μπορεί να χρησιμοποιηθεί αυτό το URL για τη δημιουργία ενός διαμοιρασμού.",
|
||||
"account.reverseShare.never-expires": "Αυτός ο αντίστροφος διαμοιρασμός δε λήγει.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Όνομα χρήστη",
|
||||
"admin.users.table.email": "E-mail",
|
||||
"admin.users.table.admin": "Διαχειριστής",
|
||||
"admin.users.edit.update.title": "Ενημέρωση χρήστη {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Δικαιώματα διαχειριστή",
|
||||
"admin.users.edit.update.change-password.title": "Αλλαγή κωδικού πρόσβασής",
|
||||
"admin.users.edit.update.change-password.field": "Νέος κωδικός πρόσβασης",
|
||||
"admin.users.edit.update.change-password.button": "Αποθήκευση νέου κωδικού πρόσβασης",
|
||||
"admin.users.edit.update.notify.password.success": "Ο κωδικός πρόσβασης άλλαξε επιτυχώς",
|
||||
"admin.users.edit.delete.title": "Διαγραφή χρήστη {username}",
|
||||
"admin.users.edit.delete.description": "Θέλετε να διαγράψετε το χρήστη και όλες τις κοινοποιήσεις του;",
|
||||
"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": "Δημιουργία χρήστη",
|
||||
"admin.users.modal.create.username": "Όνομα χρήστη",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Αναγνωριστικό κοινοποίησης",
|
||||
"admin.shares.table.username": "Δημιουργός",
|
||||
"admin.shares.table.visitors": "Επισκέπτες",
|
||||
"admin.shares.table.expires": "Λήγει στις",
|
||||
"admin.shares.edit.delete.title": "Διαγραφή κοινοποίησης {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "Θέλετε πραγματικά να διαγράψετε αυτή τη κοινοποίηση;",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Μεταφόρτωση",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Παρουσιάστηκε σφάλμα κατά την ολοκλήρωση της κοινής χρήσης σας.",
|
||||
"upload.notify.count-failed": "Τα αρχεία {count} απέτυχαν να μεταφορτώσουν. Δοκιμάστε ξανά.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Μεταφόρτωση αρχείων",
|
||||
"upload.dropzone.description": "Σύρετε και αποθέστε αρχεία εδώ για να ξεκινήσει η κοινή χρήση σας. Μπορούμε να δεχτούμε μόνο αρχεία που είναι λιγότερο από {maxSize} συνολικά.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Τα αρχεία σας υπερβαίνουν το μέγιστο μέγεθος κοινής χρήσης του {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Όνομα",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Δεν είστε συνδεδεμένος/η",
|
||||
"upload.modal.not-signed-in-description": "Δεν θα μπορείτε να διαγράψετε την κοινή χρήση σας χειροκίνητα και να δείτε την αρίθμηση επισκεπτών.",
|
||||
"upload.modal.expires.never": "ποτέ",
|
||||
"upload.modal.expires.never-long": "Χωρίς λήξη",
|
||||
"upload.modal.expires.error.too-long": "Η λήξη υπερβαίνει τη μέγιστη ημερομηνία λήξης {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Σύνδεσμος",
|
||||
"upload.modal.expires.label": "Λήξη",
|
||||
"upload.modal.expires.minute-singular": "Λεπτό",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Ιδιωτική κοινοποίηση",
|
||||
"share.error.access-denied.description": "Ο τρέχων λογαριασμός δεν έχει δικαίωμα πρόσβασης σε αυτήν την κοινοποίηση",
|
||||
"share.modal.password.title": "Απαιτείται κωδικός",
|
||||
"share.modal.password.description": "Για να αποκτήσετε πρόσβαση σε αυτή την κοινοποίηση εισάγετε τον κωδικό πρόσβασης.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Κωδικός πρόσβασης",
|
||||
"share.modal.error.invalid-password": "Μη έγκυρος κωδικός πρόσβασης",
|
||||
"share.button.download-all": "Λήψη όλων",
|
||||
"share.notify.download-all-preparing": "Αυτός ο διαμοιρασμός βρίσκεται σε επεξεργασία. Προσπαθήστε ξανά σε λίγο.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Σύνδεσμος αρχείου",
|
||||
"share.table.name": "Όνομα",
|
||||
"share.table.size": "Μέγεθος",
|
||||
"share.modal.file-preview.error.not-supported.title": "Η προεπισκόπηση δεν υποστηρίζεται",
|
||||
"share.modal.file-preview.error.not-supported.description": "Η προεπισκόπηση για αυτό τον τύπο αρχείου δεν υποστηρίζεται. Παρακαλώ κατεβάστε το αρχείο για να το δείτε.",
|
||||
"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": "Ενημέρωση {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Ονομασία της εφαρμογής",
|
||||
"admin.config.general.app-url": "URL Εφαρμογής",
|
||||
"admin.config.general.app-url.description": "Η διεύθυνση URL όπου το Pingvin Share είναι διαθέσιμο",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Εμφάνιση αρχικής σελίδας",
|
||||
"admin.config.general.show-home-page.description": "Εάν θα εμφανίζεται η αρχική σελίδα",
|
||||
"admin.config.general.session-duration": "Διάρκεια συνεδρίας",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Λογότυπο",
|
||||
"admin.config.general.logo.description": "Αλλάξτε το λογότυπό σας ανεβάζοντας μια νέα εικόνα. Η εικόνα πρέπει να είναι PNG και αναλογία 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Επιλέξτε εικόνα",
|
||||
"admin.config.email.enable-share-email-recipients": "Ενεργοποίηση κοινής χρήσης μέσω email",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Εάν θα ενεργοποιηθεί η κοινή χρήση μέσω email. Δυνατή μόνον με την ενεργοποίηση SMTP.",
|
||||
"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": "Θέμα στο email διαμοιρασμού",
|
||||
"admin.config.email.share-recipients-subject.description": "Το θέμα του email διαμοιρασμού που θα φτάσει στον παραλήπτη.",
|
||||
"admin.config.email.share-recipients-message": "Το θέμα του email για τον διαμοιρασμό που θα φτάσει στον παραλήπτη ",
|
||||
"admin.config.email.share-recipients-message.description": "Μήνυμα που αποστέλλεται στους παραλήπτες κοινής χρήσης. Διαθέσιμες μεταβλητές:\n {creator} - Το όνομα χρήστη του δημιουργού της κοινής χρήσης\n {shareUrl} - Η διεύθυνση URL της κοινής χρήσης\n {desc} - Η περιγραφή της κοινής χρήσης\n {expires} - Η ημερομηνία λήξης της κοινής χρήσης\n Οι μεταβλητές θα αντικατασταθούν με την πραγματική τιμή.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Θέμα email αντίστροφου διαμοιρασμού",
|
||||
"admin.config.email.reverse-share-subject.description": "Θέμα του ηλεκτρονικού ταχυδρομείου που αποστέλλεται όταν κάποιος δημιούργησε έναν αντίστροφο διαμοιρασμό.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Μήνυμα email αντίστροφου διαμοιρασμού",
|
||||
"admin.config.email.reverse-share-message.description": "Μήνυμα που αποστέλλεται όταν κάποιος δημιουργεί έναν σύνδεσμο αντίστροφου διαμοιρασμού. Το {shareUrl} θα αντικατασταθεί με το όνομα του δημιουργού και τη διεύθυνση URL κοινής χρήσης.",
|
||||
"admin.config.email.reset-password-subject": "Θέμα μηνύματος επαναφοράς κωδικού πρόσβασης",
|
||||
"admin.config.email.reset-password-subject.description": "Θέμα του email που αποστέλλεται όταν ένας χρήστης ζητήσει επαναφορά κωδικού πρόσβασης.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Κείμενο μηνύματος επαναφοράς κωδικού πρόσβασης",
|
||||
"admin.config.email.reset-password-message.description": "Μήνυμα που αποστέλλεται όταν ένας χρήστης ζητά επαναφορά κωδικού πρόσβασης. Το {url} θα αντικατασταθεί με τη διεύθυνση URL επαναφοράς κωδικού πρόσβασης.",
|
||||
"admin.config.email.invite-subject": "Θέμα μηνύματος πρόσκλησης",
|
||||
"admin.config.email.invite-subject.description": "Θέμα του email που αποστέλλεται όταν ένας διαχειριστής προσκαλεί έναν χρήστη.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Μήνυμα μηνύματος πρόσκλησης",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "Να επιτρέπεται η εγγραφή",
|
||||
"admin.config.share.allow-registration.description": "Αν επιτρέπεται η εγγραφή",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Επιτρέψτε κοινές χρήσεις χωρίς έλεγχο ταυτότητας",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Βαθμός συμπίεσης ZIP",
|
||||
"admin.config.share.zip-compression-level.description": "Προσαρμόστε το βαθμό συμπίεσης για να εξισορροπηθεί το μέγεθος του αρχείου και η ταχύτητα επεξεργασίας. Έγκυρες τιμές κυμαίνονται από 0 έως 9, με 0 χωρίς συμπίεση και 9 μέγιστη συμπίεση.",
|
||||
"admin.config.share.chunk-size": "Μέγεθος κομματιών",
|
||||
"admin.config.share.chunk-size.description": "Προσαρμόστε το μέγεθος κομματιών (σε bytes) για να εξισορροπήσετε την αποδοτικότητα και την αξιοπιστία του συστήματος σύμφωνα με τη σύνδεσή σας στο διαδίκτυο. Μικρότερα κομμάτια μπορούν να βελτιώσουν τα ποσοστά επιτυχίας σε ασταθείς συνδέσεις, ενώ μεγαλύτερα κομμάτια επιταχύνουν τις μεταφορτώσεις σε σταθερές συνδέσεις.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Ενεργοποιημένο",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Εάν η λειτουργία SMTP είναι ενεργοποιημένη. Ενεργοποιήστε τη μόνον όταν ορίσετε σωστά τις παραμέτρους που ακολουθούν.",
|
||||
"admin.config.smtp.host": "Εξυπηρετητής",
|
||||
"admin.config.smtp.host.description": "SMTP εξυπηρετητής",
|
||||
"admin.config.smtp.port": "Θύρα",
|
||||
"admin.config.smtp.port.description": "SMTP θύρα",
|
||||
"admin.config.smtp.email": "Email",
|
||||
"admin.config.smtp.email.description": "Διεύθυνση email από όπου αποστέλλονται τα μηνύματα",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Όνομα χρήστη",
|
||||
"admin.config.smtp.username.description": "Όνομα χρήστη στον SMTP εξυπηρετητή",
|
||||
"admin.config.smtp.password": "Κωδικός πρόσβασης",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Μυστικό πελάτη της εφαρμογής Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Αν είναι ενεργοποιημένη η σύνδεση στο Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "Αναγνωριστικό διακομιστή περιορισμένης ισχύος Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Περιορισμός σύνδεσης σε χρήστες σε ένα συγκεκριμένο διακομιστή. Αφήστε κενό για να απενεργοποιήσετε.",
|
||||
"admin.config.oauth.discord-client-id": "Αναγνωριστικό Πελάτη Discord",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Αν είναι ενεργοποιημένη η σύνδεση OpenID",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Αφήστε κενό αν δε γνωρίζετε για αυτή τη ρύθμιση",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Ο χρήστης που συνδέεται με αυτόν τον λογαριασμό {0} δεν υπάρχει.",
|
||||
"error.msg.no_email": "Δεν είναι δυνατή η λήψη διεύθυνσης ηλεκτρονικού ταχυδρομείου για αυτόν τον λογαριασμό {0}.",
|
||||
"error.msg.already_linked": "Αυτός ο λογαριασμός {0} είναι ήδη συνδεδεμένος με άλλο λογαριασμό.",
|
||||
"error.msg.not_linked": "Αυτός ο λογαριασμός {0} δεν έχει συνδεθεί με κανένα λογαριασμό ακόμα.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Αυτός ο λογαριασμός {0} δεν έχει επαληθευτεί, παρακαλώ προσπαθήστε ξανά μετά την επαλήθευση.",
|
||||
"error.msg.user_not_allowed": "Δεν σας επιτρέπεται η σύνδεση.",
|
||||
"error.msg.cannot_get_user_info": "Δεν είναι δυνατή η λήψη των πληροφοριών χρήστη από αυτόν τον λογαριασμό {0}.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Δημιουργία",
|
||||
"common.button.done": "Ολοκληρώθηκε",
|
||||
"common.text.link": "Σύνδεσμος",
|
||||
"common.text.navigate-to-link": "Μεταβείτε στο σύνδεσμο",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "ή",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Επιστροφή",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Μη έγκυρη διεύθυνση e-mail",
|
||||
"common.error.too-short": "Πρέπει να αποτελείται τουλάχιστον {length} χαρακτήρες",
|
||||
"common.error.too-long": "Πρέπει να αποτελείται το πολύ από {length} χαρακτήρες",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Πρέπει να αποτελείται ακριβώς από {length} χαρακτήρες",
|
||||
"common.error.invalid-number": "Πρέπει να είναι αριθμός",
|
||||
"common.error.field-required": "Αυτό το πεδίο είναι υποχρεωτικό"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Upload",
|
||||
"navbar.signin": "Sign in",
|
||||
"navbar.home": "Home",
|
||||
"navbar.signup": "Sign Up",
|
||||
"navbar.signup": "Sign up",
|
||||
|
||||
"navbar.links.shares": "My shares",
|
||||
"navbar.links.reverse": "Reverse shares",
|
||||
@@ -22,10 +22,10 @@ export default {
|
||||
"home.bullet.a.description": "Host Pingvin Share on your own machine.",
|
||||
"home.bullet.b.name": "Privacy",
|
||||
"home.bullet.b.description":
|
||||
"Your files are your files and should never get into the hands of third parties.",
|
||||
"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 as big files as you want. Only your hard drive will be your limit.",
|
||||
"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",
|
||||
@@ -75,13 +75,13 @@ export default {
|
||||
"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 email exists.",
|
||||
"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 reset successfully.",
|
||||
"Your password has been successfully reset.",
|
||||
|
||||
// /account
|
||||
"account.title": "My account",
|
||||
@@ -95,7 +95,7 @@ export default {
|
||||
"account.card.password.old": "Old password",
|
||||
"account.card.password.new": "New password",
|
||||
"account.card.password.noPasswordSet":
|
||||
"You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"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",
|
||||
@@ -109,7 +109,7 @@ export default {
|
||||
"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 username and password.",
|
||||
"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",
|
||||
@@ -155,14 +155,14 @@ export default {
|
||||
"account.shares.table.name": "Name",
|
||||
"account.shares.table.description": "Description",
|
||||
"account.shares.table.visitors": "Visitors",
|
||||
"account.shares.table.expiresAt": "Expires at",
|
||||
"account.shares.table.createdAt": "Created at",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Size",
|
||||
|
||||
"account.shares.modal.share-informations": "Share informations",
|
||||
"account.shares.modal.share-link": "Share link",
|
||||
|
||||
"account.shares.modal.delete.title": "Delete share {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description":
|
||||
"Do you really want to delete this share?",
|
||||
|
||||
@@ -195,17 +195,17 @@ export default {
|
||||
|
||||
"account.reverseShares.modal.max-size.label": "Max share size",
|
||||
|
||||
"account.reverseShares.modal.send-email": "Send email notification",
|
||||
"account.reverseShares.modal.send-email": "Send email notifications",
|
||||
"account.reverseShares.modal.send-email.description":
|
||||
"Send an email notification when a share is created with this reverse share link.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"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 created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"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":
|
||||
@@ -244,7 +244,7 @@ export default {
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.admin": "Admin",
|
||||
|
||||
"admin.users.edit.update.title": "Update user {username}",
|
||||
"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",
|
||||
@@ -252,9 +252,9 @@ export default {
|
||||
"admin.users.edit.update.notify.password.success":
|
||||
"Password changed successfully",
|
||||
|
||||
"admin.users.edit.delete.title": "Delete user {username}",
|
||||
"admin.users.edit.delete.title": "Delete user: {username} ?",
|
||||
"admin.users.edit.delete.description":
|
||||
"Do you really want to delete this user and all his shares?",
|
||||
"Do you really want to delete this user and all their shares?",
|
||||
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Create user",
|
||||
@@ -275,9 +275,9 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description":
|
||||
"Do you really want to delete this share?",
|
||||
|
||||
@@ -286,14 +286,19 @@ export default {
|
||||
// /upload
|
||||
"upload.title": "Upload",
|
||||
|
||||
"upload.notify.confirm-leave":
|
||||
"Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error":
|
||||
"An error occurred while finishing your share.",
|
||||
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description":
|
||||
"This reverse share has expired or is invalid.",
|
||||
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Upload files",
|
||||
"upload.dropzone.description":
|
||||
"Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
|
||||
"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}.",
|
||||
|
||||
@@ -311,9 +316,9 @@ export default {
|
||||
"You will be unable to delete your share manually and view the visitor count.",
|
||||
|
||||
"upload.modal.expires.never": "never",
|
||||
"upload.modal.expires.never-long": "Never Expires",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long":
|
||||
"Expiration exceeds maximum expiration date of {max}.",
|
||||
"Expiration date exceeds the maximum of {max}.",
|
||||
|
||||
"upload.modal.link.label": "Link",
|
||||
"upload.modal.expires.label": "Expiration",
|
||||
@@ -350,7 +355,8 @@ export default {
|
||||
"upload.modal.completed.expires-on":
|
||||
"This share will expire on {expiration}.",
|
||||
"upload.modal.completed.share-ready": "Share ready",
|
||||
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
||||
"upload.modal.completed.notified-reverse-share-creator":
|
||||
"We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
||||
|
||||
// END /upload
|
||||
|
||||
@@ -365,17 +371,18 @@ export default {
|
||||
"share.error.not-found.description":
|
||||
"The share you're looking for doesn't exist.",
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.error.access-denied.description":
|
||||
"The current account does not have permission to access this share",
|
||||
|
||||
"share.modal.password.title": "Password required",
|
||||
"share.modal.password.description":
|
||||
"To access this share please enter the password for the share.",
|
||||
"Please enter the password to acces this share.",
|
||||
"share.modal.password": "Password",
|
||||
"share.modal.error.invalid-password": "Invalid password",
|
||||
|
||||
"share.button.download-all": "Download all",
|
||||
"share.notify.download-all-preparing":
|
||||
"The share is preparing. Try again in a few minutes.",
|
||||
"The share is being prepared. Please try again in a few minutes.",
|
||||
|
||||
"share.modal.file-link": "File link",
|
||||
"share.table.name": "Name",
|
||||
@@ -383,7 +390,7 @@ export default {
|
||||
|
||||
"share.modal.file-preview.error.not-supported.title": "Preview not supported",
|
||||
"share.modal.file-preview.error.not-supported.description":
|
||||
"A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"Previews are not supported for this type of files. Please download the file to view it.",
|
||||
|
||||
// END /share/[id]
|
||||
|
||||
@@ -408,6 +415,9 @@ export default {
|
||||
"admin.config.general.app-url": "App URL",
|
||||
"admin.config.general.app-url.description":
|
||||
"On which URL Pingvin Share is available",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description":
|
||||
"Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Show home page",
|
||||
"admin.config.general.show-home-page.description":
|
||||
"Whether to show the home page",
|
||||
@@ -420,33 +430,33 @@ export default {
|
||||
"admin.config.general.logo.placeholder": "Pick image",
|
||||
|
||||
"admin.config.email.enable-share-email-recipients":
|
||||
"Enable share email recipients",
|
||||
"Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description":
|
||||
"Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
|
||||
"Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||
"admin.config.email.share-recipients-subject.description":
|
||||
"Subject of the email which gets sent to the share recipients.",
|
||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||
"admin.config.email.share-recipients-message.description":
|
||||
"Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
|
||||
"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 email which gets sent when someone created a share with your reverse share link.",
|
||||
"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 email which gets sent when a user requests a password reset.",
|
||||
"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 email which gets sent when an admin invites a user.",
|
||||
"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 password of the user.",
|
||||
"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":
|
||||
@@ -458,6 +468,9 @@ export default {
|
||||
"admin.config.share.max-expiration": "Max expiration",
|
||||
"admin.config.share.max-expiration.description":
|
||||
"Maximum share expiration in hours. Set to 0 to allow unlimited expiration.",
|
||||
"admin.config.share.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 in bytes",
|
||||
"admin.config.share.zip-compression-level": "Zip compression level",
|
||||
@@ -465,12 +478,12 @@ export default {
|
||||
"Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description":
|
||||
"Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description":
|
||||
"The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
|
||||
"admin.config.smtp.enabled": "Enabled",
|
||||
"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",
|
||||
@@ -479,7 +492,7 @@ export default {
|
||||
"admin.config.smtp.port.description": "Port of the SMTP server",
|
||||
"admin.config.smtp.email": "Email",
|
||||
"admin.config.smtp.email.description":
|
||||
"Email address which the emails get sent from",
|
||||
"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",
|
||||
@@ -532,6 +545,9 @@ export default {
|
||||
"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.",
|
||||
@@ -547,6 +563,9 @@ export default {
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description":
|
||||
"Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description":
|
||||
"Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description":
|
||||
"Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
@@ -555,11 +574,13 @@ export default {
|
||||
"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":
|
||||
"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":
|
||||
"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.",
|
||||
@@ -571,24 +592,32 @@ export default {
|
||||
"Client secret of the OpenID Connect OAuth app",
|
||||
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled LDAP",
|
||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
||||
"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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description":
|
||||
"Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"admin.config.ldap.bind-password.description":
|
||||
"Password used to perform the user search",
|
||||
"admin.config.ldap.search-base": "User base",
|
||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
||||
"admin.config.ldap.search-base.description":
|
||||
"Base location, where the user search will be performed",
|
||||
"admin.config.ldap.search-query": "User query",
|
||||
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||
"admin.config.ldap.search-query.description":
|
||||
"The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||
"admin.config.ldap.admin-groups": "Admin group",
|
||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
||||
"admin.config.ldap.admin-groups.description":
|
||||
"Group required for administrative access.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-member-of.description":
|
||||
"LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.field-name-email.description":
|
||||
"LDAP attribute name for the email of an user.",
|
||||
|
||||
// 404
|
||||
"404.description": "Oops this page doesn't exist.",
|
||||
@@ -608,13 +637,13 @@ export default {
|
||||
"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 haven't linked to any account yet.",
|
||||
"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.user_not_allowed": "You are not allowed to sign in.",
|
||||
"error.msg.cannot_get_user_info":
|
||||
"Can not get your user info from this {0} account.",
|
||||
"Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -633,7 +662,7 @@ export default {
|
||||
"common.button.generate": "Generate",
|
||||
"common.button.done": "Done",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "or",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Go back",
|
||||
@@ -646,6 +675,8 @@ export default {
|
||||
"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",
|
||||
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Autoalojada",
|
||||
"home.bullet.a.description": "Aloja Pingvin Share en tu propio equipo.",
|
||||
"home.bullet.b.name": "Privacidad",
|
||||
"home.bullet.b.description": "Tus archivos son tus archivos y nunca deberían terminar en manos de terceros.",
|
||||
"home.bullet.b.description": "Tus archivos son tuyos y nunca serán accesibles por terceros.",
|
||||
"home.bullet.c.name": "Sin molestos límites de tamaño de archivo",
|
||||
"home.bullet.c.description": "Sube archivos tan grandes como quieras. El único límite es la capacidad de tu disco duro.",
|
||||
"home.bullet.c.description": "Sube archivos del tamaño que desees. Solo el espacio en tu disco duro será tu límite.",
|
||||
"home.button.start": "Comenzar",
|
||||
"home.button.source": "Código fuente",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "¿Olvidaste tu contraseña?",
|
||||
"resetPassword.description": "Ingresa tu correo para restablecer tu contraseña.",
|
||||
"resetPassword.notify.success": "Se ha enviado un mensaje con un enlace para restablecer tu contraseña.",
|
||||
"resetPassword.notify.success": "Se ha enviado un mensaje con un enlace para restablecer tu contraseña si el correo electrónico proporcionado existe.",
|
||||
"resetPassword.button.back": "Volver al inicio de sesión",
|
||||
"resetPassword.text.resetPassword": "Restablecer contraseña",
|
||||
"resetPassword.text.enterNewPassword": "Ingresa tu nueva contraseña",
|
||||
"resetPassword.input.password": "Nueva contraseña",
|
||||
"resetPassword.notify.passwordReset": "Tu contraseña se ha restablecido correctamente.",
|
||||
"resetPassword.notify.passwordReset": "Tu contraseña ha sido restablecida exitosamente.",
|
||||
// /account
|
||||
"account.title": "Mi cuenta",
|
||||
"account.card.info.title": "Información de cuenta",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Contraseña",
|
||||
"account.card.password.old": "Anterior contraseña",
|
||||
"account.card.password.new": "Nueva contraseña",
|
||||
"account.card.password.noPasswordSet": "No tienes una establecida contraseña. Si deseas iniciar sesión con correo electrónico y una contraseña necesitas crear una contraseña.",
|
||||
"account.card.password.noPasswordSet": "No tienes una contraseña configurada. Para iniciar sesión usando tu correo electrónico y contraseña, necesitas crear una contraseña.",
|
||||
"account.notify.password.success": "Contraseña cambiada correctamente",
|
||||
"account.card.oauth.title": "Inicio de sesión con red social",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Desvincular",
|
||||
"account.card.oauth.unlinked": "Desvinculado",
|
||||
"account.modal.unlink.title": "Desvincular cuenta",
|
||||
"account.modal.unlink.description": "Desvincular tus cuentas sociales puede causar que pierdas tu cuenta si no recuerdas tu nombre de usuario y contraseña.",
|
||||
"account.modal.unlink.description": "Desvincular tus cuentas sociales puede hacer que pierdas acceso a tu cuenta si no recuerdas tus credenciales de inicio de sesión",
|
||||
"account.notify.oauth.unlinked.success": "Desvinculado correctamente",
|
||||
"account.card.security.title": "Seguridad",
|
||||
"account.card.security.totp.enable.description": "Ingrese su contraseña actual para habilitar TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Nombre",
|
||||
"account.shares.table.description": "Descripción",
|
||||
"account.shares.table.visitors": "Visitas",
|
||||
"account.shares.table.expiresAt": "Expira en",
|
||||
"account.shares.table.createdAt": "Creado en",
|
||||
"account.shares.table.expiresAt": "Vence el",
|
||||
"account.shares.table.createdAt": "Creado el",
|
||||
"account.shares.table.size": "Tamaño",
|
||||
"account.shares.modal.share-informations": "Información del compartido",
|
||||
"account.shares.modal.share-link": "Enlace",
|
||||
"account.shares.modal.delete.title": "Eliminar compartido {share}",
|
||||
"account.shares.modal.delete.title": "Eliminar enlace compartido: {share}",
|
||||
"account.shares.modal.delete.description": "¿Seguro que quieres eliminar este compartido?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Año",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Años",
|
||||
"account.reverseShares.modal.max-size.label": "Tamaño máximo del compartido",
|
||||
"account.reverseShares.modal.send-email": "Enviar notificación por correo",
|
||||
"account.reverseShares.modal.send-email.description": "Enviar una notificación por correo cuando se comparta algo con este enlace de compartición inversa.",
|
||||
"account.reverseShares.modal.send-email": "Enviar notificaciones por correo electrónico",
|
||||
"account.reverseShares.modal.send-email.description": "Te envía una notificación por correo electrónico cuando se crea un enlace compartido con este enlace de compartición inverso.",
|
||||
"account.reverseShares.modal.simplified": "Modo simple",
|
||||
"account.reverseShares.modal.simplified.description": "Facilita que la persona que suba el archivo comparta el mismo contigo. Serán capaces de personalizar sólo el nombre y la descripción de la compartición.",
|
||||
"account.reverseShares.modal.simplified.description": "Facilita que la persona que sube el archivo lo comparta contigo. Solo podrá personalizar el nombre y la descripción del enlace compartido.",
|
||||
"account.reverseShares.modal.public-access": "Acceso público",
|
||||
"account.reverseShares.modal.public-access.description": "Haz públicas las comparticiones creadas con esta compartición inversa. Si está desactivado, sólo tú y el creador de la compartición pueden verla.",
|
||||
"account.reverseShares.modal.public-access.description": "Haz que los enlaces compartidos creados con este enlace de compartición inverso sean públicos. Si está desactivado, solo tú y el creador del enlace tendrán acceso para verlo.",
|
||||
"account.reverseShares.modal.max-use.label": "Máximo de usos",
|
||||
"account.reverseShares.modal.max-use.description": "Cantidad máxima de veces que esta URL se puede usar para crear un compartido.",
|
||||
"account.reverseShare.never-expires": "Esta compartición inversa nunca expirará.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Nombre de usuario",
|
||||
"admin.users.table.email": "Correo",
|
||||
"admin.users.table.admin": "Administrador",
|
||||
"admin.users.edit.update.title": "Actualizar usuario {username}",
|
||||
"admin.users.edit.update.title": "Editar usuario: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Privilegios de administrador",
|
||||
"admin.users.edit.update.change-password.title": "Cambiar contraseña",
|
||||
"admin.users.edit.update.change-password.field": "Nueva contraseña",
|
||||
"admin.users.edit.update.change-password.button": "Guardar nueva contraseña",
|
||||
"admin.users.edit.update.notify.password.success": "Contraseña cambiada correctamente",
|
||||
"admin.users.edit.delete.title": "Eliminar usuario {username}",
|
||||
"admin.users.edit.delete.description": "¿Realmente quiere eliminar este usuario y todos sus archivos compartidos?",
|
||||
"admin.users.edit.delete.title": "Eliminar usuario: {username} ?",
|
||||
"admin.users.edit.delete.description": "¿Realmente deseas eliminar a este usuario y todos sus enlaces compartidos?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Crear usuario",
|
||||
"admin.users.modal.create.username": "Nombre de usuario",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "ID de compartición",
|
||||
"admin.shares.table.username": "Creador",
|
||||
"admin.shares.table.visitors": "Visitantes",
|
||||
"admin.shares.table.expires": "Expira el",
|
||||
"admin.shares.edit.delete.title": "Eliminar compartido {id}",
|
||||
"admin.shares.table.expires": "Vence el",
|
||||
"admin.shares.edit.delete.title": "Eliminar enlace compartido: {id}",
|
||||
"admin.shares.edit.delete.description": "¿Seguro que quieres eliminar este compartido?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Subir",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Ha ocurrido un error mientras se compartía tu archivo.",
|
||||
"upload.notify.count-failed": "No se pudo cargar {count} archivos. Intentando nuevamente.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Subir archivos",
|
||||
"upload.dropzone.description": "Arrastra archivos aquí para comenzar a compartir. Aceptamos archivos de un tamaño menor a {maxSize} en total.",
|
||||
"upload.dropzone.description": "Arrastra y suelta los archivos aquí para crear tu enlace compartido. Solo aceptamos archivos de hasta {maxSize} en total.",
|
||||
"upload.dropzone.notify.file-too-big": "Tus archivos exceden el tamaño máximo de {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Nombre",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "No has iniciado sesión",
|
||||
"upload.modal.not-signed-in-description": "No podrás eliminar tus compartidos manualmente ni ver el número de visitas.",
|
||||
"upload.modal.expires.never": "nunca",
|
||||
"upload.modal.expires.never-long": "Nunca Expira",
|
||||
"upload.modal.expires.error.too-long": "La caducidad excede la fecha de caducidad máxima de {max}.",
|
||||
"upload.modal.expires.never-long": "Enlace compartido permanente",
|
||||
"upload.modal.expires.error.too-long": "La fecha de expiración excede el máximo de {max}.",
|
||||
"upload.modal.link.label": "Enlace",
|
||||
"upload.modal.expires.label": "Expiración",
|
||||
"upload.modal.expires.minute-singular": "Minuto",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Compartición privada",
|
||||
"share.error.access-denied.description": "La cuenta actual no tiene permiso para acceder a este compartido",
|
||||
"share.modal.password.title": "Se requiere contraseña",
|
||||
"share.modal.password.description": "Por favor ingrese la contraseña para poder acceder a este compartido.",
|
||||
"share.modal.password.description": "Por favor, ingresa la contraseña para acceder a este enlace compartido.",
|
||||
"share.modal.password": "Contraseña",
|
||||
"share.modal.error.invalid-password": "Contraseña inválida",
|
||||
"share.button.download-all": "Descargar todo",
|
||||
"share.notify.download-all-preparing": "Se está preparando el compartido. Intente de nuevo en unos minutos.",
|
||||
"share.notify.download-all-preparing": "El enlace compartido está en preparación. Por favor, inténtalo de nuevo en unos minutos.",
|
||||
"share.modal.file-link": "Enlace del archivo",
|
||||
"share.table.name": "Nombre",
|
||||
"share.table.size": "Tamaño",
|
||||
"share.modal.file-preview.error.not-supported.title": "Vista previa no disponible",
|
||||
"share.modal.file-preview.error.not-supported.description": "La vista previa para este tipo de archivo no está disponible. Por favor descargue el archivo para verlo.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Las vistas previas no son compatibles con este tipo de archivos. Por favor, descargue el archivo para verlo.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Editar {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Nombre de la aplicación",
|
||||
"admin.config.general.app-url": "App URL",
|
||||
"admin.config.general.app-url.description": "En cuál URL está disponible Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Mostrar página de inicio",
|
||||
"admin.config.general.show-home-page.description": "Mostrar o no la página de inicio",
|
||||
"admin.config.general.session-duration": "Duración de la sesión",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Cambia tu logo subiendo una nueva imagen. La imagen debe ser un PNG y debe estar en formato 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Elegir imagen",
|
||||
"admin.config.email.enable-share-email-recipients": "Activar destinatarios por correo",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Si desea permitir a los destinatarios compartir por correo. Activa esto solo si tienes habilitado SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Habilitar compartir por correo electrónico",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Si desea permitir compartir por correo electrónico. Solo habilita esto si SMTP está activado.",
|
||||
"admin.config.email.share-recipients-subject": "Asunto destinatario",
|
||||
"admin.config.email.share-recipients-subject.description": "Asunto del correo el cual es enviado al destinatario del compartido.",
|
||||
"admin.config.email.share-recipients-message": "Mensaje destinatario",
|
||||
"admin.config.email.share-recipients-message.description": "Mensaje el cual es enviado al destinatario del compartido. Variables disponibles:\n{creator} - Nombre del creador del compartido\n {shareUrl} - URL del compartido\n {desc} - Descripción del compartido\n {expires} - Fecha de expiración del compartido\nLas variables serán remplazadas con los valores reales.",
|
||||
"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": "Asunto de la compartición inversa",
|
||||
"admin.config.email.reverse-share-subject.description": "Asunto del correo el cual se envía cuando alguien comparte algo con tu enlace de compartición inversa.",
|
||||
"admin.config.email.reverse-share-subject.description": "Asunto del correo electrónico enviado cuando alguien crea un enlace compartido con tu enlace compartido inverso.",
|
||||
"admin.config.email.reverse-share-message": "Mensaje de la compartición inversa",
|
||||
"admin.config.email.reverse-share-message.description": "Mensaje que se envía cuando alguien comparte algo con tu enlace de compartición inversa. {shareUrl} Se remplazará con el nombre del creador y la URL del compartido.",
|
||||
"admin.config.email.reset-password-subject": "Asunto restablecer contraseña",
|
||||
"admin.config.email.reset-password-subject.description": "Asunto del correo que se envía cuando un usuario solicita restablecer la contraseña.",
|
||||
"admin.config.email.reset-password-subject.description": "Asunto del correo electrónico enviado cuando un usuario solicita un restablecimiento de contraseña.",
|
||||
"admin.config.email.reset-password-message": "Mensaje restablecer contraseña",
|
||||
"admin.config.email.reset-password-message.description": "Mensaje que se envía cuando un usuario solicita restablecer la contraseña. {url} se remplazará con la URL para restablecer la contraseña.",
|
||||
"admin.config.email.invite-subject": "Asunto de la invitación",
|
||||
"admin.config.email.invite-subject.description": "Asunto del correo que se envía cuando un administrador invita a un usuario.",
|
||||
"admin.config.email.invite-subject.description": "Asunto del correo electrónico enviado cuando un administrador invita a un usuario.",
|
||||
"admin.config.email.invite-message": "Mensaje de invitación",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"admin.config.email.invite-message.description": "Mensaje que se envía cuando un administrador invita a un usuario. {url} se reemplazará con la URL de invitación, {email} con el correo electrónico y {password} con la contraseña del usuario.",
|
||||
"admin.config.share.allow-registration": "Permitir registro",
|
||||
"admin.config.share.allow-registration.description": "Si se permite el registro",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Permitir compartir sin iniciar sesión",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Nivel de compresión del Zip",
|
||||
"admin.config.share.zip-compression-level.description": "Ajustar el nivel para equilibrar entre el tamaño del archivo y la velocidad de compresión. Los valores válidos van del 0 al 9, siendo 0 sin compresión y 9 el nivel máximo de compresión. ",
|
||||
"admin.config.share.chunk-size": "Tamaño de los fragmentos",
|
||||
"admin.config.share.chunk-size.description": "Ajusta el tamaño de los fragmentos (en bytes) para tus cargas para equilibrar la eficiencia y la fiabilidad según tu conexión a internet. Fragmentos más pequeños pueden mejorar las tasas de éxito para conexiones inestables, mientras que fragmentos más grandes aceleran las cargas para conexiones estables.",
|
||||
"admin.config.share.chunk-size.description": "Ajusta el tamaño del fragmento (en bytes) para tus subidas y equilibra la eficiencia y la fiabilidad según tu conexión a Internet. Fragmentos más pequeños pueden aumentar las tasas de éxito para conexiones inestables, mientras que fragmentos más grandes hacen que las subidas sean más rápidas para conexiones estables.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto abrir un modal de creación de compartidos",
|
||||
"admin.config.share.auto-open-share-modal.description": "El modal de creación de compartir aparece automáticamente cuando un usuario selecciona archivos, eliminando la necesidad de hacer clic manualmente en el botón.",
|
||||
"admin.config.smtp.enabled": "Habilitado",
|
||||
"admin.config.smtp.enabled": "Habilitar",
|
||||
"admin.config.smtp.enabled.description": "Si SMTP está habilitado. Active solo si ha introducido el host, el puerto, el correo, el usuario y la contraseña de su servidor SMTP.",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "Host del servidor SMTP",
|
||||
"admin.config.smtp.port": "Puerto",
|
||||
"admin.config.smtp.port.description": "Puerto del servidor SMTP",
|
||||
"admin.config.smtp.email": "Correo",
|
||||
"admin.config.smtp.email.description": "Dirección de correo desde la cual se envían los correos",
|
||||
"admin.config.smtp.email.description": "Dirección desde la cual se envían los correos electrónicos",
|
||||
"admin.config.smtp.username": "Usuario",
|
||||
"admin.config.smtp.username.description": "Usuario del servidor SMTP",
|
||||
"admin.config.smtp.password": "Contraseña",
|
||||
@@ -375,54 +380,58 @@ export default {
|
||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||
"admin.config.oauth.microsoft-enabled.description": "Si el inicio de sesión de Microsoft está habilitado",
|
||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||
"admin.config.oauth.microsoft-tenant.description": "Tenant ID of the Microsoft OAuth app\ncommon: Users with both a personal Microsoft account and a work or school account from Microsoft Entra ID can sign in to the application. organizations: Only users with work or school accounts from Microsoft Entra ID can sign in to the application.\nconsumers: Only users with a personal Microsoft account can sign in to the application.\ndomain name of the Microsoft Entra tenant or the tenant ID in GUID format: Only users from a specific Microsoft Entra tenant (directory members with a work or school account or directory guests with a personal Microsoft account) can sign in to the application.",
|
||||
"admin.config.oauth.microsoft-tenant.description": "Tenant ID de la aplicación OAuth de Microsoft\ncomún: Los usuarios con una cuenta personal de Microsoft y una cuenta de trabajo o escuela de Microsoft Entra ID pueden iniciar sesión en la aplicación.\norganizaciones: Solo los usuarios con cuentas de trabajo o escuela de Microsoft Entra ID pueden iniciar sesión en la aplicación.\nconsumidores: Solo los usuarios con una cuenta personal de Microsoft pueden iniciar sesión en la aplicación.\nNombre de dominio del Tenant ID de Microsoft Entra o el Tenant ID en formato GUID: Solo los usuarios de un Tenant específico de Microsoft Entra (miembros del directorio con una cuenta de trabajo o escuela o invitados del directorio con una cuenta personal de Microsoft) pueden iniciar sesión en la aplicación.",
|
||||
"admin.config.oauth.microsoft-client-id": "ID del cliente de Microsoft",
|
||||
"admin.config.oauth.microsoft-client-id.description": "ID de cliente de la app OAuth de Microsoft",
|
||||
"admin.config.oauth.microsoft-client-secret": "Secreto del cliente de Microsoft",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret of the Microsoft OAuth app",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Secreto del cliente de la aplicación OAuth de Microsoft",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Si el inicio de sesión de Discord está habilitado",
|
||||
"admin.config.oauth.discord-limited-guild": "Discord limited server ID",
|
||||
"admin.config.oauth.discord-limited-users": "Usuarios limitados de Discord",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limitar el inicio de sesión a usuarios específicos por su ID de Discord. Deja en blanco para desactivar.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID de servidor limitado de Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Limitar el inicio de sesión a usuarios en un servidor específico. Déjelo en blanco para desactivarlo.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
"admin.config.oauth.discord-client-id.description": "Client ID of the Discord OAuth app",
|
||||
"admin.config.oauth.discord-client-secret": "Discord Client secret",
|
||||
"admin.config.oauth.discord-client-secret.description": "Client secret of the Discord OAuth app",
|
||||
"admin.config.oauth.discord-client-id": "ID de cliente de Discord",
|
||||
"admin.config.oauth.discord-client-id.description": "ID de cliente de la aplicación OAuth de Discord",
|
||||
"admin.config.oauth.discord-client-secret": "Secreto de cliente de Discord",
|
||||
"admin.config.oauth.discord-client-secret.description": "Secreto del cliente de la aplicación OAuth de Discord",
|
||||
"admin.config.oauth.oidc-enabled": "Conexión OpenID",
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
"admin.config.oauth.oidc-role-path.description": "Debe ser una ruta JMES válida que haga referencia a un array de roles. " + "Managing access rights using OpenID Connect roles is only recommended if no other identity provider is configured and password login is disabled. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
|
||||
"admin.config.oauth.oidc-role-general-access": "OpenID Connect role for general access",
|
||||
"admin.config.oauth.oidc-enabled.description": "Si el inicio de sesión de OpenID Connect está habilitado",
|
||||
"admin.config.oauth.oidc-discovery-uri": "URI de descubrimiento de OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "URI de descubrimiento de la aplicación OAuth de OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out": "Cerrar sesión de OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Si el botón \"Cerrar sesión\" cerrará la sesión del proveedor de OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim": "Reclamo de nombre de usuario de OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Reclamo de nombre de usuario en el token de OpenID Connect. Déjalo en blanco si no sabes qué es esta configuración.",
|
||||
"admin.config.oauth.oidc-role-path": "Ruta a los roles en el token de OpenID Connect",
|
||||
"admin.config.oauth.oidc-role-path.description": "Debe ser una ruta JMES válida que haga referencia a un array de roles. " + "Se recomienda gestionar los derechos de acceso utilizando roles de OpenID Connect solo si no se ha configurado ningún otro proveedor de identidad y si el inicio de sesión con contraseña está deshabilitado. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
|
||||
"admin.config.oauth.oidc-role-general-access": "Rol de OpenID Connect para acceso general",
|
||||
"admin.config.oauth.oidc-role-general-access.description": "Rol requerido para acceso general. Debe estar presente en los roles de un usuario para que inicie sesión. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
|
||||
"admin.config.oauth.oidc-role-admin-access": "OpenID Connect role for admin access",
|
||||
"admin.config.oauth.oidc-role-admin-access": "Rol de OpenID Connect para acceso de administrador",
|
||||
"admin.config.oauth.oidc-role-admin-access.description": "Rol requerido para el acceso administrativo. Debe estar presente en los roles de un usuario para acceder al panel de administración. " + "Déjalo en blanco si no sabe lo que es esta configuración.",
|
||||
"admin.config.oauth.oidc-client-id": "OpenID Connect Client ID",
|
||||
"admin.config.oauth.oidc-client-id.description": "Client ID of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Client secret of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-client-id": "ID de Cliente OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-id.description": "ID de cliente de la aplicación OAuth de OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-secret": "Secreto de cliente de OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Secreto del cliente de la aplicación OAuth de OpenID Connect",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled LDAP",
|
||||
"admin.config.ldap.enabled.description": "Use LDAP authentication for user login",
|
||||
"admin.config.ldap.url": "Server URL",
|
||||
"admin.config.ldap.url.description": "URL of the LDAP server",
|
||||
"admin.config.ldap.enabled": "Habilitar LDAP",
|
||||
"admin.config.ldap.enabled.description": "Usar autenticación LDAP para el inicio de sesión de usuarios",
|
||||
"admin.config.ldap.url": "URL del servidor",
|
||||
"admin.config.ldap.url.description": "URL del servidor LDAP",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "Default user which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Usuario predeterminado utilizado para realizar la búsqueda de usuarios",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"admin.config.ldap.search-base": "User base",
|
||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
||||
"admin.config.ldap.search-query": "User query",
|
||||
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||
"admin.config.ldap.admin-groups": "Admin group",
|
||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.bind-password.description": "Contraseña utilizada para realizar la búsqueda de usuarios",
|
||||
"admin.config.ldap.search-base": "Base de usuarios",
|
||||
"admin.config.ldap.search-base.description": "Ubicación base, donde se llevará a cabo la búsqueda de usuarios",
|
||||
"admin.config.ldap.search-query": "Consulta de usuario",
|
||||
"admin.config.ldap.search-query.description": "La consulta de usuario se utilizará para buscar en la 'Base de usuarios' al usuario LDAP. Se puede usar %username% como marcador de posición para la entrada del usuario.",
|
||||
"admin.config.ldap.admin-groups": "Grupo de administración",
|
||||
"admin.config.ldap.admin-groups.description": "Grupo requerido para acceso administrativo.",
|
||||
"admin.config.ldap.field-name-member-of": "Atributo grupos de usuarios",
|
||||
"admin.config.ldap.field-name-member-of.description": "Nombre del atributo LDAP para los grupos de los que es miembro un usuario. Esto se utiliza al verificar el grupo de administración.",
|
||||
"admin.config.ldap.field-name-email": "Atributo correo electrónico del usuario",
|
||||
"admin.config.ldap.field-name-email.description": "Nombre del atributo LDAP para el correo electrónico de un usuario.",
|
||||
// 404
|
||||
"404.description": "Oops esta página no existe.",
|
||||
"404.button.home": "Regrésame al inicio",
|
||||
@@ -440,7 +449,7 @@ export default {
|
||||
"error.msg.not_linked": "Esta cuenta {0} aún no ha sido vinculada a ninguna cuenta.",
|
||||
"error.msg.unverified_account": "Esta cuenta {0} no está verificada, por favor inténtalo de nuevo después de la verificación.",
|
||||
"error.msg.user_not_allowed": "No tienes permitido iniciar sesion.",
|
||||
"error.msg.cannot_get_user_info": "No se puede obtener la información de usuario de la cuenta {0}.",
|
||||
"error.msg.cannot_get_user_info": "No se puede obtener tu información de usuario de esta cuenta {0}.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,9 +467,9 @@ export default {
|
||||
"common.button.generate": "Generar",
|
||||
"common.button.done": "Listo",
|
||||
"common.text.link": "Enlace",
|
||||
"common.text.navigate-to-link": "Ir al enlace",
|
||||
"common.text.navigate-to-link": "Visitar enlace",
|
||||
"common.text.or": "o",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.text.redirecting": "Redirigiendo...",
|
||||
"common.button.go-back": "Volver",
|
||||
"common.button.go-home": "Página de inicio",
|
||||
"common.notify.copied": "Tu enlace se ha copiado al portapapeles",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Correo electrónico no válido",
|
||||
"common.error.too-short": "Debe tener al menos {length} caracteres",
|
||||
"common.error.too-long": "Debe tener como máximo {length} caracteres",
|
||||
"common.error.number-too-small": "Debe ser al menos {min}",
|
||||
"common.error.number-too-large": "Debe ser como máximo {max}",
|
||||
"common.error.exact-length": "Debe tener exactamente {length} caracteres",
|
||||
"common.error.invalid-number": "Debe ser un número",
|
||||
"common.error.field-required": "Este campo es requerido"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Pilvetä",
|
||||
"navbar.signin": "Kirjaudu Sisään",
|
||||
"navbar.home": "Koti",
|
||||
"navbar.signup": "Rekisteröidy",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Minun jakaukset",
|
||||
"navbar.links.reverse": "Takaperin jaetut",
|
||||
"navbar.avatar.account": "Oma tIli",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Itse-Isännöitty",
|
||||
"home.bullet.a.description": "Isännöi \"Pingvin Share\" omalla palvelimellasi.",
|
||||
"home.bullet.b.name": "Yksityisyys",
|
||||
"home.bullet.b.description": "Sinun tiedostosi ovat sinun ja niiden ei ikinä pidä päättyä kolmannen osapuolen käsiin.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Ei ärsyttävää tiedoston kokorajoitusta",
|
||||
"home.bullet.c.description": "Lataa niin paljon isoja tiedostoja kuin tykkäät. Vain kovalevysi on rajana.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Aloita",
|
||||
"home.button.source": "Lähdekoodi",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Unohditko salasanan?",
|
||||
"resetPassword.description": "Kirjoita sähköpostiosoitteesi palauttaaksesi salasanasi.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Takaisin kirjautumiseen",
|
||||
"resetPassword.text.resetPassword": "Nollaa salasana",
|
||||
"resetPassword.text.enterNewPassword": "Anna uusi salasana",
|
||||
"resetPassword.input.password": "Uusi salasana",
|
||||
"resetPassword.notify.passwordReset": "Salasanan nollaus onnistui.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Oma tIli",
|
||||
"account.card.info.title": "Tilin tiedot",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Salasana",
|
||||
"account.card.password.old": "Vanha salasana",
|
||||
"account.card.password.new": "Uusi salasana",
|
||||
"account.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Salasana vaihdettu",
|
||||
"account.card.oauth.title": "Social login",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Unlink",
|
||||
"account.card.oauth.unlinked": "Unlinked",
|
||||
"account.modal.unlink.title": "Unlink account",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.",
|
||||
"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": "Turvallisuus",
|
||||
"account.card.security.totp.enable.description": "Anna nykyinen salasanasi aloittaaksesi TOTP käytön",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Nimi",
|
||||
"account.shares.table.description": "Kuvaus",
|
||||
"account.shares.table.visitors": "Vierailijat",
|
||||
"account.shares.table.expiresAt": "Vanhenee",
|
||||
"account.shares.table.createdAt": "Luotu",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Koko",
|
||||
"account.shares.modal.share-informations": "Jaetun tiedot",
|
||||
"account.shares.modal.share-link": "Jaa linkki",
|
||||
"account.shares.modal.delete.title": "Poista jaettu {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Haluatko todella poistaa tämän jaetun tiedoston/ot?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Vuosi",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Vuotta",
|
||||
"account.reverseShares.modal.max-size.label": "Suurin tiedostonkoko",
|
||||
"account.reverseShares.modal.send-email": "Lähetä sähköposti-ilmoitus",
|
||||
"account.reverseShares.modal.send-email.description": "Lähetä sähköpostiilmoitus kun jako on luotu tällä käänteisellä jakolinkillä.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Käyttökertoja enintään",
|
||||
"account.reverseShares.modal.max-use.description": "Enimmäismäärä kertoja, joilla tämä URL-osoite voidaan käyttää joita luomiseen.",
|
||||
"account.reverseShare.never-expires": "Tämä käänteinen jako ei koskaan vanhene.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Käyttäjätunnus",
|
||||
"admin.users.table.email": "Sähköposti",
|
||||
"admin.users.table.admin": "Ylläpitäjä",
|
||||
"admin.users.edit.update.title": "Päivitä käyttäjä {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Ylläpitäjän oikeudet",
|
||||
"admin.users.edit.update.change-password.title": "Vaihda salasana",
|
||||
"admin.users.edit.update.change-password.field": "Uusi salasana",
|
||||
"admin.users.edit.update.change-password.button": "Tallenna uusi salasana",
|
||||
"admin.users.edit.update.notify.password.success": "Salasana vaihdettu",
|
||||
"admin.users.edit.delete.title": "Poista käyttäjä {username}",
|
||||
"admin.users.edit.delete.description": "Haluatko varmasti poistaa tämän käyttäjän ja kaikki hänen jaot?",
|
||||
"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": "Luo käyttäjä",
|
||||
"admin.users.modal.create.username": "Käyttäjätunnus",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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": "Pilvetä",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Kohdattiin odottamaton virhe jaon luomisessa.",
|
||||
"upload.notify.count-failed": "{count} tiedostoa ei voitu ladata. Yritetään uudelleen.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Pilvetä tiedostoja",
|
||||
"upload.dropzone.description": "Vedä ja pudota tiedostot tähän aloittaaksesi jakamisen. Voimme hyväksyä vain tiedostot, jotka ovat yhteensä alle {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Tiedostojen enimmäiskoko ylittää {maxSize} -arvon enimmäismäärän.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Nimi",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Et ole kirjautunut sisään",
|
||||
"upload.modal.not-signed-in-description": "Et voi poistaa jakoasi manuaalisesti ja tarkastella kävijöiden määrää.",
|
||||
"upload.modal.expires.never": "ei koskaan",
|
||||
"upload.modal.expires.never-long": "Ei vanhene koskaan",
|
||||
"upload.modal.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Linkki",
|
||||
"upload.modal.expires.label": "Vanhentuminen",
|
||||
"upload.modal.expires.minute-singular": "Minuutti",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "Salasana vaaditaan",
|
||||
"share.modal.password.description": "Päästäksesi käsiksi tähän jakoon anna jaon salasana.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Salasana",
|
||||
"share.modal.error.invalid-password": "Virheellinen salasana",
|
||||
"share.button.download-all": "Lataa kaikki",
|
||||
"share.notify.download-all-preparing": "Jako on valmistumassa. Yritä uudelleen muutaman minuutin kuluttua.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Tiedoston linkki",
|
||||
"share.table.name": "Nimi",
|
||||
"share.table.size": "Koko",
|
||||
"share.modal.file-preview.error.not-supported.title": "Esikatselua ei tuettu",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Edit {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Sovelluksen nimi",
|
||||
"admin.config.general.app-url": "Sovelluksen URL",
|
||||
"admin.config.general.app-url.description": "Millä URL-osoitteella Pingvin Share on saatavilla",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Näytä kotisivu",
|
||||
"admin.config.general.show-home-page.description": "Näytetäänkö kotisivu vai ei",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Muuta logoa lataamalla uusi kuva. Kuvan on oltava PNG ja sen on oltava formaatti 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Valitse kuva",
|
||||
"admin.config.email.enable-share-email-recipients": "Salli sähköpostin vastaanottajien jakaminen",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Salli sähköpostien jakaminen vastaanottajille. Ota tämä käyttöön vain, jos olet ottanut SMTP:n käyttöön.",
|
||||
"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": "Sähköpostijaon otsikko",
|
||||
"admin.config.email.share-recipients-subject.description": "Sähköpostin aihe, joka saa lähetetään jaon vastaanottajille.",
|
||||
"admin.config.email.share-recipients-message": "Sähköpostijaon viesti",
|
||||
"admin.config.email.share-recipients-message.description": "Viesti joka lähetetään jaon vastaanottajille. Saatavilla olevat muuttujat:\n {creator} - Jaon luojan käyttäjänimi\n {shareUrl} - Jaon URL\n {desc} - Jaon kuvaus\n {expires} - Jaon päättymispäivä\n Muuttujat korvataan todellisella arvolla.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Käänteisen jaon aihe",
|
||||
"admin.config.email.reverse-share-subject.description": "Aihe sähköpostin joka lähetetään kun joku loi jaon käänteisen jakolinkin kanssa.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Käänteisen jakoviestin viesti",
|
||||
"admin.config.email.reverse-share-message.description": "Viesti joka lähetetään kun joku loi jaon käänteisen jakolinkin kanssa. {shareUrl} korvataan luojan nimellä ja jaon URL:lla.",
|
||||
"admin.config.email.reset-password-subject": "Nollaa salasanan aihe",
|
||||
"admin.config.email.reset-password-subject.description": "Sähköpostin aihe, joka lähetetään kun käyttäjä pyytää salasanan palauttamista.",
|
||||
"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": "Nollaa salasanan viesti",
|
||||
"admin.config.email.reset-password-message.description": "Viesti joka lähetetään kun käyttäjä pyytää salasanan nollausta. {url} korvataan nollaussalasanan URL-osoitteella.",
|
||||
"admin.config.email.invite-subject": "Kutsun aihe",
|
||||
"admin.config.email.invite-subject.description": "Sähköpostin aihe, mikä lähetetään kun ylläpitäjä kutsuu käyttäjää.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Kutsun viesti",
|
||||
"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 password of the user.",
|
||||
"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": "Salli rekisteröinti",
|
||||
"admin.config.share.allow-registration.description": "Onko rekisteröinti sallittu",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Salli anonyymit jaot",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip puristustaso",
|
||||
"admin.config.share.zip-compression-level.description": "Säädä tasoa tiedoston koon ja pakkausnopeuden välillä. Kelvolliset arvot vaihtelevat 0–9, 0 ei puristusta ja 9 on suurin puristusvoima. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Käytössä",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Onko SMTP käytössä. Aseta tämä todeksi vain, jos olet syöttänyt SMTP-palvelimen isäntän, portin, sähköpostin, käyttäjän ja salasanan.",
|
||||
"admin.config.smtp.host": "Isäntä",
|
||||
"admin.config.smtp.host.description": "SMTP palvelimen isäntä",
|
||||
"admin.config.smtp.port": "Portti",
|
||||
"admin.config.smtp.port.description": "SMTP palvelimen portti",
|
||||
"admin.config.smtp.email": "Sähköposti",
|
||||
"admin.config.smtp.email.description": "Sähköpostiosoite, josta sähköpostit on lähetetty",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Käyttäjätunnus",
|
||||
"admin.config.smtp.username.description": "SMTP palvelimen käyttäjänimi",
|
||||
"admin.config.smtp.password": "Salasana",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"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 haven't linked to any account yet.",
|
||||
"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": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Luo",
|
||||
"common.button.done": "Valmis",
|
||||
"common.text.link": "Linkki",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "tai",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Takaisin",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Virheellinen sähköpostiosoite",
|
||||
"common.error.too-short": "Täytyy olla vähintään {length} merkkiä",
|
||||
"common.error.too-long": "Täytyy olla enintään {length} merkkiä",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "On oltava tarkasti {length} merkkiä pitkä",
|
||||
"common.error.invalid-number": "Pitää olla luku",
|
||||
"common.error.field-required": "Tämä kenttä on pakollinen"
|
||||
|
||||
@@ -11,14 +11,14 @@ export default {
|
||||
"navbar.avatar.signout": "Se déconnecter",
|
||||
// END navbar
|
||||
// /
|
||||
"home.title": "Une plateforme de partage de fichier <h>auto-hébergée</h>.",
|
||||
"home.title": "Une plateforme de partage de fichiers <h>autohébergée</h>.",
|
||||
"home.description": "Voulez-vous vraiment remettre vos fichiers personnels dans les mains de tiers comme WeTransfer ?",
|
||||
"home.bullet.a.name": "Auto-hébergé",
|
||||
"home.bullet.a.description": "Hébergez Pingvin Share sur votre propre machine.",
|
||||
"home.bullet.b.name": "Confidentialité",
|
||||
"home.bullet.b.description": "Vos fichiers sont vos fichiers et ne devraient jamais être mis entre les mains de tiers.",
|
||||
"home.bullet.b.description": "Vos fichiers sont les vôtres et ne seront jamais consultés par des tiers.",
|
||||
"home.bullet.c.name": "Aucune rébarbative limite de taille",
|
||||
"home.bullet.c.description": "Téléchargez des fichiers aussi volumineux que vous le souhaitez. Seul votre disque dur est la limite.",
|
||||
"home.bullet.c.description": "Téléchargez des fichiers aussi volumineux que vous le souhaitez. Votre disque dur est votre limite.",
|
||||
"home.button.start": "Commencer",
|
||||
"home.button.source": "Code source",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Mot de passe oublié ?",
|
||||
"resetPassword.description": "Saisissez votre courriel pour réinitialiser votre mot de passe.",
|
||||
"resetPassword.notify.success": "Un message avec un lien pour réinitialiser votre mot de passe a été envoyé si le courriel existe.",
|
||||
"resetPassword.notify.success": "Un message avec un lien pour réinitialiser votre mot de passe a été envoyé si le courriel fourni existe.",
|
||||
"resetPassword.button.back": "Retour à la page de connexion",
|
||||
"resetPassword.text.resetPassword": "Réinitialiser le mot de passe",
|
||||
"resetPassword.text.enterNewPassword": "Saisissez votre nouveau mot de passe",
|
||||
"resetPassword.input.password": "Nouveau mot de passe",
|
||||
"resetPassword.notify.passwordReset": "Votre mot de passe a bien été réinitialisé.",
|
||||
"resetPassword.notify.passwordReset": "Votre mot de passe a été réinitialisé avec succès.",
|
||||
// /account
|
||||
"account.title": "Mon compte",
|
||||
"account.card.info.title": "Détails du compte",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Mot de passe",
|
||||
"account.card.password.old": "Ancien mot de passe",
|
||||
"account.card.password.new": "Nouveau mot de passe",
|
||||
"account.card.password.noPasswordSet": "Vous n’avez pas de mot de passe défini. Si vous voulez vous connecter avec un e-mail et un mot de passe, vous devez définir un mot de passe.",
|
||||
"account.card.password.noPasswordSet": "Vous n’avez pas de mot de passe défini. Si vous voulez vous connecter avec un courriel et un mot de passe, vous devez définir un mot de passe.",
|
||||
"account.notify.password.success": "Le mot de passe a été modifié avec succès",
|
||||
"account.card.oauth.title": "Identifiant social",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,20 +85,20 @@ export default {
|
||||
"account.card.oauth.unlink": "Dissocier",
|
||||
"account.card.oauth.unlinked": "Dissocié",
|
||||
"account.modal.unlink.title": "Dissocier le compte",
|
||||
"account.modal.unlink.description": "Dissocier vos comptes de réseaux sociaux peut vous faire perdre votre compte si jamais vous ne vous souvenez pas de votre nom d’utilisateur et de votre mot de passe.",
|
||||
"account.modal.unlink.description": "Délier vos réseaux sociaux peut vous faire perdre votre compte si vous ne vous souvenez pas de vos identifiants de connexion",
|
||||
"account.notify.oauth.unlinked.success": "Dissocié avec succès",
|
||||
"account.card.security.title": "Sécurité",
|
||||
"account.card.security.totp.enable.description": "Entrez votre mot de passe actuel pour activer TOTP",
|
||||
"account.card.security.totp.disable.description": "Entrez votre mot de passe actuel pour désactiver TOTP",
|
||||
"account.card.security.totp.button.start": "Démarrer",
|
||||
"account.modal.totp.title": "Activer TOTP",
|
||||
"account.modal.totp.step1": "Étape 1 : Ajouter votre authentificateur",
|
||||
"account.modal.totp.title": "Activer la double authentification",
|
||||
"account.modal.totp.step1": "Étape 1 : Ajouter votre authentification",
|
||||
"account.modal.totp.step2": "Étape 2 : Valider votre code",
|
||||
"account.modal.totp.enterManually": "Saisir manuellement",
|
||||
"account.modal.totp.code": "Code",
|
||||
"common.button.clickToCopy": "Cliquez pour copier",
|
||||
"account.modal.totp.verify": "Vérifier",
|
||||
"account.notify.totp.disable": "TOTP désactivé avec succès",
|
||||
"account.notify.totp.disable": "Double authentification (TOTP) désactivé avec succès",
|
||||
"account.notify.totp.enable": "TOTP activé avec succès",
|
||||
"account.card.language.title": "Langue",
|
||||
"account.card.language.description": "Le projet est traduit par la communauté. Certaines traductions peuvent être incomplètes.",
|
||||
@@ -126,7 +126,7 @@ export default {
|
||||
"account.shares.table.size": "Taille",
|
||||
"account.shares.modal.share-informations": "Détails du partage",
|
||||
"account.shares.modal.share-link": "Lien de partage",
|
||||
"account.shares.modal.delete.title": "Supprimer le partage {share}",
|
||||
"account.shares.modal.delete.title": "Supprimer le partage : {share}",
|
||||
"account.shares.modal.delete.description": "Voulez-vous vraiment supprimer ce partage ?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,13 +150,13 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "An",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Ans",
|
||||
"account.reverseShares.modal.max-size.label": "Taille maximale du partage",
|
||||
"account.reverseShares.modal.send-email": "Envoyer un courriel de notification",
|
||||
"account.reverseShares.modal.send-email.description": "Envoyer une notification par courriel lorsqu'un partage est créé depuis ce partage inversé.",
|
||||
"account.reverseShares.modal.send-email": "Envoyer des notifications par courriel",
|
||||
"account.reverseShares.modal.send-email.description": "Vous envoi une notification par courriel lorsqu'un partage est créé avec ce lien de partage inversé.",
|
||||
"account.reverseShares.modal.simplified": "Mode simple",
|
||||
"account.reverseShares.modal.simplified.description": "Simplifiez la tâche de la personne qui télécharge le fichier pour le partager avec vous. Ils ne pourront personnaliser que le nom et la description du partage.",
|
||||
"account.reverseShares.modal.simplified.description": "Simplifiez la tâche à la personne qui vous partage un fichier. Ils ne pourront que personnaliser le nom et la description du partage.",
|
||||
"account.reverseShares.modal.public-access": "Accès public",
|
||||
"account.reverseShares.modal.public-access.description": "Rendre les partages créés avec ce partage inversé public. Si désactivé, seul vous et le créateur du partage pouvez le voir.",
|
||||
"account.reverseShares.modal.max-use.label": "Nombre d'utilisation max",
|
||||
"account.reverseShares.modal.public-access.description": "Rendre les partages créés avec ce partage inversé public. Si désactivé, seul vous et le créateur du partage pourrez le voir.",
|
||||
"account.reverseShares.modal.max-use.label": "Nombre d'utilisations max",
|
||||
"account.reverseShares.modal.max-use.description": "Le nombre maximal de fois que cette URL peut être utilisée pour créer un partage.",
|
||||
"account.reverseShare.never-expires": "Ce partage inversé n'expirera jamais.",
|
||||
"account.reverseShare.expires-on": "Ce partage inversé expirera le {expiration}.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Surnom",
|
||||
"admin.users.table.email": "Courriel",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Modifier l'utilisateur {username}",
|
||||
"admin.users.edit.update.title": "Modifier l'utilisateur : {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Privilèges d’admin",
|
||||
"admin.users.edit.update.change-password.title": "Changer le mot de passe",
|
||||
"admin.users.edit.update.change-password.field": "Nouveau mot de passe",
|
||||
"admin.users.edit.update.change-password.button": "Enregistrer le nouveau mot de passe",
|
||||
"admin.users.edit.update.notify.password.success": "Le mot de passe a été modifié",
|
||||
"admin.users.edit.delete.title": "Supprimer l'utilisateur {username}",
|
||||
"admin.users.edit.delete.description": "Voulez-vous vraiment supprimer cet utilisateur et toutes ses partages ?",
|
||||
"admin.users.edit.delete.title": "Supprimer l'utilisateur : {username} ?",
|
||||
"admin.users.edit.delete.description": "Souhaitez-vous vraiment supprimer cet utilisateur et tous ses partages ?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Créer un utilisateur",
|
||||
"admin.users.modal.create.username": "Surnom",
|
||||
@@ -207,16 +207,19 @@ export default {
|
||||
"admin.shares.table.username": "Créateur",
|
||||
"admin.shares.table.visitors": "Visiteurs",
|
||||
"admin.shares.table.expires": "Expire le",
|
||||
"admin.shares.edit.delete.title": "Supprimer le partage {id}",
|
||||
"admin.shares.edit.delete.title": "Supprimer le partage : {id}",
|
||||
"admin.shares.edit.delete.description": "Voulez-vous vraiment supprimer ce partage ?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Envoyer",
|
||||
"upload.notify.confirm-leave": "Êtes-vous sûr de vouloir quitter cette page ? Votre envoi sera annulé.",
|
||||
"upload.notify.generic-error": "Une erreur est survenue durant le traitement de votre partage.",
|
||||
"upload.notify.count-failed": "{count} fichier(s) n’a(ont) pas pu être envoyé(s). Veuillez réessayer.",
|
||||
"upload.reverse-share.error.invalid.title": "Lien de partage inversé invalide",
|
||||
"upload.reverse-share.error.invalid.description": "Ce partage inversé a expiré ou n'est pas valide.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Téléverser des fichiers",
|
||||
"upload.dropzone.description": "Glissez-déposez des fichiers ici pour commencer votre partage. Ils ne peuvent avoir une taille supérieure à {maxSize} au total.",
|
||||
"upload.dropzone.description": "Glisser-déposer les fichiers ici pour commencer votre partage. Nous n'acceptons que les fichiers jusqu'à {maxSize} au total.",
|
||||
"upload.dropzone.notify.file-too-big": "Vos fichiers dépassent la taille maximale de {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Nom",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Vous n'êtes pas connecté",
|
||||
"upload.modal.not-signed-in-description": "Vous ne pourrez pas supprimer votre partage manuellement et afficher le nombre de visiteurs.",
|
||||
"upload.modal.expires.never": "jamais",
|
||||
"upload.modal.expires.never-long": "N’expire jamais",
|
||||
"upload.modal.expires.error.too-long": "L’expiration dépasse la date d'expiration du {max}.",
|
||||
"upload.modal.expires.never-long": "Partage permanent",
|
||||
"upload.modal.expires.error.too-long": "La date d'expiration dépasse le maximum de {max}.",
|
||||
"upload.modal.link.label": "Lien",
|
||||
"upload.modal.expires.label": "Expiration",
|
||||
"upload.modal.expires.minute-singular": "Minute",
|
||||
@@ -272,7 +275,7 @@ export default {
|
||||
"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.modal.password.title": "Mot de passe requis",
|
||||
"share.modal.password.description": "Pour accéder à ce partage, veuillez entrer le mot de passe du partage.",
|
||||
"share.modal.password.description": "Veuillez entrer le mot de passe d'accès à ce partage.",
|
||||
"share.modal.password": "Mot de passe",
|
||||
"share.modal.error.invalid-password": "Mot de passe incorrect",
|
||||
"share.button.download-all": "Télécharger tout",
|
||||
@@ -281,7 +284,7 @@ export default {
|
||||
"share.table.name": "Nom",
|
||||
"share.table.size": "Taille",
|
||||
"share.modal.file-preview.error.not-supported.title": "Aperçu non supporté",
|
||||
"share.modal.file-preview.error.not-supported.description": "Un aperçu de ce type de fichier n'est pas pris en charge. Veuillez télécharger le fichier pour le visualiser.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Les aperçus ne sont pas pris en charge pour ce type de fichiers. Veuillez télécharger le fichier pour le voir.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Modifier {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Le nom de l’application",
|
||||
"admin.config.general.app-url": "URL de l’appli",
|
||||
"admin.config.general.app-url.description": "Depuis quel URL le partage Pingvin est disponible",
|
||||
"admin.config.general.secure-cookies": "Cookies sécurisés",
|
||||
"admin.config.general.secure-cookies.description": "Définir ou non le marquage sécurisé sur les cookies. Si activé, le site ne fonctionnera pas lorsqu'il est accédé via HTTP.",
|
||||
"admin.config.general.show-home-page": "Afficher la page d’accueil",
|
||||
"admin.config.general.show-home-page.description": "Afficher ou non la page d’accueil",
|
||||
"admin.config.general.session-duration": "Durée de la session",
|
||||
@@ -307,12 +312,12 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Changez de logo en envoyant une nouvelle image. L’image doit être au format PNG et doit avoir un ratio 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Sélectionner une image",
|
||||
"admin.config.email.enable-share-email-recipients": "Autoriser le partage par courriel",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Permet d'envoyer le lien du partage par courriel. N'activez cette option que si vous avez activé SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Activer le partage par courriel",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Autoriser ou non le partage de courriels avec les destinataires. N'activer cette option que si SMTP est activé.",
|
||||
"admin.config.email.share-recipients-subject": "Sujet d’un partage",
|
||||
"admin.config.email.share-recipients-subject.description": "Intitulé du courriel envoyé aux destinataires d’un partage.",
|
||||
"admin.config.email.share-recipients-message": "Message d’un partage",
|
||||
"admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage. Variables possibles :\n• {creator} : Le pseudo de l’auteur du partage\n• {shareUrl} : L’URL du partage\n• {desc} : La description du partage\n• {expires} : La date d'expiration du partage\nLes variables seront remplacées par leur valeur réelle.",
|
||||
"admin.config.email.share-recipients-message.description": "Contenu du courriel qui est envoyé aux destinataires du partage. Variables possibles :\n {creator} - Le nom d'utilisateur du créateur du partage\n {creatorEmail} - L'adresse mail du créateur du partage\n {shareUrl} - L'URL du partage\n {desc} - La description du partage\n {expires} - La date d'expiration du partage.\n Ces variables seront remplacées par leur valeur effective.",
|
||||
"admin.config.email.reverse-share-subject": "Sujet d’un partage inversé",
|
||||
"admin.config.email.reverse-share-subject.description": "Intitulé du courriel envoyé lorsque quelqu’un a partagé des fichiers depuis votre partage inversé.",
|
||||
"admin.config.email.reverse-share-message": "Message d’un partage inversé",
|
||||
@@ -326,11 +331,14 @@ export default {
|
||||
"admin.config.email.invite-message": "Message d’une invitation",
|
||||
"admin.config.email.invite-message.description": "Message qui est envoyé lorsqu'un administrateur invite un utilisateur. {url} sera remplacé avec l'URL d'invitation, {email} avec le courriel et {password} avec le mot de passe de l'utilisateur.",
|
||||
"admin.config.share.allow-registration": "Autoriser les inscriptions",
|
||||
"admin.config.share.allow-registration.description": "Permet aux visiteurs de créer un compte.",
|
||||
"admin.config.share.allow-registration.description": "Permet aux visiteurs de créer un compte",
|
||||
"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.max-expiration": "Échéance",
|
||||
"admin.config.share.max-expiration.description": "Échéance du partage en heures. Indiquez 0 pour qu’il n’expire jamais.",
|
||||
"admin.config.share.share-id-length": "Taille de l'identifiant généré",
|
||||
"admin.config.share.share-id-length.description":
|
||||
"Taille par défaut de l'identifiant généré pour un partage. Cette valeur est aussi utilisée pour générer les liens des partages inverses. Une valeur inférieure à 8 n'est pas considérée sûre.",
|
||||
"admin.config.share.max-size": "Taille max",
|
||||
"admin.config.share.max-size.description": "Taille maximale du partage en octets",
|
||||
"admin.config.share.zip-compression-level": "Niveau de compression",
|
||||
@@ -356,8 +364,8 @@ export default {
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Ne permettez ceci que si vous avez besoin de faire confiance aux certificats autosignés.",
|
||||
"admin.config.oauth.allow-registration": "Autoriser l’inscription",
|
||||
"admin.config.oauth.allow-registration.description": "Permettre aux utilisateurs de s’inscrire via leur identifiant social",
|
||||
"admin.config.oauth.ignore-totp": "Ignorer TOTP",
|
||||
"admin.config.oauth.ignore-totp.description": "Ignorer le TOTP lorsque l’utilisateur utilise un identifiant social.",
|
||||
"admin.config.oauth.ignore-totp": "Ignorer double authentification TOTP",
|
||||
"admin.config.oauth.ignore-totp.description": "Ignorer la double-authentification (TOTP) lorsque l’utilisateur utilise un identifiant social",
|
||||
"admin.config.oauth.disable-password": "Désactiver la connexion par mot de passe",
|
||||
"admin.config.oauth.disable-password.description": "Désactive la connexion par mot de passe\nAssurez-vous qu’un fournisseur OAuth soit correctement configuré avant d’activer cette configuration pour éviter d'être enfermé.",
|
||||
"admin.config.oauth.github-enabled": "GitHub",
|
||||
@@ -381,7 +389,9 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret": "Secret du client Microsoft",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Le secret du client de l’application Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Permettre la connexion via Discord.",
|
||||
"admin.config.oauth.discord-enabled.description": "Permettre la connexion via Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Utilisateurs limités sur Discord",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limiter la connexion à des utilisateurs spécifiques par leur identifiant Discord. Laissez vide pour désactiver.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID de serveur restreint Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Limiter la connexion aux utilisateurs sur un serveur spécifique. Laissez vide pour désactiver.",
|
||||
"admin.config.oauth.discord-client-id": "ID du client Discord",
|
||||
@@ -392,6 +402,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Permettre la connexion via OpenID",
|
||||
"admin.config.oauth.oidc-discovery-uri": "URI de découverte OpenID",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "L’URI de découverte de la connexion à l'application OpenID OAuth",
|
||||
"admin.config.oauth.oidc-sign-out": "Déconnexion du fournisseur OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Si activé, le bouton \"Déconnexion\" vous déconnectera également du fournisseur d'identité OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim": "Revendication du nom d’utilisateur OpenID",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Le champ contenant la revendication du nom d’utilisateur dans le jeton OpenID Connect. Laissez vide si vous ne savez pas quoi indiquer.",
|
||||
"admin.config.oauth.oidc-role-path": "Chemin vers les rôles dans le jeton OpenID Connect",
|
||||
@@ -409,20 +421,20 @@ export default {
|
||||
"admin.config.ldap.enabled.description": "Utiliser l'authentification LDAP pour la connexion de l'utilisateur",
|
||||
"admin.config.ldap.url": "URL du serveur",
|
||||
"admin.config.ldap.url.description": "URL du serveur LDAP",
|
||||
"admin.config.ldap.bind-dn": "Lier le DN",
|
||||
"admin.config.ldap.bind-dn.description": "Utilisateur par défaut qui sera utilisé pour exécuter la recherche de l'utilisateur",
|
||||
"admin.config.ldap.bind-password": "Lier le mot de passe",
|
||||
"admin.config.ldap.bind-password.description": "Mot de passe pour l'utilisateur recherché",
|
||||
"admin.config.ldap.bind-dn": "DN de liaison",
|
||||
"admin.config.ldap.bind-dn.description": "Utilisateur par défaut utilisé pour effectuer la recherche de l'utilisateur",
|
||||
"admin.config.ldap.bind-password": "Mot de passe de liaison",
|
||||
"admin.config.ldap.bind-password.description": "Mot de passe utilisé pour effectuer la recherche de l'utilisateur",
|
||||
"admin.config.ldap.search-base": "Base d'utilisateurs",
|
||||
"admin.config.ldap.search-base.description": "Emplacement de base, où la recherche de l'utilisateur sera effectuée",
|
||||
"admin.config.ldap.search-query": "Requête utilisateur",
|
||||
"admin.config.ldap.search-query.description": "La requête utilisateur sera utilisée pour rechercher dans la ‘base d'utilisateurs’ de l'utilisateur LDAP. %username% peut être utilisé comme espace réservé pour les entrées données par l'utilisateur.",
|
||||
"admin.config.ldap.admin-groups": "Groupe administrateur",
|
||||
"admin.config.ldap.admin-groups.description": "Un groupe est nécessaire pour un accès administratif.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.field-name-member-of": "Nom de l'attribut des groupes d'utilisateurs",
|
||||
"admin.config.ldap.field-name-member-of.description": "Nom d'attribut LDAP pour les groupes dont un utilisateur est membre. Il est utilisé lors de la vérification du groupe d'administrateurs.",
|
||||
"admin.config.ldap.field-name-email": "Nom d'attribut de l'e-mail de l'utilisateur",
|
||||
"admin.config.ldap.field-name-email.description": "Nom d'attribut LDAP pour l'e-mail d'un utilisateur.",
|
||||
// 404
|
||||
"404.description": "Désolé, mais cette page n’existe pas.",
|
||||
"404.button.home": "Retour à l’accueil",
|
||||
@@ -458,7 +470,7 @@ export default {
|
||||
"common.button.generate": "Générer",
|
||||
"common.button.done": "Terminer",
|
||||
"common.text.link": "Lien",
|
||||
"common.text.navigate-to-link": "Accéder au lien",
|
||||
"common.text.navigate-to-link": "Visiter le lien",
|
||||
"common.text.or": "ou",
|
||||
"common.text.redirecting": "Redirection...",
|
||||
"common.button.go-back": "Précédent",
|
||||
@@ -470,6 +482,8 @@ export default {
|
||||
"common.error.invalid-email": "Adresse courriel invalide",
|
||||
"common.error.too-short": "Doit comporter au moins {length} caractères",
|
||||
"common.error.too-long": "Doit comporter au plus {length} caractères",
|
||||
"common.error.number-too-small": "Doit être au moins {min}",
|
||||
"common.error.number-too-large": "Doit être au plus {max}",
|
||||
"common.error.exact-length": "Doit comporter exactement {length} caractères",
|
||||
"common.error.invalid-number": "Doit être un nombre",
|
||||
"common.error.field-required": "Ce champ est obligatoire"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Feltöltés",
|
||||
"navbar.signin": "Bejelentkezés",
|
||||
"navbar.home": "Home",
|
||||
"navbar.signup": "Feliratkozás",
|
||||
"navbar.signup": "Regisztráció",
|
||||
"navbar.links.shares": "Megosztásaim",
|
||||
"navbar.links.reverse": "Fordított megosztások",
|
||||
"navbar.avatar.account": "Fiókom",
|
||||
@@ -16,7 +16,7 @@ export default {
|
||||
"home.bullet.a.name": "Saját üzemeltetés",
|
||||
"home.bullet.a.description": "A Pingvin Share megosztót saját gépéről futtathatja.",
|
||||
"home.bullet.b.name": "Adatvédelem",
|
||||
"home.bullet.b.description": "A saját fájlok személyesek és semmi keresnivalójuk harmadik feleknél.",
|
||||
"home.bullet.b.description": "A te fájljaid a tiéd, és harmadik felek soha nem férnek hozzá.",
|
||||
"home.bullet.c.name": "Nincs bosszantó fájl méretkorlát",
|
||||
"home.bullet.c.description": "Akkora fájlokat oszt meg, amekkorákat csak akar. Határt csak a lemezterület szab.",
|
||||
"home.button.start": "Nosza, kezdjük",
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Elfelejtette jelszavát?",
|
||||
"resetPassword.description": "Adja meg emailcímét a jelszó alaphelyzetbe állításához.",
|
||||
"resetPassword.notify.success": "A jelszó visszaállítására szolgáló linket tartalmazó üzenetet küldtünk, ha az e-mail létezik.",
|
||||
"resetPassword.notify.success": "A jelszó visszaállítására szolgáló linket tartalmazó üzenetet küldtünk, abban az esetben, ha az e-mail létezik.",
|
||||
"resetPassword.button.back": "Vissza a bejelentkezési oldalra",
|
||||
"resetPassword.text.resetPassword": "Jelszó alaphelyzetbe állítása",
|
||||
"resetPassword.text.enterNewPassword": "Adja meg új jelszavát",
|
||||
"resetPassword.input.password": "Új jelszó",
|
||||
"resetPassword.notify.passwordReset": "Sikeresen megadta az új jelszót.",
|
||||
"resetPassword.notify.passwordReset": "A jelszavát sikeresen helyreállította.",
|
||||
// /account
|
||||
"account.title": "Fiókom",
|
||||
"account.card.info.title": "Fiókinformáció",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Leválasztás",
|
||||
"account.card.oauth.unlinked": "Leválasztva",
|
||||
"account.modal.unlink.title": "Fiók leválasztása",
|
||||
"account.modal.unlink.description": "A közösségi hálón keresztül csatolt fiók leválasztásával elveszítheti hozzáférését a fiókhoz, ha a név és jelszó kombinációra nem emlékszik.",
|
||||
"account.modal.unlink.description": "A közösségi hálón keresztül csatolt fiók leválasztásával elveszítheti hozzáférését a fiókhoz, ha a név és jelszó kombinációra nem emlékszik",
|
||||
"account.notify.oauth.unlinked.success": "Leválasztás sikeres",
|
||||
"account.card.security.title": "Biztonság",
|
||||
"account.card.security.totp.enable.description": "Adja meg az aktuális jelszavát a TOTP engedélyezéséhez",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Megnevezés",
|
||||
"account.shares.table.description": "Leírás",
|
||||
"account.shares.table.visitors": "Látogatók",
|
||||
"account.shares.table.expiresAt": "Lejárat",
|
||||
"account.shares.table.createdAt": "Létrehozás időpontja",
|
||||
"account.shares.table.expiresAt": "Lejár",
|
||||
"account.shares.table.createdAt": "Létrehozva",
|
||||
"account.shares.table.size": "Méret",
|
||||
"account.shares.modal.share-informations": "Megosztás adatai",
|
||||
"account.shares.modal.share-link": "Hivatkozás",
|
||||
"account.shares.modal.delete.title": "Törlés: {share}",
|
||||
"account.shares.modal.delete.title": "Megosztás törlése: {share}",
|
||||
"account.shares.modal.delete.description": "Biztos abban, hogy törölni kívánja ezt a megosztást?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,8 +150,8 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "év",
|
||||
"account.reverseShares.modal.expiration.year-plural": "év",
|
||||
"account.reverseShares.modal.max-size.label": "Megosztás megengedett max mérete",
|
||||
"account.reverseShares.modal.send-email": "Email értesítés küldése",
|
||||
"account.reverseShares.modal.send-email.description": "Email értesítés arról, amikor a fordított megosztási hivatkozást használva megosztást hoznak létre.",
|
||||
"account.reverseShares.modal.send-email": "E-mail értesítések",
|
||||
"account.reverseShares.modal.send-email.description": "E-mailben értesít, amikor a fordított megosztási hivatkozást használva megosztást hoznak létre.",
|
||||
"account.reverseShares.modal.simplified": "Egyszerű mód",
|
||||
"account.reverseShares.modal.simplified.description": "A fájlt feltöltő személy számára egyszerűsíthető az Önnel történő megosztás. A megosztásnak csak a neve és a leírása módosítható.",
|
||||
"account.reverseShares.modal.public-access": "Nyilvános megosztás",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Felhasználónév",
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.admin": "Admin ügyek",
|
||||
"admin.users.edit.update.title": "{username} felhasználó frissítése",
|
||||
"admin.users.edit.update.title": "{username} felhasználó szerkesztése",
|
||||
"admin.users.edit.update.admin-privileges": "Adminisztrátori jogosultságok",
|
||||
"admin.users.edit.update.change-password.title": "Jelszó módosítása",
|
||||
"admin.users.edit.update.change-password.field": "Új jelszó",
|
||||
"admin.users.edit.update.change-password.button": "Új jelszó mentése",
|
||||
"admin.users.edit.update.notify.password.success": "A jelszó sikeresen frissítésre került",
|
||||
"admin.users.edit.delete.title": "{username} felhasználó törlése",
|
||||
"admin.users.edit.delete.description": "Valóban törölni kívánja ezt a felhasználót és vele az ő minden egyes megosztását?",
|
||||
"admin.users.edit.delete.title": "{username} felhasználó törlése ?",
|
||||
"admin.users.edit.delete.description": "Biztosan törölni szeretné ezt a felhasználót és az összes megosztását?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Felhasználó létrehozása",
|
||||
"admin.users.modal.create.username": "Felhasználónév",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Megosztás ID",
|
||||
"admin.shares.table.username": "Létrehozó",
|
||||
"admin.shares.table.visitors": "Látogatók",
|
||||
"admin.shares.table.expires": "Lejárat",
|
||||
"admin.shares.edit.delete.title": "{id} megosztás törlése",
|
||||
"admin.shares.table.expires": "Lejár",
|
||||
"admin.shares.edit.delete.title": "Megosztás törlése: {id}",
|
||||
"admin.shares.edit.delete.description": "Valóban törölni kívánja ezt a megosztást?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Feltöltés",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Hiba lépett fel a megosztás befejezése közben.",
|
||||
"upload.notify.count-failed": "{count} darab fájlt nem sikerült feltölteni. Próbálja ismét.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Fájlok feltöltése",
|
||||
"upload.dropzone.description": "Húzza ide a fájlokat a megosztás elkészítéséhez. Összesen legfeljebb {maxSize} fájl húzható egy megosztásba.",
|
||||
"upload.dropzone.description": "Húzza ide a fájlokat a megosztás elkészítéséhez. Legfeljebb {maxSize} fájl húzható egy megosztásba.",
|
||||
"upload.dropzone.notify.file-too-big": "A fájlok mérete meghaladja a megengedett {maxSize} méretet.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Megnevezés",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Nincs bejelentkezve",
|
||||
"upload.modal.not-signed-in-description": "Nem lesz képes megosztását kézzel törölni vagy megtekinteni a látogatók számát.",
|
||||
"upload.modal.expires.never": "soha",
|
||||
"upload.modal.expires.never-long": "Nincs lejárat",
|
||||
"upload.modal.expires.error.too-long": "A lejárat meghaladja a megengedett max {max} értéket.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Hivatkozás",
|
||||
"upload.modal.expires.label": "Lejárat",
|
||||
"upload.modal.expires.minute-singular": "perc",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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.modal.password.title": "Jelszó szükséges",
|
||||
"share.modal.password.description": "A megosztott tartalom eléréséhez adja meg a megosztás jelszavát.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Jelszó",
|
||||
"share.modal.error.invalid-password": "Érvénytelen jelszó",
|
||||
"share.button.download-all": "Mindet letölti",
|
||||
"share.notify.download-all-preparing": "A megosztás éppen előkészületben. Kérjük próbálja újra néhány perc múlva.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Fájl hivatkozás",
|
||||
"share.table.name": "Megnevezés",
|
||||
"share.table.size": "Méret",
|
||||
"share.modal.file-preview.error.not-supported.title": "Az előnézetek nem támogatottak",
|
||||
"share.modal.file-preview.error.not-supported.description": "E fájltípushoz nincsen támogatott előnézet. Töltse le a fájlt a megtekintéshez.",
|
||||
"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": "Módosítás: {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Az alkalmazás neve",
|
||||
"admin.config.general.app-url": "Alkalmazás URL hivatkozás",
|
||||
"admin.config.general.app-url.description": "A Pingvin Share megosztáskezelőre mutató hivatkozás",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Kezdőlap mutatása",
|
||||
"admin.config.general.show-home-page.description": "A kezdőlap mutatásának ki- és bekapcsolása",
|
||||
"admin.config.general.session-duration": "Munkamenet időtartama",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logó",
|
||||
"admin.config.general.logo.description": "A logó személyessé tételéhez töltsön fel egy új képet. A formátum legyen PNG, az oldalarány 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Kép kiválasztása",
|
||||
"admin.config.email.enable-share-email-recipients": "Megosztás emailben küldésének engedélyezése",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Email küldése a megosztásról a címzetteknek. Csak akkor engedélyezze, ha az SMTP már engedélyezett.",
|
||||
"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": "Megosztási email tárgya",
|
||||
"admin.config.email.share-recipients-subject.description": "A megosztások címzettjeinek küldött email tárgya.",
|
||||
"admin.config.email.share-recipients-message": "Megosztási email szövege",
|
||||
"admin.config.email.share-recipients-message.description": "A megosztás címzettjeinek küldött email tartalma. Beépíthető változók:\n {creator} - A megosztás létrehozójának neve\n {shareUrl} - A megosztás URL hivatkozása\n {desc} - A megosztás ismertetése\n {expires} - A megosztás lejáratának dátuma\n A változók helyén az aktuális tartalom fog szerepelni.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Fordított megosztás tárgya",
|
||||
"admin.config.email.reverse-share-subject.description": "Annak az emailnek a tárgya, ami a fordított megosztást használva készített megosztásról kerül kiküldésre.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Fordított megosztás üzenete",
|
||||
"admin.config.email.reverse-share-message.description": "Az Ön által kiküldött fordított megosztási hivatkozás használatával készített megosztás emailjének szövege. A(z) {shareUrl} helyére a létrehozó neve és a megosztás URL hivatkozása kerül.",
|
||||
"admin.config.email.reset-password-subject": "Jelszó visszaállítási tárgy",
|
||||
"admin.config.email.reset-password-subject.description": "A felhasználó által kezdeményezett jelszó visszaállításkor küldött email tárgya.",
|
||||
"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": "Jelszó visszaállítási üzenet",
|
||||
"admin.config.email.reset-password-message.description": "A felhasználó által kezdeményezett jelszó visszaállításkor küldött email szövege. A(z) {url} helyére a jelszó visszaállítási URL hivatkozás kerül.",
|
||||
"admin.config.email.invite-subject": "Meghívó tárgya",
|
||||
"admin.config.email.invite-subject.description": "Az adminisztrátortól a meghívott felhasználó felé küldött email tárgya.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Meghívó szövege",
|
||||
"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 password of the user.",
|
||||
"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": "Regisztráció engedélyezése",
|
||||
"admin.config.share.allow-registration.description": "Regisztráció engedélyezésének ki- és bekapcsolása",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Hitelesítés nélküli megosztások engedélyezése",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip tömörítési szint",
|
||||
"admin.config.share.zip-compression-level.description": "A fájlméret és a tömörítésre fordított idő közötti választás. Az érték 0 - 9 közül választható, 0: nincs tömörítés, 9: legnagyobb mértékű tömörítés. ",
|
||||
"admin.config.share.chunk-size": "Darabolási méret",
|
||||
"admin.config.share.chunk-size.description": "Az internet kapcsolat megbízhatóságának és átvitelének megfelelően választható feltöltési darabok mérete bájtban. A kisebb darabok növelhetik a szakadozó kapcsolatok használatának sikerességét, a nagyobb darabok a stabil kapcsolatokat gyorsítják.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Megosztás létrehozása felület automatikus megjelenítése",
|
||||
"admin.config.share.auto-open-share-modal.description": "A mgosztás létrehozása előugró elem automatikusan megjelenik a fájlok kiválasztásakor, ehhez nem szükséges külön kattintani.",
|
||||
"admin.config.smtp.enabled": "Engedélyezett",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "A(z) SMTP bekapcsolása. Csak akkor engedélyezze, ha már megadta a kiszolgáló, port, email, felhasználónév és jelszó beállításokat az SMTP kiszolgálóhoz.",
|
||||
"admin.config.smtp.host": "Kiszolgáló",
|
||||
"admin.config.smtp.host.description": "Az SMTP szerver kiszolgáló gépe",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "Az SMTP kiszolgáló portja",
|
||||
"admin.config.smtp.email": "Email",
|
||||
"admin.config.smtp.email.description": "Az emailek kiküldésére használt email cím",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Felhasználónév",
|
||||
"admin.config.smtp.username.description": "Felhasználónév az SMTP kiszolgálón",
|
||||
"admin.config.smtp.password": "Jelszó",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "A Microsoft Oauth applikáció ügyfél titka",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Discord bejelentkezés engedélyezése",
|
||||
"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 limitált kiszolgáló ID azonosítója",
|
||||
"admin.config.oauth.discord-limited-guild.description": "A kiszolgálón engedélyezett bejelentkezett felhasználók száma. Hagyja üresen a kikapcsoláshoz.",
|
||||
"admin.config.oauth.discord-client-id": "Discord ügyfél ID azonosító",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "OpenID Connect bejelentkezés engedélyezése",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Az OpenID Connect OAuth applikáció Discovery URI azonosítója",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect felhasználónév igény",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Az OpenID Connect ID token felhasználónév igénye. Hagyja üresen ha nincs információja a beállításról.",
|
||||
"admin.config.oauth.oidc-role-path": "Az OpenID Connect token szerepeinek elérési útvonala",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect ügyfél titok",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Az OpenID Connect OAuth applikáció ügyfél titka",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "LDAP engedélyezve",
|
||||
"admin.config.ldap.enabled": "Enable LDAP",
|
||||
"admin.config.ldap.enabled.description": "LDAP hitelesítés használata a felhasználói beléptetéshez",
|
||||
"admin.config.ldap.url": "Kiszolgáló URL",
|
||||
"admin.config.ldap.url.description": "Az LDAP kiszolgáló URL címe",
|
||||
"admin.config.ldap.bind-dn": "DN csatolása",
|
||||
"admin.config.ldap.bind-dn.description": "A felhasználókeresés végrehajtásában használt alapértelmezett felhasználó",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Jelszó csatolása",
|
||||
"admin.config.ldap.bind-password.description": "A felhasználókeresés felhasználójának jelszava",
|
||||
"admin.config.ldap.bind-password.description": "Password used to perform the user search",
|
||||
"admin.config.ldap.search-base": "Felhasználóbázis",
|
||||
"admin.config.ldap.search-base.description": "A felhasználókeresés végrehajtásának helye",
|
||||
"admin.config.ldap.search-query": "Felhasználó lekérdezés",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "A(z) {0} fiókhoz kapcsolt felhasználó nem létezik.",
|
||||
"error.msg.no_email": "Nem nyerhető ki a(z) {0} fiók emailcíme.",
|
||||
"error.msg.already_linked": "Ez a(z) {0} fiók már kapcsolódik egy másik fiókhoz.",
|
||||
"error.msg.not_linked": "Ez a(z){0} fiók még nem kapcsolódott egyetlen fiókhoz sem.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Ezt a(z) {0} fiókot még nem igazolták vissza, kérem próbálja újra a megerősítés után.",
|
||||
"error.msg.user_not_allowed": "Nem jelentkezhet be.",
|
||||
"error.msg.cannot_get_user_info": "Nem nyerhető ki felhasználói információ ebből a(z) {0} fiókból.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Létrehozás",
|
||||
"common.button.done": "Kész",
|
||||
"common.text.link": "Hivatkozás",
|
||||
"common.text.navigate-to-link": "Ugrás a hivatkozásra",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "vagy",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Vissza",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Érvénytelen emailcím",
|
||||
"common.error.too-short": "Legalább {length} karakter kell",
|
||||
"common.error.too-long": "Legfejlebb {length} karakter adható meg",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Pontosan {length} karakter szükséges",
|
||||
"common.error.invalid-number": "Számot kell megadnia",
|
||||
"common.error.field-required": "Ez egy kötelező mező"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Carica",
|
||||
"navbar.signin": "Accedi",
|
||||
"navbar.home": "Home",
|
||||
"navbar.signup": "Registrati",
|
||||
"navbar.signup": "Registrazione",
|
||||
"navbar.links.shares": "Le mie condivisioni",
|
||||
"navbar.links.reverse": "Condivisioni Inverse",
|
||||
"navbar.avatar.account": "Il mio account",
|
||||
@@ -16,7 +16,7 @@ export default {
|
||||
"home.bullet.a.name": "Self-hosted",
|
||||
"home.bullet.a.description": "Configura Pingvin Share sul tuo server.",
|
||||
"home.bullet.b.name": "Privacy",
|
||||
"home.bullet.b.description": "I tuoi file sono i tuoi file e non dovrebbero mai entrare nelle mani di terzi.",
|
||||
"home.bullet.b.description": "I tuoi file sono tuoi e non saranno mai accessibili da terze parti.",
|
||||
"home.bullet.c.name": "Nessun fastidioso limite alle dimensioni dei files",
|
||||
"home.bullet.c.description": "Carica file grandi quanto vuoi. Solo il tuo disco rigido sarà il tuo limite.",
|
||||
"home.button.start": "Inizia adesso",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Scollega",
|
||||
"account.card.oauth.unlinked": "Scollegato",
|
||||
"account.modal.unlink.title": "Scollega account",
|
||||
"account.modal.unlink.description": "Scollegare i tuoi account social potrebbe causare la perdita del tuo account se non ricordi il tuo nome utente e la password.",
|
||||
"account.modal.unlink.description": "Scollegare i tuoi account social potrebbe causare la perdita del tuo account se non ricordi il tuo nome utente e la password",
|
||||
"account.notify.oauth.unlinked.success": "Disconnessione Riuscita",
|
||||
"account.card.security.title": "Sicurezza",
|
||||
"account.card.security.totp.enable.description": "Inserisci la tua password attuale per iniziare ad abilitare TOTP",
|
||||
@@ -121,7 +121,7 @@ export default {
|
||||
"account.shares.table.name": "Nome",
|
||||
"account.shares.table.description": "Descrizione",
|
||||
"account.shares.table.visitors": "Visitatori",
|
||||
"account.shares.table.expiresAt": "Scadenza",
|
||||
"account.shares.table.expiresAt": "Scade il",
|
||||
"account.shares.table.createdAt": "Creato il",
|
||||
"account.shares.table.size": "Dimensione",
|
||||
"account.shares.modal.share-informations": "Condividi le informazioni",
|
||||
@@ -150,7 +150,7 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Anno",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Anni",
|
||||
"account.reverseShares.modal.max-size.label": "Dimensione massima della condivisione",
|
||||
"account.reverseShares.modal.send-email": "Invia una notifica via email",
|
||||
"account.reverseShares.modal.send-email": "Invio notifiche email",
|
||||
"account.reverseShares.modal.send-email.description": "Invia una notifica email quando viene creata una condivisione con questo link di condivisione inversa.",
|
||||
"account.reverseShares.modal.simplified": "Modalità semplificata",
|
||||
"account.reverseShares.modal.simplified.description": "Rendi facile la condivisione con te per la persona che carica il file. Potranno personalizzare solo il nome e la descrizione della condivisione.",
|
||||
@@ -189,7 +189,7 @@ export default {
|
||||
"admin.users.edit.update.change-password.field": "Nuova password",
|
||||
"admin.users.edit.update.change-password.button": "Salva la nuova password",
|
||||
"admin.users.edit.update.notify.password.success": "Password cambiata con successo",
|
||||
"admin.users.edit.delete.title": "Elimina l'utente: {username}",
|
||||
"admin.users.edit.delete.title": "Elimina l'utente: {username} ?",
|
||||
"admin.users.edit.delete.description": "Vuoi davvero eliminare questo utente e tutte le sue condivisioni?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Crea utente",
|
||||
@@ -212,8 +212,11 @@ export default {
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Carica",
|
||||
"upload.notify.confirm-leave": "Sei sicuro di voler lasciare questa pagina? Il tuo caricamento verrà annullato.",
|
||||
"upload.notify.generic-error": "Si è verificato un errore durante il completamento della condivisione.",
|
||||
"upload.notify.count-failed": "Impossibile caricare {count} file. Riprovare.",
|
||||
"upload.reverse-share.error.invalid.title": "Link di condivisione inversa non valido",
|
||||
"upload.reverse-share.error.invalid.description": "Questa condivisione inversa è scaduta o non è valida.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Carica File",
|
||||
"upload.dropzone.description": "Trascina qui i file per iniziare la tua condivisione. Possiamo accettare solo i file che sono inferiori a {maxSize} in totale.",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Non sei loggato",
|
||||
"upload.modal.not-signed-in-description": "Non sarai in grado di eliminare la tua condivisione manualmente e visualizzare il numero dei visitatori.",
|
||||
"upload.modal.expires.never": "mai",
|
||||
"upload.modal.expires.never-long": "Non Scade Mai",
|
||||
"upload.modal.expires.error.too-long": "La scadenza supera la data di scadenza massima di {max}.",
|
||||
"upload.modal.expires.never-long": "Condivisione permanente",
|
||||
"upload.modal.expires.error.too-long": "La data di scadenza supera il massimo di {max}.",
|
||||
"upload.modal.link.label": "Collegamento",
|
||||
"upload.modal.expires.label": "Valido fino a",
|
||||
"upload.modal.expires.minute-singular": "Minuto",
|
||||
@@ -272,7 +275,7 @@ export default {
|
||||
"share.error.access-denied.title": "Condivisione privata",
|
||||
"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.description": "Per accedere a questa condivisione inserisci la password.",
|
||||
"share.modal.password.description": "Inserisci la password per accedere a questa condivisione.",
|
||||
"share.modal.password": "Password",
|
||||
"share.modal.error.invalid-password": "Password non valida",
|
||||
"share.button.download-all": "Scarica tutto",
|
||||
@@ -281,7 +284,7 @@ export default {
|
||||
"share.table.name": "Nome",
|
||||
"share.table.size": "Dimensione",
|
||||
"share.modal.file-preview.error.not-supported.title": "Anteprima non supportata",
|
||||
"share.modal.file-preview.error.not-supported.description": "Un'anteprima per questo tipo di file non è supportata. Per favore scarica il file per visualizzarlo.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Le anteprime non sono supportate per questo tipo di file. Scarica il file per visualizzarlo.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Modifica {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Nome dell' applicazione",
|
||||
"admin.config.general.app-url": "URL dell'App",
|
||||
"admin.config.general.app-url.description": "Su quale URL Pingvin Share è pubblicato",
|
||||
"admin.config.general.secure-cookies": "Cookie sicuri",
|
||||
"admin.config.general.secure-cookies.description": "Indica se impostare il contrassegno sicuro sui cookie. Se abilitato, il sito non funzionerà quando si accede tramite HTTP.",
|
||||
"admin.config.general.show-home-page": "Visualizza Home Page",
|
||||
"admin.config.general.show-home-page.description": "Indica se mostrare la home page",
|
||||
"admin.config.general.session-duration": "Durata della sessione",
|
||||
@@ -307,12 +312,12 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Cambia il tuo logo caricando una nuova immagine. L'immagine deve essere un PNG e dovrebbe avere il formato 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Scegli un'immagine",
|
||||
"admin.config.email.enable-share-email-recipients": "Abilita le email di notifica",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Indica se consentire la spedizione di email di notifica sulle share. Abilita questa opzione solo se hai abilitato SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Abilita condivisione del destinatario email",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Indica se consentire la condivisione email con i destinatari. Abilitare questa opzione solo se SMTP è attivato.",
|
||||
"admin.config.email.share-recipients-subject": "Oggetto dell'email di condivisione",
|
||||
"admin.config.email.share-recipients-subject.description": "Oggetto dell'email che viene inviata ai destinatari della condivisione.",
|
||||
"admin.config.email.share-recipients-message": "Testo dell'email di condivisione",
|
||||
"admin.config.email.share-recipients-message.description": "Messaggio che viene inviato ai destinatari della condivisione. Variabili disponibili:\n {creator} - Il nome utente del creatore della condivisione\n {shareUrl} - L'URL della condivisione\n {desc} - La descrizione della condivisione\n {expires} - La data di scadenza della condivisione\n Le variabili saranno sostituite con il valore effettivo.",
|
||||
"admin.config.email.share-recipients-message.description": "Messaggio che viene inviato ai destinatari della condivisione. Variabili disponibili:\n {creator} - Il nome utente del creatore della condivisione\n {creatorEmail} - L' email del creatore della condivisione\n {shareUrl} - L'URL della condivisione\n {desc} - La descrizione della condivisione\n {expires} - La data di scadenza della condivisione\n Le variabili saranno sostituite con il valore effettivo.",
|
||||
"admin.config.email.reverse-share-subject": "Oggetto dell'email di condivisione inversa",
|
||||
"admin.config.email.reverse-share-subject.description": "Oggetto dell'email che viene inviata quando qualcuno ha creato una condivisione con il tuo link di condivisione inversa.",
|
||||
"admin.config.email.reverse-share-message": "Testo dell'email di condivisione inversa",
|
||||
@@ -339,7 +344,7 @@ export default {
|
||||
"admin.config.share.chunk-size.description": "Regola la dimensione del chunk (in byte) per i tuoi caricamenti per bilanciare l'efficienza e l'affidabilità in base alla tua connessione internet. I chunk più piccoli possono migliorare i tassi di successo per connessioni instabili, mentre i chunks più grandi velocizzano i caricamenti per connessioni stabili.",
|
||||
"admin.config.share.auto-open-share-modal": "Apertura automatica creazione modalità condivisione",
|
||||
"admin.config.share.auto-open-share-modal.description": "La modalità di creazione della condivisione viene visualizzata automaticamente quando un utente seleziona i file, eliminando la necessità di fare clic manualmente sul pulsante.",
|
||||
"admin.config.smtp.enabled": "Abilitato",
|
||||
"admin.config.smtp.enabled": "Abilita",
|
||||
"admin.config.smtp.enabled.description": "Indica se SMTP è abilitato. Impostalo a VERO solo se hai inserito host, porta, email, utente e password del tuo server SMTP.",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "Host del server SMTP",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret dell'app Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Se l'accesso tramite Discord è abilitato",
|
||||
"admin.config.oauth.discord-limited-users": "Utenti limitati Discord",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limita l'accesso a specifici utenti dal loro ID Discord. Lascialo vuoto per disabilitare.",
|
||||
"admin.config.oauth.discord-limited-guild": "Limita a un particolare server ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Limita l'accesso agli utenti in un server specifico. Lascialo vuoto per disabilitare.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Se il login tramite OpenID Connect è abilitato",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "URI di scoperta dell'app OAuth di OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out": "Esci da OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Se premuto, il pulsante “Disconnettersi” disconnetterà dal provider OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim": "Richiesta nome utente OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Nome utente nel token OpenID Connect. Lascialo vuoto se non sai cos'è questa configurazione.",
|
||||
"admin.config.oauth.oidc-role-path": "Percorso verso i ruoli in OpenID Connect token",
|
||||
@@ -405,24 +414,24 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Client secret dell'app OAuth OpenID Connect",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "LDAP Abilitato",
|
||||
"admin.config.ldap.enabled": "Abilita LDAP",
|
||||
"admin.config.ldap.enabled.description": "Usa autenticazione LDAP per l'accesso utente",
|
||||
"admin.config.ldap.url": "Server Url",
|
||||
"admin.config.ldap.url.description": "URL del server LDAP",
|
||||
"admin.config.ldap.bind-dn": "Associa DN",
|
||||
"admin.config.ldap.bind-dn.description": "Utente predefinito che verrà usato per eseguire la ricerca utente",
|
||||
"admin.config.ldap.bind-dn.description": "Utente predefinito usato per eseguire la ricerca utente",
|
||||
"admin.config.ldap.bind-password": "Associa password",
|
||||
"admin.config.ldap.bind-password.description": "Password per l'utente di ricerca",
|
||||
"admin.config.ldap.bind-password.description": "Password utilizzata per eseguire la ricerca utente",
|
||||
"admin.config.ldap.search-base": "Base utenti",
|
||||
"admin.config.ldap.search-base.description": "Posizione di base, dove verrà eseguita la ricerca dell'utente",
|
||||
"admin.config.ldap.search-query": "Interrogazione utente",
|
||||
"admin.config.ldap.search-query.description": "La query utente verrà utilizzata per cercare la 'base utente' per l'utente LDAP. %username% può essere usato come segnaposto per l'input dato dall'utente.",
|
||||
"admin.config.ldap.admin-groups": "Gruppo di amministrazione",
|
||||
"admin.config.ldap.admin-groups.description": "Gruppo richiesto per l’accesso amministrativo.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.field-name-member-of": "Nome dell'attributo per il gruppo utenti",
|
||||
"admin.config.ldap.field-name-member-of.description": "Nome attributo LDAP per i gruppi, di cui un utente è membro. Questo viene utilizzato per controllare il gruppo amministratore.",
|
||||
"admin.config.ldap.field-name-email": "Nome dell'attributo email dell'utente",
|
||||
"admin.config.ldap.field-name-email.description": "Nome attributo LDAP per l'email di un utente.",
|
||||
// 404
|
||||
"404.description": "Ops, questa pagina non esiste.",
|
||||
"404.button.home": "Riportami a casa",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Genera",
|
||||
"common.button.done": "Fatto",
|
||||
"common.text.link": "Collegamento",
|
||||
"common.text.navigate-to-link": "Vai al collegamento",
|
||||
"common.text.navigate-to-link": "Visita il link",
|
||||
"common.text.or": "o",
|
||||
"common.text.redirecting": "Reindirizzamento...",
|
||||
"common.button.go-back": "Torna indietro",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Indirizzo email non valido",
|
||||
"common.error.too-short": "Deve contenere almeno {length} caratteri",
|
||||
"common.error.too-long": "Deve contenere al massimo {length} caratteri",
|
||||
"common.error.number-too-small": "Deve essere almeno {min}",
|
||||
"common.error.number-too-large": "Deve essere al massimo {max}",
|
||||
"common.error.exact-length": "Deve essere esattamente {length} caratteri",
|
||||
"common.error.invalid-number": "Deve essere un numero",
|
||||
"common.error.field-required": "Questo campo è obbligatorio"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "アップロード",
|
||||
"navbar.signin": "サインイン",
|
||||
"navbar.home": "ホーム",
|
||||
"navbar.signup": "会員登録",
|
||||
"navbar.signup": "新規登録",
|
||||
"navbar.links.shares": "自分の共有",
|
||||
"navbar.links.reverse": "ファイルリクエスト",
|
||||
"navbar.avatar.account": "マイアカウント",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "セルフホスト",
|
||||
"home.bullet.a.description": "Pingvin Shareをあなたのマシンでホストしましょう。",
|
||||
"home.bullet.b.name": "プライバシー",
|
||||
"home.bullet.b.description": "あなたのファイルはあなたのものであり、決して第三者の手に入るべきではありません。",
|
||||
"home.bullet.b.description": "あなたのファイルはあなたのものであり、第三者がアクセスすることは決してありません。",
|
||||
"home.bullet.c.name": "ファイルサイズ制限に悩まされることはありません",
|
||||
"home.bullet.c.description": "大きなファイルもアップロード。ストレージのサイズだけが唯一の制限です。",
|
||||
"home.bullet.c.description": "必要なだけ大きなファイルをアップロードできます。制限があるのはハードドライブのみです。",
|
||||
"home.button.start": "始めましょう",
|
||||
"home.button.source": "ソースコード",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "パスワードを忘れてしまいましたか?",
|
||||
"resetPassword.description": "登録しているメールアドレスを入力してください。",
|
||||
"resetPassword.notify.success": "電子メールが存在する場合、パスワードをリセットするためのリンクを含むメッセージが送信されました。",
|
||||
"resetPassword.notify.success": "指定されたメールアドレスが存在する場合、パスワードをリセットするためのリンクを含むメッセージが送信されました。",
|
||||
"resetPassword.button.back": "サインインページに戻る",
|
||||
"resetPassword.text.resetPassword": "パスワードをリセット",
|
||||
"resetPassword.text.enterNewPassword": "新規パスワードを入力",
|
||||
"resetPassword.input.password": "新規パスワード",
|
||||
"resetPassword.notify.passwordReset": "パスワードのリセットに成功しました。",
|
||||
"resetPassword.notify.passwordReset": "パスワードが正常にリセットされました。",
|
||||
// /account
|
||||
"account.title": "マイアカウント",
|
||||
"account.card.info.title": "アカウント情報",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "パスワード",
|
||||
"account.card.password.old": "現在のパスワード",
|
||||
"account.card.password.new": "新規パスワード",
|
||||
"account.card.password.noPasswordSet": "パスワードが設定されていません。メールアドレスとパスワードでサインインしたい場合は、パスワードの設定が必要です。",
|
||||
"account.card.password.noPasswordSet": "パスワードが設定されていません。メールアドレスとパスワードを使用してサインインするには、パスワードを作成する必要があります。",
|
||||
"account.notify.password.success": "パスワードの変更に成功しました",
|
||||
"account.card.oauth.title": "ソーシャルログイン",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "リンク解除",
|
||||
"account.card.oauth.unlinked": "リンクされていません",
|
||||
"account.modal.unlink.title": "アカウントのリンクを解除",
|
||||
"account.modal.unlink.description": "ソーシャルアカウントのリンクを解除すると、ユーザー名とパスワードを覚えていない場合にアカウントへのアクセスが失われる可能性があります。",
|
||||
"account.modal.unlink.description": "ソーシャルアカウントのリンクを解除すると、ログイン認証情報を忘れた場合、アカウントを失う可能性があります。",
|
||||
"account.notify.oauth.unlinked.success": "リンク解除に成功しました",
|
||||
"account.card.security.title": "セキュリティ",
|
||||
"account.card.security.totp.enable.description": "2段階認証を有効にするため、現在のパスワードを入力してください",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "名前",
|
||||
"account.shares.table.description": "説明",
|
||||
"account.shares.table.visitors": "訪問者",
|
||||
"account.shares.table.expiresAt": "有効期限:",
|
||||
"account.shares.table.createdAt": "作成日:",
|
||||
"account.shares.table.expiresAt": "有効期限",
|
||||
"account.shares.table.createdAt": "作成日",
|
||||
"account.shares.table.size": "サイズ",
|
||||
"account.shares.modal.share-informations": "共有情報",
|
||||
"account.shares.modal.share-link": "共有リンク",
|
||||
"account.shares.modal.delete.title": "共有を削除 {share}",
|
||||
"account.shares.modal.delete.title": "共有を削除: {share}",
|
||||
"account.shares.modal.delete.description": "この共有を削除してもよろしいですか?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -151,11 +151,11 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-plural": "年間",
|
||||
"account.reverseShares.modal.max-size.label": "最大ファイルサイズ",
|
||||
"account.reverseShares.modal.send-email": "メール通知を送信",
|
||||
"account.reverseShares.modal.send-email.description": "このファイルリクエストリンクを使用して、ファイルがアップロードされた場合にメールで通知します。",
|
||||
"account.reverseShares.modal.send-email.description": "このファイルリクエストリンクを使用して共有が作成されるとメール通知が送信されます。",
|
||||
"account.reverseShares.modal.simplified": "シンプルモード",
|
||||
"account.reverseShares.modal.simplified.description": "ファイルをアップロードする人が簡単に共有できるようにします。共有の名前と説明のみをカスタマイズできます。",
|
||||
"account.reverseShares.modal.simplified.description": "ファイルをアップロードした人が簡単に共有できるようにします。共有の名前と説明のみをカスタマイズできます。",
|
||||
"account.reverseShares.modal.public-access": "公開アクセス",
|
||||
"account.reverseShares.modal.public-access.description": "このファイルリクエストで作成された共有を公開にします。無効にすると、あなたと共有の作成者のみが閲覧できます。",
|
||||
"account.reverseShares.modal.public-access.description": "このファイルリクエストで作成された共有を公開します。無効にするとあなたと共有作成者だけが共有を表示できます。",
|
||||
"account.reverseShares.modal.max-use.label": "最大回数",
|
||||
"account.reverseShares.modal.max-use.description": "このURLを使用してファイルをアップロードできる最大回数です。",
|
||||
"account.reverseShare.never-expires": "このファイルリクエストリンクは期限切れになりません。",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "ユーザー名",
|
||||
"admin.users.table.email": "メールアドレス",
|
||||
"admin.users.table.admin": "管理画面",
|
||||
"admin.users.edit.update.title": "ユーザー「{username}」を更新",
|
||||
"admin.users.edit.update.title": "ユーザーの編集: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "管理者権限",
|
||||
"admin.users.edit.update.change-password.title": "パスワードを変更",
|
||||
"admin.users.edit.update.change-password.field": "新規パスワード",
|
||||
"admin.users.edit.update.change-password.button": "新しいパスワードを保存",
|
||||
"admin.users.edit.update.notify.password.success": "パスワードの変更に成功しました",
|
||||
"admin.users.edit.delete.title": "ユーザーを削除 {username}",
|
||||
"admin.users.edit.delete.description": "このユーザーとこのユーザーに関連する全てのファイルアップロードを削除してもよろしいですか?",
|
||||
"admin.users.edit.delete.title": "ユーザーを削除: {username}?",
|
||||
"admin.users.edit.delete.description": "このユーザーとそのすべての共有を本当に削除しますか?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "ユーザーを作成",
|
||||
"admin.users.modal.create.username": "ユーザー名",
|
||||
@@ -207,16 +207,19 @@ export default {
|
||||
"admin.shares.table.username": "作成者",
|
||||
"admin.shares.table.visitors": "訪問者",
|
||||
"admin.shares.table.expires": "有効期限",
|
||||
"admin.shares.edit.delete.title": "共有 {id} を削除",
|
||||
"admin.shares.edit.delete.title": "共有を削除: {id}",
|
||||
"admin.shares.edit.delete.description": "この共有を削除してもよろしいですか?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "アップロード",
|
||||
"upload.notify.confirm-leave": "このページから離れますか?アップロードはキャンセルされます。",
|
||||
"upload.notify.generic-error": "共有を仕上げている最中にエラーが発生しました。",
|
||||
"upload.notify.count-failed": "{count} ファイルがアップロードに失敗しました。再度お試しください。",
|
||||
"upload.reverse-share.error.invalid.title": "無効なファイルリクエストリンク",
|
||||
"upload.reverse-share.error.invalid.description": "このファイルリクエストは期限が切れているか無効です。",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "ファイルをアップロード",
|
||||
"upload.dropzone.description": "ここにファイルをドラッグしてアップロードを開始しましょう。{maxSize} 以下のファイルがアップロードできます。",
|
||||
"upload.dropzone.description": "共有を開始するにはここにファイルをドラッグ&ドロップしてください。受け入れ可能なファイルの合計サイズは{maxSize}までです。",
|
||||
"upload.dropzone.notify.file-too-big": "アップロードしようとしたファイルは、最大ファイルサイズの{maxSize} を超えています。",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "ファイル名",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "サインインしていません",
|
||||
"upload.modal.not-signed-in-description": "共有の手動削除と訪問者カウンターは表示できません。",
|
||||
"upload.modal.expires.never": "永久",
|
||||
"upload.modal.expires.never-long": "期限切れにさせない",
|
||||
"upload.modal.expires.error.too-long": "設定可能な有効期限を越えています。有効期限の上限は{max} です。",
|
||||
"upload.modal.expires.never-long": "永久シェア",
|
||||
"upload.modal.expires.error.too-long": "有効期限が最大値{max}を超えています。",
|
||||
"upload.modal.link.label": "リンク",
|
||||
"upload.modal.expires.label": "有効期限",
|
||||
"upload.modal.expires.minute-singular": "分間",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "プライベートシェア",
|
||||
"share.error.access-denied.description": "現在のアカウントにはこの共有にアクセスする権限がありません",
|
||||
"share.modal.password.title": "パスワードが必要です",
|
||||
"share.modal.password.description": "この共有にアクセスするには、共有相手から伝えられているパスワードを入力してください。",
|
||||
"share.modal.password.description": "この共有にアクセスするにはパスワードを入力してください。",
|
||||
"share.modal.password": "パスワード",
|
||||
"share.modal.error.invalid-password": "パスワードが間違っています",
|
||||
"share.button.download-all": "全てダウンロード",
|
||||
"share.notify.download-all-preparing": "共有は準備中です。数分後に再度お試しください。",
|
||||
"share.notify.download-all-preparing": "共有の準備中です。数分後にもう一度お試しください。",
|
||||
"share.modal.file-link": "ファイルリンク",
|
||||
"share.table.name": "ファイル名",
|
||||
"share.table.size": "サイズ",
|
||||
"share.modal.file-preview.error.not-supported.title": "プレビューに対応していません",
|
||||
"share.modal.file-preview.error.not-supported.description": "このファイルタイプのプレビューはサポートされていません。ファイルをダウンロードして表示してください。",
|
||||
"share.modal.file-preview.error.not-supported.description": "このファイル形式のプレビューはサポートされていません。ファイルをダウンロードして表示してください。",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "編集 {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "アプリの名前",
|
||||
"admin.config.general.app-url": "アプリ名",
|
||||
"admin.config.general.app-url.description": "Pingvin Shareで利用できるURL",
|
||||
"admin.config.general.secure-cookies": "セキュアクッキー",
|
||||
"admin.config.general.secure-cookies.description": "クッキーにセキュアフラグを設定するか。有効にすると、HTTP 経由でアクセスしたときにサイトが機能しなくなります。",
|
||||
"admin.config.general.show-home-page": "ホームページを表示する",
|
||||
"admin.config.general.show-home-page.description": "ホームページを表示するかどうか選択",
|
||||
"admin.config.general.session-duration": "セッション期間",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "ロゴ",
|
||||
"admin.config.general.logo.description": "新しい画像をアップロードしてロゴを変更できます。画像は、PNG形式でアスペクト比が1:1である必要があります。",
|
||||
"admin.config.general.logo.placeholder": "画像を選択",
|
||||
"admin.config.email.enable-share-email-recipients": "メールでの共有を有効にする",
|
||||
"admin.config.email.enable-share-email-recipients.description": "メールで共有を送信できるようにするか選択してください。SMTPが有効になっている場合にのみ機能します。",
|
||||
"admin.config.email.enable-share-email-recipients": "メール受信者の共有を有効にする",
|
||||
"admin.config.email.enable-share-email-recipients.description": "受信者とのメール共有を許可するかどうか。SMTPが有効な場合にのみこれを有効にします。",
|
||||
"admin.config.email.share-recipients-subject": "宛先への件名",
|
||||
"admin.config.email.share-recipients-subject.description": "メールで共有された相手に送信メールの件名です。",
|
||||
"admin.config.email.share-recipients-message": "宛先への本文",
|
||||
"admin.config.email.share-recipients-message.description": "メールで共有された相手に送信されるメールの本文です。次の変数が利用できます:\n{creator} - 共有作成者のユーザー名\n{shareUrl} - 共有のURL\n{desc} - 共有の説明\n{expires} - 共有の有効期限\n変数は、実際の値によって置き換えられます。",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "ファイルリクエストの件名",
|
||||
"admin.config.email.reverse-share-subject.description": "あなたが作成したファイルリクエストリンクからファイルがアップロードされた場合に送信されるメールの件名です。",
|
||||
"admin.config.email.reverse-share-subject.description": "誰かがあなたのファイルリクエストリンクを使用して共有を作成したときに送信されるメールの件名。",
|
||||
"admin.config.email.reverse-share-message": "ファイルリクエストの本文",
|
||||
"admin.config.email.reverse-share-message.description": "あなたが作成したファイルリクエストリンクからファイルがアップロードされた場合に送信されるメールの本文です。{shareUrl} は、作成者の名前とURLにより置き換えられます。",
|
||||
"admin.config.email.reset-password-subject": "パスワードリセットの件名",
|
||||
"admin.config.email.reset-password-subject.description": "パスワードリセットのリクエストがされた時に送信されるメールの件名です。",
|
||||
"admin.config.email.reset-password-subject.description": "ユーザーがパスワードのリセットを要求したときに送信されるメールの件名。",
|
||||
"admin.config.email.reset-password-message": "パスワードリセットの本文",
|
||||
"admin.config.email.reset-password-message.description": "あなたが作成したファイルリクエストリンクからファイルがアップロードされた場合に送信されるメールの本文です。{url} は、実際のパスワードリセットURLによって置き換えられます。",
|
||||
"admin.config.email.invite-subject": "無効な件名",
|
||||
"admin.config.email.invite-subject.description": "管理者がユーザーを招待したときに送信されるメールの件名です。",
|
||||
"admin.config.email.invite-subject.description": "管理者がユーザーを招待するときに送信されるメールの件名。",
|
||||
"admin.config.email.invite-message": "無効な本文",
|
||||
"admin.config.email.invite-message.description": "管理者がユーザーを招待したときに送信されるメッセージ。{url} は招待 URL に置き換えられ、{email} はユーザーの電子メールに置き換えられ、{password} はユーザーのパスワードに置き換えられます。",
|
||||
"admin.config.email.invite-message.description": "管理者がユーザーを招待したときに送信されるメッセージ。{url}は招待URLに、{email}はメールアドレスに、{password}はユーザーのパスワードに置き換えられます。",
|
||||
"admin.config.share.allow-registration": "登録を許可する",
|
||||
"admin.config.share.allow-registration.description": "登録を許可するかどうかを選択してください。",
|
||||
"admin.config.share.allow-unauthenticated-shares": "ログインしていない状態での共有を許可する",
|
||||
@@ -336,7 +341,7 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip圧縮レベル",
|
||||
"admin.config.share.zip-compression-level.description": "ファイルサイズと圧縮速度のバランスを取るように、レベルを調整できます。有効な値は0~9の間で、0が無圧縮、9で最大限の圧縮となります。 ",
|
||||
"admin.config.share.chunk-size": "チャンクサイズ",
|
||||
"admin.config.share.chunk-size.description": "インターネット接続に応じてアップロードのチャンクサイズ(バイト単位)を調整し、効率と信頼性のバランスを取ってください。不安定な接続の場合、チャンクサイズを小さくすることでアップロード成功率を高めることができ、安定した接続の場合、チャンクサイズを大きくすることでアップロード速度を速めることができます。",
|
||||
"admin.config.share.chunk-size.description": "インターネット接続に応じて、効率と信頼性のバランスをとるためにアップロードのチャンクサイズ (バイト単位) を調整します。チャンクを小さくすると、不安定な接続での成功率が向上し、チャンクを大きくすると、安定した接続でのアップロードが速くなります。",
|
||||
"admin.config.share.auto-open-share-modal": "共有モーダルを自動的に開く",
|
||||
"admin.config.share.auto-open-share-modal.description": "ユーザーがファイルを選択すると、共有作成モーダルが自動的に表示されるため、手動でボタンをクリックする必要がありません。",
|
||||
"admin.config.smtp.enabled": "有効",
|
||||
@@ -346,7 +351,7 @@ export default {
|
||||
"admin.config.smtp.port": "ポート番号",
|
||||
"admin.config.smtp.port.description": "SMTPサーバーのポート番号",
|
||||
"admin.config.smtp.email": "メールアドレス",
|
||||
"admin.config.smtp.email.description": "送信メールに設定するメールアドレス",
|
||||
"admin.config.smtp.email.description": "メールの送信元となるメールアドレス",
|
||||
"admin.config.smtp.username": "ユーザー名",
|
||||
"admin.config.smtp.username.description": "SMTPサーバーのユーザー名",
|
||||
"admin.config.smtp.password": "パスワード",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuthアプリのクライアントシークレット",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Discordアカウントを使用したログインを許可するかどうかを設定します",
|
||||
"admin.config.oauth.discord-limited-users": "Discord限定ユーザー",
|
||||
"admin.config.oauth.discord-limited-users.description": "Discord IDによって特定のユーザーのサインインを制限します。無効にするには空白のままにします。",
|
||||
"admin.config.oauth.discord-limited-guild": "Discord限定サーバーID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "特定のサーバーのユーザーにサインインを制限します。無効にするには空白のままにしてください。",
|
||||
"admin.config.oauth.discord-client-id": "Discord クライアントID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "OpenID Connect のログインが有効かを設定します",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID OAuthアプリのDiscovery URI",
|
||||
"admin.config.oauth.oidc-sign-out": "OpenID Connectからサインアウト",
|
||||
"admin.config.oauth.oidc-sign-out.description": "「サインアウト」ボタンがOpenID Connectプロバイダーからサインアウトするかどうか",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect ユーザー名の要求",
|
||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID トークンのユーザー名要求。この設定が何かわからない場合は空白のままにしてください。",
|
||||
"admin.config.oauth.oidc-role-path": "OpenID Connectトークンのロールへのパス",
|
||||
@@ -405,24 +414,24 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuthアプリのクライアントシークレット",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "LDAP を有効化",
|
||||
"admin.config.ldap.enabled": "LDAPを有効化",
|
||||
"admin.config.ldap.enabled.description": "ユーザーログインにLDAP認証を使用する",
|
||||
"admin.config.ldap.url": "サーバーURL",
|
||||
"admin.config.ldap.url.description": "LDAPサーバーのURL",
|
||||
"admin.config.ldap.bind-dn": "バインド DN",
|
||||
"admin.config.ldap.bind-dn.description": "ユーザー検索の実行に使用されるデフォルトのユーザー",
|
||||
"admin.config.ldap.bind-dn.description": "ユーザー検索を実行するために使用されるデフォルトのユーザー",
|
||||
"admin.config.ldap.bind-password": "パスワードをバインド",
|
||||
"admin.config.ldap.bind-password.description": "ユーザー検索ユーザーのパスワード",
|
||||
"admin.config.ldap.bind-password.description": "ユーザー検索を実行するために使用するパスワード",
|
||||
"admin.config.ldap.search-base": "ユーザーベース",
|
||||
"admin.config.ldap.search-base.description": "ユーザーの検索が実行されるベースの場所",
|
||||
"admin.config.ldap.search-query": "ユーザークエリ",
|
||||
"admin.config.ldap.search-query.description": "ユーザークエリはLDAPユーザーの「ユーザーベース」を検索するために使用されます。 %username% は、入力されたユーザーのプレースホルダとして使用できます。",
|
||||
"admin.config.ldap.admin-groups": "管理者グループ",
|
||||
"admin.config.ldap.admin-groups.description": "管理者アクセスに必要なグループです。",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.field-name-member-of": "ユーザーグループ属性名",
|
||||
"admin.config.ldap.field-name-member-of.description": "ユーザーがメンバーであるグループのLDAP属性名。これは、管理者グループを確認するときに使用されます。",
|
||||
"admin.config.ldap.field-name-email": "ユーザーのメール属性名",
|
||||
"admin.config.ldap.field-name-email.description": "ユーザーのメールのLDAP属性名。",
|
||||
// 404
|
||||
"404.description": "ページが見つかりません。",
|
||||
"404.button.home": "ホームに戻る",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "この{0} アカウントにリンクしたユーザーが存在しません。",
|
||||
"error.msg.no_email": "この{0} アカウントからメールアドレスを取得出来ません。",
|
||||
"error.msg.already_linked": "この{0} アカウントは、既に別のアカウントにリンクされています。",
|
||||
"error.msg.not_linked": "この{0} アカウントはどのアカウントにもリンクされていません。",
|
||||
"error.msg.not_linked": "この{0}アカウントはまだどのアカウントにもリンクされていません。",
|
||||
"error.msg.unverified_account": "この {0} アカウントは認証されていません。認証後にもう一度お試しください。",
|
||||
"error.msg.user_not_allowed": "サインインできません。",
|
||||
"error.msg.cannot_get_user_info": "この {0} アカウントからユーザー情報を取得できません。",
|
||||
"error.msg.cannot_get_user_info": "この{0}アカウントからユーザー情報を取得できません。",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "生成",
|
||||
"common.button.done": "完了",
|
||||
"common.text.link": "リンク",
|
||||
"common.text.navigate-to-link": "リンクへ移動",
|
||||
"common.text.navigate-to-link": "リンクを開く",
|
||||
"common.text.or": "または",
|
||||
"common.text.redirecting": "リダイレクトしています...",
|
||||
"common.button.go-back": "戻る",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "無効なメールアドレス",
|
||||
"common.error.too-short": "最低{length} 文字である必要があります",
|
||||
"common.error.too-long": "最大{length} 文字である必要があります",
|
||||
"common.error.number-too-small": "少なくとも{min}でなければなりません",
|
||||
"common.error.number-too-large": "最大で{max}である必要があります",
|
||||
"common.error.exact-length": "{length} 文字である必要があります",
|
||||
"common.error.invalid-number": "数字でなければなりません",
|
||||
"common.error.field-required": "これは必須項目です"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "업로드",
|
||||
"navbar.signin": "로그인",
|
||||
"navbar.home": "홈",
|
||||
"navbar.signup": "계정 만들기",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "내 공유",
|
||||
"navbar.links.reverse": "역방향 공유",
|
||||
"navbar.avatar.account": "내 계정",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "직접 호스팅",
|
||||
"home.bullet.a.description": "자신의 컴퓨터에서 Pingvin Share를 호스팅하세요.",
|
||||
"home.bullet.b.name": "개인 정보 보호",
|
||||
"home.bullet.b.description": "당신의 파일은 당신의 것이므로 절대로 제3자의 손에 들어가서는 안 됩니다.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "귀찮은 파일 크기 제한 없음",
|
||||
"home.bullet.c.description": "원하는 만큼 큰 파일을 업로드하세요. 오직 여러분의 하드 디스크만이 한계가 될 것입니다.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "시작하기",
|
||||
"home.button.source": "소스 코드",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "비밀번호를 잊으셨나요?",
|
||||
"resetPassword.description": "비밀번호를 재설정하려면 이메일을 입력하세요.",
|
||||
"resetPassword.notify.success": "이메일이 존재한다면 비밀번호를 재설정하는 링크를 포함한 메시지가 발송되었습니다.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "로그인 페이지로 돌아가기",
|
||||
"resetPassword.text.resetPassword": "비밀번호 재설정",
|
||||
"resetPassword.text.enterNewPassword": "새로운 비밀번호를 입력하세요",
|
||||
"resetPassword.input.password": "새로운 비밀번호",
|
||||
"resetPassword.notify.passwordReset": "비밀번호가 성공적으로 재설정되었습니다.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "내 계정",
|
||||
"account.card.info.title": "계정 정보",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "비밀번호",
|
||||
"account.card.password.old": "기존 비밀번호",
|
||||
"account.card.password.new": "새로운 비밀번호",
|
||||
"account.card.password.noPasswordSet": "비밀번호를 설정하지 않았습니다. 이메일과 비밀번호로 로그인하려면 비밀번호를 설정해야 합니다.",
|
||||
"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": "비밀번호 변경 완료",
|
||||
"account.card.oauth.title": "소셜 로그인",
|
||||
"account.card.oauth.github": "깃허브",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "연결 해제",
|
||||
"account.card.oauth.unlinked": "연결 해제",
|
||||
"account.modal.unlink.title": "계정 연결 해제",
|
||||
"account.modal.unlink.description": "소셜 계정 연결을 해제하면 사용자 이름과 비밀번호를 기억하지 못할 경우 계정을 잃을 수 있습니다.",
|
||||
"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": "연결 해제됨",
|
||||
"account.card.security.title": "보안",
|
||||
"account.card.security.totp.enable.description": "TOTP 활성화를 시작하려면 현재 비밀번호를 입력하세요.",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "이름",
|
||||
"account.shares.table.description": "설명",
|
||||
"account.shares.table.visitors": "방문자",
|
||||
"account.shares.table.expiresAt": "만료일",
|
||||
"account.shares.table.createdAt": "생성일",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "크기",
|
||||
"account.shares.modal.share-informations": "공유 정보",
|
||||
"account.shares.modal.share-link": "공유 링크",
|
||||
"account.shares.modal.delete.title": "공유 삭제 {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "정말로 이 공유를 삭제하시겠습니까?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "년",
|
||||
"account.reverseShares.modal.expiration.year-plural": "년",
|
||||
"account.reverseShares.modal.max-size.label": "최대 공유 크기",
|
||||
"account.reverseShares.modal.send-email": "이메일 알림 보내기",
|
||||
"account.reverseShares.modal.send-email.description": "이 역방향 공유 링크를 사용하여 공유가 생성되면 이메일 알림을 보냅니다.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "공유 생성 제한",
|
||||
"account.reverseShares.modal.max-use.description": "이 URL을 사용하여 공유를 생성할 수 있는 최대 횟수입니다.",
|
||||
"account.reverseShare.never-expires": "이 역공유 링크는 만료되지 않습니다.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "사용자 이름",
|
||||
"admin.users.table.email": "이메일",
|
||||
"admin.users.table.admin": "관리자",
|
||||
"admin.users.edit.update.title": "{username} 사용자 업데이트",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Admin Privilege",
|
||||
"admin.users.edit.update.change-password.title": "비밀번호 변경",
|
||||
"admin.users.edit.update.change-password.field": "새로운 비밀번호",
|
||||
"admin.users.edit.update.change-password.button": "새 비밀번호 저장",
|
||||
"admin.users.edit.update.notify.password.success": "비밀번호 변경 완료",
|
||||
"admin.users.edit.delete.title": "{username} 사용자 삭제",
|
||||
"admin.users.edit.delete.description": "이 사용자의 모든 공유를 삭제하시겠습니까?",
|
||||
"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": "사용자 생성",
|
||||
"admin.users.modal.create.username": "사용자 이름",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "공유 ID",
|
||||
"admin.shares.table.username": "만든이",
|
||||
"admin.shares.table.visitors": "방문자",
|
||||
"admin.shares.table.expires": "만료일",
|
||||
"admin.shares.edit.delete.title": "공유 삭제 {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "정말로 이 공유를 삭제하시겠습니까?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "업로드",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "공유를 완료하는 동안 오류가 발생했습니다.",
|
||||
"upload.notify.count-failed": "{count}개의 파일을 업로드하지 못했습니다. 다시 시도하세요.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "파일 업로드",
|
||||
"upload.dropzone.description": "파일을 여기로 드래그&드랍하여 파일 업로드를 시작합니다. {maxSize} 를 초과하지 않는 파일만 업로드할 수 있습니다.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "파일이 {maxSize} 의 최대 공유 크기를 초과합니다.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "이름",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "로그인하지 않았습니다",
|
||||
"upload.modal.not-signed-in-description": "공유를 수동으로 삭제하고 방문자 수를 볼 수 없습니다.",
|
||||
"upload.modal.expires.never": "절대 안 함",
|
||||
"upload.modal.expires.never-long": "만료 없음",
|
||||
"upload.modal.expires.error.too-long": "만료가 {max} 의 최대 만료일을 초과합니다.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "링크",
|
||||
"upload.modal.expires.label": "만료일",
|
||||
"upload.modal.expires.minute-singular": "분",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.modal.password.title": "비밀번호 필요",
|
||||
"share.modal.password.description": "이 공유에 접근하려면 공유의 암호를 입력하십시오.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "비밀번호",
|
||||
"share.modal.error.invalid-password": "잘못된 비밀번호",
|
||||
"share.button.download-all": "모두 다운로드",
|
||||
"share.notify.download-all-preparing": "공유가 준비 중입니다. 잠시 후에 다시 시도하십시오.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "파일 링크",
|
||||
"share.table.name": "이름",
|
||||
"share.table.size": "크기",
|
||||
"share.modal.file-preview.error.not-supported.title": "미리보기는 지원되지 않습니다",
|
||||
"share.modal.file-preview.error.not-supported.description": "이 파일 형식의 미리보기가 지원되지 않습니다. 파일을 다운로드하여 확인하십시오.",
|
||||
"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": "수정 {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "이 앱의 이름",
|
||||
"admin.config.general.app-url": "앱 URL",
|
||||
"admin.config.general.app-url.description": "Pingvin Share를 사용할 수 있는 URL",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "홈 페이지 표시",
|
||||
"admin.config.general.show-home-page.description": "홈 페이지를 표시할지 여부",
|
||||
"admin.config.general.session-duration": "세션 기간",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "로고",
|
||||
"admin.config.general.logo.description": "새 이미지를 업로드하여 로고를 변경하십시오. 이미지는 PNG여야 하며 1:1 비율이어야 합니다.",
|
||||
"admin.config.general.logo.placeholder": "이미지 선택",
|
||||
"admin.config.email.enable-share-email-recipients": "메일 수신 허용",
|
||||
"admin.config.email.enable-share-email-recipients.description": "메일이 수신자를 공유하도록 허용할지 여부. SMTP를 사용 가능으로 설정한 경우에만 이 옵션을 사용 가능으로 설정합니다.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "공유 제목",
|
||||
"admin.config.email.share-recipients-subject.description": "공유 수신자에게 전송되는 이메일의 제목입니다.",
|
||||
"admin.config.email.share-recipients-message": "수신자 메시지 공유",
|
||||
"admin.config.email.share-recipients-message.description": "공유 수신자에게 보내는 메시지입니다. 사용 가능한 변수:\n {creator} - 공유 작성자의 사용자 이름\n {shareUrl} - 공유의 URL\n {desc} - 공유에 대한 설명\n {expires} - 공유 만료일\n 변수는 실제 값으로 대체됩니다.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "역방향 공유 제목",
|
||||
"admin.config.email.reverse-share-subject.description": "누군가 당신이 공유한 역방향 공유 링크를 사용하여 공유를 생성했을 때 전송되는 이메일의 제목입니다.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "역방향 공유 메시지",
|
||||
"admin.config.email.reverse-share-message.description": "누군가 귀하의 역방향 공유 링크를 사용하여 공유를 생성하면 전송되는 메시지입니다.. {shareUrl} 은 작성자 이름 및 공유 URL로 대체됩니다.",
|
||||
"admin.config.email.reset-password-subject": "비밀번호 재설정 제목",
|
||||
"admin.config.email.reset-password-subject.description": "사용자가 암호 재설정을 요청할 때 전송되는 메일의 제목입니다.",
|
||||
"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": "비밀번호 재설정 메시지",
|
||||
"admin.config.email.reset-password-message.description": "사용자가 비밀번호 재설정을 요청할 때 전송되는 메시지입니다. {url} 은 비밀번호 재설정 URL로 대체됩니다.",
|
||||
"admin.config.email.invite-subject": "초대 제목",
|
||||
"admin.config.email.invite-subject.description": "관리자가 사용자를 초대할 때 전송되는 이메일의 제목입니다.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "초대 메시지",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "가입 허용",
|
||||
"admin.config.share.allow-registration.description": "등록 가능 여부",
|
||||
"admin.config.share.allow-unauthenticated-shares": "인증되지 않은 공유 허용",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip 압축 레벨",
|
||||
"admin.config.share.zip-compression-level.description": "파일 크기와 압축 속도 간의 균형을 맞추도록 레벨을 조정합니다. 유효한 값의 범위는 0에서 9까지이며, 0은 압축되지 않고 9는 최대 압축입니다. ",
|
||||
"admin.config.share.chunk-size": "청크 크기",
|
||||
"admin.config.share.chunk-size.description": "업로드할 청크 크기(바이트 단위)를 조정하여 인터넷 연결에 따라 효율성과 신뢰성의 균형을 유지합니다. 더 작은 청크는 불안정한 연결에 대한 성공률을 향상시킬 수 있고, 더 큰 청크는 안정적인 연결에 대한 업로드 속도를 높일 수 있습니다.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "공유 생성 창 자동 열기",
|
||||
"admin.config.share.auto-open-share-modal.description": "사용자가 파일을 선택하면 공유 생성 창이 자동으로 나타나서 버튼을 수동으로 클릭할 필요가 없습니다.",
|
||||
"admin.config.smtp.enabled": "활성화됨",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "SMTP 사용 여부 SMTP 서버의 호스트, 포트, 전자 메일, 사용자 및 암호를 입력한 경우에만 true로 설정합니다.",
|
||||
"admin.config.smtp.host": "호스트",
|
||||
"admin.config.smtp.host.description": "SMTP 서버의 호스트",
|
||||
"admin.config.smtp.port": "포트",
|
||||
"admin.config.smtp.port.description": "SMTP 서버 포트",
|
||||
"admin.config.smtp.email": "이메일",
|
||||
"admin.config.smtp.email.description": "전자 메일을 보낸 전자 메일 주소",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "사용자 이름",
|
||||
"admin.config.smtp.username.description": "SMTP 사용자 이름, 서버 비밀번호",
|
||||
"admin.config.smtp.password": "비밀번호",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth 앱의 클라이언트 비밀",
|
||||
"admin.config.oauth.discord-enabled": "디스코드",
|
||||
"admin.config.oauth.discord-enabled.description": "Discord 로그인 활성화 여부",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "디스코드 제한 서버 ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "특정 서버의 사용자로 로그인을 제한합니다. 사용하지 않으려면 비워 둡니다.",
|
||||
"admin.config.oauth.discord-client-id": "디스코드 클라이언트 ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "OpenID Connect 로그인 사용 여부",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID 토큰의 Username claim 입니다. 이 구성이 무엇인지 모르면 비워 둡니다.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID 클라이언트 secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth 앱의 클라이언트 secret",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "{0} 계정에 연결된 사용자가 없습니다.",
|
||||
"error.msg.no_email": "이 {0} 계정에서 메일 주소를 가져올 수 없습니다.",
|
||||
"error.msg.already_linked": "이 {0} 계정은 이미 다른 계정에 연결되어 있습니다.",
|
||||
"error.msg.not_linked": "이 {0} 계정은 아직 어떤 계정에도 연결되지 않았습니다.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "이 {0} 계정은 확인되지 않았습니다. 확인 후 다시 시도하십시오.",
|
||||
"error.msg.user_not_allowed": "로그인할 수 없습니다.",
|
||||
"error.msg.cannot_get_user_info": "이 {0} 계정에서 사용자 정보를 가져올 수 없습니다",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "깃허브",
|
||||
"error.param.provider_google": "구글",
|
||||
"error.param.provider_microsoft": "마이크로소프트",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "생성",
|
||||
"common.button.done": "완료",
|
||||
"common.text.link": "링크",
|
||||
"common.text.navigate-to-link": "링크로 이동",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "또는",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "뒤로 가기",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "이메일 주소가 틀립니다",
|
||||
"common.error.too-short": "최소 {length} 자 이상이어야 합니다",
|
||||
"common.error.too-long": "최대 {length} 자 까지 입력가능합니다.",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "{length} 자 이어야 합니다.",
|
||||
"common.error.invalid-number": "숫자만 가능합니다.",
|
||||
"common.error.field-required": "이 필드는 필수입니다"
|
||||
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Zelfgehost",
|
||||
"home.bullet.a.description": "Host Pingvin Share op uw eigen machine.",
|
||||
"home.bullet.b.name": "Privacy",
|
||||
"home.bullet.b.description": "Uw bestanden zijn van u en mogen nooit in handen komen van derden.",
|
||||
"home.bullet.b.description": "Je bestanden zijn van jou en zullen nooit toegankelijk zijn voor derden.",
|
||||
"home.bullet.c.name": "Geen vervelende limiet voor bestandsgrootte",
|
||||
"home.bullet.c.description": "Upload zo grote bestanden als je wilt. Alleen je harde schijf is je limiet.",
|
||||
"home.bullet.c.description": "Upload bestanden zo groot als je wilt. Je harde schijf is de enige limiet.",
|
||||
"home.button.start": "Aan de slag",
|
||||
"home.button.source": "Broncode",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Wachtwoord vergeten?",
|
||||
"resetPassword.description": "Voer uw e-mailadres in om uw wachtwoord opnieuw in te stellen.",
|
||||
"resetPassword.notify.success": "Er is een bericht verzonden met een link om uw wachtwoord te resetten als het e-mail adres bestaat.",
|
||||
"resetPassword.notify.success": "Er is een bericht verzonden met een link om je wachtwoord opnieuw in te stellen, als het opgegeven e-mailadres bestaat.",
|
||||
"resetPassword.button.back": "Terug naar login pagina",
|
||||
"resetPassword.text.resetPassword": "Wachtwoord opnieuw instellen",
|
||||
"resetPassword.text.enterNewPassword": "Voer uw nieuwe wachtwoord in",
|
||||
"resetPassword.input.password": "Nieuw wachtwoord",
|
||||
"resetPassword.notify.passwordReset": "Uw wachtwoord is met succes opnieuw ingesteld.",
|
||||
"resetPassword.notify.passwordReset": "Je wachtwoord is succesvol gereset.",
|
||||
// /account
|
||||
"account.title": "Mijn account",
|
||||
"account.card.info.title": "Accountinformatie",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Wachtwoord",
|
||||
"account.card.password.old": "Oude wachtwoord",
|
||||
"account.card.password.new": "Nieuw wachtwoord",
|
||||
"account.card.password.noPasswordSet": "U hebt nog geen wachtwoord ingesteld. Stel deze eerst in als u via email wilt inloggen.",
|
||||
"account.card.password.noPasswordSet": "Er is geen wachtwoord ingesteld. Om in te loggen met je e-mailadres en wachtwoord, moet je een wachtwoord aanmaken.",
|
||||
"account.notify.password.success": "Wachtwoord succesvol gewijzigd!",
|
||||
"account.card.oauth.title": "Social login",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Ontkoppel",
|
||||
"account.card.oauth.unlinked": "Niet-gekoppeld",
|
||||
"account.modal.unlink.title": "Ontkoppel account",
|
||||
"account.modal.unlink.description": "Het ontkoppelen van uw sociale accounts kan leiden tot verlies van uw account. Vergeet uw gebruikersnaam en wachtwoord niet.",
|
||||
"account.modal.unlink.description": "Het ontkoppelen van sociale accounts kan leiden tot verlies van je account als je de inloggegevens bent vergeten",
|
||||
"account.notify.oauth.unlinked.success": "Ontkoppelen succesvol",
|
||||
"account.card.security.title": "Beveiliging",
|
||||
"account.card.security.totp.enable.description": "Voer uw huidige wachtwoord in om TOTP in te schakelen",
|
||||
@@ -122,11 +122,11 @@ export default {
|
||||
"account.shares.table.description": "Beschrijving",
|
||||
"account.shares.table.visitors": "Bezoekers",
|
||||
"account.shares.table.expiresAt": "Verloopt op",
|
||||
"account.shares.table.createdAt": "Aangemaakt op",
|
||||
"account.shares.table.createdAt": "Gemaakt op",
|
||||
"account.shares.table.size": "Grootte",
|
||||
"account.shares.modal.share-informations": "Gegevens delen",
|
||||
"account.shares.modal.share-link": "Deel link",
|
||||
"account.shares.modal.delete.title": "Verwijder share {share}",
|
||||
"account.shares.modal.delete.title": "Share verwijderd: {share}",
|
||||
"account.shares.modal.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Jaar",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Jaren",
|
||||
"account.reverseShares.modal.max-size.label": "Maximale share-grootte",
|
||||
"account.reverseShares.modal.send-email": "Stuur e-mailnotificatie",
|
||||
"account.reverseShares.modal.send-email.description": "Stuur een e-mail notificatie wanneer er bestanden zijn gedeeld via deze omgekeerde share link.",
|
||||
"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": "Maak het makkelijk voor de persoon die het bestand uploadt om het met u te delen. Ze kunnen alleen de naam en beschrijving van de share aanpassen.",
|
||||
"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": "Maak de gemaakte shares met deze reverse share openbaar. Als dit is uitgeschakeld, kunnen alleen jij en de maker van de share deze bekijken.",
|
||||
"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": "Maximaal gebruikte keren",
|
||||
"account.reverseShares.modal.max-use.description": "Maximale keren dat deze URL gebruikt kan worden om een share aan te maken.",
|
||||
"account.reverseShare.never-expires": "Deze omgekeerde share zal nooit verlopen.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Gebruikersnaam",
|
||||
"admin.users.table.email": "E-mailadres",
|
||||
"admin.users.table.admin": "Beheerder",
|
||||
"admin.users.edit.update.title": "Gebruiker {username} bijwerken",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Beheerdersrechten",
|
||||
"admin.users.edit.update.change-password.title": "Wachtwoord wijzigen",
|
||||
"admin.users.edit.update.change-password.field": "Nieuw wachtwoord",
|
||||
"admin.users.edit.update.change-password.button": "Nieuw wachtwoord opslaan",
|
||||
"admin.users.edit.update.notify.password.success": "Wachtwoord succesvol gewijzigd",
|
||||
"admin.users.edit.delete.title": "Gebruiker {username} verwijderen",
|
||||
"admin.users.edit.delete.description": "Wilt u echt deze gebruiker en al zijn shares verwijderen?",
|
||||
"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": "Gebruiker aanmaken",
|
||||
"admin.users.modal.create.username": "Gebruikersnaam",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Auteur",
|
||||
"admin.shares.table.visitors": "Bezoekers",
|
||||
"admin.shares.table.expires": "Vervalt op",
|
||||
"admin.shares.edit.delete.title": "Verwijder share {id}",
|
||||
"admin.shares.table.expires": "Verloopt op",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "Weet u zeker dat u deze share wilt verwijderen?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Uploaden",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Er is een fout opgetreden tijdens het voltooien van uw share.",
|
||||
"upload.notify.count-failed": "{count} bestanden konden niet worden geüpload. Probeer het nogmaals.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Bestanden uploaden",
|
||||
"upload.dropzone.description": "Sleep uw bestanden hier om uw share te beginnen. We kunnen alleen bestanden accepteren die kleiner zijn dan {maxSize} in totaal.",
|
||||
"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": "Uw bestanden overschrijden de maximale share-grootte van {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Naam",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "U bent niet aangemeld",
|
||||
"upload.modal.not-signed-in-description": "Het is niet mogelijk uw gedeelde bestanden handmatig te verwijderen en het aantal bezoekers te bekijken.",
|
||||
"upload.modal.expires.never": "nooit",
|
||||
"upload.modal.expires.never-long": "Verloopt nooit",
|
||||
"upload.modal.expires.error.too-long": "De maximale vervaldatum van {max} is overschreven.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Koppeling",
|
||||
"upload.modal.expires.label": "Vervaldatum",
|
||||
"upload.modal.expires.minute-singular": "Minuut",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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.modal.password.title": "Wachtwoord vereist",
|
||||
"share.modal.password.description": "Vul een wachtwoord in om toegang te krijgen tot deze share.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Wachtwoord",
|
||||
"share.modal.error.invalid-password": "Ongeldig wachtwoord",
|
||||
"share.button.download-all": "Alles downloaden",
|
||||
"share.notify.download-all-preparing": "De share word gebundeld. Probeer het over een paar minuten opnieuw.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Link naar bestand",
|
||||
"share.table.name": "Naam",
|
||||
"share.table.size": "Grootte",
|
||||
"share.modal.file-preview.error.not-supported.title": "Voorbeeld niet ondersteund",
|
||||
"share.modal.file-preview.error.not-supported.description": "Een voorbeeld voor dit bestandstype wordt niet ondersteund. Download het bestand om het te bekijken.",
|
||||
"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": "{shareId} bewerken",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Naam van de applicatie",
|
||||
"admin.config.general.app-url": "App-URL",
|
||||
"admin.config.general.app-url.description": "De URL waar Pingvin Share bereikbaar is",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Toon startpagina",
|
||||
"admin.config.general.show-home-page.description": "Toon of verberg de home pagina",
|
||||
"admin.config.general.session-duration": "Sessieduur",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Verander uw logo door een nieuwe afbeelding te uploaden. De afbeelding moet PNG zijn en het formaat moet 1:1 hebben.",
|
||||
"admin.config.general.logo.placeholder": "Afbeelding kiezen",
|
||||
"admin.config.email.enable-share-email-recipients": "Voer e-mail ontvangers in",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Sta e-mails toe om de ontvangers de deel link te versturen. Schakel dit alleen in als je SMTP hebt ingeschakeld.",
|
||||
"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": "Onderwerp van ontvangers' share",
|
||||
"admin.config.email.share-recipients-subject.description": "Het onderwerp van de e-mail die wordt verzonden naar de share-ontvangers.",
|
||||
"admin.config.email.share-recipients-message": "Bericht voor ontvangers van de share",
|
||||
"admin.config.email.share-recipients-message.description": "Bericht dat wordt verzonden naar de share ontvangers. Beschikbare variabelen:\n {creator} - De gebruikersnaam van de maker van de share\n {shareUrl} - De URL van de share\n {desc} - De beschrijving van de share\n {expires} - De vervaldatum van de share\n De variabelen worden vervangen door hun werkelijke waarde bij verzending.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Omgekeerde share email onderwerp",
|
||||
"admin.config.email.reverse-share-subject.description": "Het onderwerp van de e-mail die wordt verzonden wanneer iemand een share heeft gemaakt met uw omgekeerde share link.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Omgekeerde share-bericht",
|
||||
"admin.config.email.reverse-share-message.description": "Het bericht dat wordt verzonden wanneer iemand een share heeft aangemaakt via de omgekeerde share-link. {shareUrl} zal worden vervangen door de naam van de maker en de URL van de share.",
|
||||
"admin.config.email.reset-password-subject": "E-mailonderwerp voor wachtwoordherstel",
|
||||
"admin.config.email.reset-password-subject.description": "Het onderwerp van de e-mail die wordt verzonden wanneer een gebruiker een wachtwoordherstel aanvraagt.",
|
||||
"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": "Bericht voor wachtwoordherstel",
|
||||
"admin.config.email.reset-password-message.description": "Bericht dat wordt verzonden wanneer een gebruiker een wachtwoordherstel aanvraagt. {url} zal worden vervangen door de wachtwoordherstel-URL.",
|
||||
"admin.config.email.invite-subject": "Onderwerp voor uitnodiging",
|
||||
"admin.config.email.invite-subject.description": "Onderwerp van de e-mail die wordt verzonden wanneer een beheerder een gebruiker uitnodigt.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Bericht voor uitnodiging",
|
||||
"admin.config.email.invite-message.description": "Bericht dat wordt verzonden wanneer een beheerder een gebruiker uitnodigt. {url} wordt vervangen door de uitnodigings-URL, {email} door het e-mailadres en {password} door het wachtwoord van de gebruiker.",
|
||||
"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": "Sta registratie toe",
|
||||
"admin.config.share.allow-registration.description": "Of registratie is toegestaan",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Ongeverifieerde shares toestaan",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip compressie niveau",
|
||||
"admin.config.share.zip-compression-level.description": "Pas het niveau aan voor evenwicht tussen bestandsgrootte en compressie snelheid. Geldige waarden variëren van 0 tot 9, waarbij 0 geen compressie is en 9 de maximale compressie is. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Pas de chunkgrootte (in bytes) voor uw uploads aan om efficiëntie en betrouwbaarheid in evenwicht te brengen op basis van uw internetverbinding. Kleinere chunks kunnen de slagingspercentages voor onstabiele verbindingen verbeteren, terwijl grotere chunks uploads voor stabiele verbindingen versnellen.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Inschakelen",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Of SMTP is ingeschakeld. Stel dit alleen in op true als u de host hebt ingevoerd, poort, e-mail, gebruiker en wachtwoord van uw SMTP-server.",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "Host van de SMTP-server",
|
||||
"admin.config.smtp.port": "Poort",
|
||||
"admin.config.smtp.port.description": "Poort van de SMTP-server",
|
||||
"admin.config.smtp.email": "E-mail",
|
||||
"admin.config.smtp.email.description": "E-mailadres waar de e-mails van worden verzonden",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Gebruikersnaam",
|
||||
"admin.config.smtp.username.description": "Gebruikersnaam van de SMTP-server",
|
||||
"admin.config.smtp.password": "Wachtwoord",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client-secret van de Microsoft OAuth app",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Ofdat discord login is ingeschakeld",
|
||||
"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 beperkte server ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Beperk het inloggen tot gebruikers in een specifieke server. Laat leeg om uit te schakelen.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Ofdat OpenID Connect login is ingeschakeld",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI van de OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Gebruikersnaam claim in OpenID Connect-ID-token. Laat het leeg als u niet weet wat deze configuratie is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Client secret van de OpenID Connect OAuth app",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled LDAP",
|
||||
"admin.config.ldap.enabled": "Enable LDAP",
|
||||
"admin.config.ldap.enabled.description": "Gebruik LDAP authentication voor gebruiker login",
|
||||
"admin.config.ldap.url": "Server URL",
|
||||
"admin.config.ldap.url.description": "URL van de LDAP server",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "Standaardgebruiker die zal worden gebruikt om de gebruikerszoekopdracht uit te voeren",
|
||||
"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": "Wachtwoord voor de user search gebruiker",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "De gekoppelde gebruiker aan {0} account bestaat niet.",
|
||||
"error.msg.no_email": "Kan geen e-mailadres ophalen van dit {0} account.",
|
||||
"error.msg.already_linked": "Dit {0} account is al gekoppeld aan een ander account.",
|
||||
"error.msg.not_linked": "Dit {0} account is nog aan geen enkel account gekoppeld.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Dit {0} account is nog niet geverifieerd, probeer het opnieuw na de verificatie.",
|
||||
"error.msg.user_not_allowed": "U heeft geen toestemming om in te loggen.",
|
||||
"error.msg.cannot_get_user_info": "Kan uw gebruikersgegevens van dit {0} account niet ophalen.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Genereren",
|
||||
"common.button.done": "Voltooid",
|
||||
"common.text.link": "Koppeling",
|
||||
"common.text.navigate-to-link": "Ga naar de koppeling",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "of",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Ga terug",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Ongeldig e-mailadres",
|
||||
"common.error.too-short": "Moet ten minste {length} tekens bevatten",
|
||||
"common.error.too-long": "Moet maximaal {length} tekens bevatten",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Moet precies {length} tekens bevatten",
|
||||
"common.error.invalid-number": "Moet een getal zijn",
|
||||
"common.error.field-required": "Dit veld is verplicht"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Prześlij",
|
||||
"navbar.signin": "Zaloguj się",
|
||||
"navbar.home": "Strona główna",
|
||||
"navbar.signup": "Zarejestruj się",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Moje udziały",
|
||||
"navbar.links.reverse": "Udziały odwrotne",
|
||||
"navbar.avatar.account": "Moje konto",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Samodzielnie Utrzymywana",
|
||||
"home.bullet.a.description": "Utrzymuj Pingvin Share na własnym serwerze.",
|
||||
"home.bullet.b.name": "Prywatność",
|
||||
"home.bullet.b.description": "To są twoje pliki i nigdy nie powinny trafiać w ręce osób trzecich.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Brak irytującego ograniczenia rozmiaru pliku",
|
||||
"home.bullet.c.description": "Prześlij tak duże pliki, jak chcesz. Ograniczeniem będzie tylko twój dysk twardy.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Zaczynajmy",
|
||||
"home.button.source": "Kod źródłowy",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Nie pamiętasz hasła?",
|
||||
"resetPassword.description": "Wprowadź swój e-mail, aby zresetować swoje hasło.",
|
||||
"resetPassword.notify.success": "Jeśli e-mail istnieje, to została wysłana wiadomość z linkiem do zresetowania hasła.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Powrót do strony logowania",
|
||||
"resetPassword.text.resetPassword": "Resetuj hasło",
|
||||
"resetPassword.text.enterNewPassword": "Wprowadź nowe hasło",
|
||||
"resetPassword.input.password": "Nowe hasło",
|
||||
"resetPassword.notify.passwordReset": "Hasło zostało pomyślnie zresetowane.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Moje konto",
|
||||
"account.card.info.title": "Informacje o koncie",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Hasło",
|
||||
"account.card.password.old": "Dotychczasowe hasło",
|
||||
"account.card.password.new": "Nowe hasło",
|
||||
"account.card.password.noPasswordSet": "Nie masz ustawionego hasła. Jeśli chcesz zalogować się za pomocą adresu e-mail i hasła, musisz ustawić hasło.",
|
||||
"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": "Hasło zostało pomyślnie zmienione",
|
||||
"account.card.oauth.title": "Logowanie za pomocą konta społecznościowego",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Odłącz",
|
||||
"account.card.oauth.unlinked": "Rozłączono",
|
||||
"account.modal.unlink.title": "Odłącz konto",
|
||||
"account.modal.unlink.description": "Odłączenie kont społecznościowych, jeśli nie pamiętasz nazwy użytkownika i hasła, może spowodować utratę konta.",
|
||||
"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": "Odłączono pomyślnie",
|
||||
"account.card.security.title": "Zabezpieczenia",
|
||||
"account.card.security.totp.enable.description": "Wprowadź aktualne hasło, aby móc włączyć TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Nazwa",
|
||||
"account.shares.table.description": "Opis",
|
||||
"account.shares.table.visitors": "Odwiedzający",
|
||||
"account.shares.table.expiresAt": "Wygasa",
|
||||
"account.shares.table.createdAt": "Utworzono",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Rozmiar",
|
||||
"account.shares.modal.share-informations": "Informacje udziału",
|
||||
"account.shares.modal.share-link": "Udostępnij link",
|
||||
"account.shares.modal.delete.title": "Usuń udostępnianie {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Czy na pewno chcesz usunąć to udostępnianie?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Rok",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Lata/lat",
|
||||
"account.reverseShares.modal.max-size.label": "Maksymalny rozmiar udziału",
|
||||
"account.reverseShares.modal.send-email": "Wysyłanie powiadomienia e-mail",
|
||||
"account.reverseShares.modal.send-email.description": "Wyślij powiadomienie e-mail, gdy udostępnianie zostanie utworzone za pomocą linku udostępniania odwrotnego.",
|
||||
"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": "Tryb uproszczony",
|
||||
"account.reverseShares.modal.simplified.description": "Ułatwia wysyłanie pliku do Ciebie. Osoba będzie mogła dostosować nazwę i opis udziałów.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Dostęp publiczny",
|
||||
"account.reverseShares.modal.public-access.description": "Ustaw to udostępnienie odwrotne jako publiczne. Gdy wyłączone, tylko ty i twórca udostępnienia może je zobaczyć.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Limit użyć",
|
||||
"account.reverseShares.modal.max-use.description": "Maksymalna ilość razy, kiedy ten adres URL może być użyty do utworzenia udostępniania.",
|
||||
"account.reverseShare.never-expires": "To udostępnienie odwrotne nigdy nie wygasa.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Nazwa użytkownika",
|
||||
"admin.users.table.email": "Adres e-mail",
|
||||
"admin.users.table.admin": "Administrator",
|
||||
"admin.users.edit.update.title": "Zaktualizuj użytkownika {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Uprawnienia administratora",
|
||||
"admin.users.edit.update.change-password.title": "Zmień hasło",
|
||||
"admin.users.edit.update.change-password.field": "Nowe hasło",
|
||||
"admin.users.edit.update.change-password.button": "Zapisz nowe hasło",
|
||||
"admin.users.edit.update.notify.password.success": "Hasło pomyślnie zmienione",
|
||||
"admin.users.edit.delete.title": "Usuń użytkownika {username}",
|
||||
"admin.users.edit.delete.description": "Czy na pewno chcesz usunąć tego użytkownika i wszystkie jego udziały?",
|
||||
"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": "Utwórz użytkownika",
|
||||
"admin.users.modal.create.username": "Nazwa użytkownika",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "ID Udostępnienia",
|
||||
"admin.shares.table.username": "Twórca",
|
||||
"admin.shares.table.visitors": "Odwiedzający",
|
||||
"admin.shares.table.expires": "Wygasa",
|
||||
"admin.shares.edit.delete.title": "Usuń udostępnienie {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "Czy na pewno chcesz usunąć to udostępnienie?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Prześlij",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Wystąpił błąd podczas zakończenia tworzenia udziału.",
|
||||
"upload.notify.count-failed": "Nie udało się przesłać {count} plików. Próbuję ponownie.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Prześlij pliki",
|
||||
"upload.dropzone.description": "Przeciągnij i upuść pliki tutaj, aby rozpocząć udostępnianie. Możemy zaakceptować tylko pliki mniejsze niż {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Twoje pliki przekraczają maksymalny rozmiar {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Nazwa",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Nie jesteś zalogowany/a",
|
||||
"upload.modal.not-signed-in-description": "Nie możesz ręcznie usunąć swojego udziału ani wyświetlić licznika odwiedzających.",
|
||||
"upload.modal.expires.never": "nigdy",
|
||||
"upload.modal.expires.never-long": "Nigdy nie wygasa",
|
||||
"upload.modal.expires.error.too-long": "Termin ważności przekracza maksymalną datę wygaśnięcia {max}.",
|
||||
"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": "Wygasanie",
|
||||
"upload.modal.expires.minute-singular": "Minuta",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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.modal.password.title": "Wymagane hasło",
|
||||
"share.modal.password.description": "Aby uzyskać dostęp do tego udziału, wprowadź hasło.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Hasło",
|
||||
"share.modal.error.invalid-password": "Hasło jest nieprawidłowe",
|
||||
"share.button.download-all": "Pobierz wszystko",
|
||||
"share.notify.download-all-preparing": "Udostępnianie jest przygotowywane. Spróbuj ponownie za kilka minut.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Link do pliku",
|
||||
"share.table.name": "Nazwa",
|
||||
"share.table.size": "Rozmiar",
|
||||
"share.modal.file-preview.error.not-supported.title": "Podgląd nie jest obsługiwany",
|
||||
"share.modal.file-preview.error.not-supported.description": "Podgląd dla tego typu pliku nie jest obsługiwany. Pobierz plik, aby go zobaczyć.",
|
||||
"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": "Edytuj {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Nazwa aplikacji",
|
||||
"admin.config.general.app-url": "Adres URL aplikacji",
|
||||
"admin.config.general.app-url.description": "Pod którym adresem URL Pingvin Share jest dostępny",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Pokaż stronę główną",
|
||||
"admin.config.general.show-home-page.description": "Czy wyświetlać stronę główną",
|
||||
"admin.config.general.session-duration": "Czas trwania sesji",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Zmień logo, przesyłając nowy obraz. Obraz musi być plikiem PNG i mieć proporcje 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Wybierz obraz",
|
||||
"admin.config.email.enable-share-email-recipients": "Włącz adresatów wiadomości e-mail dla udziału",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Czy zezwolić na wysyłanie e-maili do adresatów udziału? Włącz to tylko wtedy, gdy włączyłeś SMTP.",
|
||||
"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": "Temat dla odbiorców udziału",
|
||||
"admin.config.email.share-recipients-subject.description": "Temat wiadomości e-mail, która zostanie wysłana do odbiorców udziału.",
|
||||
"admin.config.email.share-recipients-message": "Wiadomość dla odbiorców udziału",
|
||||
"admin.config.email.share-recipients-message.description": "Wiadomość, która zostanie wysłana do odbiorców udziału. Dostępne zmienne:\n {creator} - Nazwa użytkownika twórcy udziału\n {shareUrl} - Adres URL udziału\n {desc} - Opis udziału\n {expires} - Data wygaśnięcia udziału\n Zmienne zostaną zastąpione rzeczywistą wartością.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Temat udziału odwrotnego",
|
||||
"admin.config.email.reverse-share-subject.description": "Temat wiadomości e-mail, która zostanie wysłana, gdy ktoś utworzy udostępnienie za pomocą linku udziału odwrotnego.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Wiadomość udziału odwrotnego",
|
||||
"admin.config.email.reverse-share-message.description": "Wiadomość, która zostanie wysłana, gdy ktoś utworzy udział za pomocą twojego linku udziału odwrotnego. {shareUrl} zostanie zastąpiony nazwą twórcy i adresem URL udziału.",
|
||||
"admin.config.email.reset-password-subject": "Temat resetowania hasła",
|
||||
"admin.config.email.reset-password-subject.description": "Temat wiadomości e-mail, która zostanie wysłana, gdy użytkownik zażąda zresetowania hasła.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Wiadomość resetowania hasła",
|
||||
"admin.config.email.reset-password-message.description": "Wiadomość, która zostanie wysłana, gdy użytkownik zażąda zresetowania hasła. {url} zostanie zastąpiony adresem URL resetowania hasła.",
|
||||
"admin.config.email.invite-subject": "Temat zaproszenia",
|
||||
"admin.config.email.invite-subject.description": "Temat wiadomości e-mail, która zostanie wysłana, gdy administrator zaprasza użytkownika.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Wiadomość zaproszenia",
|
||||
"admin.config.email.invite-message.description": "Wiadomość, która zostanie wysłana, gdy administrator zaprasza użytkownika. {url} zostanie zastąpiony adresem URL zaproszenia, {email} adresem e-mail a {password} hasłem użytkownika.",
|
||||
"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": "Zezwól na rejestrację",
|
||||
"admin.config.share.allow-registration.description": "Czy dozwolona jest rejestracja",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Zezwalaj na nieuwierzytelnione udostępnianie",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Poziom kompresji Zip",
|
||||
"admin.config.share.zip-compression-level.description": "Dostosuj poziom do równowagi między rozmiarem pliku a szybkością kompresji. Prawidłowe wartości mieszczą się w zakresie od 0 do 9, przy czym 0 to brak kompresji a 9 maksymalną kompresją. ",
|
||||
"admin.config.share.chunk-size": "Rozmiar fragmentu",
|
||||
"admin.config.share.chunk-size.description": "Dostosuj rozmiar fragmentu (w bajtach) dla przesyłanych plików w celu zrównoważenia wydajności i niezawodności zgodnie z Twoim połączeniem internetowym. Mniejsze fragmenty mogą zwiększyć szanse na powodzenie dla niestabilnych połączeń, podczas gdy większe fragmenty przyspieszają wysyłanie dla stabilnych połączeń.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Włączony",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Czy SMTP ma zostać włączony. Ustaw to, tylko jeśli wprowadziłeś host, port, e-mail, nazwę użytkownika i hasło serwera SMTP.",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "Host serwera SMTP",
|
||||
"admin.config.smtp.port": "Numer portu",
|
||||
"admin.config.smtp.port.description": "Numer portu serwera SMTP",
|
||||
"admin.config.smtp.email": "Adres e-mail",
|
||||
"admin.config.smtp.email.description": "Adres e-mail, z którego e-maile są wysyłane",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Nazwa użytkownika",
|
||||
"admin.config.smtp.username.description": "Nazwa użytkownika serwera SMTP",
|
||||
"admin.config.smtp.password": "Hasło",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Sekret klienta aplikacji Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Czy jest włączony login na Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID ograniczonego serwera Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Ogranicz logowanie do użytkowników na określonym serwerze. Pozostaw puste, aby wyłączyć.",
|
||||
"admin.config.oauth.discord-client-id": "ID klienta Discord",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Czy jest włączony login OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri": "Wykrywanie URI OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Wykrywanie URI OAuth aplikacji OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out": "Wylogowanie z OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Czy przycisk „Wyloguj się” spowoduje wylogowanie z dostawcy OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim": "Żądanie nazwy użytkownika OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Żądanie nazwy użytkownika w tokenie identyfikatora OpenID Connect. Jeśli nie wiesz, czym jest ta konfiguracja, pozostaw pustą.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "Sekret klienta OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Sekret klienta OAuth aplikacji OpenID Connect",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Użytkownik powiązany z tym kontem {0} nie istnieje.",
|
||||
"error.msg.no_email": "Nie można pobrać adresu e-mail z tego konta {0}.",
|
||||
"error.msg.already_linked": "To konto {0} zostało już połączone z innym kontem.",
|
||||
"error.msg.not_linked": "To konto {0} nie zostało jeszcze połączone z żadnym kontem.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "To konto {0} nie zostało zweryfikowane, spróbuj ponownie po weryfikacji.",
|
||||
"error.msg.user_not_allowed": "Nie możesz się zalogować.",
|
||||
"error.msg.cannot_get_user_info": "Nie można uzyskać informacji o użytkowniku z tego konta {0}.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Wygeneruj",
|
||||
"common.button.done": "Gotowe",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Przejdź do linku",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "lub",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Wróć",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Adres e-mail jest nieprawidłowy",
|
||||
"common.error.too-short": "Musi mieć co najmniej {length} znaków",
|
||||
"common.error.too-long": "Musi mieć co najmniej {length} znaków",
|
||||
"common.error.number-too-small": "Musi mieć co najmniej {min}",
|
||||
"common.error.number-too-large": "Musi wynosić co najwyżej {max}",
|
||||
"common.error.exact-length": "Musi mieć dokładnie {length} znaków",
|
||||
"common.error.invalid-number": "Musi być liczbą",
|
||||
"common.error.field-required": "To pole jest wymagane"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Carregar",
|
||||
"navbar.signin": "Iniciar sessão",
|
||||
"navbar.home": "Início",
|
||||
"navbar.signup": "Registar-se",
|
||||
"navbar.signup": "Cadastre-se",
|
||||
"navbar.links.shares": "Meus compartilhamentos",
|
||||
"navbar.links.reverse": "Compartilhamentos reversos",
|
||||
"navbar.avatar.account": "Minha conta",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Auto-Hospedado",
|
||||
"home.bullet.a.description": "Hospede o Pingvin Share em sua própria máquina.",
|
||||
"home.bullet.b.name": "Privacidade",
|
||||
"home.bullet.b.description": "Seus arquivos são seus arquivos e nunca devem cair nas mãos de terceiros.",
|
||||
"home.bullet.b.description": "Seus arquivos são seus e nunca serão acessados por terceiros.",
|
||||
"home.bullet.c.name": "Sem limite de tamanho de arquivo irritante",
|
||||
"home.bullet.c.description": "Carregue os arquivos grandes que desejar. Apenas o seu disco rígido será o seu limite.",
|
||||
"home.bullet.c.description": "Carregue arquivos tão grandes quanto quiser. Apenas o seu disco rígido será o seu limite.",
|
||||
"home.button.start": "Começar",
|
||||
"home.button.source": "Código-fonte",
|
||||
// END /
|
||||
@@ -58,7 +58,7 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Esqueceu a sua senha?",
|
||||
"resetPassword.description": "Insira o seu e-mail para redefinir a sua senha.",
|
||||
"resetPassword.notify.success": "Uma mensagem com um link para redefinir sua senha foi enviada se o e-mail existir.",
|
||||
"resetPassword.notify.success": "Uma mensagem com um link para redefinir sua senha foi enviada se o e-mail fornecido existir.",
|
||||
"resetPassword.button.back": "Voltar para a página inicial",
|
||||
"resetPassword.text.resetPassword": "Redefinir senha",
|
||||
"resetPassword.text.enterNewPassword": "Digite uma nova senha",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Senha",
|
||||
"account.card.password.old": "Senha antiga",
|
||||
"account.card.password.new": "Nova senha",
|
||||
"account.card.password.noPasswordSet": "Você não tem uma senha definida. Se quiser entrar com e-mail e senha você precisa definir uma senha.",
|
||||
"account.card.password.noPasswordSet": "Você não tem uma senha definida. Para entrar utilizando seu e-mail e senha, você precisa criar uma senha.",
|
||||
"account.notify.password.success": "Senha alterada com sucesso",
|
||||
"account.card.oauth.title": "Login com Redes Sociais",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Desvincular",
|
||||
"account.card.oauth.unlinked": "Desvinculado",
|
||||
"account.modal.unlink.title": "Desvincular conta",
|
||||
"account.modal.unlink.description": "Desvincular suas redes sociais pode fazer com que você perca sua conta se não se lembrar de seu nome de usuário e senha.",
|
||||
"account.modal.unlink.description": "Desvincular suas redes sociais pode fazer com que você perca sua conta se não se lembrar de seu nome de usuário e senha",
|
||||
"account.notify.oauth.unlinked.success": "Desvinculado com sucesso",
|
||||
"account.card.security.title": "Segurança",
|
||||
"account.card.security.totp.enable.description": "Digite a sua senha atual para começar a habilitar o TOTP",
|
||||
@@ -122,7 +122,7 @@ export default {
|
||||
"account.shares.table.description": "Descrição",
|
||||
"account.shares.table.visitors": "Visitantes",
|
||||
"account.shares.table.expiresAt": "Expira em",
|
||||
"account.shares.table.createdAt": "Criado em",
|
||||
"account.shares.table.createdAt": "Criada em",
|
||||
"account.shares.table.size": "Tamanho",
|
||||
"account.shares.modal.share-informations": "Informações do compartilhamento",
|
||||
"account.shares.modal.share-link": "Link do compartilhamento",
|
||||
@@ -150,7 +150,7 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Ano",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Anos",
|
||||
"account.reverseShares.modal.max-size.label": "Tamanho máximo do compartilhamento",
|
||||
"account.reverseShares.modal.send-email": "Enviar notificação por e-mail",
|
||||
"account.reverseShares.modal.send-email": "Enviar notificações por email",
|
||||
"account.reverseShares.modal.send-email.description": "Enviar uma notificação por e-mail quando um compartilhamento for criado com este link reverso.",
|
||||
"account.reverseShares.modal.simplified": "Modo simples",
|
||||
"account.reverseShares.modal.simplified.description": "Facilite o upload da pessoa para compartilhar o arquivo com você. Eles serão capazes de personalizar somente o nome e a descrição do compartilhamento.",
|
||||
@@ -183,13 +183,13 @@ export default {
|
||||
"admin.users.table.username": "Nome de usuário",
|
||||
"admin.users.table.email": "E-mail",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Atualizar usuário {username}",
|
||||
"admin.users.edit.update.title": "Editar usuário: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Privilégios de administrador",
|
||||
"admin.users.edit.update.change-password.title": "Alterar senha",
|
||||
"admin.users.edit.update.change-password.field": "Nova senha",
|
||||
"admin.users.edit.update.change-password.button": "Salvar nova senha",
|
||||
"admin.users.edit.update.notify.password.success": "Senha alterada com sucesso",
|
||||
"admin.users.edit.delete.title": "Excluir usuário {username}",
|
||||
"admin.users.edit.delete.title": "Excluir usuário {username} ?",
|
||||
"admin.users.edit.delete.description": "Você realmente quer excluir este usuário e todos os seus compartilhamentos?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Criar usuário",
|
||||
@@ -207,16 +207,19 @@ export default {
|
||||
"admin.shares.table.username": "Criador",
|
||||
"admin.shares.table.visitors": "Visitantes",
|
||||
"admin.shares.table.expires": "Expira em",
|
||||
"admin.shares.edit.delete.title": "Excluir compartilhamento {id}",
|
||||
"admin.shares.edit.delete.title": "Excluir o compartilhamento {id}",
|
||||
"admin.shares.edit.delete.description": "Tem certeza que deseja excluir este compartilhamento?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Carregar",
|
||||
"upload.notify.confirm-leave": "Você tem certeza que deseja sair desta página? Seu envio será cancelado.",
|
||||
"upload.notify.generic-error": "Ocorreu um erro ao terminar seu compartilhamento.",
|
||||
"upload.notify.count-failed": "Falha ao enviar {count} arquivos. Tentando novamente.",
|
||||
"upload.reverse-share.error.invalid.title": "Link de compartilhamento reverso inválido",
|
||||
"upload.reverse-share.error.invalid.description": "Este compartilhamento reverso expirou ou é inválido.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Carregar arquivos",
|
||||
"upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Podemos aceitar apenas arquivos que são menores que {maxSize} no total.",
|
||||
"upload.dropzone.description": "Arraste os arquivos aqui para iniciar o seu compartilhamento. Aceitamos apenas arquivos até {maxSize} no total.",
|
||||
"upload.dropzone.notify.file-too-big": "Seus arquivos excedem o tamanho máximo do compartilhamento {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Nome",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Você não está conectado",
|
||||
"upload.modal.not-signed-in-description": "Você não poderá excluir seu compartilhamento manualmente e visualizar a contagem de visitantes.",
|
||||
"upload.modal.expires.never": "nunca",
|
||||
"upload.modal.expires.never-long": "Nunca expira",
|
||||
"upload.modal.expires.error.too-long": "Expiração excede a data de expiração máxima de {max}.",
|
||||
"upload.modal.expires.never-long": "Compartilhamento permanente",
|
||||
"upload.modal.expires.error.too-long": "Data de expiração excede o máximo de {max}.",
|
||||
"upload.modal.link.label": "Link",
|
||||
"upload.modal.expires.label": "Expiração",
|
||||
"upload.modal.expires.minute-singular": "Minuto",
|
||||
@@ -272,7 +275,7 @@ export default {
|
||||
"share.error.access-denied.title": "Compartilhamento privado",
|
||||
"share.error.access-denied.description": "A conta atual não tem permissão para acessar este compartilhamento",
|
||||
"share.modal.password.title": "Senha necessária",
|
||||
"share.modal.password.description": "Para acessar este compartilhamento, por favor digite a senha para o compartilhamento.",
|
||||
"share.modal.password.description": "Por favor, digite a senha para acessar este compartilhamento.",
|
||||
"share.modal.password": "Senha",
|
||||
"share.modal.error.invalid-password": "Senha inválida",
|
||||
"share.button.download-all": "Transferir tudo",
|
||||
@@ -281,7 +284,7 @@ export default {
|
||||
"share.table.name": "Nome",
|
||||
"share.table.size": "Tamanho",
|
||||
"share.modal.file-preview.error.not-supported.title": "Visualização não suportada",
|
||||
"share.modal.file-preview.error.not-supported.description": "Uma pré-visualização para este tipo de arquivo não é suportada. Faça o download do arquivo para visualizá-lo.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Pré-visualizações não são suportadas para este tipo de arquivos. Por favor, baixe o arquivo para visualizá-lo.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Editar {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Nome da aplicação",
|
||||
"admin.config.general.app-url": "URL do Aplicativo",
|
||||
"admin.config.general.app-url.description": "Em qual URL o Pingvin Share está disponível",
|
||||
"admin.config.general.secure-cookies": "Cookies seguros",
|
||||
"admin.config.general.secure-cookies.description": "Se definir a bandeira segura nos cookies. Se habilitado, o site não funcionará quando acessado por HTTP.",
|
||||
"admin.config.general.show-home-page": "Mostrar a página inicial",
|
||||
"admin.config.general.show-home-page.description": "Mostrar ou não a página inicial",
|
||||
"admin.config.general.session-duration": "Duração de sessão",
|
||||
@@ -307,12 +312,12 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Alterar o seu logo carregando uma nova imagem. A imagem deve ser PNG e deve ter o formato 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Escolhe uma imagem",
|
||||
"admin.config.email.enable-share-email-recipients": "Ativar compartilhamento de e-mails destinatários",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Se quiser permitir que e-mails compartilhem destinatários. Apenas habilite isso se você tiver ativado o SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Ativar compartilhamento por email",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Se deseja permitir o compartilhamento por e-mail com destinatários. Só ative isto se o SMTP estiver ativado.",
|
||||
"admin.config.email.share-recipients-subject": "Assunto dos destinatários do compartilhamento",
|
||||
"admin.config.email.share-recipients-subject.description": "Assunto do e-mail enviado para os destinatários do compartilhamento.",
|
||||
"admin.config.email.share-recipients-message": "Assunto dos destinatários do compartilhamento",
|
||||
"admin.config.email.share-recipients-message.description": "Mensagem que é enviada aos destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {shareUrl} - O URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n As variáveis serão substituídas pelo valor real.",
|
||||
"admin.config.email.share-recipients-message.description": "Mensagem que é enviada para os destinatários do compartilhamento. Variáveis disponíveis:\n {creator} - O nome de usuário do criador do compartilhamento\n {creatorEmail} - O e-mail do criador do compartilhamento\n {shareUrl} - A URL do compartilhamento\n {desc} - A descrição do compartilhamento\n {expires} - A data de expiração do compartilhamento\n Essas variáveis serão substituídas pelo valor real.",
|
||||
"admin.config.email.reverse-share-subject": "Assunto do compartilhamento reverso",
|
||||
"admin.config.email.reverse-share-subject.description": "Assunto do e-mail enviado quando alguém criou um compartilhamento com o seu link reverso.",
|
||||
"admin.config.email.reverse-share-message": "Mensagem do compartilhamento reverso",
|
||||
@@ -339,7 +344,7 @@ export default {
|
||||
"admin.config.share.chunk-size.description": "Ajuste o tamanho do pedaço (em bytes) para seus uploads equilibrarem eficiência e confiabilidade de acordo com sua conexão com a internet. Pedaços menores podem aumentar as taxas de sucesso para conexões instáveis, enquanto partes maiores aceleram uploads para conexões estáveis.",
|
||||
"admin.config.share.auto-open-share-modal": "Abertura automática do modal de criação de compartilhamento",
|
||||
"admin.config.share.auto-open-share-modal.description": "O modal de criação de compartilhamento aparece automaticamente quando um usuário seleciona arquivos, eliminando a necessidade de clicar manualmente no botão.",
|
||||
"admin.config.smtp.enabled": "Ativado",
|
||||
"admin.config.smtp.enabled": "Habilitar",
|
||||
"admin.config.smtp.enabled.description": "Se o SMTP está habilitado. Apenas defina como verdadeiro se você digitou o servidor, porta, e-mail, usuário e senha do seu servidor SMTP.",
|
||||
"admin.config.smtp.host": "Servidor",
|
||||
"admin.config.smtp.host.description": "Nome do Servidor SMTP",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret do aplicativo Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Se o login do Discord está habilitado",
|
||||
"admin.config.oauth.discord-limited-users": "Usuários limitados do Discord",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limite de login em usuários específicos por sua ID do Discord. Deixe em branco para desativar.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID do servidor limitado do Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Limite de login para usuários em um servidor específico. Deixe em branco para desativar.",
|
||||
"admin.config.oauth.discord-client-id": "ID do Cliente Discord",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Se o login do OpenID Connect está ativado",
|
||||
"admin.config.oauth.oidc-discovery-uri": "URI de descoberta do OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "URI da descoberta do aplicativo OpenID Connect OAuth",
|
||||
"admin.config.oauth.oidc-sign-out": "Sair do OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Se o botão “Sair” fará o logout do provedor OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim": "Reivindicação de nome de usuário OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Nome de usuário no token de ID OpenID Connect. Deixe em branco se você não sabe o que é esta configuração.",
|
||||
"admin.config.oauth.oidc-role-path": "Caminho para as funções no token OpenID Connect",
|
||||
@@ -405,24 +414,24 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "Segredo do cliente OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-secret.description": "ID do cliente do aplicativo OpenID OAuth",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "LDAP Habilitado",
|
||||
"admin.config.ldap.enabled": "Habilitar LDAP",
|
||||
"admin.config.ldap.enabled.description": "Usar autenticação LDAP para login de usuário",
|
||||
"admin.config.ldap.url": "URL do Servidor",
|
||||
"admin.config.ldap.url.description": "URL do Servidor LDAP",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "Usuário padrão que será usado para executar a pesquisa de usuário",
|
||||
"admin.config.ldap.bind-dn.description": "Usuário padrão usado para realizar a pesquisa de usuário",
|
||||
"admin.config.ldap.bind-password": "Bind Password",
|
||||
"admin.config.ldap.bind-password.description": "Senha para o usuário de busca",
|
||||
"admin.config.ldap.bind-password.description": "Senha usada para realizar a busca de usuários",
|
||||
"admin.config.ldap.search-base": "Base de Usuários",
|
||||
"admin.config.ldap.search-base.description": "Localização base, onde a pesquisa do usuário será realizada",
|
||||
"admin.config.ldap.search-query": "Consulta de usuário",
|
||||
"admin.config.ldap.search-query.description": "A consulta do usuário será usada para pesquisar a 'base de usuários' para o usuário LDAP. %username% pode ser usado como espaço reservado para o usuário fornecido na entrada.",
|
||||
"admin.config.ldap.admin-groups": "Grupo de administração",
|
||||
"admin.config.ldap.admin-groups.description": "Grupo necessário para acesso administrativo.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.field-name-member-of": "Nome do atributo do grupo de usuários",
|
||||
"admin.config.ldap.field-name-member-of.description": "Nome do atributo LDAP para os grupos, de um usuário é membro. Isto é usado ao verificar para o grupo de administração.",
|
||||
"admin.config.ldap.field-name-email": "Nome do atributo do grupo de usuários",
|
||||
"admin.config.ldap.field-name-email.description": "Nome do atributo LDAP para o email de um usuário.",
|
||||
// 404
|
||||
"404.description": "Ops, esta página não existe.",
|
||||
"404.button.home": "Me traga de volta para casa",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Gerar",
|
||||
"common.button.done": "Concluído",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Ir para o link",
|
||||
"common.text.navigate-to-link": "Visitar Link",
|
||||
"common.text.or": "ou",
|
||||
"common.text.redirecting": "Redirecionando...",
|
||||
"common.button.go-back": "Voltar",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Endereço de e-mail inválido",
|
||||
"common.error.too-short": "Deve ter no mínimo {length} caracteres",
|
||||
"common.error.too-long": "Deve ter no máximo {length} caracteres",
|
||||
"common.error.number-too-small": "Deve ser pelo menos {min}",
|
||||
"common.error.number-too-large": "Deve ser no máximo {max}",
|
||||
"common.error.exact-length": "Deve ter exatamente {length} caracteres",
|
||||
"common.error.invalid-number": "Tem que ser um número",
|
||||
"common.error.field-required": "Este campo é obrigatório"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Загрузить",
|
||||
"navbar.signin": "Вход",
|
||||
"navbar.home": "Главная",
|
||||
"navbar.signup": "Зарегистрироваться",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Мои загрузки",
|
||||
"navbar.links.reverse": "Обратные загрузки",
|
||||
"navbar.avatar.account": "Мой аккаунт",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "На собственном сервере",
|
||||
"home.bullet.a.description": "Pingvin Share работает на вашей машине.",
|
||||
"home.bullet.b.name": "Конфиденциальность",
|
||||
"home.bullet.b.description": "Ваши файлы - это ваши файлы и никогда не должны попадать в руки третьих лиц.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Без раздражающего ограничения размера файла",
|
||||
"home.bullet.c.description": "Загружайте файлы с любым размером. Только ваш жесткий диск будет пределом.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Начнем",
|
||||
"home.button.source": "Исходный код",
|
||||
// END /
|
||||
@@ -34,7 +34,7 @@ export default {
|
||||
"signIn.notify.totp-required.title": "Требуется двухфакторная аутентификация",
|
||||
"signIn.notify.totp-required.description": "Пожалуйста, введите код Вашей 2-х факторной аутентификации",
|
||||
"signIn.oauth.or": "ИЛИ",
|
||||
"signIn.oauth.signInWith": "Sign in with",
|
||||
"signIn.oauth.signInWith": "Войдите с помощью",
|
||||
"signIn.oauth.github": "GitHub",
|
||||
"signIn.oauth.google": "Google",
|
||||
"signIn.oauth.microsoft": "Microsoft",
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Забыли пароль?",
|
||||
"resetPassword.description": "Введите ваш email для восстановления пароля.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Вернуться на страницу входа",
|
||||
"resetPassword.text.resetPassword": "Сбросить пароль",
|
||||
"resetPassword.text.enterNewPassword": "Введите новый пароль",
|
||||
"resetPassword.input.password": "Новый пароль",
|
||||
"resetPassword.notify.passwordReset": "Ваш пароль был успешно сброшен!",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Мой аккаунт",
|
||||
"account.card.info.title": "Информация об аккаунте",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Пароль",
|
||||
"account.card.password.old": "Старый пароль",
|
||||
"account.card.password.new": "Новый пароль",
|
||||
"account.card.password.noPasswordSet": "У вас не установлен пароль. Если вы хотите войти с помощью электронной почты и пароля, вам необходимо установить пароль.",
|
||||
"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": "Пароль успешно изменён",
|
||||
"account.card.oauth.title": "Авторизация через социальные сети",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Отключить",
|
||||
"account.card.oauth.unlinked": "Отключен",
|
||||
"account.modal.unlink.title": "Отключить связь с учетной записью",
|
||||
"account.modal.unlink.description": "Отключение связи с учетной записью социальных аккаунтов может привести к потере вашей учетной записи, если вы не помните свое имя пользователя и пароль.",
|
||||
"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": "Отключение прошло успешно",
|
||||
"account.card.security.title": "Безопасность",
|
||||
"account.card.security.totp.enable.description": "Введите ваш текущий пароль для начала включения TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Название",
|
||||
"account.shares.table.description": "Описание",
|
||||
"account.shares.table.visitors": "Посетителей",
|
||||
"account.shares.table.expiresAt": "Действительно до",
|
||||
"account.shares.table.createdAt": "Создано",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Размер",
|
||||
"account.shares.modal.share-informations": "Сведения",
|
||||
"account.shares.modal.share-link": "Поделиться ссылкой",
|
||||
"account.shares.modal.delete.title": "Удалить загрузку {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Вы действительно хотите удалить эту загрузку?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Год",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Года (лет)",
|
||||
"account.reverseShares.modal.max-size.label": "Макс. размер загрузки",
|
||||
"account.reverseShares.modal.send-email": "Отправить уведомление по эл. почте",
|
||||
"account.reverseShares.modal.send-email.description": "Отправлять уведомление по электронной почте, когда загрузка создается с помощью этой обратной ссылки.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Максимум использований",
|
||||
"account.reverseShares.modal.max-use.description": "Максимальное количество раз, когда URL может быть использован для создания загрузки.",
|
||||
"account.reverseShare.never-expires": "Эта обратная загрузка никогда не устареет.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Логин",
|
||||
"admin.users.table.email": "Электронная почта",
|
||||
"admin.users.table.admin": "Администратор",
|
||||
"admin.users.edit.update.title": "Обновить пользователя {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Права администратора",
|
||||
"admin.users.edit.update.change-password.title": "Изменить пароль",
|
||||
"admin.users.edit.update.change-password.field": "Новый пароль",
|
||||
"admin.users.edit.update.change-password.button": "Сохранить новый пароль",
|
||||
"admin.users.edit.update.notify.password.success": "Пароль успешно изменён",
|
||||
"admin.users.edit.delete.title": "Удалить пользователя {username}",
|
||||
"admin.users.edit.delete.description": "Вы действительно хотите удалить этого пользователя и все его загрузки?",
|
||||
"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": "Создать пользователя",
|
||||
"admin.users.modal.create.username": "Логин",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Произошла ошибка при завершении вашей загрузки.",
|
||||
"upload.notify.count-failed": "Не удалось загрузить файлы {count}. Повтор попытки.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Загрузить файлы",
|
||||
"upload.dropzone.description": "Перетащите сюда файлы для начала загрузки. Мы можем принимать только файлы, которые меньше {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Ваши файлы превышают максимальный размер в {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Название",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Вы не авторизованы",
|
||||
"upload.modal.not-signed-in-description": "Вы не сможете удалить свои файлы вручную и просмотреть количество посетителей.",
|
||||
"upload.modal.expires.never": "никогда",
|
||||
"upload.modal.expires.never-long": "Никогда не истекает",
|
||||
"upload.modal.expires.error.too-long": "Срок действия превышает максимальную дату окончания срока действия {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Ссылка",
|
||||
"upload.modal.expires.label": "Истекает",
|
||||
"upload.modal.expires.minute-singular": "Минута",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.modal.password.title": "Требуется пароль",
|
||||
"share.modal.password.description": "Для доступа к этому ресурсу введите пароль для общего доступа.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Пароль",
|
||||
"share.modal.error.invalid-password": "Неверный пароль",
|
||||
"share.button.download-all": "Скачать все",
|
||||
"share.notify.download-all-preparing": "Загрузка готовится. Повторите попытку через несколько минут.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Ссылка на файл",
|
||||
"share.table.name": "Название",
|
||||
"share.table.size": "Размер",
|
||||
"share.modal.file-preview.error.not-supported.title": "Предпросмотр не поддерживается",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Редактировать {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Видимое название приложения",
|
||||
"admin.config.general.app-url": "URL-адрес приложения",
|
||||
"admin.config.general.app-url.description": "Адрес на котором доступен Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Показывать домашнюю страницу",
|
||||
"admin.config.general.show-home-page.description": "Показывать ли домашнюю страницу или нет",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Логотип",
|
||||
"admin.config.general.logo.description": "Измените свой логотип, загрузив новое изображение. Изображение должно быть PNG и должно иметь формат 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Выберите изображение",
|
||||
"admin.config.email.enable-share-email-recipients": "Включить обмен с получателями электронной почты",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Разрешить ли отправку писем получателям. Включите, только если вы включили SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Заголовок письма (загрузка)",
|
||||
"admin.config.email.share-recipients-subject.description": "Тема письма, которое отправляется получателям акции.",
|
||||
"admin.config.email.share-recipients-message": "Сообщение письма загрузки",
|
||||
"admin.config.email.share-recipients-message.description": "Сообщение, которое отправляется получателям публикации. Доступные переменные:\n {creator} - Имя пользователя создателя загрузки\n {shareUrl} - URL загрузки\n {desc} - Описание загрузки\n {expires} - Дата истечения загрузки\n Переменные будут заменены на фактическое значение.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Заголовок письма (обратная загрузка)",
|
||||
"admin.config.email.reverse-share-subject.description": "Тема письма, которое отправляется, когда кто-то создал загрузку с вашей обратной ссылкой.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Сообщение письма обратной загрузки",
|
||||
"admin.config.email.reverse-share-message.description": "Сообщение, которое отправляется, когда кто-то создал загрузку с вашей обратной ссылкой. {shareUrl} будет заменен именем создателя и URL-адресом общего доступа.",
|
||||
"admin.config.email.reset-password-subject": "Тема сброса пароля",
|
||||
"admin.config.email.reset-password-subject.description": "Тема письма, которое отправляется, когда пользователь запрашивает сброс пароля.",
|
||||
"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": "Сообщение о сбросе пароля",
|
||||
"admin.config.email.reset-password-message.description": "Сообщение, которое отправляется при запросе сброса пароля. {url} будет заменён ссылкой.",
|
||||
"admin.config.email.invite-subject": "Тема приглашения",
|
||||
"admin.config.email.invite-subject.description": "Тема письма, которое отправляется, когда администратор приглашает пользователя.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Сообщение с приглашением",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "Разрешить регистрацию",
|
||||
"admin.config.share.allow-registration.description": "Разрешена ли регистрация",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Разрешить неавторизованные загрузки",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Уровень сжатия Zip",
|
||||
"admin.config.share.zip-compression-level.description": "Регулировка уровня баланса между размером файла и скоростью сжатия. Допустимые значения от 0 до 9, с 0 без сжатия, а 9 - максимальное сжатие. ",
|
||||
"admin.config.share.chunk-size": "Размер чанка",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Включено",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Включено ли SMTP. Установите значение true только если вы ввели хост, порт, email, пользователь и пароль вашего SMTP-сервера.",
|
||||
"admin.config.smtp.host": "Хост",
|
||||
"admin.config.smtp.host.description": "Сервер SMTP сервера",
|
||||
"admin.config.smtp.port": "Порт",
|
||||
"admin.config.smtp.port.description": "Порт SMTP сервера",
|
||||
"admin.config.smtp.email": "Электронная почта",
|
||||
"admin.config.smtp.email.description": "Адрес электронной почты, от которого отправляются письма",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Логин",
|
||||
"admin.config.smtp.username.description": "Имя пользователя SMTP сервера",
|
||||
"admin.config.smtp.password": "Пароль",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Секретный ключ клиента в приложении Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Включен ли логин Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID ограниченного сервера Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Ограничение входа для пользователей определенного сервера. Оставьте пустым, чтобы отключить.",
|
||||
"admin.config.oauth.discord-client-id": "ID клиента Discord",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Пользователь связанный с учетной записью {0} не существует.",
|
||||
"error.msg.no_email": "Не удается получить адрес электронной почты от учетной записи {0}.",
|
||||
"error.msg.already_linked": "Эта учетная запись {0} уже привязана к другому аккаунту.",
|
||||
"error.msg.not_linked": "Эта учетная запись {0} ещё не привязана ни к одному аккаунту.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Эта учетная запись {0} не подтверждена, повторите попытку после подтверждения.",
|
||||
"error.msg.user_not_allowed": "У вас нет разрешения на вход.",
|
||||
"error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,9 +467,9 @@ export default {
|
||||
"common.button.generate": "Сгенерировать",
|
||||
"common.button.done": "Готово",
|
||||
"common.text.link": "Ссылка",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Перейти по ссылке",
|
||||
"common.text.or": "или",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.text.redirecting": "Идет перенаправление...",
|
||||
"common.button.go-back": "Назад",
|
||||
"common.button.go-home": "Домой",
|
||||
"common.notify.copied": "Ваша ссылка скопирована в буфер обмена",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Недопустимый адрес электронной почты",
|
||||
"common.error.too-short": "Должно быть не менее {length} символов",
|
||||
"common.error.too-long": "Должно быть не больше {length} символов",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Должно быть ровно {length} символов",
|
||||
"common.error.invalid-number": "Должно быть числом",
|
||||
"common.error.field-required": "Поле обязательно для заполнения"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Naloži",
|
||||
"navbar.signin": "Vpis",
|
||||
"navbar.home": "Domov",
|
||||
"navbar.signup": "Registracija",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Moja deljenja",
|
||||
"navbar.links.reverse": "Deljenja v obratni smeri",
|
||||
"navbar.avatar.account": "Moj račun",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Lastno-Gostovanje",
|
||||
"home.bullet.a.description": "Gostuj Pingvin Share na svoji lastni napravi.",
|
||||
"home.bullet.b.name": "Zasebnost",
|
||||
"home.bullet.b.description": "Vaše datoteke so samo vaše in ne bi nikoli smele pristati v rokah tretjih oseb.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Brez nadležnih omejitev velikosti datoteke",
|
||||
"home.bullet.c.description": "Naložite datoteke, velike kolikor želite. Omejuje vas samo vaš disk.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Začnite zdaj",
|
||||
"home.button.source": "Izvorna koda",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Ste pozabili svoje geslo?",
|
||||
"resetPassword.description": "Vnesite svoj e-poštni naslov za ponastavitev gesla.",
|
||||
"resetPassword.notify.success": "Sporočilo s povezavo za ponastavitev vašega gesla je bilo poslano, če vaš e-poštni naslov obstaja.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Nazaj na stran za prijavo",
|
||||
"resetPassword.text.resetPassword": "Ponastavi geslo",
|
||||
"resetPassword.text.enterNewPassword": "Vnesite novo geslo",
|
||||
"resetPassword.input.password": "Novo geslo",
|
||||
"resetPassword.notify.passwordReset": "Vaše geslo je bilo uspešno ponastavljeno.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Moj račun",
|
||||
"account.card.info.title": "Informacije o računu",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Geslo",
|
||||
"account.card.password.old": "Staro geslo",
|
||||
"account.card.password.new": "Novo geslo",
|
||||
"account.card.password.noPasswordSet": "Vaše geslo ni nastavljeno. Če se želite prijaviti z e-pošto in geslom, morate imeti nastavljeno geslo.",
|
||||
"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": "Geslo je bilo uspešno posodobljeno",
|
||||
"account.card.oauth.title": "Prijava z računi družbenih omrežij",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Odstrani povezavo",
|
||||
"account.card.oauth.unlinked": "Povezava je odstranjena",
|
||||
"account.modal.unlink.title": "Odstrani povezavo z računom",
|
||||
"account.modal.unlink.description": "Odstranitev povezave z računom družbenih omrežij lahko privede do izgube vašega računa, če se ne spomnite vašega uporabniškega imena in gesla.",
|
||||
"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": "Povezava je bila uspešno odstranjena",
|
||||
"account.card.security.title": "Varnost",
|
||||
"account.card.security.totp.enable.description": "Vnesite vašo trenutno geslo, da omogočite TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Ime",
|
||||
"account.shares.table.description": "Opis",
|
||||
"account.shares.table.visitors": "Obiskovalci",
|
||||
"account.shares.table.expiresAt": "Poteče dne",
|
||||
"account.shares.table.createdAt": "Ustvarjeno dne",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Velikost",
|
||||
"account.shares.modal.share-informations": "Delite informacije",
|
||||
"account.shares.modal.share-link": "Delite povezavo",
|
||||
"account.shares.modal.delete.title": "Izbrišite delitev {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Ali res želite izbrisati to delitev?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Leto",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Leta",
|
||||
"account.reverseShares.modal.max-size.label": "Največja velikost delitve",
|
||||
"account.reverseShares.modal.send-email": "Pošlji e-poštno obvestilo",
|
||||
"account.reverseShares.modal.send-email.description": "Pošlji e-poštno obvestilo, ko je ustvarjena delitev s povezavo te delitve v obratni smeri.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Največ uporab",
|
||||
"account.reverseShares.modal.max-use.description": "Največje število uporab URL-ja za ustvarjanje delitve.",
|
||||
"account.reverseShare.never-expires": "Ta povezava delitve v obratni smeri ne bo nikoli potekla.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Uporabniško ime",
|
||||
"admin.users.table.email": "E-pošta",
|
||||
"admin.users.table.admin": "Administrator",
|
||||
"admin.users.edit.update.title": "Uredi uporabnika {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Administratorski privilegiji",
|
||||
"admin.users.edit.update.change-password.title": "Spremenite geslo",
|
||||
"admin.users.edit.update.change-password.field": "Novo geslo",
|
||||
"admin.users.edit.update.change-password.button": "Shranite novo geslo",
|
||||
"admin.users.edit.update.notify.password.success": "Geslo je bilo uspešno posodobljeno",
|
||||
"admin.users.edit.delete.title": "Izbrišite uporabnika {username}",
|
||||
"admin.users.edit.delete.description": "Ali res želite izbrisati tega uporabnika in vsa njegova deljenja?",
|
||||
"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": "Ustvarite uporabnika",
|
||||
"admin.users.modal.create.username": "Uporabniško ime",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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": "Naložite",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Prišlo je do napake pri ustvarjanju vašega deljenja.",
|
||||
"upload.notify.count-failed": "Prišlo je do napake pri nalaganju toliko datotek: {count}. Poskušamo ponovno.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Naloži datoteke",
|
||||
"upload.dropzone.description": "Tukaj spustite datoteke, da začnete z delitvijo. Sprejemamo samo datoteke, ki so skupaj manjše od {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Vaše datoteke presegajo največjo dovoljeno velikost {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Ime",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Niste prijavljeni",
|
||||
"upload.modal.not-signed-in-description": "Ne boste mogli izbrisati vaših delitev in pregledati števila obiskovalcev.",
|
||||
"upload.modal.expires.never": "nikoli",
|
||||
"upload.modal.expires.never-long": "Nikoli ne poteče",
|
||||
"upload.modal.expires.error.too-long": "Dan poteka presega najvišji datum poteka {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Povezava",
|
||||
"upload.modal.expires.label": "Zapadlost",
|
||||
"upload.modal.expires.minute-singular": "Minuta",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "Zahtevano geslo",
|
||||
"share.modal.password.description": "Za ogled delitve vnesite geslo te delitve.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Geslo",
|
||||
"share.modal.error.invalid-password": "Napačno geslo",
|
||||
"share.button.download-all": "Prenesi vse",
|
||||
"share.notify.download-all-preparing": "Delitev je v pripravi. Prosimo poskusite ponovno čez nekaj minut.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Povezava do datoteke",
|
||||
"share.table.name": "Ime",
|
||||
"share.table.size": "Velikost",
|
||||
"share.modal.file-preview.error.not-supported.title": "Predogled ni mogoč",
|
||||
"share.modal.file-preview.error.not-supported.description": "Predogled za to datoteko ni podprt. Prosimo prenesite datoteko, da si jo ogledate.",
|
||||
"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": "Uredite {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Ime vaše aplikacije",
|
||||
"admin.config.general.app-url": "URL aplikacije",
|
||||
"admin.config.general.app-url.description": "Na katerem URL-ju je dostopen Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Prikaži domačo stran",
|
||||
"admin.config.general.show-home-page.description": "Ali prikazati domačo stran",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logotip",
|
||||
"admin.config.general.logo.description": "Naložite novo sliko, da spremenite logotip. Datoteka mora biti tipa PNG in imeti razmerje 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Izberite sliko",
|
||||
"admin.config.email.enable-share-email-recipients": "Omogoči prejemnike delitve po e-pošti",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Ali dovolite pošiljanje delitve po e-pošti. Omogočite samo v primeru, da imate omogočen SMTP.",
|
||||
"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": "Zadeva poslane delitve",
|
||||
"admin.config.email.share-recipients-subject.description": "Zadeva e-poštnega sporočila, ki bo poslan prejemnikom delitve.",
|
||||
"admin.config.email.share-recipients-message": "Vsebina poslane delitve",
|
||||
"admin.config.email.share-recipients-message.description": "Vsebina e-poštnega sporočila, ki bo poslana prejemnikom delitve. Spremenljivke, ki so na voljo:\n{creator} - uporabniško ime ustvarjalca delitve\n{shareUrl} - URL delitve\n{desc} - vsebina delitve\n{expires} - datum poteka delitve\n Spremenljivke bodo zamenjane z dejanskimi vrednostmi.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Zadeva delitve v obratni smeri",
|
||||
"admin.config.email.reverse-share-subject.description": "Zadeva e-poštnega sporočila, ki bo poslan, ko nekdo ustvari delitev z vašo povezavo.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Vsebina delitve v obratni smeri",
|
||||
"admin.config.email.reverse-share-message.description": "Vsebina e-poštnega sporočila, ki bo poslan, ko nekdo ustvari delitev v obratni smeri. {shareUrl} bo zamenjan z uporabniškim imenom ustvarjalca in URL-jom delitve.",
|
||||
"admin.config.email.reset-password-subject": "Zadeva ponastavitve gesla",
|
||||
"admin.config.email.reset-password-subject.description": "Zadeva e-poštnega sporočila, ki bo poslan, ko uporabnik zahteva ponastavitev gesla.",
|
||||
"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": "Vsebina za ponastavitev gesla",
|
||||
"admin.config.email.reset-password-message.description": "Vsebina e-poštnega sporočila, ki bo poslan, ko uporabnik zahteva ponastavitev gesla. {url} bo zamenjan z URL-jem za ponastavitev gesla.",
|
||||
"admin.config.email.invite-subject": "Zadeva povabila",
|
||||
"admin.config.email.invite-subject.description": "Zadeva e-poštnega sporočila, ki je poslan, ko administrator povabi uporabnika.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Vsebina povabila",
|
||||
"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 password of the user.",
|
||||
"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": "Dovoli registracijo",
|
||||
"admin.config.share.allow-registration.description": "Če je registracija dovoljena",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Dovoli delitve s strani neprijavljenih uporabnikov",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Nivo Zip stiskanja",
|
||||
"admin.config.share.zip-compression-level.description": "Nivo stiskanja, ki uravnoveša med velikostjo datoteke in hitrostjo stiskanja. Veljavne vrednosti so med 0 in 9, kjer 0 pomeni brez kompresije in 9 pomeni največjo kompresijo. ",
|
||||
"admin.config.share.chunk-size": "Velikost delcev",
|
||||
"admin.config.share.chunk-size.description": "Prilagodite velikost delcev (v bajtih) vaših nalaganj, da uravnovesite med učinkovitostjo in zanesljivostjo glede na vašo internetno povezavo. Manjša velikost delcev lahko zviša uspešnost nalaganj pri nestabilni povezavi, medtem ko večja velikost delcev poviša hitrost nalaganja pri stabilni povezavi.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Omogočeno",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Če je SMTP omogočen. Omogočite samo, če ste vnesli strežnik, vrata, e-pošto, uporabniško ime in geslo vašega SMTP strežnika.",
|
||||
"admin.config.smtp.host": "Gostitelj",
|
||||
"admin.config.smtp.host.description": "Gostitelj SMTP strežnika",
|
||||
"admin.config.smtp.port": "Vrata",
|
||||
"admin.config.smtp.port.description": "Vrata SMTP strežnika",
|
||||
"admin.config.smtp.email": "E-pošta",
|
||||
"admin.config.smtp.email.description": "E-poštni naslov, s katerega bodo poslana e-poštna sporočila",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Uporabniško ime",
|
||||
"admin.config.smtp.username.description": "Uporabniško ime SMTP strežnika",
|
||||
"admin.config.smtp.password": "Geslo",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Skrivnost klienta Microsoft OAuth aplikacije",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Če je dovoljena prijava z Discord računom",
|
||||
"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": "ID omejenega Discord strežnika",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Omogoči omejitev prijave uporabnika v specifičen strežnik. Pustite prazno, da onemogočite.",
|
||||
"admin.config.oauth.discord-client-id": "Discord ID klienta",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Če je dovoljena prijava z OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect URI za odkrivanje",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "URI za odkrivanje OpenID Connect OAuth aplikacije",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect zahteva za uporabniško ime",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Zahteva za uporabniško ime za OpenID Connect ID žetona. Pustite prazno, če ne poznate te nastavitve.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect skrivnost klienta",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Skrivnost klienta OpenID Connect OAuth aplikacije",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Uporabnik povezan na račun {0} ne obstaja.",
|
||||
"error.msg.no_email": "Ne najdemo e-poštnega naslova za račun {0}.",
|
||||
"error.msg.already_linked": "Račun {0} je že povezan na drug račun.",
|
||||
"error.msg.not_linked": "Račun {0} še ni povezan z nobenim računom.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Račun {0} je nepreverjen, prosimo poskusite ponovno po preverjanju.",
|
||||
"error.msg.user_not_allowed": "Nimate dovoljenja za prijavo.",
|
||||
"error.msg.cannot_get_user_info": "Ne moremo najti uporabniških informacij za račun {0}.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Generiraj",
|
||||
"common.button.done": "Končano",
|
||||
"common.text.link": "Poveži",
|
||||
"common.text.navigate-to-link": "Pojdi na povezavo",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "ali",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Nazaj",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Neveljaven e-poštni naslov",
|
||||
"common.error.too-short": "Vsebovati mora vsaj {length} znakov",
|
||||
"common.error.too-long": "Vsebuje lahko največ {length} znakov",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Dolžina mora biti točno {length} znakov",
|
||||
"common.error.invalid-number": "Mora biti številka",
|
||||
"common.error.field-required": "To polje je obvezno"
|
||||
|
||||
487
frontend/src/i18n/translations/sr-CS.ts
Normal file
487
frontend/src/i18n/translations/sr-CS.ts
Normal file
@@ -0,0 +1,487 @@
|
||||
export default {
|
||||
// Navbar
|
||||
"navbar.upload": "Otpremi",
|
||||
"navbar.signin": "Prijava",
|
||||
"navbar.home": "Početna",
|
||||
"navbar.signup": "Registracija",
|
||||
"navbar.links.shares": "Moja deljenja",
|
||||
"navbar.links.reverse": "Obrnuto deljenje",
|
||||
"navbar.avatar.account": "Moj nalog",
|
||||
"navbar.avatar.admin": "Administracija",
|
||||
"navbar.avatar.signout": "Odjavi se",
|
||||
// END navbar
|
||||
// /
|
||||
"home.title": "<h>Samo-hostovana</h> platforma za deljenje fajlova.",
|
||||
"home.description": "Da li zaista želite da date svoje lične datoteke u ruke trećih strana kao što je WeTransfer?",
|
||||
"home.bullet.a.name": "Samo-hostovano",
|
||||
"home.bullet.a.description": "Hostujte Pingvin Share na svojoj mašini.",
|
||||
"home.bullet.b.name": "Privatnost",
|
||||
"home.bullet.b.description": "Vaše datoteke su vaše i nikada neće biti dostupne trećim stranama.",
|
||||
"home.bullet.c.name": "Nema dosadnog ograničenja veličine datoteke",
|
||||
"home.bullet.c.description": "Otpremite onoliko velikih datoteka koliko želite. Samo vaš čvrsti disk je granica.",
|
||||
"home.button.start": "Započni",
|
||||
"home.button.source": "Izvorni kod",
|
||||
// END /
|
||||
// /auth/signin
|
||||
"signin.title": "Dobrodošli nazad",
|
||||
"signin.description": "Još uvek nemate nalog?",
|
||||
"signin.button.signup": "Registruj se",
|
||||
"signin.input.email-or-username": "Imejl ili korisničko ime",
|
||||
"signin.input.email-or-username.placeholder": "Vaš imejl ili korisničko ime",
|
||||
"signin.input.password": "Lozinka",
|
||||
"signin.input.password.placeholder": "Vaša lozinka",
|
||||
"signin.button.submit": "Prijavite se",
|
||||
"signIn.notify.totp-required.title": "Potrebna je dvofaktorska autentifikacija",
|
||||
"signIn.notify.totp-required.description": "Unesite svoj dvofaktorski kod za autentifikaciju",
|
||||
"signIn.oauth.or": "Ili",
|
||||
"signIn.oauth.signInWith": "Prijavite se sa",
|
||||
"signIn.oauth.github": "GitHub",
|
||||
"signIn.oauth.google": "Google",
|
||||
"signIn.oauth.microsoft": "Microsoft",
|
||||
"signIn.oauth.discord": "Discord",
|
||||
"signIn.oauth.oidc": "OpenID",
|
||||
// END /auth/signin
|
||||
// /auth/signup
|
||||
"signup.title": "Napravi nalog",
|
||||
"signup.description": "Već imate nalog?",
|
||||
"signup.button.signin": "Prijavite se",
|
||||
"signup.input.username": "Korisničko ime",
|
||||
"signup.input.username.placeholder": "Vaše korisničko ime",
|
||||
"signup.input.email": "Imejl",
|
||||
"signup.input.email.placeholder": "Vaš imejl",
|
||||
"signup.button.submit": "Hajde da počnemo",
|
||||
// END /auth/signup
|
||||
// /auth/totp
|
||||
"totp.title": "TOTP autentifikacija",
|
||||
"totp.button.signIn": "Prijavite se",
|
||||
// END /auth/totp
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Zaboravili ste lozinku?",
|
||||
"resetPassword.description": "Unesite svoj imejl da biste resetovali lozinku.",
|
||||
"resetPassword.notify.success": "Poruka sa linkom za resetovanje lozinke je poslata ako uneta i-mejl adresa postoji.",
|
||||
"resetPassword.button.back": "Nazad na stranicu za prijavu",
|
||||
"resetPassword.text.resetPassword": "Obnovi lozinku",
|
||||
"resetPassword.text.enterNewPassword": "Unesite vašu novu lozinku",
|
||||
"resetPassword.input.password": "Nova lozinka",
|
||||
"resetPassword.notify.passwordReset": "Vaša lozinka je uspešno resetovana.",
|
||||
// /account
|
||||
"account.title": "Moj nalog",
|
||||
"account.card.info.title": "Podaci o nalogu",
|
||||
"account.card.info.username": "Korisničko ime",
|
||||
"account.card.info.email": "Imejl",
|
||||
"account.notify.info.success": "Nalog je uspešno ažuriran",
|
||||
"account.card.password.title": "Lozinka",
|
||||
"account.card.password.old": "Stara lozinka",
|
||||
"account.card.password.new": "Nova lozinka",
|
||||
"account.card.password.noPasswordSet": "Nemate postavljenu lozinku. Da biste se prijavili koristeći i-mejl i lozinku, potrebno je da napravite lozinku.",
|
||||
"account.notify.password.success": "Lozinka je uspešno promenjena",
|
||||
"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": "Prekini vezu",
|
||||
"account.card.oauth.unlinked": "Veza je prekinuta",
|
||||
"account.modal.unlink.title": "Prekini vezu sa nalogom",
|
||||
"account.modal.unlink.description": "Uklanjanje veze sa vašim društvenim nalozima može dovesti do gubitka vašeg naloga ako se ne sećate svojih pristupnih podataka",
|
||||
"account.notify.oauth.unlinked.success": "Veza je prekinuta",
|
||||
"account.card.security.title": "Bezbednost",
|
||||
"account.card.security.totp.enable.description": "Unesite svoju trenutnu lozinku da biste počeli da omogućavate TOTP",
|
||||
"account.card.security.totp.disable.description": "Unesite svoju trenutnu lozinku da biste onemogućili TOTP",
|
||||
"account.card.security.totp.button.start": "Započni",
|
||||
"account.modal.totp.title": "Omogući TOTP",
|
||||
"account.modal.totp.step1": "Korak 1: Dodajte svoj autentifikator",
|
||||
"account.modal.totp.step2": "Korak 2: Potvrdite svoj kod",
|
||||
"account.modal.totp.enterManually": "Unesite ručno",
|
||||
"account.modal.totp.code": "Kod",
|
||||
"common.button.clickToCopy": "Kliknite za kopiranje",
|
||||
"account.modal.totp.verify": "Verifikuj",
|
||||
"account.notify.totp.disable": "TOTP je uspešno onemogućen",
|
||||
"account.notify.totp.enable": "TOTP je uspešno omogućen",
|
||||
"account.card.language.title": "Jezik",
|
||||
"account.card.language.description": "Projekat je preveden od strane zajednice. Neki jezici mogu biti nepotpuni.",
|
||||
"account.card.color.title": "Šema boja",
|
||||
// ThemeSwitcher.tsx
|
||||
"account.theme.dark": "Tamno",
|
||||
"account.theme.light": "Svetlo",
|
||||
"account.theme.system": "Sistem",
|
||||
"account.button.delete": "Izbriši Nalog",
|
||||
"account.modal.delete.title": "Izbriši Nalog",
|
||||
"account.modal.delete.description": "Da li zaista želite da izbrišete svoj nalog uključujući sve vaše aktivne deljenja?",
|
||||
// END /account
|
||||
// /account/shares
|
||||
"account.shares.title": "Moja deljenja",
|
||||
"account.shares.title.empty": "Ovde je prazno 👀",
|
||||
"account.shares.description.empty": "Nemate nikakva deljenja.",
|
||||
"account.shares.button.create": "Napravite",
|
||||
"account.shares.info.title": "Delite informacije",
|
||||
"account.shares.table.id": "ID",
|
||||
"account.shares.table.name": "Naziv",
|
||||
"account.shares.table.description": "Opis",
|
||||
"account.shares.table.visitors": "Posetioci",
|
||||
"account.shares.table.expiresAt": "Ističe",
|
||||
"account.shares.table.createdAt": "Napravljeno",
|
||||
"account.shares.table.size": "Veličina",
|
||||
"account.shares.modal.share-informations": "Delite informacije",
|
||||
"account.shares.modal.share-link": "Deli vezu",
|
||||
"account.shares.modal.delete.title": "Izbriši deljenje {share}",
|
||||
"account.shares.modal.delete.description": "Da li zaista želite da izbrišete ovo deljenje?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
"account.reverseShares.title": "Obrnuto deljenje",
|
||||
"account.reverseShares.description": "Obrnuto deljenje vam omogućava da generišete jedinstveni URL koji omogućava spoljnim korisnicima da kreiraju deljenje.",
|
||||
"account.reverseShares.title.empty": "Ovde je prazno 👀",
|
||||
"account.reverseShares.description.empty": "Nemate obrnutih deljenja.",
|
||||
// showCreateReverseShareModal.tsx
|
||||
"account.reverseShares.modal.title": "Kreirajte obrnuto deljenje",
|
||||
"account.reverseShares.modal.expiration.label": "Ističe",
|
||||
"account.reverseShares.modal.expiration.minute-singular": "Minut",
|
||||
"account.reverseShares.modal.expiration.minute-plural": "Minute",
|
||||
"account.reverseShares.modal.expiration.hour-singular": "Sat",
|
||||
"account.reverseShares.modal.expiration.hour-plural": "Sati",
|
||||
"account.reverseShares.modal.expiration.day-singular": "Dan",
|
||||
"account.reverseShares.modal.expiration.day-plural": "Dani",
|
||||
"account.reverseShares.modal.expiration.week-singular": "Sedmica",
|
||||
"account.reverseShares.modal.expiration.week-plural": "Sedmice",
|
||||
"account.reverseShares.modal.expiration.month-singular": "Mesec",
|
||||
"account.reverseShares.modal.expiration.month-plural": "Meseci",
|
||||
"account.reverseShares.modal.expiration.year-singular": "Godina",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Godine",
|
||||
"account.reverseShares.modal.max-size.label": "Maksimalna veličina deljenja",
|
||||
"account.reverseShares.modal.send-email": "Pošalji obaveštenja i-mejlom",
|
||||
"account.reverseShares.modal.send-email.description": "Pošalji obaveštenje imejlom kada se kreira deljenje pomoću ove obrnute veze za deljenje.",
|
||||
"account.reverseShares.modal.simplified": "Jednostavan režim",
|
||||
"account.reverseShares.modal.simplified.description": "Olakšajte osobi koja otprema fajl da ga podeli sa vama. Oni će moći da prilagode samo ime i opis deljenja.",
|
||||
"account.reverseShares.modal.public-access": "Javni pristup",
|
||||
"account.reverseShares.modal.public-access.description": "Učini da deljenja kreirana ovim reverznim linkom za deljenje budu javna. Ako je onemogućeno, samo vi i kreator deljenja ćete imati pristup za pregled.",
|
||||
"account.reverseShares.modal.max-use.label": "Maksimalan broj korišćenja",
|
||||
"account.reverseShares.modal.max-use.description": "Maksimalan broj puta koji ovaj URL može da se koristi za pravljenje deljenja.",
|
||||
"account.reverseShare.never-expires": "Ovo obrnuto deljenje nikada neće isteći.",
|
||||
"account.reverseShare.expires-on": "Ovo obrnuto deljenje će isteći {expiration}.",
|
||||
"account.reverseShares.table.no-shares": "Još nema kreiranih deljenja",
|
||||
"account.reverseShares.table.count.singular": "deljenje",
|
||||
"account.reverseShares.table.count.plural": "deljenja",
|
||||
"account.reverseShares.table.shares": "Deljenja",
|
||||
"account.reverseShares.table.remaining": "Preostala upotreba",
|
||||
"account.reverseShares.table.max-size": "Maksimalna veličina deljenja",
|
||||
"account.reverseShares.table.expires": "Ističe u",
|
||||
"account.reverseShares.modal.reverse-share-link": "Link za obrnuto deljenje",
|
||||
"account.reverseShares.modal.delete.title": "Obrišite obrnuto deljenje",
|
||||
"account.reverseShares.modal.delete.description": "Da li zaista želite da izbrišete ovo obrnuto deljenje? Ako to učinite, pridružena deljenja će takođe biti izbrisana.",
|
||||
// END /account/reverseShares
|
||||
// /admin
|
||||
"admin.title": "Administracija",
|
||||
"admin.button.users": "Upravljanje korisnicima",
|
||||
"admin.button.shares": "Upravljanje deljenjem",
|
||||
"admin.button.config": "Konfiguracija",
|
||||
"admin.version": "Verzija",
|
||||
// END /admin
|
||||
// /admin/users
|
||||
"admin.users.title": "Upravljanje korisnicima",
|
||||
"admin.users.table.username": "Korisničko ime",
|
||||
"admin.users.table.email": "Imejl",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Uredite korisnika: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Administratorske privilegije",
|
||||
"admin.users.edit.update.change-password.title": "Promenite lozinku",
|
||||
"admin.users.edit.update.change-password.field": "Nova lozinka",
|
||||
"admin.users.edit.update.change-password.button": "Snimite novu lozinku",
|
||||
"admin.users.edit.update.notify.password.success": "Lozinka je uspešno promenjena",
|
||||
"admin.users.edit.delete.title": "Obrišite korisnika: {username} ?",
|
||||
"admin.users.edit.delete.description": "Da li zaista želite da obrišete ovog korisnika i sva njegova deljenja?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Kreiraj korisnika",
|
||||
"admin.users.modal.create.username": "Korisničko ime",
|
||||
"admin.users.modal.create.email": "Imejl",
|
||||
"admin.users.modal.create.password": "Lozinka",
|
||||
"admin.users.modal.create.manual-password": "Postavite lozinku ručno",
|
||||
"admin.users.modal.create.manual-password.description": "Ako nije označeno, korisnik će dobiti imejl sa vezom za postavljanje lozinke.",
|
||||
"admin.users.modal.create.admin": "Administratorske privilegije",
|
||||
"admin.users.modal.create.admin.description": "Ako je označeno, korisnik će moći da pristupi administrativnom panelu.",
|
||||
// END /admin/users
|
||||
// /admin/shares
|
||||
"admin.shares.title": "Upravljanje deljenjem",
|
||||
"admin.shares.table.id": "ID deljenja",
|
||||
"admin.shares.table.username": "Kreator",
|
||||
"admin.shares.table.visitors": "Posetioci",
|
||||
"admin.shares.table.expires": "Ističe",
|
||||
"admin.shares.edit.delete.title": "Obriši deljenje: {id}",
|
||||
"admin.shares.edit.delete.description": "Da li zaista želite da obrišete ovo deljenje?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Pošalji",
|
||||
"upload.notify.confirm-leave": "Da li ste sigurni da želite da napustite ovu stranicu? Vaše otpremanje će biti otkazano.",
|
||||
"upload.notify.generic-error": "Došlo je do greške pri dovršavanju deljenja.",
|
||||
"upload.notify.count-failed": "Otpremanje {count} datoteka nije uspelo. Pokušavam ponovo.",
|
||||
"upload.reverse-share.error.invalid.title": "Nepravilan link za obrnuto deljenje",
|
||||
"upload.reverse-share.error.invalid.description": "Ovo obrnuto deljenje je isteklo ili je nevažeće.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Pošalji datoteke",
|
||||
"upload.dropzone.description": "Prevucite i otpustite datoteke ovde da biste započeli deljenje. Prihvatamo samo fajlove ukupne veličine do {maxSize}.",
|
||||
"upload.dropzone.notify.file-too-big": "Vaše datoteke premašuju maksimalnu veličinu deljenja od {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Naziv",
|
||||
"upload.filelist.size": "Veličina",
|
||||
// showCreateUploadModal.tsx
|
||||
"upload.modal.title": "Napravi deljenje",
|
||||
"upload.modal.link.error.invalid": "Može da sadrži samo slova, brojeve, donje crte i crtice",
|
||||
"upload.modal.link.error.taken": "Ovaj link je već u upotrebi",
|
||||
"upload.modal.not-signed-in": "Niste prijavljeni",
|
||||
"upload.modal.not-signed-in-description": "Nećete moći ručno da izbrišete svoje deljenje i vidite broj posetilaca.",
|
||||
"upload.modal.expires.never": "nikad",
|
||||
"upload.modal.expires.never-long": "Trajno deljenje",
|
||||
"upload.modal.expires.error.too-long": "Datum isteka prevazilazi maksimalnu vrednost od {max}.",
|
||||
"upload.modal.link.label": "Link",
|
||||
"upload.modal.expires.label": "Ističe",
|
||||
"upload.modal.expires.minute-singular": "Minut",
|
||||
"upload.modal.expires.minute-plural": "Minute",
|
||||
"upload.modal.expires.hour-singular": "Sat",
|
||||
"upload.modal.expires.hour-plural": "Sati",
|
||||
"upload.modal.expires.day-singular": "Dan",
|
||||
"upload.modal.expires.day-plural": "Dani",
|
||||
"upload.modal.expires.week-singular": "Sedmica",
|
||||
"upload.modal.expires.week-plural": "Sedmice",
|
||||
"upload.modal.expires.month-singular": "Mesec",
|
||||
"upload.modal.expires.month-plural": "Meseci",
|
||||
"upload.modal.expires.year-singular": "Godina",
|
||||
"upload.modal.expires.year-plural": "Godine",
|
||||
"upload.modal.accordion.name-and-description.title": "Ime i opis",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Ime",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Napomena za primaoce ovog deljenja",
|
||||
"upload.modal.accordion.email.title": "Primaoci imejla",
|
||||
"upload.modal.accordion.email.placeholder": "Unesite primaoce imejla",
|
||||
"upload.modal.accordion.email.invalid-email": "Neispravna adresa imejla",
|
||||
"upload.modal.accordion.security.title": "Sigurnosna podešavanja",
|
||||
"upload.modal.accordion.security.password.label": "Zaštita lozinkom",
|
||||
"upload.modal.accordion.security.password.placeholder": "Nema lozinke",
|
||||
"upload.modal.accordion.security.max-views.label": "Maksimalan broj pregleda",
|
||||
"upload.modal.accordion.security.max-views.placeholder": "Bez limita",
|
||||
// showCompletedUploadModal.tsx
|
||||
"upload.modal.completed.never-expires": "Ovo deljenje nikada neće isteći.",
|
||||
"upload.modal.completed.expires-on": "Ovo deljenje će isteći {expiration}.",
|
||||
"upload.modal.completed.share-ready": "Deljenje je spremno",
|
||||
"upload.modal.completed.notified-reverse-share-creator": "Obavestili smo kreatora reverznog deljenja. Takođe možete ručno podeliti ovaj link sa njima na druge načine.",
|
||||
// END /upload
|
||||
// /share/[id]
|
||||
"share.title": "Deljenje {shareId}",
|
||||
"share.description": "Pogledajte šta sam podelio sa vama!",
|
||||
"share.error.visitor-limit-exceeded.title": "Prekoračeno je ograničenje posetilaca",
|
||||
"share.error.visitor-limit-exceeded.description": "Ograničenje posetilaca iz ovog deljenja je premašeno.",
|
||||
"share.error.removed.title": "Deljenje je uklonjeno",
|
||||
"share.error.not-found.title": "Deljenje nije pronađeno",
|
||||
"share.error.not-found.description": "Udeo koji tražite ne postoji.",
|
||||
"share.error.access-denied.title": "Privatno deljenje",
|
||||
"share.error.access-denied.description": "Trenutni nalog nema dozvolu za pristup ovom deljenju",
|
||||
"share.modal.password.title": "Obavezna lozinka",
|
||||
"share.modal.password.description": "Molimo unesite lozinku za pristup ovom deljenju.",
|
||||
"share.modal.password": "Lozinka",
|
||||
"share.modal.error.invalid-password": "Neispravna lozinka",
|
||||
"share.button.download-all": "Preuzmi sve",
|
||||
"share.notify.download-all-preparing": "Deljenje se priprema. Molimo pokušajte ponovo za nekoliko minuta.",
|
||||
"share.modal.file-link": "Veza datoteke",
|
||||
"share.table.name": "Naziv",
|
||||
"share.table.size": "Veličina",
|
||||
"share.modal.file-preview.error.not-supported.title": "Pregled nije podržan",
|
||||
"share.modal.file-preview.error.not-supported.description": "Pregledi nisu podržani za ovaj tip datoteka. Molimo preuzmite fajl da biste ga pregledali.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Uredi {shareId}",
|
||||
"share.edit.append-upload": "Nadodaj fajl",
|
||||
"share.edit.notify.generic-error": "Došlo je do greške prilikom završetka vašeg deljenja.",
|
||||
"share.edit.notify.save-success": "Deljenje je uspešno ažurirano",
|
||||
// END /share/[id]/edit
|
||||
// /admin/config
|
||||
"admin.config.title": "Konfiguracija",
|
||||
"admin.config.category.general": "Opšte",
|
||||
"admin.config.category.share": "Deljenje",
|
||||
"admin.config.category.email": "Imejl",
|
||||
"admin.config.category.smtp": "SMTP",
|
||||
"admin.config.category.oauth": "Social login",
|
||||
"admin.config.general.app-name": "Naziv aplikacije",
|
||||
"admin.config.general.app-name.description": "Naziv aplikacije",
|
||||
"admin.config.general.app-url": "URL aplikacije",
|
||||
"admin.config.general.app-url.description": "Na kojoj URL adresi je dostupan Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Bezbedni kolačići",
|
||||
"admin.config.general.secure-cookies.description": "Da li želite da postavite zastavicu za bezbednost na kolačiće? Ako je omogućeno, sajt neće funkcionisati kada mu pristupate preko HTTP-a.",
|
||||
"admin.config.general.show-home-page": "Prikaži početnu stranicu",
|
||||
"admin.config.general.show-home-page.description": "Da li da se prikaže početna stranica",
|
||||
"admin.config.general.session-duration": "Trajanje sesije",
|
||||
"admin.config.general.session-duration.description": "Vreme u satima nakon kojeg korisnik mora ponovo da se prijavi (podrazumevano: 3 meseca).",
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "Promenite svoj logotip tako što ćete otpremiti novu sliku. Slika mora da bude PNG i treba da ima format 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Izaberi sliku",
|
||||
"admin.config.email.enable-share-email-recipients": "Omogući deljenje sa primaocima imejlom",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Da li dozvoliti deljenje sa primaocima putem imejla. Omogućite ovo samo ako je SMTP aktiviran.",
|
||||
"admin.config.email.share-recipients-subject": "Podelite naslov primaoca",
|
||||
"admin.config.email.share-recipients-subject.description": "Tema imejla koja se šalje primaocima deljenja.",
|
||||
"admin.config.email.share-recipients-message": "Delite poruku primaoca",
|
||||
"admin.config.email.share-recipients-message.description": "Poruka koja se šalje primaocima deljenja. Dostupne promenljive:\n{creator} - Korisničko ime kreatora deljenja\n{creatorEmail} - Imejl kreatora deljenja\n{shareUrl} - URL deljenja\n{desc} - Opis deljenja\n{expires} - Datum isteka deljenja\nOve promenljive će biti zamenjene stvarnim vrednostima.",
|
||||
"admin.config.email.reverse-share-subject": "Tema obrnutog deljenja",
|
||||
"admin.config.email.reverse-share-subject.description": "Naslov imejla koji se šalje kada neko kreira deljenje sa vašim reverznim linkom za deljenje.",
|
||||
"admin.config.email.reverse-share-message": "Obrnuto deljenje poruka",
|
||||
"admin.config.email.reverse-share-message.description": "Poruka koja se šalje kada je neko napravio deljenje sa vašom obrnutom vezom za deljenje. {shareUrl} će biti zamenjen imenom kreatora i URL-om za deljenje.",
|
||||
"admin.config.email.reset-password-subject": "Resetujte temu lozinke",
|
||||
"admin.config.email.reset-password-subject.description": "Naslov imejla koji se šalje kada korisnik zatraži resetovanje lozinke.",
|
||||
"admin.config.email.reset-password-message": "Poruka za resetovanje lozinke",
|
||||
"admin.config.email.reset-password-message.description": "Poruka koja se šalje kada korisnik zatraži resetovanje lozinke. {url} će biti zamenjen linkom za resetovanje lozinke.",
|
||||
"admin.config.email.invite-subject": "Pozivna tema",
|
||||
"admin.config.email.invite-subject.description": "Naslov e-pošte koja se šalje kada administrator pozove korisnika.",
|
||||
"admin.config.email.invite-message": "Pozivna poruka",
|
||||
"admin.config.email.invite-message.description": "Poruka koja se šalje kada administrator pozove korisnika. {url} će biti zamenjen linkom za poziv, {email} imejlom, a {password} lozinkom korisnika.",
|
||||
"admin.config.share.allow-registration": "Dozvoli registraciju",
|
||||
"admin.config.share.allow-registration.description": "Da li je registracija dozvoljena",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Dozvoli deljenje bez autentifikacije",
|
||||
"admin.config.share.allow-unauthenticated-shares.description": "Da li korisnici bez autentifikacije mogu da kreiraju deljenja",
|
||||
"admin.config.share.max-expiration": "Maksimalni rok trajanja",
|
||||
"admin.config.share.max-expiration.description": "Maksimalni rok trajanja deljenja u satima. Postavite na 0 da biste omogućili neograničeno trajanje.",
|
||||
"admin.config.share.max-size": "Maksimalna veličina",
|
||||
"admin.config.share.max-size.description": "Maksimalna veličina deljenja u bajtovima",
|
||||
"admin.config.share.zip-compression-level": "Nivo Zip kompresije",
|
||||
"admin.config.share.zip-compression-level.description": "Podesite nivo da biste balansirali između veličine datoteke i brzine kompresije. Važeće vrednosti se kreću od 0 do 9, pri čemu je 0 bez kompresije, a 9 je maksimalna kompresija. ",
|
||||
"admin.config.share.chunk-size": "Veličina komada",
|
||||
"admin.config.share.chunk-size.description": "Podesite veličinu dela (u bajtovima) za vaša otpremanje kako biste uravnotežili efikasnost i pouzdanost u skladu sa vašom internet vezom. Manji delovi mogu poboljšati stopu uspeha za nestabilne veze, dok veći delovi omogućavaju brže otpremanje za stabilne veze.",
|
||||
"admin.config.share.auto-open-share-modal": "Automatski otvori stvaranje modala deljenja",
|
||||
"admin.config.share.auto-open-share-modal.description": "Modal za kreiranje deljenja automatski se pojavljuje kada korisnik izabere datoteke, eliminišući potrebu za ručnim klikom na dugme.",
|
||||
"admin.config.smtp.enabled": "Omogući",
|
||||
"admin.config.smtp.enabled.description": "Da li je SMTP omogućen. Postavite ovo na tačno samo ako ste uneli host, port, imejl, korisnika i lozinku vašeg SMTP servera.",
|
||||
"admin.config.smtp.host": "Domaćin",
|
||||
"admin.config.smtp.host.description": "Domaćin SMTP servera",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "Port domaćina SMTP servera",
|
||||
"admin.config.smtp.email": "Imejl",
|
||||
"admin.config.smtp.email.description": "Adresa imejla sa kojeg se poruke šalju",
|
||||
"admin.config.smtp.username": "Korisničko ime",
|
||||
"admin.config.smtp.username.description": "Korisničko ime SMTP servera",
|
||||
"admin.config.smtp.password": "Lozinka",
|
||||
"admin.config.smtp.password.description": "Lozinka SMTP servera",
|
||||
"admin.config.smtp.button.test": "Pošalji testni imejl",
|
||||
"admin.config.smtp.allow-unauthorized-certificates": "Verovanje neautorizovanim SMTP serverskim sertifikatima",
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Ovo postavite na \"istina\" samo ako je potrebno verovati samo-potpisanim sertifikatima.",
|
||||
"admin.config.oauth.allow-registration": "Dozvoli registraciju",
|
||||
"admin.config.oauth.allow-registration.description": "Dozvolite korisnicima da se registruju putem društvene prijave",
|
||||
"admin.config.oauth.ignore-totp": "Zanemari TOTP",
|
||||
"admin.config.oauth.ignore-totp.description": "Da li da ignorišete TOTP kada korisnik koristi prijavu na društvenim mrežama",
|
||||
"admin.config.oauth.disable-password": "Onemogućite prijavu lozinkom",
|
||||
"admin.config.oauth.disable-password.description": "Omogućiti prijavu lozinkom ili ne\nUverite se da je provajder za OAuth pravilno konfigurisan pre aktiviranja ove konfiguracije kako biste izbegli zaključavanje naloga.",
|
||||
"admin.config.oauth.github-enabled": "GitHub",
|
||||
"admin.config.oauth.github-enabled.description": "Da li je prijavljivanje na GitHub omogućeno",
|
||||
"admin.config.oauth.github-client-id": "GitHub ID klijenta",
|
||||
"admin.config.oauth.github-client-id.description": "ID klijenta GitHub OAuth aplikacije",
|
||||
"admin.config.oauth.github-client-secret": "Tajna GitHub klijenta",
|
||||
"admin.config.oauth.github-client-secret.description": "Tajna klijenta GitHub OAuth aplikacije",
|
||||
"admin.config.oauth.google-enabled": "Google",
|
||||
"admin.config.oauth.google-enabled.description": "Da li je prijavljivanje na Google omogućeno",
|
||||
"admin.config.oauth.google-client-id": "ID Google klijenta",
|
||||
"admin.config.oauth.google-client-id.description": "ID klijenta Google OAuth aplikacije",
|
||||
"admin.config.oauth.google-client-secret": "Tajna Google klijenta",
|
||||
"admin.config.oauth.google-client-secret.description": "Tajna klijenta Google OAuth aplikacije",
|
||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||
"admin.config.oauth.microsoft-enabled.description": "Da li je prijavljivanje na Microsoft omogućeno",
|
||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||
"admin.config.oauth.microsoft-tenant.description": "ID zakupca za Microsoft OAuth aplikaciju\nuobičajeno: Korisnici sa ličnim Microsoft nalogom i poslovnim ili školskim nalogom sa Microsoft Entra ID-a mogu da se prijave u aplikaciju. organizacije: Samo korisnici sa poslovnim ili školskim nalozima sa Microsoft Entra ID-a mogu da se prijave u aplikaciju.\npotrošači: Samo korisnici sa ličnim Microsoft nalogom mogu da se prijave u aplikaciju.\nime domena zakupca Microsoft Entra ID ili ID zakupca u GUID formatu: Samo korisnici iz određenog Microsoft Entra ID stanara (članovi direktorijuma sa poslovnim ili školskim nalogom ili gosti direktorijuma sa ličnim Microsoft nalogom) mogu da se prijave u aplikaciju.",
|
||||
"admin.config.oauth.microsoft-client-id": "Microsoft ID klijenta",
|
||||
"admin.config.oauth.microsoft-client-id.description": "ID klijenta Microsoft OAuth aplikacije",
|
||||
"admin.config.oauth.microsoft-client-secret": "Tajna Microsoft klijenta",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Tajna klijenta za Microsot OAuth aplikaciju",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Da li je prijavljivanje na Discord omogućeno",
|
||||
"admin.config.oauth.discord-limited-users": "Ograničenje po Discord korisnicima",
|
||||
"admin.config.oauth.discord-limited-users.description": "Ograničite prijavljivanje na određene korisnike pomoću njihovog Discord ID-a. Ostavite prazno da biste onemogućili.",
|
||||
"admin.config.oauth.discord-limited-guild": "Ograničenje po Discord serveru",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Ograničite prijavljivanje na korisnike određenog servera. Ostavite prazno da biste onemogućili.",
|
||||
"admin.config.oauth.discord-client-id": "Discord ID klijenta",
|
||||
"admin.config.oauth.discord-client-id.description": "ID klijenta Discord OAuth aplikacije",
|
||||
"admin.config.oauth.discord-client-secret": "Discord klijent tajna",
|
||||
"admin.config.oauth.discord-client-secret.description": "Tajna klijenta Discord OAuth aplikacije",
|
||||
"admin.config.oauth.oidc-enabled": "OpenId Connect",
|
||||
"admin.config.oauth.oidc-enabled.description": "Omogućiti prijavu OpenID Connect-om ili ne",
|
||||
"admin.config.oauth.oidc-discovery-uri": "URI za OpenID Connect Discovery",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI za otkrivanje OpenID Connect OAuth aplikacije",
|
||||
"admin.config.oauth.oidc-sign-out": "Odjavljivanje sa OpenID Connect-a",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Da li će dugme „Odjavi se“ odjaviti korisnika i sa OpenID Connect provajdera",
|
||||
"admin.config.oauth.oidc-username-claim": "Potraživanje korisničkog imena u OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Potraživanje korisničkog imena u OpenID Connect ID tokenu. Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||
"admin.config.oauth.oidc-role-path": "Putanja do uloga u OpenID Connect tokenu",
|
||||
"admin.config.oauth.oidc-role-path.description": "Mora biti validna JMES putanja koja referencira niz uloga. " + "Upravljanje pravima pristupa pomoću uloga u OpenID Connect-u se preporučuje samo ako nijedan drugi provajder identiteta nije konfigurisan i ako je prijava lozinkom onemogućena. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||
"admin.config.oauth.oidc-role-general-access": "Uloga u OpenID Connect-u za opšti pristup",
|
||||
"admin.config.oauth.oidc-role-general-access.description": "Uloga potrebna za opšti pristup. Mora biti prisutna u ulogama korisnika kako bi se mogao prijaviti. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||
"admin.config.oauth.oidc-role-admin-access": "Uloga u OpenID Connect-u za administratorski pristup",
|
||||
"admin.config.oauth.oidc-role-admin-access.description": "Uloga potrebna za administratorski pristup. Mora biti prisutna u ulogama korisnika kako bi mogli pristupiti administratorskom panelu. " + "Ostavite prazno ako ne znate šta je ova konfiguracija.",
|
||||
"admin.config.oauth.oidc-client-id": "OpenID Connect ID klijenta",
|
||||
"admin.config.oauth.oidc-client-id.description": "ID klijenta OpenID Connect OAuth aplikacije",
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect tajna klijenta",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Tajna klijenta OpenID Connect OAuth aplikacije",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Omogući LDAP",
|
||||
"admin.config.ldap.enabled.description": "Koristi LDAP autentifikaciju za prijavu korisnika",
|
||||
"admin.config.ldap.url": "URL servera",
|
||||
"admin.config.ldap.url.description": "URL LDAP servera",
|
||||
"admin.config.ldap.bind-dn": "DN vezivanje",
|
||||
"admin.config.ldap.bind-dn.description": "Podrazumevani korisnik koji se koristi za pretragu korisnika",
|
||||
"admin.config.ldap.bind-password": "Lozinka za vezivanje",
|
||||
"admin.config.ldap.bind-password.description": "Lozinka koja se koristi za izvršavanje pretrage korisnika",
|
||||
"admin.config.ldap.search-base": "Baza korisnika",
|
||||
"admin.config.ldap.search-base.description": "Lokacija baze, mesto gde će se izvršiti pretraga korisnika",
|
||||
"admin.config.ldap.search-query": "Upit za korisnika",
|
||||
"admin.config.ldap.search-query.description": "Upit za korisnika koji će se koristiti za pretragu „Baze korisnika“ za LDAP korisnika. %username% se može koristiti kao oznaka za unos korisnika.",
|
||||
"admin.config.ldap.admin-groups": "Administratorska grupa",
|
||||
"admin.config.ldap.admin-groups.description": "Grupa koja je potrebna za administratorski pristup.",
|
||||
"admin.config.ldap.field-name-member-of": "Naziv atributa korisničkih grupa",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP naziv atributa za grupe čiji je korisnik član. Ovo se koristi pri proveri administratorske grupe.",
|
||||
"admin.config.ldap.field-name-email": "Naziv atributa za imejl korisnika",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP naziv atributa za imejl korisnika.",
|
||||
// 404
|
||||
"404.description": "Opa - Ova strana ne postoji.",
|
||||
"404.button.home": "Vrati me na početak",
|
||||
// error
|
||||
"error.title": "Greška",
|
||||
"error.description": "Ups!",
|
||||
"error.button.back": "Idi nazad",
|
||||
"error.msg.default": "Nešto je pošlo naopako.",
|
||||
"error.msg.access_denied": "Otkazali ste proces autentifikacije, pokušajte ponovo.",
|
||||
"error.msg.expired_token": "Proces autentifikacije je trajao predugo, pokušajte ponovo.",
|
||||
"error.msg.invalid_token": "Interna greška",
|
||||
"error.msg.no_user": "Korisnik povezan sa ovim {0} nalogom ne postoji.",
|
||||
"error.msg.no_email": "Ne mogu da dobijem adresu imejla sa ovog {0} naloga.",
|
||||
"error.msg.already_linked": "Ovaj {0} nalog je već povezan sa drugim nalogom.",
|
||||
"error.msg.not_linked": "Ovaj {0} nalog još uvek nije povezan ni sa jednim nalogom.",
|
||||
"error.msg.unverified_account": "Ovaj {0} nalog je nepotvrđen, molimo pokušajte ponovo nakon verifikacije.",
|
||||
"error.msg.user_not_allowed": "Nije vam dozvoljeno da se prijavite.",
|
||||
"error.msg.cannot_get_user_info": "Ne mogu da dobijem vaše korisničke informacije sa ovog {0} naloga.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
"error.param.provider_discord": "Discord",
|
||||
"error.param.provider_oidc": "OpenId Connect",
|
||||
// Common translations
|
||||
"common.button.save": "Sačuvaj",
|
||||
"common.button.create": "Napravi",
|
||||
"common.button.submit": "Pošalji",
|
||||
"common.button.delete": "Obriši",
|
||||
"common.button.cancel": "Otkaži",
|
||||
"common.button.confirm": "Potvrdi",
|
||||
"common.button.disable": "Onemogući",
|
||||
"common.button.share": "Deljenje",
|
||||
"common.button.generate": "Generiši",
|
||||
"common.button.done": "Gotovo",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Posetite link",
|
||||
"common.text.or": "ili",
|
||||
"common.text.redirecting": "Preusmeravanje...",
|
||||
"common.button.go-back": "Idi nazad",
|
||||
"common.button.go-home": "Početna stranica",
|
||||
"common.notify.copied": "Vaša veza je kopirana u međuspremnik",
|
||||
"common.success": "Uspešno",
|
||||
"common.error": "Greška",
|
||||
"common.error.unknown": "Došlo je do nepoznate greške",
|
||||
"common.error.invalid-email": "Neispravna adresa imejla",
|
||||
"common.error.too-short": "Mora da ima najmanje {length} znakova",
|
||||
"common.error.too-long": "Mora da ima najviše {length} znakova",
|
||||
"common.error.number-too-small": "Mora biti najmanje {min}",
|
||||
"common.error.number-too-large": "Mora biti najviše {max}",
|
||||
"common.error.exact-length": "Mora da ima tačno {length} znakova",
|
||||
"common.error.invalid-number": "Mora biti broj",
|
||||
"common.error.field-required": "Polje je obavezno"
|
||||
};
|
||||
@@ -1,33 +1,33 @@
|
||||
export default {
|
||||
// Navbar
|
||||
"navbar.upload": "Пошаљи",
|
||||
"navbar.signin": "Пријавите се",
|
||||
"navbar.upload": "Отпреми",
|
||||
"navbar.signin": "Пријава",
|
||||
"navbar.home": "Почетна",
|
||||
"navbar.signup": "Региструј се",
|
||||
"navbar.links.shares": "Moja дељења",
|
||||
"navbar.signup": "Регистрација",
|
||||
"navbar.links.shares": "Моја дељења",
|
||||
"navbar.links.reverse": "Обрнуто дељење",
|
||||
"navbar.avatar.account": "Мој налог",
|
||||
"navbar.avatar.admin": "Администрација",
|
||||
"navbar.avatar.signout": "Одјави се",
|
||||
// END navbar
|
||||
// /
|
||||
"home.title": "<h>self-hosted</h> платформа за дељење фајлова.",
|
||||
"home.title": "<h>Само-хостована</h> платформа за дељење фајлова.",
|
||||
"home.description": "Да ли заиста желите да дате своје личне датотеке у руке трећих страна као што је WeTransfer?",
|
||||
"home.bullet.a.name": "Личан хостинг",
|
||||
"home.bullet.a.name": "Само-хостовано",
|
||||
"home.bullet.a.description": "Хостујте Pingvin Share на својој машини.",
|
||||
"home.bullet.b.name": "Privatnost",
|
||||
"home.bullet.b.description": "Ваше датотеке су ваше датотеке и никада не би требало да дођу у руке трећих лица.",
|
||||
"home.bullet.b.description": "Ваше датотеке су ваше и никада неће бити доступне трећим странама.",
|
||||
"home.bullet.c.name": "Нема досадног ограничења величине датотеке",
|
||||
"home.bullet.c.description": "Отпремите онолико великих датотека колико желите. Само ваш чврсти диск ће бити ваше ограничење.",
|
||||
"home.button.start": "Почети",
|
||||
"home.bullet.c.description": "Отпремите онолико великих датотека колико желите. Само ваш чврсти диск је граница.",
|
||||
"home.button.start": "Започни",
|
||||
"home.button.source": "Изворни код",
|
||||
// END /
|
||||
// /auth/signin
|
||||
"signin.title": "Добродошли назад",
|
||||
"signin.description": "Још увек немате налог?",
|
||||
"signin.button.signup": "Региструј се",
|
||||
"signin.input.email-or-username": "Е-пошта или корисничко име",
|
||||
"signin.input.email-or-username.placeholder": "Ваша Е-пошта или корисничко име",
|
||||
"signin.input.email-or-username": "Имејл или корисничко име",
|
||||
"signin.input.email-or-username.placeholder": "Ваш имејл или корисничко име",
|
||||
"signin.input.password": "Лозинка",
|
||||
"signin.input.password.placeholder": "Ваша лозинка",
|
||||
"signin.button.submit": "Пријавите се",
|
||||
@@ -47,8 +47,8 @@ export default {
|
||||
"signup.button.signin": "Пријавите се",
|
||||
"signup.input.username": "Корисничко име",
|
||||
"signup.input.username.placeholder": "Ваше корисничко име",
|
||||
"signup.input.email": "E-пошта",
|
||||
"signup.input.email.placeholder": "Ваш и-мејл",
|
||||
"signup.input.email": "Имејл",
|
||||
"signup.input.email.placeholder": "Ваш имејл",
|
||||
"signup.button.submit": "Хајде да почнемо",
|
||||
// END /auth/signup
|
||||
// /auth/totp
|
||||
@@ -57,8 +57,8 @@ export default {
|
||||
// END /auth/totp
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Заборавили сте лозинку?",
|
||||
"resetPassword.description": "Унесите своју е-пошту да бисте ресетовали лозинку.",
|
||||
"resetPassword.notify.success": "Порука са везом за ресетовање ваше лозинке је послата ако имејл постоји.",
|
||||
"resetPassword.description": "Унесите свој имејл да бисте ресетовали лозинку.",
|
||||
"resetPassword.notify.success": "Порука са линком за ресетовање лозинке је послата ако унета и-мејл адреса постоји.",
|
||||
"resetPassword.button.back": "Назад на страницу за пријаву",
|
||||
"resetPassword.text.resetPassword": "Обнови лозинку",
|
||||
"resetPassword.text.enterNewPassword": "Унесите вашу нову лозинку",
|
||||
@@ -68,12 +68,12 @@ export default {
|
||||
"account.title": "Мој налог",
|
||||
"account.card.info.title": "Подаци о налогу",
|
||||
"account.card.info.username": "Корисничко име",
|
||||
"account.card.info.email": "E-пошта",
|
||||
"account.card.info.email": "Имејл",
|
||||
"account.notify.info.success": "Налог је успешно ажуриран",
|
||||
"account.card.password.title": "Лозинка",
|
||||
"account.card.password.old": "Стара лозинка",
|
||||
"account.card.password.new": "Нова лозинка",
|
||||
"account.card.password.noPasswordSet": "Немате постављену лозинку. Ако желите да се пријавите помоћу е-поште и лозинке, потребно је да поставите лозинку.",
|
||||
"account.card.password.noPasswordSet": "Немате постављену лозинку. Да бисте се пријавили користећи и-мејл и лозинку, потребно је да направите лозинку.",
|
||||
"account.notify.password.success": "Лозинка је успешно промењена",
|
||||
"account.card.oauth.title": "Социал логин",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Прекини везу",
|
||||
"account.card.oauth.unlinked": "Веза је прекинута",
|
||||
"account.modal.unlink.title": "Прекини везу са налогом",
|
||||
"account.modal.unlink.description": "Прекидање везе са вашим друштвеним налозима може довести до губитка налога ако се не сећате корисничког имена и лозинке.",
|
||||
"account.modal.unlink.description": "Уклањање везе са вашим друштвеним налозима може довести до губитка вашег налога ако се не сећате својих приступних података",
|
||||
"account.notify.oauth.unlinked.success": "Веза је прекинута",
|
||||
"account.card.security.title": "Безбедност",
|
||||
"account.card.security.totp.enable.description": "Унесите своју тренутну лозинку да бисте почели да омогућавате ТОТП",
|
||||
@@ -112,17 +112,17 @@ export default {
|
||||
"account.modal.delete.description": "Да ли заиста желите да избришете свој налог укључујући све ваше активне дељења?",
|
||||
// END /account
|
||||
// /account/shares
|
||||
"account.shares.title": "Moja дељења",
|
||||
"account.shares.title": "Моја дељења",
|
||||
"account.shares.title.empty": "Овде је празно 👀",
|
||||
"account.shares.description.empty": "Немате никаква дељења.",
|
||||
"account.shares.button.create": "Направите",
|
||||
"account.shares.info.title": "Делите информације",
|
||||
"account.shares.table.id": "ИД",
|
||||
"account.shares.table.id": "ID",
|
||||
"account.shares.table.name": "Назив",
|
||||
"account.shares.table.description": "Опис",
|
||||
"account.shares.table.visitors": "Посетици",
|
||||
"account.shares.table.expiresAt": "Истиче у",
|
||||
"account.shares.table.createdAt": "Направљено у",
|
||||
"account.shares.table.visitors": "Посетиоци",
|
||||
"account.shares.table.expiresAt": "Истиче",
|
||||
"account.shares.table.createdAt": "Направљено",
|
||||
"account.shares.table.size": "Величина",
|
||||
"account.shares.modal.share-informations": "Делите информације",
|
||||
"account.shares.modal.share-link": "Дели везу",
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Година",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Године",
|
||||
"account.reverseShares.modal.max-size.label": "Максимална величина дељења",
|
||||
"account.reverseShares.modal.send-email": "Пошаљите обавештење путем е-поште",
|
||||
"account.reverseShares.modal.send-email.description": "Пошаљите обавештење е-поштом када се креира дељење помоћу ове обрнуте везе за дељење.",
|
||||
"account.reverseShares.modal.send-email": "Пошаљи обавештења и-мејлом",
|
||||
"account.reverseShares.modal.send-email.description": "Пошаљи обавештење имејлом када се креира дељење помоћу ове обрнуте везе за дељење.",
|
||||
"account.reverseShares.modal.simplified": "Једноставан режим",
|
||||
"account.reverseShares.modal.simplified.description": "Олакшајте особи која отпрема датотеку да је подели са вама. Они ће моћи да прилагоде само име и опис дељења.",
|
||||
"account.reverseShares.modal.simplified.description": "Олакшајте особи која отпрема фајл да га подели са вама. Они ће моћи да прилагоде само име и опис дељења.",
|
||||
"account.reverseShares.modal.public-access": "Јавни приступ",
|
||||
"account.reverseShares.modal.public-access.description": "Учините креирана дељења са овим обрнутим дељењем јавном. Ако је онемогућено, само ви и креатор дељења можете да га видите.",
|
||||
"account.reverseShares.modal.public-access.description": "Учини да дељења креирана овим реверзним линком за дељење буду јавна. Ако је онемогућено, само ви и креатор дељења ћете имати приступ за преглед.",
|
||||
"account.reverseShares.modal.max-use.label": "Максималан број коришћења",
|
||||
"account.reverseShares.modal.max-use.description": "Максималан број пута који овај URL може да се користи за прављење дељења.",
|
||||
"account.reverseShare.never-expires": "Ово обрнуто дељење никада неће истећи.",
|
||||
@@ -174,49 +174,52 @@ export default {
|
||||
// /admin
|
||||
"admin.title": "Администрација",
|
||||
"admin.button.users": "Управљање корисницима",
|
||||
"admin.button.shares": "Управљање deljenjima",
|
||||
"admin.button.shares": "Управљање дељењем",
|
||||
"admin.button.config": "Конфигурација",
|
||||
"admin.version": "Верзија",
|
||||
// END /admin
|
||||
// /admin/users
|
||||
"admin.users.title": "Управљање корисницима",
|
||||
"admin.users.table.username": "Корисничко име",
|
||||
"admin.users.table.email": "E-пошта",
|
||||
"admin.users.table.email": "Имејл",
|
||||
"admin.users.table.admin": "Админ",
|
||||
"admin.users.edit.update.title": "Ажурирајте корисника {username}",
|
||||
"admin.users.edit.update.title": "Уредите корисника: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Администраторске привилегије",
|
||||
"admin.users.edit.update.change-password.title": "Промените лозинку",
|
||||
"admin.users.edit.update.change-password.field": "Нова лозинка",
|
||||
"admin.users.edit.update.change-password.button": "Снимите нову лозинку",
|
||||
"admin.users.edit.update.notify.password.success": "Лозинка је успешно промењена",
|
||||
"admin.users.edit.delete.title": "Обришите корисника {username}",
|
||||
"admin.users.edit.delete.description": "Да ли заиста желите да избришете овог корисника и сва његова дељења?",
|
||||
"admin.users.edit.delete.title": "Обришите корисника: {username} ?",
|
||||
"admin.users.edit.delete.description": "Да ли заиста желите да обришете овог корисника и сва његова дељења?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Креирај корисника",
|
||||
"admin.users.modal.create.username": "Корисничко име",
|
||||
"admin.users.modal.create.email": "E-пошта",
|
||||
"admin.users.modal.create.email": "Имејл",
|
||||
"admin.users.modal.create.password": "Лозинка",
|
||||
"admin.users.modal.create.manual-password": "Поставите лозинку ручно",
|
||||
"admin.users.modal.create.manual-password.description": "Ако није означено, корисник ће добити е-пошту са везом за постављање лозинке.",
|
||||
"admin.users.modal.create.manual-password.description": "Ако није означено, корисник ће добити имејл са везом за постављање лозинке.",
|
||||
"admin.users.modal.create.admin": "Администраторске привилегије",
|
||||
"admin.users.modal.create.admin.description": "Ако је означено, корисник ће моћи да приступи административном панелу.",
|
||||
// END /admin/users
|
||||
// /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 At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"admin.shares.edit.delete.description": "Do you really want to delete this share?",
|
||||
"admin.shares.title": "Управљање дељењем",
|
||||
"admin.shares.table.id": "ID дељења",
|
||||
"admin.shares.table.username": "Креатор",
|
||||
"admin.shares.table.visitors": "Посетиоци",
|
||||
"admin.shares.table.expires": "Истиче",
|
||||
"admin.shares.edit.delete.title": "Обриши дељење: {id}",
|
||||
"admin.shares.edit.delete.description": "Да ли заиста желите да обришете ово дељење?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Пошаљи",
|
||||
"upload.notify.confirm-leave": "Да ли сте сигурни да желите да напустите ову страницу? Ваше отпремање ће бити отказано.",
|
||||
"upload.notify.generic-error": "Дошло је до грешке при довршавању дељења.",
|
||||
"upload.notify.count-failed": "Отпремање {count} датотека није успело. Покушавам поново.",
|
||||
"upload.reverse-share.error.invalid.title": "Неправилан линк за обрнуто дељење",
|
||||
"upload.reverse-share.error.invalid.description": "Ово обрнуто дељење је истекло или је неважеће.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Пошаљи датотеке",
|
||||
"upload.dropzone.description": "Превуците и отпустите датотеке овде да бисте започели дељење. Можемо да прихватимо само датотеке које су укупно мање од {maxSize}.",
|
||||
"upload.dropzone.description": "Превуците и отпустите датотеке овде да бисте започели дељење. Прихватамо само фајлове укупне величине до {maxSize}.",
|
||||
"upload.dropzone.notify.file-too-big": "Ваше датотеке премашују максималну величину дељења од {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Назив",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Нисте пријављени",
|
||||
"upload.modal.not-signed-in-description": "Нећете моћи ручно да избришете своје дељење и видите број посетилаца.",
|
||||
"upload.modal.expires.never": "никад",
|
||||
"upload.modal.expires.never-long": "Никада не истиче",
|
||||
"upload.modal.expires.error.too-long": "Истек премашује максимални датум истека од {max}.",
|
||||
"upload.modal.expires.never-long": "Трајно дељење",
|
||||
"upload.modal.expires.error.too-long": "Датум истека превазилази максималну вредност од {max}.",
|
||||
"upload.modal.link.label": "Линк",
|
||||
"upload.modal.expires.label": "Истиче",
|
||||
"upload.modal.expires.minute-singular": "Минут",
|
||||
@@ -244,12 +247,12 @@ export default {
|
||||
"upload.modal.expires.month-plural": "Месеци",
|
||||
"upload.modal.expires.year-singular": "Година",
|
||||
"upload.modal.expires.year-plural": "Године",
|
||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
||||
"upload.modal.accordion.email.title": "Примаоци е-поште",
|
||||
"upload.modal.accordion.email.placeholder": "Унесите примаоце е-поште",
|
||||
"upload.modal.accordion.email.invalid-email": "Неисправна адреса е-поште",
|
||||
"upload.modal.accordion.name-and-description.title": "Име и опис",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Име",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Напомена за примаоце овог дељења",
|
||||
"upload.modal.accordion.email.title": "Примаоци имејла",
|
||||
"upload.modal.accordion.email.placeholder": "Унесите примаоце имејла",
|
||||
"upload.modal.accordion.email.invalid-email": "Неисправна адреса имејла",
|
||||
"upload.modal.accordion.security.title": "Сигурносна подешавања",
|
||||
"upload.modal.accordion.security.password.label": "Заштита лозинком",
|
||||
"upload.modal.accordion.security.password.placeholder": "Нема лозинке",
|
||||
@@ -259,7 +262,7 @@ export default {
|
||||
"upload.modal.completed.never-expires": "Ово дељење никада неће истећи.",
|
||||
"upload.modal.completed.expires-on": "Ово дељење ће истећи {expiration}.",
|
||||
"upload.modal.completed.share-ready": "Дељење је спремно",
|
||||
"upload.modal.completed.notified-reverse-share-creator": "We have notified the creator of the reverse share. You can also manually share this link with them through other means.",
|
||||
"upload.modal.completed.notified-reverse-share-creator": "Обавестили смо креатора реверзног дељења. Такође можете ручно поделити овај линк са њима на друге начине.",
|
||||
// END /upload
|
||||
// /share/[id]
|
||||
"share.title": "Дељење {shareId}",
|
||||
@@ -269,62 +272,64 @@ export default {
|
||||
"share.error.removed.title": "Дељење је уклоњено",
|
||||
"share.error.not-found.title": "Дељење није пронађено",
|
||||
"share.error.not-found.description": "Удео који тражите не постоји.",
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.error.access-denied.title": "Приватно дељење",
|
||||
"share.error.access-denied.description": "Тренутни налог нема дозволу за приступ овом дељењу",
|
||||
"share.modal.password.title": "Обавезна лозинка",
|
||||
"share.modal.password.description": "Да бисте приступили овом дељењу, унесите лозинку за дељење.",
|
||||
"share.modal.password.description": "Молимо унесите лозинку за приступ овом дељењу.",
|
||||
"share.modal.password": "Лозинка",
|
||||
"share.modal.error.invalid-password": "Неисправна лозинка",
|
||||
"share.button.download-all": "Преузми све",
|
||||
"share.notify.download-all-preparing": "Дељење се спрема. Покушајте поново за неколико минута.",
|
||||
"share.notify.download-all-preparing": "Дељење се припрема. Молимо покушајте поново за неколико минута.",
|
||||
"share.modal.file-link": "Веза датотеке",
|
||||
"share.table.name": "Назив",
|
||||
"share.table.size": "Величина",
|
||||
"share.modal.file-preview.error.not-supported.title": "Преглед није подржан",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Прегледи нису подржани за овај тип датотека. Молимо преузмите фајл да бисте га прегледали.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Edit {shareId}",
|
||||
"share.edit.append-upload": "Append file",
|
||||
"share.edit.notify.generic-error": "An error occurred while finishing your share.",
|
||||
"share.edit.notify.save-success": "Share updated successfully",
|
||||
"share.edit.title": "Уреди {shareId}",
|
||||
"share.edit.append-upload": "Надодај фајл",
|
||||
"share.edit.notify.generic-error": "Дошло је до грешке приликом завршетка вашег дељења.",
|
||||
"share.edit.notify.save-success": "Дељење је успешно ажурирано",
|
||||
// END /share/[id]/edit
|
||||
// /admin/config
|
||||
"admin.config.title": "Конфигурација",
|
||||
"admin.config.category.general": "Опште",
|
||||
"admin.config.category.share": "Дељење",
|
||||
"admin.config.category.email": "E-пошта",
|
||||
"admin.config.category.email": "Имејл",
|
||||
"admin.config.category.smtp": "SMTP",
|
||||
"admin.config.category.oauth": "Социал Логин",
|
||||
"admin.config.category.oauth": "Social Login",
|
||||
"admin.config.general.app-name": "Назив апликације",
|
||||
"admin.config.general.app-name.description": "Назив апликације",
|
||||
"admin.config.general.app-url": "URL апликације",
|
||||
"admin.config.general.app-url.description": "На којој URL адреси је доступан Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Безбедни колачићи",
|
||||
"admin.config.general.secure-cookies.description": "Да ли желите да поставите заставицу за безбедност на колачиће? Ако је омогућено, сајт неће функционисати када му приступате преко HTTP-а.",
|
||||
"admin.config.general.show-home-page": "Прикажи почетну страницу",
|
||||
"admin.config.general.show-home-page.description": "Да ли да се прикаже почетна страница",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
"admin.config.general.session-duration.description": "Time in hours after which a user must log in again (default: 3 months).",
|
||||
"admin.config.general.session-duration": "Трајање сесије",
|
||||
"admin.config.general.session-duration.description": "Време у сатима након којег корисник мора поново да се пријави (подразумевано: 3 месеца).",
|
||||
"admin.config.general.logo": "Лого",
|
||||
"admin.config.general.logo.description": "Промените свој логотип тако што ћете отпремити нову слику. Слика мора да буде PNG и треба да има формат 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Изабери слику",
|
||||
"admin.config.email.enable-share-email-recipients": "Омогућите дељење прималаца е-поште",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Да ли да дозволите да имејлови деле примаоце. Омогућите ово само ако сте омогућили SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Омогући дељење са примаоцима имејлом",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Да ли дозволити дељење са примаоцима путем имејла. Омогућите ово само ако је SMTP активиран.",
|
||||
"admin.config.email.share-recipients-subject": "Поделите наслов примаоца",
|
||||
"admin.config.email.share-recipients-subject.description": "Тема е-поруке која се шаље примаоцима дељења.",
|
||||
"admin.config.email.share-recipients-subject.description": "Тема имејла која се шаље примаоцима дељења.",
|
||||
"admin.config.email.share-recipients-message": "Делите поруку примаоца",
|
||||
"admin.config.email.share-recipients-message.description": "Порука која се шаље примаоцима дељења. Доступне променљиве:\n {creator} – корисничко име креатора дељења\n {shareUrl} – URL дељења\n {desc} – Опис дељења\n {expires} - Датум истека акције\n Променљиве ће бити замењене стварном вредношћу.",
|
||||
"admin.config.email.share-recipients-message.description": "Порука која се шаље примаоцима дељења. Доступне променљиве:\n{creator} - Корисничко име креатора дељења\n{creatorEmail} - Имејл креатора дељења\n{shareUrl} - URL дељења\n{desc} - Опис дељења\n{expires} - Датум истека дељења\nОве променљиве ће бити замењене стварним вредностима.",
|
||||
"admin.config.email.reverse-share-subject": "Тема обрнутог дељења",
|
||||
"admin.config.email.reverse-share-subject.description": "Тема е-поруке која се шаље када је неко направио дељење са вашом обрнутим линком за дељење.",
|
||||
"admin.config.email.reverse-share-subject.description": "Наслов имејла који се шаље када неко креира дељење са вашим реверзним линком за дељење.",
|
||||
"admin.config.email.reverse-share-message": "Обрнуто дељење порука",
|
||||
"admin.config.email.reverse-share-message.description": "Порука која се шаље када је неко направио дељење са вашом обрнутом везом за дељење. {shareUrl} ће бити замењен именом креатора и УРЛ-ом за дељење.",
|
||||
"admin.config.email.reverse-share-message.description": "Порука која се шаље када је неко направио дељење са вашом обрнутом везом за дељење. {shareUrl} ће бити замењен именом креатора и URL-ом за дељење.",
|
||||
"admin.config.email.reset-password-subject": "Ресетујте тему лозинке",
|
||||
"admin.config.email.reset-password-subject.description": "Предмет е-поште која се шаље када корисник затражи ресетовање лозинке.",
|
||||
"admin.config.email.reset-password-subject.description": "Наслов имејла који се шаље када корисник затражи ресетовање лозинке.",
|
||||
"admin.config.email.reset-password-message": "Порука за ресетовање лозинке",
|
||||
"admin.config.email.reset-password-message.description": "Порука која се шаље када корисник затражи ресетовање лозинке. {url} ће бити замењен УРЛ-ом за ресетовање лозинке.",
|
||||
"admin.config.email.reset-password-message.description": "Порука која се шаље када корисник затражи ресетовање лозинке. {url} ће бити замењен линком за ресетовање лозинке.",
|
||||
"admin.config.email.invite-subject": "Позивна тема",
|
||||
"admin.config.email.invite-subject.description": "Тема е-поруке која се шаље када администратор позове корисника.",
|
||||
"admin.config.email.invite-subject.description": "Наслов е-поште која се шаље када администратор позове корисника.",
|
||||
"admin.config.email.invite-message": "Позивна порука",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"admin.config.email.invite-message.description": "Порука која се шаље када администратор позове корисника. {url} ће бити замењен линком за позив, {email} имејлом, а {password} лозинком корисника.",
|
||||
"admin.config.share.allow-registration": "Дозволи регистрацију",
|
||||
"admin.config.share.allow-registration.description": "Да ли је регистрација дозвољена",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Дозволи дељење без аутентификације",
|
||||
@@ -333,114 +338,118 @@ export default {
|
||||
"admin.config.share.max-expiration.description": "Максимални рок трајања дељења у сатима. Поставите на 0 да бисте омогућили неограничено трајање.",
|
||||
"admin.config.share.max-size": "Максимална величина",
|
||||
"admin.config.share.max-size.description": "Максимална величина дељења у бајтовима",
|
||||
"admin.config.share.zip-compression-level": "Ниво zip компресије",
|
||||
"admin.config.share.zip-compression-level": "Ниво Zip компресије",
|
||||
"admin.config.share.zip-compression-level.description": "Подесите ниво да бисте балансирали између величине датотеке и брзине компресије. Важеће вредности се крећу од 0 до 9, при чему је 0 без компресије, а 9 је максимална компресија. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads 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": "Омогућено",
|
||||
"admin.config.smtp.enabled.description": "Да ли је SMTP омогућен. Поставите ово на тачно само ако сте унели хост, порт, е-пошту, корисника и лозинку вашег SMTP сервера.",
|
||||
"admin.config.share.chunk-size": "Величина комада",
|
||||
"admin.config.share.chunk-size.description": "Подесите величину дела (у бајтовима) за ваша отпремање како бисте уравнотежили ефикасност и поузданост у складу са вашом интернет везом. Мањи делови могу побољшати стопу успеха за нестабилне везе, док већи делови омогућавају брже отпремање за стабилне везе.",
|
||||
"admin.config.share.auto-open-share-modal": "",
|
||||
"admin.config.share.auto-open-share-modal.description": "Модал за креирање дељења аутоматски се појављује када корисник изабере датотеке, елиминишући потребу за ручним кликом на дугме.",
|
||||
"admin.config.smtp.enabled": "Омогући",
|
||||
"admin.config.smtp.enabled.description": "Да ли је SMTP омогућен. Поставите ово на тачно само ако сте унели хост, порт, имејл, корисника и лозинку вашег SMTP сервера.",
|
||||
"admin.config.smtp.host": "Домаћин",
|
||||
"admin.config.smtp.host.description": "Домаћин SMTP сервера",
|
||||
"admin.config.smtp.port": "Порт",
|
||||
"admin.config.smtp.port.description": "Порт домаћина SMTP сервера",
|
||||
"admin.config.smtp.email": "E-пошта",
|
||||
"admin.config.smtp.email.description": "Адреса е-поште са које се е-поруке шаљу",
|
||||
"admin.config.smtp.email": "Имејл",
|
||||
"admin.config.smtp.email.description": "Адреса имејла са којег се поруке шаљу",
|
||||
"admin.config.smtp.username": "Корисничко име",
|
||||
"admin.config.smtp.username.description": "Корисничко име SMTP сервера",
|
||||
"admin.config.smtp.password": "Лозинка",
|
||||
"admin.config.smtp.password.description": "Лозинка SMTP сервера",
|
||||
"admin.config.smtp.button.test": "Пошаљи тестну е-пошту",
|
||||
"admin.config.smtp.allow-unauthorized-certificates": "Trust unauthorized SMTP server certificates",
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Only set this to true if you need to trust self signed certificates.",
|
||||
"admin.config.smtp.button.test": "Пошаљи тестни имејл",
|
||||
"admin.config.smtp.allow-unauthorized-certificates": "Веровање неауторизованим SMTP серверским сертификатима",
|
||||
"admin.config.smtp.allow-unauthorized-certificates.description": "Ово поставите на \"истина\" само ако је потребно веровати само-потписаним сертификатима.",
|
||||
"admin.config.oauth.allow-registration": "Дозволи регистрацију",
|
||||
"admin.config.oauth.allow-registration.description": "Дозволите корисницима да се региструју путем друштвене пријаве",
|
||||
"admin.config.oauth.ignore-totp": "Занемари ТОТП",
|
||||
"admin.config.oauth.ignore-totp.description": "Да ли да игноришете ТОТП када корисник користи пријаву на друштвеним мрежама",
|
||||
"admin.config.oauth.disable-password": "Disable password login",
|
||||
"admin.config.oauth.disable-password.description": "Whether to disable password login\nMake sure that an OAuth provider is properly configured before activating this configuration to avoid being locked out.",
|
||||
"admin.config.oauth.disable-password": "Онемогућите пријаву лозинком",
|
||||
"admin.config.oauth.disable-password.description": "Омогућити пријаву лозинком или не\nУверите се да је провајдер за OAuth правилно конфигурисан пре активирања ове конфигурације како бисте избегли закључавање налога.",
|
||||
"admin.config.oauth.github-enabled": "GitHub",
|
||||
"admin.config.oauth.github-enabled.description": "Да ли је пријављивање на GitHub омогућено",
|
||||
"admin.config.oauth.github-client-id": "GitHub ИД клијента",
|
||||
"admin.config.oauth.github-client-id.description": "ИД клијента GitHub OAuth апликације",
|
||||
"admin.config.oauth.github-client-id": "GitHub ID клијента",
|
||||
"admin.config.oauth.github-client-id.description": "ID клијента GitHub OAuth апликације",
|
||||
"admin.config.oauth.github-client-secret": "Тајна GitHub клијента",
|
||||
"admin.config.oauth.github-client-secret.description": "Тајна клијента GitHub OAuth апликације",
|
||||
"admin.config.oauth.google-enabled": "Google",
|
||||
"admin.config.oauth.google-enabled.description": "Да ли је пријављивање на Google омогућено",
|
||||
"admin.config.oauth.google-client-id": "ИД Google клијента",
|
||||
"admin.config.oauth.google-client-id.description": "ИД клијента Google OAuth апликације",
|
||||
"admin.config.oauth.google-client-id": "ID Google клијента",
|
||||
"admin.config.oauth.google-client-id.description": "ID клијента Google OAuth апликације",
|
||||
"admin.config.oauth.google-client-secret": "Тајна Google клијента",
|
||||
"admin.config.oauth.google-client-secret.description": "Тајна клијента Google OAuth апликације",
|
||||
"admin.config.oauth.microsoft-enabled": "Microsoft",
|
||||
"admin.config.oauth.microsoft-enabled.description": "Да ли је пријављивање на Microsoft омогућено",
|
||||
"admin.config.oauth.microsoft-tenant": "Microsoft Tenant",
|
||||
"admin.config.oauth.microsoft-tenant.description": "ИД закупца за Microsoft OAuth апликацију\nуобичајено: Корисници са личним Microsoft налогом и пословним или школским налогом са Microsoft Entra ID-а могу да се пријаве у апликацију. организације: Само корисници са пословним или школским налозима са Microsoft Entra ID-а могу да се пријаве у апликацију.\nпотрошачи: Само корисници са личним Microsoft налогом могу да се пријаве у апликацију.\nиме домена закупца Microsoft Entra ID или ИД закупца у ГУИД формату: Само корисници из одређеног Microsoft Entra ID станара (чланови директоријума са пословним или школским налогом или гости директоријума са личним Microsoft налогом) могу да се пријаве у апликацију.",
|
||||
"admin.config.oauth.microsoft-client-id": "Microsotf Цлиент ИД",
|
||||
"admin.config.oauth.microsoft-client-id.description": "ИД клијента Microsoft OAuth апликације",
|
||||
"admin.config.oauth.microsoft-tenant.description": "ID закупца за Microsoft OAuth апликацију\nуобичајено: Корисници са личним Microsoft налогом и пословним или школским налогом са Microsoft Entra ID-а могу да се пријаве у апликацију. организације: Само корисници са пословним или школским налозима са Microsoft Entra ID-а могу да се пријаве у апликацију.\nпотрошачи: Само корисници са личним Microsoft налогом могу да се пријаве у апликацију.\nиме домена закупца Microsoft Entra ID или ИД закупца у ГУИД формату: Само корисници из одређеног Microsoft Entra ID станара (чланови директоријума са пословним или школским налогом или гости директоријума са личним Microsoft налогом) могу да се пријаве у апликацију.",
|
||||
"admin.config.oauth.microsoft-client-id": "Microsoft ID клијента",
|
||||
"admin.config.oauth.microsoft-client-id.description": "ID клијента Microsoft OAuth апликације",
|
||||
"admin.config.oauth.microsoft-client-secret": "Тајна Microsoft клијента",
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Тајна клијента за Microsot OAuth апликацију",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Да ли је пријављивање на Discord омогућено",
|
||||
"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 ИД клијента",
|
||||
"admin.config.oauth.discord-client-id.description": "ИД клијента Discord OAuth апликације",
|
||||
"admin.config.oauth.discord-limited-users": "Ограничење по Discord корисницима",
|
||||
"admin.config.oauth.discord-limited-users.description": "Ограничите пријављивање на одређене кориснике помоћу њиховог Discord ID-а. Оставите празно да бисте онемогућили.",
|
||||
"admin.config.oauth.discord-limited-guild": "Ограничење по Discord серверу",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Ограничите пријављивање на кориснике одређеног сервера. Оставите празно да бисте онемогућили.",
|
||||
"admin.config.oauth.discord-client-id": "Discord ID клијента",
|
||||
"admin.config.oauth.discord-client-id.description": "ID клијента Discord OAuth апликације",
|
||||
"admin.config.oauth.discord-client-secret": "Discord клијент тајна",
|
||||
"admin.config.oauth.discord-client-secret.description": "Тајна клијента Discord OAuth апликације",
|
||||
"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-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.oauth.oidc-enabled.description": "Омогућити пријаву OpenID Connect-ом или не",
|
||||
"admin.config.oauth.oidc-discovery-uri": "URI за OpenID Connect Discovery",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI за откривање OpenID Connect OAuth апликације",
|
||||
"admin.config.oauth.oidc-sign-out": "Одјављивање са OpenID Connect-a",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Да ли ће дугме „Одјави се“ одјавити корисника и са OpenID Connect провајдера",
|
||||
"admin.config.oauth.oidc-username-claim": "Потраживање корисничког имена у OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Потраживање корисничког имена у OpenID Connect ID токену. Оставите празно ако не знате шта је ова конфигурација.",
|
||||
"admin.config.oauth.oidc-role-path": "Путања до улога у OpenID Connect токену",
|
||||
"admin.config.oauth.oidc-role-path.description": "Мора бити валидна JMES путања која референцира низ улога. " + "Управљање правима приступа помоћу улога у OpenID Connect-у се препоручује само ако ниједан други провајдер идентитета није конфигурисан и ако је пријава лозинком онемогућена. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||
"admin.config.oauth.oidc-role-general-access": "Улога у OpenID Connect-у за општи приступ",
|
||||
"admin.config.oauth.oidc-role-general-access.description": "Улога потребна за општи приступ. Мора бити присутна у улогама корисника како би се могао пријавити. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||
"admin.config.oauth.oidc-role-admin-access": "Улога у OpenID Connect-у за администраторски приступ",
|
||||
"admin.config.oauth.oidc-role-admin-access.description": "Улога потребна за администраторски приступ. Мора бити присутна у улогама корисника како би могли приступити администраторском панелу. " + "Оставите празно ако не знате шта је ова конфигурација.",
|
||||
"admin.config.oauth.oidc-client-id": "OpenID Connect ID клијента",
|
||||
"admin.config.oauth.oidc-client-id.description": "ID клијента OpenID Connect OAuth апликације",
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect тајна клијента",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Тајна клијента OpenID Connect OAuth апликације",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"admin.config.ldap.search-base": "User base",
|
||||
"admin.config.ldap.search-base.description": "Base location, where the user search will be performed",
|
||||
"admin.config.ldap.search-query": "User query",
|
||||
"admin.config.ldap.search-query.description": "The user query will be used to search the 'User base' for the LDAP user. %username% can be used as the placeholder for the user given input.",
|
||||
"admin.config.ldap.admin-groups": "Admin group",
|
||||
"admin.config.ldap.admin-groups.description": "Group required for administrative access.",
|
||||
"admin.config.ldap.field-name-member-of": "User groups attribute name",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP attribute name for the groups, an user is a member of. This is used when checking for the admin group.",
|
||||
"admin.config.ldap.field-name-email": "User email attribute name",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP attribute name for the email of an user.",
|
||||
"admin.config.ldap.enabled": "Омогући LDAP",
|
||||
"admin.config.ldap.enabled.description": "Користи LDAP аутентификацију за пријаву корисника",
|
||||
"admin.config.ldap.url": "URL сервера",
|
||||
"admin.config.ldap.url.description": "URL LDAP сервера",
|
||||
"admin.config.ldap.bind-dn": "DN везивање",
|
||||
"admin.config.ldap.bind-dn.description": "Подразумевани корисник који се користи за претрагу корисника",
|
||||
"admin.config.ldap.bind-password": "Лозинка за везивање",
|
||||
"admin.config.ldap.bind-password.description": "Лозинка која се користи за извршавање претраге корисника",
|
||||
"admin.config.ldap.search-base": "База корисника",
|
||||
"admin.config.ldap.search-base.description": "Локација базе, место где ће се извршити претрага корисника",
|
||||
"admin.config.ldap.search-query": "Упит за корисника",
|
||||
"admin.config.ldap.search-query.description": "Упит за корисника који ће се користити за претрагу „Базе корисника“ за LDAP корисника. %username% се може користити као ознака за унос корисника.",
|
||||
"admin.config.ldap.admin-groups": "Администраторска група",
|
||||
"admin.config.ldap.admin-groups.description": "Група која је потребна за администраторски приступ.",
|
||||
"admin.config.ldap.field-name-member-of": "Назив атрибута корисничких група",
|
||||
"admin.config.ldap.field-name-member-of.description": "LDAP назив атрибута за групе чији је корисник члан. Ово се користи при провери администраторске групе.",
|
||||
"admin.config.ldap.field-name-email": "Назив атрибута за имејл корисника",
|
||||
"admin.config.ldap.field-name-email.description": "LDAP назив атрибута за имејл корисника.",
|
||||
// 404
|
||||
"404.description": "Опа - Ова страна не постоји.",
|
||||
"404.button.home": "Врати ме на почетак",
|
||||
// error
|
||||
"error.title": "Грешка",
|
||||
"error.description": "Ooпс!",
|
||||
"error.description": "Упс!",
|
||||
"error.button.back": "Иди назад",
|
||||
"error.msg.default": "Нешто је пошло наопако.",
|
||||
"error.msg.access_denied": "Отказали сте процес аутентификације, покушајте поново.",
|
||||
"error.msg.expired_token": "Процес аутентификације је трајао предуго, покушајте поново.",
|
||||
"error.msg.invalid_token": "Internal Error",
|
||||
"error.msg.invalid_token": "Интерна грешка",
|
||||
"error.msg.no_user": "Корисник повезан са овим {0} налогом не постоји.",
|
||||
"error.msg.no_email": "Не могу да добијем адресу е-поште са овог {0} налога.",
|
||||
"error.msg.no_email": "Не могу да добијем адресу имејла са овог {0} налога.",
|
||||
"error.msg.already_linked": "Овај {0} налог је већ повезан са другим налогом.",
|
||||
"error.msg.not_linked": "Овај {0} налог још увек није повезан ни са једним налогом.",
|
||||
"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": "Can not get your user info from this {0} account.",
|
||||
"error.msg.unverified_account": "Овај {0} налог је непотврђен, молимо покушајте поново након верификације.",
|
||||
"error.msg.user_not_allowed": "Није вам дозвољено да се пријавите.",
|
||||
"error.msg.cannot_get_user_info": "Не могу да добијем ваше корисничке информације са овог {0} налога.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,18 +467,20 @@ export default {
|
||||
"common.button.generate": "Генериши",
|
||||
"common.button.done": "Готово",
|
||||
"common.text.link": "Линк",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Посетите линк",
|
||||
"common.text.or": "или",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.text.redirecting": "Преусмеравање...",
|
||||
"common.button.go-back": "Иди назад",
|
||||
"common.button.go-home": "Go home",
|
||||
"common.notify.copied": "Ваша веза је копирана у clipboard",
|
||||
"common.button.go-home": "Почетна страница",
|
||||
"common.notify.copied": "Ваша веза је копирана у међуспремник",
|
||||
"common.success": "Успешно",
|
||||
"common.error": "Грешка",
|
||||
"common.error.unknown": "Дошло је до непознате грешке",
|
||||
"common.error.invalid-email": "Неисправна адреса е-поште",
|
||||
"common.error.invalid-email": "Неисправна адреса имејла",
|
||||
"common.error.too-short": "Мора да има најмање {length} знакова",
|
||||
"common.error.too-long": "Мора да има највише {length} знакова",
|
||||
"common.error.number-too-small": "Мора бити најмање {min}",
|
||||
"common.error.number-too-large": "Мора бити највише {max}",
|
||||
"common.error.exact-length": "Мора да има тачно {length} знакова",
|
||||
"common.error.invalid-number": "Мора бити број",
|
||||
"common.error.field-required": "Поље је обавезно"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Ladda upp",
|
||||
"navbar.signin": "Logga in",
|
||||
"navbar.home": "Startsida",
|
||||
"navbar.signup": "Skapa konto",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Mina delningar",
|
||||
"navbar.links.reverse": "Omvända delningar",
|
||||
"navbar.avatar.account": "Mitt konto",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Lokalt installerad",
|
||||
"home.bullet.a.description": "Hosta Pingvin Share på din egen maskin.",
|
||||
"home.bullet.b.name": "Sekretess",
|
||||
"home.bullet.b.description": "Dina filer är dina filer och bör aldrig hamna i händerna på tredje part.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Ingen irriterande filstorleksbegränsning",
|
||||
"home.bullet.c.description": "Ladda upp så stora filer som du vill. Endast din hårddisk kommer att vara din gräns.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Kom igång",
|
||||
"home.button.source": "Källkod",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Glömt ditt lösenord?",
|
||||
"resetPassword.description": "Ange din e-postadress för att återställa ditt lösenord.",
|
||||
"resetPassword.notify.success": "Ett meddelande med en länk för att återställa ditt lösenord har skickats om e-postadressen finns.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Tillbaka till inloggningssidan",
|
||||
"resetPassword.text.resetPassword": "Återställ lösenord",
|
||||
"resetPassword.text.enterNewPassword": "Ange ditt nya lösenord",
|
||||
"resetPassword.input.password": "Nytt lösenord",
|
||||
"resetPassword.notify.passwordReset": "Ditt lösenord har återställts.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Mitt konto",
|
||||
"account.card.info.title": "Kontoinformation",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Lösenord",
|
||||
"account.card.password.old": "Gammalt lösenord",
|
||||
"account.card.password.new": "Nytt lösenord",
|
||||
"account.card.password.noPasswordSet": "Du har inget lösenord. Om du vill logga in med e-post och lösenord måste du ange ett lösenord.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Lösenordet har ändrats",
|
||||
"account.card.oauth.title": "Inloggning via sociala nätverk",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Avlänka",
|
||||
"account.card.oauth.unlinked": "Avlänkad",
|
||||
"account.modal.unlink.title": "Avlänka konto",
|
||||
"account.modal.unlink.description": "Om du kopplar bort dina sociala konton kan det leda till att du förlorar ditt konto om du inte kommer ihåg ditt användarnamn och lösenord.",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your login credentials",
|
||||
"account.notify.oauth.unlinked.success": "Avlänkning utförd",
|
||||
"account.card.security.title": "Säkerhet",
|
||||
"account.card.security.totp.enable.description": "Ange ditt nuvarande lösenord för att aktivera TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Namn",
|
||||
"account.shares.table.description": "Beskrivning",
|
||||
"account.shares.table.visitors": "Besökare",
|
||||
"account.shares.table.expiresAt": "Förfaller den",
|
||||
"account.shares.table.createdAt": "Skapad den",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Storlek",
|
||||
"account.shares.modal.share-informations": "Information om delning",
|
||||
"account.shares.modal.share-link": "Delningslänk",
|
||||
"account.shares.modal.delete.title": "Ta bort delning {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Vill du verkligen ta bort denna delning?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "År",
|
||||
"account.reverseShares.modal.expiration.year-plural": "År",
|
||||
"account.reverseShares.modal.max-size.label": "Max storlek på delning",
|
||||
"account.reverseShares.modal.send-email": "Skicka e-postavisering",
|
||||
"account.reverseShares.modal.send-email.description": "Skicka ett e-postmeddelande när en delning skapas med denna länk för omvänd delning.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Maxanvändningar",
|
||||
"account.reverseShares.modal.max-use.description": "Den maximala mängden gånger denna URL kan användas för att skapa en delning.",
|
||||
"account.reverseShare.never-expires": "Denna omvända delning kommer aldrig att förfalla.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Användarnamn",
|
||||
"admin.users.table.email": "E-post",
|
||||
"admin.users.table.admin": "Administratör",
|
||||
"admin.users.edit.update.title": "Uppdatera användare {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Administratörsbehörigheter",
|
||||
"admin.users.edit.update.change-password.title": "Ändra lösenord",
|
||||
"admin.users.edit.update.change-password.field": "Nytt lösenord",
|
||||
"admin.users.edit.update.change-password.button": "Spara nytt lösenord",
|
||||
"admin.users.edit.update.notify.password.success": "Lösenordet har ändrats",
|
||||
"admin.users.edit.delete.title": "Ta bort användare {username}",
|
||||
"admin.users.edit.delete.description": "Vill du verkligen ta bort denna användare och alla deras delningar?",
|
||||
"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": "Skapa användare",
|
||||
"admin.users.modal.create.username": "Användarnamn",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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": "Ladda upp",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Ett fel uppstod när din delning skulle slutföras.",
|
||||
"upload.notify.count-failed": "{count} filer kunde inte laddas upp. Försöker igen.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Ladda upp filer",
|
||||
"upload.dropzone.description": "Drag och släpp filer här för att starta din delning. Vi kan endast acceptera filer som är mindre än {maxSize} totalt.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Dina filer överskrider den maximala storleken på {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Namn",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Du är inte inloggad",
|
||||
"upload.modal.not-signed-in-description": "Du kommer inte att kunna ta bort din delning manuellt och visa antalet besökare.",
|
||||
"upload.modal.expires.never": "aldrig",
|
||||
"upload.modal.expires.never-long": "Upphör aldrig",
|
||||
"upload.modal.expires.error.too-long": "Förfallodatum överskrider maximalt utgångsdatum för {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Länk",
|
||||
"upload.modal.expires.label": "Förfaller",
|
||||
"upload.modal.expires.minute-singular": "Minut",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "Lösenord krävs",
|
||||
"share.modal.password.description": "För att komma åt denna delning, vänligen ange lösenordet för delningen.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Lösenord",
|
||||
"share.modal.error.invalid-password": "Ogiltigt lösenord",
|
||||
"share.button.download-all": "Ladda ner allt",
|
||||
"share.notify.download-all-preparing": "Delningen förbereds. Försök igen om några minuter.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Fillänk",
|
||||
"share.table.name": "Namn",
|
||||
"share.table.size": "Storlek",
|
||||
"share.modal.file-preview.error.not-supported.title": "Förhandsgranskning stöds ej",
|
||||
"share.modal.file-preview.error.not-supported.description": "En förhandsvisning för filtypen stöds inte. Ladda ner filen för att se den.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Redigera {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Namn på applikationen",
|
||||
"admin.config.general.app-url": "Appens URL",
|
||||
"admin.config.general.app-url.description": "På vilken URL Pingvin Share finns",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Visa startsidan",
|
||||
"admin.config.general.show-home-page.description": "Om du vill visa startsidan",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logotyp",
|
||||
"admin.config.general.logo.description": "Ändra din logotyp genom att ladda upp en ny bild. Bilden måste vara en PNG och bör ha formatet 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Välj bild",
|
||||
"admin.config.email.enable-share-email-recipients": "Aktivera e-postmottagare för delning",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Om du vill tillåta e-post till delningsmottagare. Aktivera endast detta om du har aktiverat SMTP.",
|
||||
"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": "Delning ämne",
|
||||
"admin.config.email.share-recipients-subject.description": "Ämne för e-postmeddelandet som skickas till delningsmottagarna.",
|
||||
"admin.config.email.share-recipients-message": "Delning meddelande",
|
||||
"admin.config.email.share-recipients-message.description": "Meddelande som skickas till delningens mottagare. Tillgängliga variabler:\n {creator} - Användarnamnet för skaparen av delningen\n {shareUrl} - URL för delningen\n {desc} - Beskrivningen av delningen\n {expires} - Förfallodatumet för delningen\n Variablerna kommer att ersättas med det faktiska värdet.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Omvänd delning ämne",
|
||||
"admin.config.email.reverse-share-subject.description": "Ämne i e-postmeddelandet som skickas när någon skapade en delning med din omvända delningslänk.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Omvänd delning meddelande",
|
||||
"admin.config.email.reverse-share-message.description": "Meddelande som skickas när någon skapade en delning med din länk för omvänd delning. {shareUrl} kommer att ersättas med skaparens namn och delningens URL.",
|
||||
"admin.config.email.reset-password-subject": "Återställ lösenord ämne",
|
||||
"admin.config.email.reset-password-subject.description": "Ämne i e-postmeddelandet som skickas när en användare begär en lösenordsåterställning.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Återställ lösenord meddelande",
|
||||
"admin.config.email.reset-password-message.description": "Meddelande som skickas när en användare begär en lösenordsåterställning. {url} kommer att ersättas med länken för lösenordsåterställningen.",
|
||||
"admin.config.email.invite-subject": "Inbjudan ämne",
|
||||
"admin.config.email.invite-subject.description": "Ämne i e-postmeddelandet som skickas när en administratör bjuder in en användare.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Inbjudningsmeddelanden",
|
||||
"admin.config.email.invite-message.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 password of the user.",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||
"admin.config.share.allow-registration": "Tillåt registrering",
|
||||
"admin.config.share.allow-registration.description": "Om registrering är tillåten",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Tillåt oautentiserade delningar",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Komprimeringsnivå för zip",
|
||||
"admin.config.share.zip-compression-level.description": "Justera nivån för att balansera mellan filstorlek och komprimeringshastighet. Giltiga värden varierar från 0 till 9, med 0 som ingen komprimering och 9 som maximal komprimering. ",
|
||||
"admin.config.share.chunk-size": "Bitstorleken",
|
||||
"admin.config.share.chunk-size.description": "Justera bitstorleken (i bytes) för dina uppladdningar för att balansera effektivitet och tillförlitlighet enligt din internetanslutning. Mindre bitar kan öka framgångsgraden för instabila anslutningar, medan större bitar snabbar upp uppladdningar för stabila anslutningar.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Aktiverad",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Om SMTP skall vara aktiverat. Ange endast detta som sant om du angav adress, port, e-post, användare och lösenord för din SMTP-server.",
|
||||
"admin.config.smtp.host": "Adress",
|
||||
"admin.config.smtp.host.description": "Adress för SMTP-servern",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "Port för SMTP-servern",
|
||||
"admin.config.smtp.email": "E-post",
|
||||
"admin.config.smtp.email.description": "E-postadress som e-postmeddelanden skickas från",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Användarnamn",
|
||||
"admin.config.smtp.username.description": "Användarnamn för SMTP-servern",
|
||||
"admin.config.smtp.password": "Lösenord",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Client secret för Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Om inloggning via Discord är aktiverat",
|
||||
"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 begränsa till server ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Begränsa inloggning till användare på en specifik server. Lämna tomt för att inaktivera.",
|
||||
"admin.config.oauth.discord-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Om OpenID-inloggning är aktiverat",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI för OpenID Connect OAuth appen",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect användarnamnsanspråk",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Användarnamnsanspråk i OpenID Connect ID token. Lämna tomt om du inte vet vad denna konfiguration är.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Client secret för OpenID OAuth",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Användare som är länkad till detta {0} konto finns inte.",
|
||||
"error.msg.no_email": "Kan inte hämta e-postadress från detta {0} konto.",
|
||||
"error.msg.already_linked": "Detta {0} konto är redan länkat till ett annat konto.",
|
||||
"error.msg.not_linked": "Detta {0} konto har ännu inte länkat till något konto.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Detta {0} -konto är overifierat, försök igen efter verifiering.",
|
||||
"error.msg.user_not_allowed": "Du är inte tillåten att logga in.",
|
||||
"error.msg.cannot_get_user_info": "Kan inte hämta din användarinformation från detta {0} konto.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Generera",
|
||||
"common.button.done": "Klar",
|
||||
"common.text.link": "Länk",
|
||||
"common.text.navigate-to-link": "Gå till länken",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "eller",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Gå tillbaka",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Ogiltig e-postadress",
|
||||
"common.error.too-short": "Måste minst vara {length} tecken långt",
|
||||
"common.error.too-long": "Får högst innehålla {length} tecken",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Måste vara exakt {length} tecken långt",
|
||||
"common.error.invalid-number": "Måste vara ett tal",
|
||||
"common.error.field-required": "Obligatoriskt fält"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "อัพโหลด",
|
||||
"navbar.signin": "เข้าสู่ระบบ",
|
||||
"navbar.home": "หน้าหลัก",
|
||||
"navbar.signup": "สมัครบัญชี",
|
||||
"navbar.signup": "ลงทะเบียน",
|
||||
"navbar.links.shares": "แชร์ของฉัน",
|
||||
"navbar.links.reverse": "รีเวิร์สแชร์",
|
||||
"navbar.avatar.account": "บัญชีของฉัน",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Self-Hosted",
|
||||
"home.bullet.a.description": "โฮสต์ Pingvin Share บนเครื่องของคุณเอง.",
|
||||
"home.bullet.b.name": "ความเป็นส่วนตัว",
|
||||
"home.bullet.b.description": "ไฟล์ของคุณคือไฟล์ของคุณ มันไม่ควรตกอยู่บนมือของบุคคลที่สาม",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "ไม่มีการจำกัดขนาดไฟล์ที่น่ารำคาญ",
|
||||
"home.bullet.c.description": "อัพโหลดใหญ่เท่าไหนก็ได้ จำกัดอย่างเดียวคือความจุของเคื่องคุณ",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "เริ่มต้น",
|
||||
"home.button.source": "ซอร์สโค้ด",
|
||||
// END /
|
||||
@@ -26,8 +26,8 @@ export default {
|
||||
"signin.title": "ยินดีต้อนรับกลับ",
|
||||
"signin.description": "ยังไม่มีบัญชี?",
|
||||
"signin.button.signup": "สมัครบัญชี",
|
||||
"signin.input.email-or-username": "อีเมล์์์์์์์์หรือชื่อผู้ใช้",
|
||||
"signin.input.email-or-username.placeholder": "อีเมล์์์์์์์หรือชื่อผู้ใช้ของคุณ",
|
||||
"signin.input.email-or-username": "อีเมลหรือชื่อผู้ใช้",
|
||||
"signin.input.email-or-username.placeholder": "อีเมลหรือชื่อผู้ใช้ของคุณ",
|
||||
"signin.input.password": "รหัสผ่าน",
|
||||
"signin.input.password.placeholder": "รหัสผ่านของคุณ",
|
||||
"signin.button.submit": "เข้าสู่ระบบ",
|
||||
@@ -47,8 +47,8 @@ export default {
|
||||
"signup.button.signin": "เข้าสู่ระบบ",
|
||||
"signup.input.username": "ชื่อผู้ใช้",
|
||||
"signup.input.username.placeholder": "ชื่อผู้ใช้ของคุณ",
|
||||
"signup.input.email": "อีเมล์์์์์์์์",
|
||||
"signup.input.email.placeholder": "อีเมล์์์์์์์์ของคุณ",
|
||||
"signup.input.email": "อีเมล",
|
||||
"signup.input.email.placeholder": "อีเมลของคุณ",
|
||||
"signup.button.submit": "เริ่มต้นกัน",
|
||||
// END /auth/signup
|
||||
// /auth/totp
|
||||
@@ -57,23 +57,23 @@ export default {
|
||||
// END /auth/totp
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "ลืมรหัสผ่าน?",
|
||||
"resetPassword.description": "กรุณาใส่อีเมล์์์์์์์ของคุณเพื่อรีเซ็ตรหัสผ่าน",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.description": "กรุณาใส่อีเมลของคุณเพื่อรีเซ็ตรหัสผ่าน",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "กลับไปที่หน้าลงชื่อเข้าใช้",
|
||||
"resetPassword.text.resetPassword": "รีเซ็ตรหัสผ่าน",
|
||||
"resetPassword.text.enterNewPassword": "ป้อนรหัสผ่านใหม่ของคุณ",
|
||||
"resetPassword.input.password": "รหัสผ่านใหม่",
|
||||
"resetPassword.notify.passwordReset": "รหัสผ่านของคุณรีเซ็ตเรียบร้อยแล้ว",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "บัญชีของฉัน",
|
||||
"account.card.info.title": "ข้อมูลบัญชี",
|
||||
"account.card.info.username": "ชื่อผู้ใช้",
|
||||
"account.card.info.email": "อีเมล์์์์์์์",
|
||||
"account.card.info.email": "อีเมล",
|
||||
"account.notify.info.success": "อัปเดตบัญชีเรียบร้อยแล้ว",
|
||||
"account.card.password.title": "รหัสผ่าน",
|
||||
"account.card.password.old": "รหัสผ่านเก่า",
|
||||
"account.card.password.new": "รหัสผ่านใหม่",
|
||||
"account.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "อัปเดตรหัสผ่านเรียบร้อยแล้ว",
|
||||
"account.card.oauth.title": "Social login",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Unlink",
|
||||
"account.card.oauth.unlinked": "Unlinked",
|
||||
"account.modal.unlink.title": "Unlink account",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.",
|
||||
"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": "ความปลอดภัย",
|
||||
"account.card.security.totp.enable.description": "ใส่รหัสผ่านปัจจุบันของคุณเพื่อเริ่มต้นการเปิดใช้งาน TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "ชื่อ",
|
||||
"account.shares.table.description": "คำอธิบาย",
|
||||
"account.shares.table.visitors": "ผู้เข้าชม",
|
||||
"account.shares.table.expiresAt": "หมดอายุ",
|
||||
"account.shares.table.createdAt": "สร้างเมื่อ",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "ขนาด",
|
||||
"account.shares.modal.share-informations": "ข้อมูลแชร์",
|
||||
"account.shares.modal.share-link": "แชร์ลิงค์",
|
||||
"account.shares.modal.delete.title": "ลบแชร์ {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "คุณต้องการลบแชร์นี้หรือไม่?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "ปี",
|
||||
"account.reverseShares.modal.expiration.year-plural": "ปี",
|
||||
"account.reverseShares.modal.max-size.label": "ขนาดสูงสุดของแชร์",
|
||||
"account.reverseShares.modal.send-email": "ส่งอีเมล์์์์์์์แจ้งเตือน",
|
||||
"account.reverseShares.modal.send-email.description": "ส่งอีเมล์์์์์์์แจ้งเตือนเมื่อมีการสร้างแชร์ด้วยลิงค์รีเวิร์สนี้",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "จำนวนการใช้งานสูงสุด",
|
||||
"account.reverseShares.modal.max-use.description": "จำนวนครั้งสูงสุดที่ลิงค์นี้สามารถใช้งานได้",
|
||||
"account.reverseShare.never-expires": "ลิงค์นี้ไม่มีวันหมดอายุ",
|
||||
@@ -181,23 +181,23 @@ export default {
|
||||
// /admin/users
|
||||
"admin.users.title": "การจัดการผู้ใช้",
|
||||
"admin.users.table.username": "ชื่อผู้ใช้",
|
||||
"admin.users.table.email": "อีเมล์์์์์์์",
|
||||
"admin.users.table.email": "อีเมล",
|
||||
"admin.users.table.admin": "ผู้ดูแลระบบ",
|
||||
"admin.users.edit.update.title": "อัปเดตผู้ใช้ {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "สิทธิ์ของผู้ดูแลระบบ",
|
||||
"admin.users.edit.update.change-password.title": "เปลี่ยนรหัสผ่าน",
|
||||
"admin.users.edit.update.change-password.field": "รหัสผ่านใหม่",
|
||||
"admin.users.edit.update.change-password.button": "บันทึกรหัสผ่านใหม่",
|
||||
"admin.users.edit.update.notify.password.success": "รหัสผ่านเปลี่ยนเรียบร้อยแล้ว",
|
||||
"admin.users.edit.delete.title": "ลบผู้ใช้ {username}",
|
||||
"admin.users.edit.delete.description": "คุณต้องการลบผู้ใช้นี้และการแชร์ทั้งหมดของเขาหรือไม่?",
|
||||
"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": "สร้างผู้ใช้",
|
||||
"admin.users.modal.create.username": "ชื่อผู้ใช้",
|
||||
"admin.users.modal.create.email": "อีเมล์",
|
||||
"admin.users.modal.create.email": "อีเมล",
|
||||
"admin.users.modal.create.password": "รหัสผ่าน",
|
||||
"admin.users.modal.create.manual-password": "ตั้งรหัสผ่านด้วยตนเอง",
|
||||
"admin.users.modal.create.manual-password.description": "หากไม่ติ๊กเลือก ผู้ใช้จะได้รับอีเมล์พร้อมลิงก์เพื่อตั้งรหัสผ่านด้วยตนเอง",
|
||||
"admin.users.modal.create.manual-password.description": "หากไม่ติ๊กเลือก ผู้ใช้จะได้รับอีเมลพร้อมลิงก์เพื่อตั้งรหัสผ่านด้วยตนเอง",
|
||||
"admin.users.modal.create.admin": "สิทธิ์ของผู้ดูแลระบบ",
|
||||
"admin.users.modal.create.admin.description": "หากติ๊กเลือก ผู้ใช้จะสามารถเข้าถึงแผงควบคุมระบบได้",
|
||||
// END /admin/users
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "เกิดข้อผิดพลาดขณะที่กำลังจัดการการแชร์ของคุณ",
|
||||
"upload.notify.count-failed": "มีไฟล์จำนวน {count} ไฟล์ที่ไม่สามารถอัปโหลดได้ กำลังลองอีกครั้ง",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "อัปโหลดไฟล์",
|
||||
"upload.dropzone.description": "ลากและวางไฟล์ที่นี่เพื่อเริ่มการแชร์ของคุณ สามารถรับไฟล์ที่มีขนาดรวมไม่เกิน {maxSize} เท่านั้น",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "ไฟล์ของคุณเกินขนาดสูงสุดของการแชร์ {maxSize}",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "ชื่อ",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "คุณยังไม่ได้เข้าสู่ระบบ",
|
||||
"upload.modal.not-signed-in-description": "คุณจะไม่สามารถลบการแชร์ของคุณด้วยตนเองและดูจำนวนผู้เข้าชมได้",
|
||||
"upload.modal.expires.never": "ไม่มีกำหนด",
|
||||
"upload.modal.expires.never-long": "ไม่มีกำหนดหมดอายุ",
|
||||
"upload.modal.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "ลิงค์",
|
||||
"upload.modal.expires.label": "หมดอายุ",
|
||||
"upload.modal.expires.minute-singular": "นาที",
|
||||
@@ -247,9 +250,9 @@ export default {
|
||||
"upload.modal.accordion.name-and-description.title": "Name and description",
|
||||
"upload.modal.accordion.name-and-description.name.placeholder": "Name",
|
||||
"upload.modal.accordion.name-and-description.description.placeholder": "Note for the recipients of this share",
|
||||
"upload.modal.accordion.email.title": "ผู้รับอีเมล์",
|
||||
"upload.modal.accordion.email.placeholder": "ป้อนผู้รับอีเมล์",
|
||||
"upload.modal.accordion.email.invalid-email": "ที่อยู่อีเมล์ไม่ถูกต้อง",
|
||||
"upload.modal.accordion.email.title": "ผู้รับอีเมล",
|
||||
"upload.modal.accordion.email.placeholder": "ป้อนผู้รับอีเมล",
|
||||
"upload.modal.accordion.email.invalid-email": "ที่อยู่อีเมลไม่ถูกต้อง",
|
||||
"upload.modal.accordion.security.title": "ตัวเลือกความปลอดภัย",
|
||||
"upload.modal.accordion.security.password.label": "การป้องกันรหัสผ่าน",
|
||||
"upload.modal.accordion.security.password.placeholder": "ไม่มีรหัสผ่าน",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "ต้องการรหัสผ่าน",
|
||||
"share.modal.password.description": "กรุณาป้อนรหัสผ่านเพื่อเข้าถึงการแชร์นี้",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "รหัสผ่าน",
|
||||
"share.modal.error.invalid-password": "รหัสผ่านไม่ถูกต้อง",
|
||||
"share.button.download-all": "ดาวน์โหลดทั้งหมด",
|
||||
"share.notify.download-all-preparing": "กำลังเตรียมการแชร์นี้ โปรดลองอีกครั้งในไม่กี่นาที",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "ลิงค์ไฟล์",
|
||||
"share.table.name": "ชื่อ",
|
||||
"share.table.size": "ขนาด",
|
||||
"share.modal.file-preview.error.not-supported.title": "ไม่รองรับการแสดงตัวอย่าง",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Edit {shareId}",
|
||||
@@ -293,13 +296,15 @@ export default {
|
||||
"admin.config.title": "การตั้งค่า",
|
||||
"admin.config.category.general": "ทั่วไป",
|
||||
"admin.config.category.share": "การแชร์",
|
||||
"admin.config.category.email": "อีเมล์์์์์์",
|
||||
"admin.config.category.email": "อีเมล",
|
||||
"admin.config.category.smtp": "SMTP",
|
||||
"admin.config.category.oauth": "Social Login",
|
||||
"admin.config.general.app-name": "ชื่อแอพ",
|
||||
"admin.config.general.app-name.description": "ชื่อแอพพลิเคชัน",
|
||||
"admin.config.general.app-url": "URL ของแอพ",
|
||||
"admin.config.general.app-url.description": "URL ที่สามารถเข้าถึงแอพพลิเคชัน Pingvin Share ได้",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "แสดงหน้าแรก",
|
||||
"admin.config.general.show-home-page.description": "หากติ๊ก เว็บไซต์จะแสดงหน้าหลักเวลาเข้าถึง URL หลัก",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "โลโก้",
|
||||
"admin.config.general.logo.description": "เปลี่ยนโลโก้โดยอัปโหลดรูปภาพใหม่ รูปภาพต้องเป็น PNG และควรมีขนาดอัตราส่วน 1:1",
|
||||
"admin.config.general.logo.placeholder": "คลิกที่นี่หรือลากไฟล์มา",
|
||||
"admin.config.email.enable-share-email-recipients": "เปิดใช้งานผู้รับอีเมล์์์์์์ของการแชร์",
|
||||
"admin.config.email.enable-share-email-recipients.description": "เมื่อเปิดใช้งานผู้รับอีเมล์์์์์์ของการแชร์ ผู้ใช้ที่สร้างการแชร์จะสามารถเพิ่มผู้รับอีเมล์์์์์์์ของการแชร์ได้ เปิดเฉพาะเมื่อคุณเปิดใช้งาน SMTP",
|
||||
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมล์์์์์์ของการแชร์",
|
||||
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมล์์์์์์์์ที่ส่งไปยังผู้รับอีเมล์์์์์์ของการแชร์",
|
||||
"admin.config.email.share-recipients-message": "ข้อความผู้รับอีเมล์์์์์์ของการแชร์",
|
||||
"admin.config.email.share-recipients-message.description": "ข้อความที่ส่งไปยังผู้รับอีเมล์์์์์์ของการแชร์ ตัวแปรที่ใช้ได้:\n {creator} - ชื่อผู้สร้างการแชร์\n {shareUrl} - URL ของการแชร์\n {desc} - คำอธิบายของการแชร์\n {expires} - วันหมดอายุของการแชร์\n ตัวแปรจะถูกแทนที่ด้วยค่าจริง",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "หัวเรื่องผู้รับอีเมลของการแชร์",
|
||||
"admin.config.email.share-recipients-subject.description": "หัวเรื่องของอีเมลที่ส่งไปยังผู้รับอีเมลของการแชร์",
|
||||
"admin.config.email.share-recipients-message": "ข้อความผู้รับอีเมลของการแชร์",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "หัวเรื่องการแชร์รีเวิร์ส",
|
||||
"admin.config.email.reverse-share-subject.description": "หัวเรื่องของอีเมล์์์์์์ที่ส่งไปยังผู้สร้างการแชร์รีเวิร์ส",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "ข้อความการแชร์รีเวิร์ส",
|
||||
"admin.config.email.reverse-share-message.description": "ข้อความที่ส่งไปยังผู้สร้างการแชร์รีเวิร์ส ตัวแปรที่ใช้ได้:\n {shareUrl} - ชื่อผู้สร้างแชร์รีเวิร์สและ URL ของการแชร์\n ตัวแปรจะถูกแทนที่ด้วยค่าจริง",
|
||||
"admin.config.email.reset-password-subject": "หัวเรื่องการรีเซ็ตรหัสผ่าน",
|
||||
"admin.config.email.reset-password-subject.description": "หัวเรื่องของอีเมล์์์์์์ที่ส่งไปยังผู้ใช้เมื่อขอรีเซ็ตรหัสผ่าน",
|
||||
"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": "ข้อความการรีเซ็ตรหัสผ่าน",
|
||||
"admin.config.email.reset-password-message.description": "ข้อความที่ส่งไปยังผู้ใช้เมื่อขอรีเซ็ตรหัสผ่าน ตัวแปรที่ใช้ได้:\n {url} - URL สำหรับรีเซ็ตรหัสผ่าน\n ตัวแปรจะถูกแทนที่ด้วยค่าจริง",
|
||||
"admin.config.email.invite-subject": "หัวเรื่องการเชิญ",
|
||||
"admin.config.email.invite-subject.description": "หัวเรื่องของอีเมล์์์์์์ที่ส่งไปยังผู้ใช้เมื่อผู้ดูแลระบบเชิญผู้ใช้",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "ข้อความการเชิญ",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "อนุญาตให้ลงทะเบียนด้วยตัวเอง",
|
||||
"admin.config.share.allow-registration.description": "อนุญาตให้ผู้ใช้ลงทะเบียนด้วยตัวเองเพื่อสร้างแชร์",
|
||||
"admin.config.share.allow-unauthenticated-shares": "อนุญาตให้แชร์โดยไม่ต้องเข้าสู่ระบบ",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "ระดับการบีบอัดไฟล์ Zip",
|
||||
"admin.config.share.zip-compression-level.description": "ปรับระดับเพื่อปรับความสมดุลระหว่างขนาดไฟล์และความเร็วในการบีบอัด ค่าอยู่ระหว่าง 0-9 โดย 0 คือไม่มีการบีบอัดและ 9 คือการบีบอัดสูงสุด",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "เปิด",
|
||||
"admin.config.smtp.enabled.description": "เปิดใช้งาน SMTP สำหรับการส่งอีเมล์์์์์์ เปิดได้เท่านั้นต่อเมื่อคุณใส่ข้อมูลโฮสต์ พอร์ต อีเมล์ ผู้ใช้ และรหัสผ่านของเซิร์ฟเวอร์ SMTP ของคุณ",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "เปิดใช้งาน SMTP สำหรับการส่งอีเมล เปิดได้เท่านั้นต่อเมื่อคุณใส่ข้อมูลโฮสต์ พอร์ต อีเมล ผู้ใช้ และรหัสผ่านของเซิร์ฟเวอร์ SMTP ของค",
|
||||
"admin.config.smtp.host": "โฮสต์",
|
||||
"admin.config.smtp.host.description": "โฮสต์ของเซิร์ฟเวอร์ SMTP",
|
||||
"admin.config.smtp.port": "พอร์ต",
|
||||
"admin.config.smtp.port.description": "พอร์ตของเซิร์ฟเวอร์ SMTP",
|
||||
"admin.config.smtp.email": "อีเมล์์์์์์์",
|
||||
"admin.config.smtp.email.description": "อีเมล์์์์์์์ที่ใช้สำหรับการส่งอีเมล์์์์์์์",
|
||||
"admin.config.smtp.email": "อีเมล",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "ชื่อผู้ใช้",
|
||||
"admin.config.smtp.username.description": "ชื่อผู้ใช้ของเซิร์ฟเวอร์ SMTP",
|
||||
"admin.config.smtp.password": "รหัสผ่าน",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"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 haven't linked to any account yet.",
|
||||
"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": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "สุ่ม",
|
||||
"common.button.done": "เสร็จสิ้น",
|
||||
"common.text.link": "ลิงค์",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "หรือ",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "ย้อนกลับ",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "ที่อยู่อีเมล์ไม่ถูกต้อง",
|
||||
"common.error.too-short": "ต้องมีอย่างน้อย {length} ตัวอักษร",
|
||||
"common.error.too-long": "ต้องมีไม่เกิน {length} ตัวอักษร",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "ต้องมีความยาว {length} ตัวอักษร",
|
||||
"common.error.invalid-number": "ต้องเป็นตัวเลข",
|
||||
"common.error.field-required": "ต้องกรอกข้อมูลนี้"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Yükle",
|
||||
"navbar.signin": "Giriş Yap",
|
||||
"navbar.home": "Ana Sayfa",
|
||||
"navbar.signup": "Kaydol",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Paylaşımlarım",
|
||||
"navbar.links.reverse": "Tersine Paylaşımlar",
|
||||
"navbar.avatar.account": "Hesabım",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "Kişisel Barındırılan",
|
||||
"home.bullet.a.description": "Pingvin Share'i kendi makinenizde barındırın.",
|
||||
"home.bullet.b.name": "Gizlilik",
|
||||
"home.bullet.b.description": "Dosyalarınız sizin dosyalarınızdır ve asla üçüncü şahısların ellerinde bulunmamalıdır.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Can sıkıcı dosya boyutu sınırı yok",
|
||||
"home.bullet.c.description": "İstediğiniz kadar büyük dosya yükleyin. Sınırınız sadece sabit diskiniz olacaktır.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Başlayalım",
|
||||
"home.button.source": "Kaynak kodu",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Şifrenizi mi unuttunuz?",
|
||||
"resetPassword.description": "Şifrenizi sıfırlamak için E-Postanızı girin.",
|
||||
"resetPassword.notify.success": "E-postanız mevcutsa, şifrenizi sıfırlamak için bağlantı içeren bir mesaj gönderilmiştir.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Giriş sayfasına geri dön",
|
||||
"resetPassword.text.resetPassword": "Şifreyi sıfırla",
|
||||
"resetPassword.text.enterNewPassword": "Yeni şifrenizi girin",
|
||||
"resetPassword.input.password": "Yeni şifre",
|
||||
"resetPassword.notify.passwordReset": "Şifreniz başarıyla sıfırlandı.",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Hesabım",
|
||||
"account.card.info.title": "Hesap Bilgisi",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Şifre",
|
||||
"account.card.password.old": "Eski şifre",
|
||||
"account.card.password.new": "Yeni şifre",
|
||||
"account.card.password.noPasswordSet": "Belirlenmiş bir şifreniz yok. E-posta ve şifre ile oturum açmak istiyorsanız bir şifre belirlemeniz gerekir.",
|
||||
"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": "Şifre başarıyla değiştirildi",
|
||||
"account.card.oauth.title": "Sosyal Medya girişi",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Bağlantıyı kes",
|
||||
"account.card.oauth.unlinked": "Bağlantısız",
|
||||
"account.modal.unlink.title": "Hesabın bağlantısını kaldır",
|
||||
"account.modal.unlink.description": "Sosyal hesaplarınızın bağlantısını kesmek, kullanıcı adınızı ve şifrenizi hatırlamıyorsanız hesabınızı kaybetmenize neden olabilir.",
|
||||
"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": "Bağlantı Başarıyla Kaldırıldı",
|
||||
"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",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "İsim",
|
||||
"account.shares.table.description": "Açıklama",
|
||||
"account.shares.table.visitors": "Ziyaretçiler",
|
||||
"account.shares.table.expiresAt": "Sona erme tarihi",
|
||||
"account.shares.table.createdAt": "Oluşturulma tarihi",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Boyut",
|
||||
"account.shares.modal.share-informations": "Bilgiler paylaşın",
|
||||
"account.shares.modal.share-link": "Bağlantıyı paylaş",
|
||||
"account.shares.modal.delete.title": "{share} paylaşımını sil",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Bu paylaşımı silmek istediğinize emin misiniz?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Yıl",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Yıl",
|
||||
"account.reverseShares.modal.max-size.label": "Maks paylaşım boyutu",
|
||||
"account.reverseShares.modal.send-email": "E-Posta bildirimi gönder",
|
||||
"account.reverseShares.modal.send-email.description": "Bu tersine paylaşım bağlantısıyla bir paylaşım oluşturulduğunda e-posta bildirimi gönderin.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Maks Kullanım",
|
||||
"account.reverseShares.modal.max-use.description": "Bu URL'nin bir paylaşım oluşturmak için kullanılabileceği maksimum sayı.",
|
||||
"account.reverseShare.never-expires": "Bu tersine paylaşım asla sona ermeyecek.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Kullanıcı Adı",
|
||||
"admin.users.table.email": "E-Posta",
|
||||
"admin.users.table.admin": "Yönetici",
|
||||
"admin.users.edit.update.title": "{username} kullanıcısını güncelle",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Yönetici ayrıcalıkları",
|
||||
"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.button": "Yeni şifreyi kaydet",
|
||||
"admin.users.edit.update.notify.password.success": "Şifre başarıyla değiştirildi",
|
||||
"admin.users.edit.delete.title": "{username} kullanıcısını sil",
|
||||
"admin.users.edit.delete.description": "Bu kullanıcıyı ve tüm paylaşımlarını gerçekten silmek istiyor musunuz?",
|
||||
"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": "Kullanıcı oluştur",
|
||||
"admin.users.modal.create.username": "Kullanıcı Adı",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Paylaşım ID",
|
||||
"admin.shares.table.username": "Yapımcı",
|
||||
"admin.shares.table.visitors": "Ziyaretçi",
|
||||
"admin.shares.table.expires": "Sona erme tarihi",
|
||||
"admin.shares.edit.delete.title": "{id} paylaşımını sil",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "Bu paylaşımı gerçekten silmek istiyor musun?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "Yükle",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Paylaşımını bitirirken bir hata meydana geldi.",
|
||||
"upload.notify.count-failed": "{count} dosya yüklenemedi. Yeniden deneniyor.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Dosya yükle",
|
||||
"upload.dropzone.description": "Paylaşmak için dosyaları buraya sürükleyin. Sadece {maxSize} boyutundan küçük dosyalar kabul edilir.",
|
||||
"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": "Dosyalarınızın boyutu {maxSize} paylaşım sınırını geçti.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "İsim",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Oturum açmadınız",
|
||||
"upload.modal.not-signed-in-description": "Paylaşımınızı manuel olarak silemeyecek ve ziyaret sayısını göremeyeceksiniz.",
|
||||
"upload.modal.expires.never": "asla",
|
||||
"upload.modal.expires.never-long": "Sona Ermez",
|
||||
"upload.modal.expires.error.too-long": "Son kullanma tarihi {max} maksimum son kullanma tarihini aşıyor.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Bağlantı",
|
||||
"upload.modal.expires.label": "Sona erme tarihi",
|
||||
"upload.modal.expires.minute-singular": "Dakika",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "Şifre gerekli",
|
||||
"share.modal.password.description": "Bu paylaşıma erişmek için lütfen paylaşımın şifresini girin.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Şifre",
|
||||
"share.modal.error.invalid-password": "Geçersiz şifre",
|
||||
"share.button.download-all": "Tümünü indir",
|
||||
"share.notify.download-all-preparing": "Paylaşım hazırlanıyor. Birkaç dakika içinde tekrar deneyin.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Dosya bağlantısı",
|
||||
"share.table.name": "İsim",
|
||||
"share.table.size": "Boyut",
|
||||
"share.modal.file-preview.error.not-supported.title": "Önizleme desteklenmiyor",
|
||||
"share.modal.file-preview.error.not-supported.description": "Bu dosyanın önizlemesi desteklenmiyor. Lütfen indirin ve öyle inceleyin.",
|
||||
"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": "{shareId} düzenle",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Uygulamanın adı",
|
||||
"admin.config.general.app-url": "Uygulama URL'si",
|
||||
"admin.config.general.app-url.description": "Pingvin Share'in hangi bağlantıda kullanılacağı",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Ana sayfayı göster",
|
||||
"admin.config.general.show-home-page.description": "Ana sayfanın görünürlüğü",
|
||||
"admin.config.general.session-duration": "Oturum Süresi",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"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.placeholder": "Resim seç",
|
||||
"admin.config.email.enable-share-email-recipients": "E-Posta alıcılarını paylaşmayı etkinleştirin",
|
||||
"admin.config.email.enable-share-email-recipients.description": "E-Postaların alıcıları paylaşmasına izin verilip verilmeyeceği. Bunu yalnızca SMTP'yi etkinleştirdiyseniz etkinleştirin.",
|
||||
"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": "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-message": "Paylaşım alıcılarının mesajı",
|
||||
"admin.config.email.share-recipients-message.description": "Paylaşım alıcılarına gönderilecek mesaj. Kullanılabilir değişkenler:\n {creator} - Paylaşımı oluşturan kişinin kullanıcı adı\n {shareUrl} - Paylaşımın URL'si\n {desc} - Paylaşımın açıklaması\n {expires} - Paylaşımın son kullanma tarihi\n Değişkenler gerçek değerle değiştirilecektir.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Tersine paylaşım konusu",
|
||||
"admin.config.email.reverse-share-subject.description": "Birisi sizin ters paylaşım bağlantınızla bir paylaşım oluşturduğunda gönderilen e-postanın 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-message": "Tersine 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.reset-password-subject": "Şifre sıfırlama konusu",
|
||||
"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-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"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.invite-subject": "Davet konusu",
|
||||
"admin.config.email.invite-subject.description": "Yönetici bir kullanıcıyı davet ettiğinde gönderilen e-postanın konusu.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"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 password of the user.",
|
||||
"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": "Kayda izin ver",
|
||||
"admin.config.share.allow-registration.description": "Kaydın izin verilip verilmeyeceği",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Giriş yapmamış kullanıcılara izin ver",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"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.chunk-size": "Yığın boyutu",
|
||||
"admin.config.share.chunk-size.description": "İnternet bağlantınıza göre verimlilik ve güvenilirliği dengelemek için yüklemeleriniz için yığın boyutunu (bayt cinsinden) ayarlayın. Daha küçük parçalar kararsız bağlantılar için başarı oranlarını artırabilirken, daha büyük parçalar kararlı bağlantılar için yüklemeleri hızlandırır.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Paylaşım oluşturma modalini 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.smtp.enabled": "Etkinleştirildi",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"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.host": "Host",
|
||||
"admin.config.smtp.host.description": "SMTP sunucusunun hostu",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "SMTP sunucusunun portu",
|
||||
"admin.config.smtp.email": "E-Posta",
|
||||
"admin.config.smtp.email.description": "E-Postaların hangi adresten gönderileceği",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Kullanıcı Adı",
|
||||
"admin.config.smtp.username.description": "SMTP sunucusunun kullanıcı adı",
|
||||
"admin.config.smtp.password": "Şifre",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth uygulamasının Client Secret'i",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Discord girişine izin verilip verilmeyeceği",
|
||||
"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 limitli 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-client-id": "Discord Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "OpenID girişine izin verilip verilmeyeceği",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Keşfetme URI'si",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth uygulamasının Keşfetme URI'si",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect kullanıcı adı sahiplenme",
|
||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID belirtecinde kullanıcı adı sahiplenme. Bu yapılandırmanın ne olduğunu bilmiyorsanız boş bırakın.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth uygulamasının Client Secret'i",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Bu {0} hesabına bağlı kullanıcı mevcut değil.",
|
||||
"error.msg.no_email": "Bu {0} hesaptan e-posta adresi alınamıyor.",
|
||||
"error.msg.already_linked": "Bu {0} hesabı zaten başka bir hesaba bağlı.",
|
||||
"error.msg.not_linked": "Bu {0} hesabı henüz bir hesaba bağlı değil.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Bu {0} hesabı doğrulanmamış, lütfen doğruladıktan sonra yeniden dene.",
|
||||
"error.msg.user_not_allowed": "Giriş yapmana izin verilmiyor.",
|
||||
"error.msg.cannot_get_user_info": "Bu {0} hesabından kullanıcı bilgilerinizi alamıyorum.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Oluştur",
|
||||
"common.button.done": "Tamam",
|
||||
"common.text.link": "Bağlantı",
|
||||
"common.text.navigate-to-link": "Bağlantıya git",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "ya da",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Geri dön",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Geçersiz E-Posta adresi",
|
||||
"common.error.too-short": "En azından {length} karakter olmalı",
|
||||
"common.error.too-long": "En fazla {length} karakter olmalı",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Tam tamına {length} karakter olmalı",
|
||||
"common.error.invalid-number": "Bir sayı olmalı",
|
||||
"common.error.field-required": "Bu alan gerekli"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "Завантажити",
|
||||
"navbar.signin": "Вхід",
|
||||
"navbar.home": "Головна",
|
||||
"navbar.signup": "Зареєструватися",
|
||||
"navbar.signup": "Реєстрація",
|
||||
"navbar.links.shares": "Мої завантаження",
|
||||
"navbar.links.reverse": "Зворотні завантаження",
|
||||
"navbar.avatar.account": "Мій аккаунт",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "На власному сервері",
|
||||
"home.bullet.a.description": "Pingvin Share працює на вашій машині.",
|
||||
"home.bullet.b.name": "Конфіденційність",
|
||||
"home.bullet.b.description": "Ваші файли - це ваші файли і ніколи не повинні потрапляти до рук третіх осіб.",
|
||||
"home.bullet.b.description": "Ваші файли є вашими, і вони ніколи не будуть доступні третім особам.",
|
||||
"home.bullet.c.name": "Без дратівливого обмеження розміру файлу",
|
||||
"home.bullet.c.description": "Завантажуйте файли з будь-яким розміром. Тільки ваш жорсткий диск буде межею.",
|
||||
"home.bullet.c.description": "Завантажуйте файли будь-якого розміру. Лише жорсткий диск буде вашим обмеженням.",
|
||||
"home.button.start": "Почнемо",
|
||||
"home.button.source": "Вихідний код",
|
||||
// END /
|
||||
@@ -34,7 +34,7 @@ export default {
|
||||
"signIn.notify.totp-required.title": "Потрібна двофакторна аутентифікація",
|
||||
"signIn.notify.totp-required.description": "Будь ласка, введіть код Вашої 2-х факторної аутентифікації",
|
||||
"signIn.oauth.or": "АБО",
|
||||
"signIn.oauth.signInWith": "Sign in with",
|
||||
"signIn.oauth.signInWith": "Увійти з",
|
||||
"signIn.oauth.github": "GitHub",
|
||||
"signIn.oauth.google": "Google",
|
||||
"signIn.oauth.microsoft": "Microsoft",
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Забули пароль?",
|
||||
"resetPassword.description": "Введіть ваш email для відновлення пароля.",
|
||||
"resetPassword.notify.success": "Відправлено повідомлення з посиланням для скидання пароля, якщо email існує.",
|
||||
"resetPassword.notify.success": "Повідомлення з посиланням для скидання пароля було надіслано, якщо вказана електронна пошта існує.",
|
||||
"resetPassword.button.back": "Повернутися на сторінку входу",
|
||||
"resetPassword.text.resetPassword": "Скинути пароль",
|
||||
"resetPassword.text.enterNewPassword": "Введіть новий пароль",
|
||||
"resetPassword.input.password": "Новий пароль",
|
||||
"resetPassword.notify.passwordReset": "Ваш пароль було успішно скинуто!",
|
||||
"resetPassword.notify.passwordReset": "Ваш пароль успішно скинуто.",
|
||||
// /account
|
||||
"account.title": "Мій акаунт",
|
||||
"account.card.info.title": "Інформація про акаунт",
|
||||
@@ -73,9 +73,9 @@ export default {
|
||||
"account.card.password.title": "Пароль",
|
||||
"account.card.password.old": "Старий пароль",
|
||||
"account.card.password.new": "Новий пароль",
|
||||
"account.card.password.noPasswordSet": "У вас не встановлено пароль. Якщо ви хочете увійти за допомогою електронної пошти та пароля, вам необхідно встановити пароль.",
|
||||
"account.card.password.noPasswordSet": "У вас не встановлено пароль. Щоб увійти за допомогою електронної пошти та пароля, потрібно створити пароль.",
|
||||
"account.notify.password.success": "Пароль успішно змінено",
|
||||
"account.card.oauth.title": "Авторизація через соціальні мережі",
|
||||
"account.card.oauth.title": "Вхід через соцмережі",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
"account.card.oauth.google": "Google",
|
||||
"account.card.oauth.microsoft": "Microsoft",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Відключити",
|
||||
"account.card.oauth.unlinked": "Відключено",
|
||||
"account.modal.unlink.title": "Відключити зв'язок з обліковим записом",
|
||||
"account.modal.unlink.description": "Відключення зв'язку з обліковим записом соціальних акаунтів може призвести до втрати вашого облікового запису, якщо ви не пам'ятаєте своє ім'я користувача і пароль.",
|
||||
"account.modal.unlink.description": "Відв'язка ваших соціальних акаунтів може призвести до втрати доступу до акаунту, якщо ви не пам'ятаєте свої облікові дані для входу",
|
||||
"account.notify.oauth.unlinked.success": "Відключення пройшло успішно",
|
||||
"account.card.security.title": "Безпека",
|
||||
"account.card.security.totp.enable.description": "Введіть ваш поточний пароль для початку увімкнення TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Назва",
|
||||
"account.shares.table.description": "Опис",
|
||||
"account.shares.table.visitors": "Відвідувачів",
|
||||
"account.shares.table.expiresAt": "Дійсно до",
|
||||
"account.shares.table.expiresAt": "Діє до",
|
||||
"account.shares.table.createdAt": "Створено",
|
||||
"account.shares.table.size": "Розмір",
|
||||
"account.shares.modal.share-informations": "Відомості",
|
||||
"account.shares.modal.share-link": "Поділитися посиланням",
|
||||
"account.shares.modal.delete.title": "Видалити завантаження {share}",
|
||||
"account.shares.modal.delete.title": "Видалити завантаження: {share}",
|
||||
"account.shares.modal.delete.description": "Ви дійсно хочете видалити це завантаження?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Рік",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Роки (роки)",
|
||||
"account.reverseShares.modal.max-size.label": "Макс. розмір завантаження",
|
||||
"account.reverseShares.modal.send-email": "Надіслати повідомлення електронною поштою",
|
||||
"account.reverseShares.modal.send-email.description": "Надсилати повідомлення електронною поштою, коли завантаження створюється за допомогою цього зворотного посилання.",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.send-email": "Надсилати сповіщення ел. поштою",
|
||||
"account.reverseShares.modal.send-email.description": "Надсилає вам сповіщення на ел. пошту, коли створюється спільний доступ за цим зворотнім посиланням.",
|
||||
"account.reverseShares.modal.simplified": "Простий режим",
|
||||
"account.reverseShares.modal.simplified.description": "Полегште людині, яка завантажує файл, поділитися ним з вами. Вони зможуть лише налаштувати назву та опис спільного доступу.",
|
||||
"account.reverseShares.modal.public-access": "Публічний доступ",
|
||||
"account.reverseShares.modal.public-access.description": "Зробіть процес завантаження файлу легшим для користувача, який буде з вами ділитися. Вони зможуть налаштувати лише назву та опис спільного доступу.",
|
||||
"account.reverseShares.modal.max-use.label": "Максимум використань",
|
||||
"account.reverseShares.modal.max-use.description": "Максимальна кількість разів, коли URL може бути використаний для створення завантаження.",
|
||||
"account.reverseShare.never-expires": "Це зворотне завантаження ніколи не застаріє.",
|
||||
@@ -174,7 +174,7 @@ export default {
|
||||
// /admin
|
||||
"admin.title": "Адміністрування",
|
||||
"admin.button.users": "Управління користувачами",
|
||||
"admin.button.shares": "Share management",
|
||||
"admin.button.shares": "Управління поширенням",
|
||||
"admin.button.config": "Конфігурація",
|
||||
"admin.version": "Версія",
|
||||
// END /admin
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Логін",
|
||||
"admin.users.table.email": "Електронна пошта",
|
||||
"admin.users.table.admin": "Адміністратор",
|
||||
"admin.users.edit.update.title": "Оновити користувача {username}",
|
||||
"admin.users.edit.update.title": "Редагувати користувача: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Права адміністратора",
|
||||
"admin.users.edit.update.change-password.title": "Змінити пароль",
|
||||
"admin.users.edit.update.change-password.field": "Новий пароль",
|
||||
"admin.users.edit.update.change-password.button": "Зберегти новий пароль",
|
||||
"admin.users.edit.update.notify.password.success": "Пароль успішно змінено",
|
||||
"admin.users.edit.delete.title": "Видалити користувача {username}",
|
||||
"admin.users.edit.delete.description": "Ви дійсно хочете видалити цього користувача і всі його завантаження?",
|
||||
"admin.users.edit.delete.title": "Видалити користувача: {username}?",
|
||||
"admin.users.edit.delete.description": "Ви дійсно хочете видалити цього користувача та всі його поширення?",
|
||||
// showCreateUserModal.tsx
|
||||
"admin.users.modal.create.title": "Створити користувача",
|
||||
"admin.users.modal.create.username": "Логін",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "Сталася помилка під час завершення вашого завантаження.",
|
||||
"upload.notify.count-failed": "Не вдалося завантажити файли {count}. Повтор спроби.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Завантажити файли",
|
||||
"upload.dropzone.description": "Перетягніть сюди файли для початку завантаження. Ми можемо приймати тільки файли, які менше {maxSize}.",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "Ваші файли перевищують максимальний розмір у {maxSize}.",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "Назва",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Ви не авторизовані",
|
||||
"upload.modal.not-signed-in-description": "Ви не зможете видалити свої файли вручну і переглянути кількість відвідувачів.",
|
||||
"upload.modal.expires.never": "ніколи",
|
||||
"upload.modal.expires.never-long": "Ніколи не закінчується",
|
||||
"upload.modal.expires.error.too-long": "Термін дії перевищує максимальну дату закінчення терміну дії {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Посилання",
|
||||
"upload.modal.expires.label": "Закінчується",
|
||||
"upload.modal.expires.minute-singular": "Хвилина",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.modal.password.title": "Потрібен пароль",
|
||||
"share.modal.password.description": "Для доступу до цього ресурсу введіть пароль для загального доступу.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Пароль",
|
||||
"share.modal.error.invalid-password": "Невірний пароль",
|
||||
"share.button.download-all": "Завантажити все",
|
||||
"share.notify.download-all-preparing": "Завантаження готується. Повторіть спробу через кілька хвилин.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "Посилання на файл",
|
||||
"share.table.name": "Назва",
|
||||
"share.table.size": "Розмір",
|
||||
"share.modal.file-preview.error.not-supported.title": "Попередній перегляд не підтримується",
|
||||
"share.modal.file-preview.error.not-supported.description": "Попередній перегляд для цього типу файлів не підтримується. Будь ласка, завантажте файл, щоб переглянути його.",
|
||||
"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": "Редагувати {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Видима назва додатка",
|
||||
"admin.config.general.app-url": "URL-адреса програми",
|
||||
"admin.config.general.app-url.description": "Адреса, на якій доступний Pingvin Share",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Показувати домашню сторінку",
|
||||
"admin.config.general.show-home-page.description": "Показувати домашню сторінку чи ні",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Логотип",
|
||||
"admin.config.general.logo.description": "Змініть свій логотип, завантаживши нове зображення. Зображення має бути PNG і повинно мати формат 1:1.",
|
||||
"admin.config.general.logo.placeholder": "Виберіть зображення",
|
||||
"admin.config.email.enable-share-email-recipients": "Увімкнути обмін з одержувачами електронної пошти",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Чи дозволити надсилання листів одержувачам. Увімкніть, тільки якщо ви ввімкнули SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Заголовок листа (завантаження)",
|
||||
"admin.config.email.share-recipients-subject.description": "Тема листа, який надсилається одержувачам акції.",
|
||||
"admin.config.email.share-recipients-message": "Повідомлення листа завантаження",
|
||||
"admin.config.email.share-recipients-message.description": "Повідомлення, яке надсилається одержувачам публікації. Доступні змінні:\n {creator} - Ім'я користувача творця завантаження\n {shareUrl} - URL завантаження\n {desc} - Опис завантаження\n {expires} - Дата закінчення завантаження\n Змінні будуть замінені на фактичне значення.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Заголовок листа (зворотне завантаження)",
|
||||
"admin.config.email.reverse-share-subject.description": "Тема листа, який надсилається, коли хтось створив завантаження з вашим зворотним посиланням.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Повідомлення листа зворотного завантаження",
|
||||
"admin.config.email.reverse-share-message.description": "Повідомлення, яке надсилається, коли хтось створив завантаження з вашим зворотним посиланням. {shareUrl} буде замінено ім'ям творця та URL-адресою загального доступу.",
|
||||
"admin.config.email.reset-password-subject": "Тема скидання пароля",
|
||||
"admin.config.email.reset-password-subject.description": "Тема листа, який надсилається, коли користувач запитує скидання пароля.",
|
||||
"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": "Повідомлення про скидання пароля",
|
||||
"admin.config.email.reset-password-message.description": "Повідомлення, яке надсилається при запиті скидання пароля. {url} буде замінено посиланням.",
|
||||
"admin.config.email.invite-subject": "Тема запрошення",
|
||||
"admin.config.email.invite-subject.description": "Тема листа, який надсилається, коли адміністратор запрошує користувача.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Повідомлення із запрошенням",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "Дозволити реєстрацію",
|
||||
"admin.config.share.allow-registration.description": "Чи дозволена реєстрація",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Дозволити неавторизовані завантаження",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Рівень стиснення Zip",
|
||||
"admin.config.share.zip-compression-level.description": "Регулювання рівня балансу між розміром файлу і швидкістю стиснення. Допустимі значення від 0 до 9, з 0 без стиснення, а 9 - максимальне стиснення. ",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Увімкнено",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "Чи увімкнено SMTP. Встановіть значення true тільки якщо ви ввели хост, порт, email, користувач і пароль вашого SMTP-сервера.",
|
||||
"admin.config.smtp.host": "Хост",
|
||||
"admin.config.smtp.host.description": "Сервер SMTP-сервера",
|
||||
"admin.config.smtp.port": "Порт",
|
||||
"admin.config.smtp.port.description": "Порт SMTP сервера",
|
||||
"admin.config.smtp.email": "Електронна пошта",
|
||||
"admin.config.smtp.email.description": "Адреса електронної пошти, від якої надсилаються листи",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "Логін",
|
||||
"admin.config.smtp.username.description": "Ім'я користувача SMTP-сервера",
|
||||
"admin.config.smtp.password": "Пароль",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Секретний ключ клієнта в додатку Microsoft OAuth",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "Чи увімкнено логін Discord",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "ID обмеженого сервера Discord",
|
||||
"admin.config.oauth.discord-limited-guild.description": "Обмеження входу для користувачів певного сервера. Залиште порожнім, щоб відключити.",
|
||||
"admin.config.oauth.discord-client-id": "ID клієнта Discord",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Чи ввімкнено логін OpenID Connect",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "URI Discovery URI додатка OpenID Connect OAuth",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "Заява на ім'я користувача OpenID Connect",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Заява про ім'я користувача в токені OpenID Connect ID. Залиште порожнім, якщо не знаєте, що це за конфіг.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "Секрет клієнта OpenID Connect",
|
||||
"admin.config.oauth.oidc-client-secret.description": "Клієнтський секрет програми OpenID Connect OAuth",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "Користувач, пов'язаний з обліковим записом {0}, не існує.",
|
||||
"error.msg.no_email": "Не вдається отримати адресу електронної пошти від облікового запису {0}.",
|
||||
"error.msg.already_linked": "Цей обліковий запис {0} уже прив'язано до іншого акаунта.",
|
||||
"error.msg.not_linked": "Цей обліковий запис {0} ще не прив'язаний до жодного акаунту.",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "Цей обліковий запис {0} не підтверджено, повторіть спробу після підтвердження.",
|
||||
"error.msg.user_not_allowed": "У вас немає дозволу на вхід.",
|
||||
"error.msg.cannot_get_user_info": "Не вдається отримати інфу про користувача з цього {0} облікового запису.",
|
||||
"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",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Згенерувати",
|
||||
"common.button.done": "Готово",
|
||||
"common.text.link": "Посилання",
|
||||
"common.text.navigate-to-link": "Перейти до посилання",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "або",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Назад",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Неприпустима адреса електронної пошти",
|
||||
"common.error.too-short": "Повинно бути не менше {length} символів",
|
||||
"common.error.too-long": "Повинно бути не більше {length} символів",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "Повинно бути рівно {length} символів",
|
||||
"common.error.invalid-number": "Повинно бути числом",
|
||||
"common.error.field-required": "Поле обов'язкове для заповнення"
|
||||
|
||||
@@ -3,22 +3,22 @@ export default {
|
||||
"navbar.upload": "Tải lên",
|
||||
"navbar.signin": "Đăng nhập",
|
||||
"navbar.home": "Trang chủ",
|
||||
"navbar.signup": "Đăng kí",
|
||||
"navbar.links.shares": "My shares",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "Chia sẻ của tôi",
|
||||
"navbar.links.reverse": "Reverse shares",
|
||||
"navbar.avatar.account": "Tài khoản",
|
||||
"navbar.avatar.admin": "Administration",
|
||||
"navbar.avatar.admin": "Quản trị viên",
|
||||
"navbar.avatar.signout": "Đăng xuất",
|
||||
// END navbar
|
||||
// /
|
||||
"home.title": "A <h>self-hosted</h> file sharing platform.",
|
||||
"home.title": "Một nền tảng <h>seft-hosted</h> chi sẻ tệp tin.",
|
||||
"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": "Quyền riêng tư",
|
||||
"home.bullet.b.description": "Các tệp thuộc quyền sở hữu của bạn và không được chia sẻ với bên thứ ba.",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "Không có giới hạn dung lượng tệp",
|
||||
"home.bullet.c.description": "Upload as big files as you want. Only your hard drive will be your limit.",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "Bắt đầu",
|
||||
"home.button.source": "Mã nguồn",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "Quên mật khẩu?",
|
||||
"resetPassword.description": "Nhập email để khôi phục mật khẩu.",
|
||||
"resetPassword.notify.success": "Email khôi phục mật khẩu đã được gửi nếu như địa chỉ email này tồn tại.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "Quay lại trang đăng nhập",
|
||||
"resetPassword.text.resetPassword": "Đặt lại mật khẩu",
|
||||
"resetPassword.text.enterNewPassword": "Mật khẩu mới",
|
||||
"resetPassword.input.password": "Mật khẩu mới",
|
||||
"resetPassword.notify.passwordReset": "Mật khẩu đã được thay đổi!",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "Tài khoản",
|
||||
"account.card.info.title": "Thông tin tài khoản",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "Mật khẩu",
|
||||
"account.card.password.old": "Mật khẩu cũ",
|
||||
"account.card.password.new": "Mật khẩu mới",
|
||||
"account.card.password.noPasswordSet": "You don't have a password set. If you want to sign in with email and password you need to set a password.",
|
||||
"account.card.password.noPasswordSet": "You do not have a password set. To sign in using your email and password, you need to create a password.",
|
||||
"account.notify.password.success": "Thay đổi mật khẩu thành công",
|
||||
"account.card.oauth.title": "Đăng nhập bằng mạng xã hội",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "Hủy liên kết",
|
||||
"account.card.oauth.unlinked": "Đã hủy liên kết",
|
||||
"account.modal.unlink.title": "Huỷ liên kết tài khoản",
|
||||
"account.modal.unlink.description": "Unlinking your social accounts may cause you to lose your account if you don't remember your username and password.",
|
||||
"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": "Hủy liên kết thành công",
|
||||
"account.card.security.title": "Bảo mật",
|
||||
"account.card.security.totp.enable.description": "Enter your current password to start enabling TOTP",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "Tên",
|
||||
"account.shares.table.description": "Mô tả",
|
||||
"account.shares.table.visitors": "Lượng truy cập",
|
||||
"account.shares.table.expiresAt": "Hết hạn vào",
|
||||
"account.shares.table.createdAt": "Đã tạo lúc",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "Dung lượng",
|
||||
"account.shares.modal.share-informations": "Share informations",
|
||||
"account.shares.modal.share-link": "Chia sẻ liên kết",
|
||||
"account.shares.modal.delete.title": "Delete share {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "Do you really want to delete this share?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "Năm",
|
||||
"account.reverseShares.modal.expiration.year-plural": "Năm",
|
||||
"account.reverseShares.modal.max-size.label": "Max share size",
|
||||
"account.reverseShares.modal.send-email": "Send email notification",
|
||||
"account.reverseShares.modal.send-email.description": "Send an email notification when a share is created with this reverse share link.",
|
||||
"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": "Chế độ đơn giản",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "Max uses",
|
||||
"account.reverseShares.modal.max-use.description": "The maximum amount of times this URL can be used to create a share.",
|
||||
"account.reverseShare.never-expires": "This reverse share will never expire.",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "Username",
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.admin": "Admin",
|
||||
"admin.users.edit.update.title": "Update user {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "Admin privileges",
|
||||
"admin.users.edit.update.change-password.title": "Đổi mật khẩu",
|
||||
"admin.users.edit.update.change-password.field": "Mật khẩu mới",
|
||||
"admin.users.edit.update.change-password.button": "Đổi mật khẩu",
|
||||
"admin.users.edit.update.notify.password.success": "Thay đổi mật khẩu thành công",
|
||||
"admin.users.edit.delete.title": "Xóa tài khoản {username}",
|
||||
"admin.users.edit.delete.description": "Do you really want to delete this user and all his shares?",
|
||||
"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",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Người tạo",
|
||||
"admin.shares.table.visitors": "Lượng truy cập",
|
||||
"admin.shares.table.expires": "Hết hạn vào",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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": "Tải lên",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "An error occurred while finishing your share.",
|
||||
"upload.notify.count-failed": "{count} files failed to upload. Trying again.",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "Upload files",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We can accept only files that are less than {maxSize} in total.",
|
||||
"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": "Tên",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "Bạn chưa đăng nhập",
|
||||
"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": "Never Expires",
|
||||
"upload.modal.expires.error.too-long": "Expiration exceeds maximum expiration date of {max}.",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "Liên kết",
|
||||
"upload.modal.expires.label": "Thời hạn",
|
||||
"upload.modal.expires.minute-singular": "Phút",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"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": "Cần mật khẩu để mở khoá",
|
||||
"share.modal.password.description": "To access this share please enter the password for the share.",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "Mật khẩu",
|
||||
"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.notify.download-all-preparing": "The share is preparing. Try again in a few minutes.",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "File link",
|
||||
"share.table.name": "Tên",
|
||||
"share.table.size": "Kích thước",
|
||||
"share.modal.file-preview.error.not-supported.title": "Xem trước không được hỗ trợ",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "Edit {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "Name of the application",
|
||||
"admin.config.general.app-url": "URL ứng dụng",
|
||||
"admin.config.general.app-url.description": "On which URL Pingvin Share is available",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "Show home page",
|
||||
"admin.config.general.show-home-page.description": "Whether to show the home page",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"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": "Chọn ảnh",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable share email recipients",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "Share recipients subject",
|
||||
"admin.config.email.share-recipients-subject.description": "Subject of the email which gets sent to the share recipients.",
|
||||
"admin.config.email.share-recipients-message": "Share recipients message",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n The variables will be replaced with the actual value.",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "Reverse share subject",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the email which gets sent when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "Reverse share message",
|
||||
"admin.config.email.reverse-share-message.description": "Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
|
||||
"admin.config.email.reset-password-subject": "Reset password subject",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the email which gets sent when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-subject.description": "Subject of the sent email when a user requests a password reset.",
|
||||
"admin.config.email.reset-password-message": "Reset password message",
|
||||
"admin.config.email.reset-password-message.description": "Message which gets sent when a user requests a password reset. {url} will be replaced with the reset password URL.",
|
||||
"admin.config.email.invite-subject": "Invite subject",
|
||||
"admin.config.email.invite-subject.description": "Subject of the email which gets sent when an admin invites a user.",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "Invite message",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "Cho phép đăng ký",
|
||||
"admin.config.share.allow-registration.description": "Whether registration is allowed",
|
||||
"admin.config.share.allow-unauthenticated-shares": "Allow unauthenticated shares",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Cấp độ nén Zip",
|
||||
"admin.config.share.zip-compression-level.description": "Adjust the level to balance between file size and compression speed. Valid values range from 0 to 9, with 0 being no compression and 9 being maximum compression. ",
|
||||
"admin.config.share.chunk-size": "Kích cỡ mảnh",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "Enabled",
|
||||
"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": "Máy chủ",
|
||||
"admin.config.smtp.host.description": "Host of the SMTP server",
|
||||
"admin.config.smtp.port": "Cổng",
|
||||
"admin.config.smtp.port.description": "Port of the SMTP server",
|
||||
"admin.config.smtp.email": "Email",
|
||||
"admin.config.smtp.email.description": "Email address which the emails get sent from",
|
||||
"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": "Mật khẩu",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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": "Địa chỉ máy chủ LDAP",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "Default user which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"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 haven't linked to any account yet.",
|
||||
"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": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "Generate",
|
||||
"common.button.done": "Done",
|
||||
"common.text.link": "Link",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "hoặc",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "Quay lại",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"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": "Bằng {length} kí tự",
|
||||
"common.error.invalid-number": "Phải là số",
|
||||
"common.error.field-required": "Trường bắt buộc"
|
||||
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "完全自建",
|
||||
"home.bullet.a.description": "轻松使用私有服务器搭建文件共享平台",
|
||||
"home.bullet.b.name": "完全隐私",
|
||||
"home.bullet.b.description": "你的文件只属于你!不要将它放到第三方文件平台",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "完全无限",
|
||||
"home.bullet.c.description": "想上传多大都可以,硬盘容量的大小是唯一的限制",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "开始使用",
|
||||
"home.button.source": "源代码",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "忘记密码?",
|
||||
"resetPassword.description": "请输入电子邮箱地址来接收重置密码邮件",
|
||||
"resetPassword.notify.success": "如果该电子邮箱存在,则已发送一条包含重置密码链接的邮件。",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "返回登录页面",
|
||||
"resetPassword.text.resetPassword": "重置密码",
|
||||
"resetPassword.text.enterNewPassword": "请输入新密码",
|
||||
"resetPassword.input.password": "新密码",
|
||||
"resetPassword.notify.passwordReset": "密码重置成功!",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "我的账户",
|
||||
"account.card.info.title": "账户信息",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "密码",
|
||||
"account.card.password.old": "旧密码",
|
||||
"account.card.password.new": "新密码",
|
||||
"account.card.password.noPasswordSet": "您还未设置密码。如果您想通过邮箱和密码登录,请先设置密码。",
|
||||
"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": "密码更改成功!",
|
||||
"account.card.oauth.title": "社交账号登录",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "解除关联",
|
||||
"account.card.oauth.unlinked": "已解除关联",
|
||||
"account.modal.unlink.title": "解除关联",
|
||||
"account.modal.unlink.description": "如果您不记得您的用户名和密码,解除和社交账号的关联可能会导致丢失账户。",
|
||||
"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": "解除关联成功",
|
||||
"account.card.security.title": "安全",
|
||||
"account.card.security.totp.enable.description": "请输入当前密码开启两步验证",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "共享后缀",
|
||||
"account.shares.table.description": "描述",
|
||||
"account.shares.table.visitors": "已访问",
|
||||
"account.shares.table.expiresAt": "过期时间",
|
||||
"account.shares.table.createdAt": "创建时间",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "文件大小",
|
||||
"account.shares.modal.share-informations": "共享信息",
|
||||
"account.shares.modal.share-link": "共享链接",
|
||||
"account.shares.modal.delete.title": "删除 {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "你真的想删除这个共享吗?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "1 年",
|
||||
"account.reverseShares.modal.expiration.year-plural": "年",
|
||||
"account.reverseShares.modal.max-size.label": "共享文件上限",
|
||||
"account.reverseShares.modal.send-email": "发送邮件提醒",
|
||||
"account.reverseShares.modal.send-email.description": "当这个预留共享链接被用于共享时,发送邮件提醒",
|
||||
"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": "简单模式",
|
||||
"account.reverseShares.modal.simplified.description": "让上传者更轻松地与你共享文件,他们仅能自定义共享的名称和描述。",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "公开访问",
|
||||
"account.reverseShares.modal.public-access.description": "让通过这个预留共享创建共享能被公开访问。如果禁用,将只有您和创建者能够访问。",
|
||||
"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": "最大使用次数",
|
||||
"account.reverseShares.modal.max-use.description": "这个预留共享链接可被用于创建共享的最大使用次数",
|
||||
"account.reverseShare.never-expires": "这个预留共享永不过期",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "用户名",
|
||||
"admin.users.table.email": "电子邮件",
|
||||
"admin.users.table.admin": "管理员",
|
||||
"admin.users.edit.update.title": "更新用户 {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "管理员",
|
||||
"admin.users.edit.update.change-password.title": "更改密码",
|
||||
"admin.users.edit.update.change-password.field": "新密码",
|
||||
"admin.users.edit.update.change-password.button": "保存新密码",
|
||||
"admin.users.edit.update.notify.password.success": "密码更新成功!",
|
||||
"admin.users.edit.delete.title": "删除用户 {username}",
|
||||
"admin.users.edit.delete.description": "你真的想删除这个账户,并删除该用户所有的共享吗?",
|
||||
"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": "创建用户",
|
||||
"admin.users.modal.create.username": "用户名",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "共享 ID",
|
||||
"admin.shares.table.username": "创建者",
|
||||
"admin.shares.table.visitors": "访问者",
|
||||
"admin.shares.table.expires": "过期时间",
|
||||
"admin.shares.edit.delete.title": "删除共享 {id}",
|
||||
"admin.shares.table.expires": "Expires on",
|
||||
"admin.shares.edit.delete.title": "Delete share: {id}",
|
||||
"admin.shares.edit.delete.description": "你真的要删除这个共享吗?",
|
||||
// END /admin/shares
|
||||
// /upload
|
||||
"upload.title": "上传",
|
||||
"upload.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "创建共享的过程中发生了错误",
|
||||
"upload.notify.count-failed": "{count} 文件上传失败,请重试",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "上传文件",
|
||||
"upload.dropzone.description": "拖放至此以上传文件,文件大小不能超过上限 {maxSize}",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "你的文件超过了最大上传限制 {maxSize}",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "文件名",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "当前没有登录",
|
||||
"upload.modal.not-signed-in-description": "你将不能删除你的共享或查看访问次数",
|
||||
"upload.modal.expires.never": "永不",
|
||||
"upload.modal.expires.never-long": "永不过期",
|
||||
"upload.modal.expires.error.too-long": "您设置的过期时间超出了系统上限 {max}。",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "共享链接",
|
||||
"upload.modal.expires.label": "过期时间",
|
||||
"upload.modal.expires.minute-singular": "1 分钟",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "私有共享",
|
||||
"share.error.access-denied.description": "当前账户没有权限访问此共享",
|
||||
"share.modal.password.title": "需要密码",
|
||||
"share.modal.password.description": "请输入密码来访问此共享",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "密码",
|
||||
"share.modal.error.invalid-password": "密码错误",
|
||||
"share.button.download-all": "全部下载",
|
||||
"share.notify.download-all-preparing": "该共享正在处理中,请稍等片刻",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "文件链接",
|
||||
"share.table.name": "文件名",
|
||||
"share.table.size": "文件大小",
|
||||
"share.modal.file-preview.error.not-supported.title": "该文件类型不支持预览",
|
||||
"share.modal.file-preview.error.not-supported.description": "不支持此文件类型的预览,请下载文件查看。",
|
||||
"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": "编辑 {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "自定义 App 的名称",
|
||||
"admin.config.general.app-url": "App 的地址",
|
||||
"admin.config.general.app-url.description": "Pingvin Share 的 URL 地址",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "显示首页",
|
||||
"admin.config.general.show-home-page.description": "是否显示首页",
|
||||
"admin.config.general.session-duration": "会话时长",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "上传你的个性化 Logo,图片必须是长宽比 1:1 的 PNG 格式",
|
||||
"admin.config.general.logo.placeholder": "选择图片",
|
||||
"admin.config.email.enable-share-email-recipients": "开启共享邮件通知",
|
||||
"admin.config.email.enable-share-email-recipients.description": "是否允许通过邮件通知发送共享信息,只有设置了 SMTP 后该选项才有效",
|
||||
"admin.config.email.enable-share-email-recipients": "Enable email recipient sharing",
|
||||
"admin.config.email.enable-share-email-recipients.description": "Whether to allow email sharing with recipients. Only enable this if SMTP is activated.",
|
||||
"admin.config.email.share-recipients-subject": "共享邮件通知主题",
|
||||
"admin.config.email.share-recipients-subject.description": "发送共享邮件通知的邮件主题",
|
||||
"admin.config.email.share-recipients-message": "共享邮件通知内容",
|
||||
"admin.config.email.share-recipients-message.description": "发给接收者的共享邮件通知的具体内容。可选的变量有:\n {creator} - 该共享的创建者\n {shareUrl} - 该共享的链接\n {desc} - 该共享的描述\n {expires} - 该共享的过期时间\n 这些变量会被实际的值所替代",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "预留共享邮件通知主题",
|
||||
"admin.config.email.reverse-share-subject.description": "当有人使用了你的预留共享链接时,发送的预留共享邮件通知主题",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "预留共享邮件通知内容",
|
||||
"admin.config.email.reverse-share-message.description": "当有人使用了你的预留共享链接时,发送的通知内容。{shareUrl} 会被创建者的用户名和共享链接代替",
|
||||
"admin.config.email.reset-password-subject": "重置密码邮件通知主题",
|
||||
"admin.config.email.reset-password-subject.description": "当用户发起重置密码时,发送的重置密码邮件通知主题",
|
||||
"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": "重置密码邮件通知内容",
|
||||
"admin.config.email.reset-password-message.description": "当用户发起重置密码时,重置密码邮件通知内容。{url} 会被重置密码链接代替",
|
||||
"admin.config.email.invite-subject": "邀请邮件通知主题",
|
||||
"admin.config.email.invite-subject.description": "当管理员邀请用户时,发送的邀请邮件通知主题",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "邀请邮件通知内容",
|
||||
"admin.config.email.invite-message.description": "管理员邀请用户时发送的消息。{url} 将被替换为邀请链接,{email} 将被替换为电子邮件,{password} 将被替换为用户的密码。",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the users password.",
|
||||
"admin.config.share.allow-registration": "允许注册",
|
||||
"admin.config.share.allow-registration.description": "是否允许注册",
|
||||
"admin.config.share.allow-unauthenticated-shares": "是否允许未验证的共享",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip 文件压缩质量",
|
||||
"admin.config.share.zip-compression-level.description": "调整压缩质量来平衡压缩文件的大小和压缩的速度。有效值介于 0 和 9 之间,0 为不压缩,9 为最高质量压缩。 ",
|
||||
"admin.config.share.chunk-size": "块大小",
|
||||
"admin.config.share.chunk-size.description": "根据你的互联网连接情况调整上传文件的块大小(以字节为单位),以平衡效率和可靠性。 较小的块有助于提高不稳定网络环境中的上传成功率,而较大的块则可以加快稳定网络环境中的上传速度。",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "自动打开创建共享对话框",
|
||||
"admin.config.share.auto-open-share-modal.description": "每当用户选择完将要被上传的文件后,自动打开创建共享的对话框。",
|
||||
"admin.config.smtp.enabled": "启用",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "是否开启 SMTP,仅当输入主机名、端口、发送邮箱、用户名和密码后开启",
|
||||
"admin.config.smtp.host": "主机名",
|
||||
"admin.config.smtp.host.description": "SMTP 主机名",
|
||||
"admin.config.smtp.port": "端口",
|
||||
"admin.config.smtp.port.description": "SMTP 主机端口",
|
||||
"admin.config.smtp.email": "发送邮箱",
|
||||
"admin.config.smtp.email.description": "发送邮箱地址",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "用户名",
|
||||
"admin.config.smtp.username.description": "SMTP 主机用户名",
|
||||
"admin.config.smtp.password": "密码",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth App 的 Client secret",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "是否启用 Discord 账号登录",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-guild": "Discord 的 limited server ID",
|
||||
"admin.config.oauth.discord-limited-guild.description": "限制特定服务器中的用户登录。留空来禁用。",
|
||||
"admin.config.oauth.discord-client-id": "Discord 的 Client ID",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "是否启用 OpenID Connect 登录",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect 的 Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "OpenID Connect OAuth App 的 Discovery URI",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect 用户名请求",
|
||||
"admin.config.oauth.oidc-username-claim.description": "OpenID Connect ID token 中的用户名请求。如果您不知道这项配置是什么,请留空。",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"admin.config.oauth.oidc-client-secret": "OpenID Connect 的 Client secret",
|
||||
"admin.config.oauth.oidc-client-secret.description": "OpenID Connect OAuth App 的 Client secret",
|
||||
"admin.config.category.ldap": "LDAP",
|
||||
"admin.config.ldap.enabled": "启用 LDAP",
|
||||
"admin.config.ldap.enabled": "Enable LDAP",
|
||||
"admin.config.ldap.enabled.description": "使用 LDAP 身份认证进行用户登录",
|
||||
"admin.config.ldap.url": "Server URL",
|
||||
"admin.config.ldap.url.description": "LDAP 服务器的 URL",
|
||||
"admin.config.ldap.bind-dn": "Bind DN",
|
||||
"admin.config.ldap.bind-dn.description": "默认用户,用于执行用户搜索",
|
||||
"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": "用于用户搜索的密码",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "用户关联的这个 {0} 账户不存在。",
|
||||
"error.msg.no_email": "无法从 {0} 这个账户获取邮箱地址。",
|
||||
"error.msg.already_linked": "{0} 这个账户已经关联到另一个账号。",
|
||||
"error.msg.not_linked": "{0} 这个账户尚未关联到任何账号。",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "{0} 这个账户尚未验证,请在验证后重试。",
|
||||
"error.msg.user_not_allowed": "您无权登录。",
|
||||
"error.msg.cannot_get_user_info": "无法从 {0} 这个账户获取您的用户信息。",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "谷歌",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "生成",
|
||||
"common.button.done": "完成",
|
||||
"common.text.link": "链接",
|
||||
"common.text.navigate-to-link": "访问链接",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "或",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "返回",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "邮件地址不可用",
|
||||
"common.error.too-short": "必须不少于 {length} 个字符",
|
||||
"common.error.too-long": "必须不超过 {length} 个字符",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "必须至多为 {max}",
|
||||
"common.error.exact-length": "必须为 {length} 个字符",
|
||||
"common.error.invalid-number": "必须为数字",
|
||||
"common.error.field-required": "必填项"
|
||||
|
||||
@@ -3,7 +3,7 @@ export default {
|
||||
"navbar.upload": "上傳",
|
||||
"navbar.signin": "登入",
|
||||
"navbar.home": "首頁",
|
||||
"navbar.signup": "註冊",
|
||||
"navbar.signup": "Sign up",
|
||||
"navbar.links.shares": "我的分享",
|
||||
"navbar.links.reverse": "檔案請求",
|
||||
"navbar.avatar.account": "帳號設定",
|
||||
@@ -16,9 +16,9 @@ export default {
|
||||
"home.bullet.a.name": "完全自建",
|
||||
"home.bullet.a.description": "輕松使用私有服務器搭建檔案分享平台",
|
||||
"home.bullet.b.name": "完全隱私",
|
||||
"home.bullet.b.description": "您的檔案只屬於您!不需將它放到第三方檔案平台",
|
||||
"home.bullet.b.description": "Your files are yours and will never be accessed by third parties.",
|
||||
"home.bullet.c.name": "完全無限",
|
||||
"home.bullet.c.description": "想上傳多大都可以,更需要擔心的是您的存儲空間容量",
|
||||
"home.bullet.c.description": "Upload files as big as you want. Only your hard drive will be your limit.",
|
||||
"home.button.start": "開始使用",
|
||||
"home.button.source": "原始碼",
|
||||
// END /
|
||||
@@ -58,12 +58,12 @@ export default {
|
||||
// /auth/reset-password
|
||||
"resetPassword.title": "忘記密碼?",
|
||||
"resetPassword.description": "請輸入Email以讓系統寄送重置密碼郵件",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the email exists.",
|
||||
"resetPassword.notify.success": "A message with a link to reset your password has been sent if the provided email exists.",
|
||||
"resetPassword.button.back": "返回登入頁面",
|
||||
"resetPassword.text.resetPassword": "重置密碼",
|
||||
"resetPassword.text.enterNewPassword": "請輸入新密碼",
|
||||
"resetPassword.input.password": "新密碼",
|
||||
"resetPassword.notify.passwordReset": "密碼更新成功!",
|
||||
"resetPassword.notify.passwordReset": "Your password has been successfully reset.",
|
||||
// /account
|
||||
"account.title": "我的帳號",
|
||||
"account.card.info.title": "帳號資訊",
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
"account.card.password.title": "密碼",
|
||||
"account.card.password.old": "舊密碼",
|
||||
"account.card.password.new": "新密碼",
|
||||
"account.card.password.noPasswordSet": "並未設定密碼,若希望使用E-mail與密碼進行登入則必須要設定密碼。",
|
||||
"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": "密碼更改成功!",
|
||||
"account.card.oauth.title": "第三方登入",
|
||||
"account.card.oauth.github": "GitHub",
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
"account.card.oauth.unlink": "取消聯結",
|
||||
"account.card.oauth.unlinked": "已取消聯結",
|
||||
"account.modal.unlink.title": "取消聯結第三方登入",
|
||||
"account.modal.unlink.description": "若不記得使用者名稱與密碼,取消聯結第三方登入可能會使您無法登入。",
|
||||
"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": "已完成取消聯結",
|
||||
"account.card.security.title": "安控",
|
||||
"account.card.security.totp.enable.description": "請輸入當前密碼開啟兩步驗證",
|
||||
@@ -121,12 +121,12 @@ export default {
|
||||
"account.shares.table.name": "分享代號",
|
||||
"account.shares.table.description": "描述",
|
||||
"account.shares.table.visitors": "造訪次數",
|
||||
"account.shares.table.expiresAt": "過期時間",
|
||||
"account.shares.table.createdAt": "建立時間",
|
||||
"account.shares.table.expiresAt": "Expires on",
|
||||
"account.shares.table.createdAt": "Created on",
|
||||
"account.shares.table.size": "檔案大小",
|
||||
"account.shares.modal.share-informations": "分享資訊",
|
||||
"account.shares.modal.share-link": "分享聯結",
|
||||
"account.shares.modal.delete.title": "刪除 {share}",
|
||||
"account.shares.modal.delete.title": "Delete share: {share}",
|
||||
"account.shares.modal.delete.description": "您真的想刪除這個分享嗎?",
|
||||
// END /account/shares
|
||||
// /account/reverseShares
|
||||
@@ -150,12 +150,12 @@ export default {
|
||||
"account.reverseShares.modal.expiration.year-singular": "年",
|
||||
"account.reverseShares.modal.expiration.year-plural": "年",
|
||||
"account.reverseShares.modal.max-size.label": "上傳大小上限",
|
||||
"account.reverseShares.modal.send-email": "發送Email提醒",
|
||||
"account.reverseShares.modal.send-email.description": "當這個檔案請求聯結被用於分享時,發送Email提醒",
|
||||
"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 be able to customize only the name and description of the share.",
|
||||
"account.reverseShares.modal.simplified.description": "Make it easy for the person uploading the file to share it with you. They will only be able to customize the name and description of the share.",
|
||||
"account.reverseShares.modal.public-access": "Public access",
|
||||
"account.reverseShares.modal.public-access.description": "Make the created shares with this reverse share public. If disabled, only you and the creator of the share can view it.",
|
||||
"account.reverseShares.modal.public-access.description": "Make the shares created with this reverse share public. If disabled, only you and the share creator will have access to view it.",
|
||||
"account.reverseShares.modal.max-use.label": "最大使用次數",
|
||||
"account.reverseShares.modal.max-use.description": "這個檔案請求聯結可被用於建立分享的最大使用次數",
|
||||
"account.reverseShare.never-expires": "這個檔案請求永不過期",
|
||||
@@ -183,14 +183,14 @@ export default {
|
||||
"admin.users.table.username": "使用者名稱",
|
||||
"admin.users.table.email": "Email",
|
||||
"admin.users.table.admin": "管理員",
|
||||
"admin.users.edit.update.title": "更新使用者 {username}",
|
||||
"admin.users.edit.update.title": "Edit user: {username}",
|
||||
"admin.users.edit.update.admin-privileges": "管理員",
|
||||
"admin.users.edit.update.change-password.title": "更改密碼",
|
||||
"admin.users.edit.update.change-password.field": "新密碼",
|
||||
"admin.users.edit.update.change-password.button": "保存新密碼",
|
||||
"admin.users.edit.update.notify.password.success": "密碼更新成功!",
|
||||
"admin.users.edit.delete.title": "刪除使用者 {username}",
|
||||
"admin.users.edit.delete.description": "您真的想刪除這個帳號,並刪除該使用者所有的分享嗎?",
|
||||
"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": "建立使用者",
|
||||
"admin.users.modal.create.username": "使用者名稱",
|
||||
@@ -206,17 +206,20 @@ export default {
|
||||
"admin.shares.table.id": "Share ID",
|
||||
"admin.shares.table.username": "Creator",
|
||||
"admin.shares.table.visitors": "Visitors",
|
||||
"admin.shares.table.expires": "Expires At",
|
||||
"admin.shares.edit.delete.title": "Delete share {id}",
|
||||
"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.notify.confirm-leave": "Are you sure you want to leave this page? Your upload will be canceled.",
|
||||
"upload.notify.generic-error": "建立分享的過程中發生了錯誤",
|
||||
"upload.notify.count-failed": "{count} 檔案上傳失敗,請重試",
|
||||
"upload.reverse-share.error.invalid.title": "Invalid reverse share link",
|
||||
"upload.reverse-share.error.invalid.description": "This reverse share has expired or is invalid.",
|
||||
// Dropzone.tsx
|
||||
"upload.dropzone.title": "上傳檔案",
|
||||
"upload.dropzone.description": "將檔案拖曳至此以上傳,檔案大小不能超過上限 {maxSize}",
|
||||
"upload.dropzone.description": "Drag'n'drop files here to start your share. We only accept files up to {maxSize} in total.",
|
||||
"upload.dropzone.notify.file-too-big": "您的檔案超過了最大上傳限制 {maxSize}",
|
||||
// FileList.tsx
|
||||
"upload.filelist.name": "檔案名稱",
|
||||
@@ -228,8 +231,8 @@ export default {
|
||||
"upload.modal.not-signed-in": "當前沒有登入",
|
||||
"upload.modal.not-signed-in-description": "您將不能刪除您的分享或查看查看次數",
|
||||
"upload.modal.expires.never": "永不",
|
||||
"upload.modal.expires.never-long": "永不過期",
|
||||
"upload.modal.expires.error.too-long": "過期時間超出了系統上限設定 {max}。",
|
||||
"upload.modal.expires.never-long": "Permanent share",
|
||||
"upload.modal.expires.error.too-long": "Expiration date exceeds the maximum of {max}.",
|
||||
"upload.modal.link.label": "分享聯結",
|
||||
"upload.modal.expires.label": "過期時間",
|
||||
"upload.modal.expires.minute-singular": "分鐘",
|
||||
@@ -272,16 +275,16 @@ export default {
|
||||
"share.error.access-denied.title": "Private share",
|
||||
"share.error.access-denied.description": "The current account does not have permission to access this share",
|
||||
"share.modal.password.title": "需要密碼",
|
||||
"share.modal.password.description": "請輸入密碼來查看此分享",
|
||||
"share.modal.password.description": "Please enter the password to acces this share.",
|
||||
"share.modal.password": "密碼",
|
||||
"share.modal.error.invalid-password": "密碼錯誤",
|
||||
"share.button.download-all": "全部下載",
|
||||
"share.notify.download-all-preparing": "正在處理中,請稍等片刻",
|
||||
"share.notify.download-all-preparing": "The share is being prepared. Please try again in a few minutes.",
|
||||
"share.modal.file-link": "檔案聯結",
|
||||
"share.table.name": "檔案名稱",
|
||||
"share.table.size": "檔案大小",
|
||||
"share.modal.file-preview.error.not-supported.title": "該檔案類型不支持預覽",
|
||||
"share.modal.file-preview.error.not-supported.description": "A preview for this file type is unsupported. Please download the file to view it.",
|
||||
"share.modal.file-preview.error.not-supported.description": "Previews are not supported for this type of files. Please download the file to view it.",
|
||||
// END /share/[id]
|
||||
// /share/[id]/edit
|
||||
"share.edit.title": "編輯 {shareId}",
|
||||
@@ -300,6 +303,8 @@ export default {
|
||||
"admin.config.general.app-name.description": "這個 App 的名稱",
|
||||
"admin.config.general.app-url": "App URL",
|
||||
"admin.config.general.app-url.description": "Pingvin Share 的 URL",
|
||||
"admin.config.general.secure-cookies": "Secure cookies",
|
||||
"admin.config.general.secure-cookies.description": "Whether to set the secure flag on cookies. If enabled, the site will not function when accessed over HTTP.",
|
||||
"admin.config.general.show-home-page": "顯示首頁",
|
||||
"admin.config.general.show-home-page.description": "是否顯示首頁",
|
||||
"admin.config.general.session-duration": "Session Duration",
|
||||
@@ -307,24 +312,24 @@ export default {
|
||||
"admin.config.general.logo": "Logo",
|
||||
"admin.config.general.logo.description": "上傳個性化 Logo,圖片必須是長寬比 1:1 的 PNG 格式",
|
||||
"admin.config.general.logo.placeholder": "選擇圖片",
|
||||
"admin.config.email.enable-share-email-recipients": "開啟分享Email通知",
|
||||
"admin.config.email.enable-share-email-recipients.description": "是否允許通過Email通知發送分享資訊,需進行 SMTP 設定後此選項才有效",
|
||||
"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": "分享Email通知主題",
|
||||
"admin.config.email.share-recipients-subject.description": "發送分享Email通知的主題",
|
||||
"admin.config.email.share-recipients-message": "分享Email通知內容",
|
||||
"admin.config.email.share-recipients-message.description": "發送到接收者的分享Email通知具體內容。可使用的參數有:\n {creator} - 分享建立者\n {shareUrl} - 分享聯結\n {desc} - 分享描述\n {expires} - 分享過期時間\n 這些參數會被實際的值所替代",
|
||||
"admin.config.email.share-recipients-message.description": "Message which gets sent to the share recipients. Available variables:\n {creator} - The username of the creator of the share\n {creatorEmail} - The email of the creator of the share\n {shareUrl} - The URL of the share\n {desc} - The description of the share\n {expires} - The expiration date of the share\n These variables will be replaced with the actual value.",
|
||||
"admin.config.email.reverse-share-subject": "檔案請求Email通知主題",
|
||||
"admin.config.email.reverse-share-subject.description": "當有人使用了您的檔案請求聯結時,發送的檔案請求通知主題",
|
||||
"admin.config.email.reverse-share-subject.description": "Subject of the sent email when someone created a share with your reverse share link.",
|
||||
"admin.config.email.reverse-share-message": "檔案請求Email通知內容",
|
||||
"admin.config.email.reverse-share-message.description": "當有人使用了您的檔案請求聯結時,發送的通知內容。{shareUrl} 會被建立者的使用者名稱和分享聯結代替",
|
||||
"admin.config.email.reset-password-subject": "重置密碼Email通知主題",
|
||||
"admin.config.email.reset-password-subject.description": "當使用者發動重置密碼時,發送的重置密碼通知主題",
|
||||
"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": "重置密碼Email通知內容",
|
||||
"admin.config.email.reset-password-message.description": "當使用者發動重置密碼時,重置密碼通知內容。{url} 會被重置密碼聯結代替",
|
||||
"admin.config.email.invite-subject": "邀請Email通知主題",
|
||||
"admin.config.email.invite-subject.description": "當管理員邀請使用者時,發送的邀請通知主題",
|
||||
"admin.config.email.invite-subject.description": "Subject of the sent email when an admin invites a user.",
|
||||
"admin.config.email.invite-message": "邀請Email通知內容",
|
||||
"admin.config.email.invite-message.description": "Message which gets sent when an admin invites a user. {url} will be replaced with the invite URL, {email} with the email and {password} with the password of the user.",
|
||||
"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": "允許註冊",
|
||||
"admin.config.share.allow-registration.description": "是否允許註冊",
|
||||
"admin.config.share.allow-unauthenticated-shares": "是否允許未登入進行分享",
|
||||
@@ -336,17 +341,17 @@ export default {
|
||||
"admin.config.share.zip-compression-level": "Zip 壓縮等級",
|
||||
"admin.config.share.zip-compression-level.description": "調整壓縮等級以平衡檔案大小和壓縮速度。 有效值範圍從 0 到 9,其中 0 表示無壓縮,9 表示最大壓縮",
|
||||
"admin.config.share.chunk-size": "Chunk size",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks speed up uploads for stable connections.",
|
||||
"admin.config.share.chunk-size.description": "Adjust the chunk size (in bytes) for your uploads to balance efficiency and reliability according to your internet connection. Smaller chunks can enhance success rates for unstable connections, while larger chunks make uploads faster for stable connections.",
|
||||
"admin.config.share.auto-open-share-modal": "Auto open create share modal",
|
||||
"admin.config.share.auto-open-share-modal.description": "The share creation modal automatically appears when a user selects files, eliminating the need to manually click the button.",
|
||||
"admin.config.smtp.enabled": "啟用",
|
||||
"admin.config.smtp.enabled": "Enable",
|
||||
"admin.config.smtp.enabled.description": "是否開啟 SMTP,需輸入Host、Port、發送郵箱、使用者名稱和密碼後才有作用",
|
||||
"admin.config.smtp.host": "Host",
|
||||
"admin.config.smtp.host.description": "SMTP Host",
|
||||
"admin.config.smtp.port": "Port",
|
||||
"admin.config.smtp.port.description": "SMTP Port",
|
||||
"admin.config.smtp.email": "發送郵箱",
|
||||
"admin.config.smtp.email.description": "發送郵箱地址",
|
||||
"admin.config.smtp.email.description": "Email address from wich the emails get sent",
|
||||
"admin.config.smtp.username": "使用者名稱",
|
||||
"admin.config.smtp.username.description": "SMTP 主機使用者名稱",
|
||||
"admin.config.smtp.password": "密碼",
|
||||
@@ -382,6 +387,8 @@ export default {
|
||||
"admin.config.oauth.microsoft-client-secret.description": "Microsoft OAuth 的 Client secret",
|
||||
"admin.config.oauth.discord-enabled": "Discord",
|
||||
"admin.config.oauth.discord-enabled.description": "啟用 Discord 登入",
|
||||
"admin.config.oauth.discord-limited-users": "Discord limited users",
|
||||
"admin.config.oauth.discord-limited-users.description": "Limit signing in to specific users by their Discord ID. Leave it blank to disable.",
|
||||
"admin.config.oauth.discord-limited-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",
|
||||
@@ -392,6 +399,8 @@ export default {
|
||||
"admin.config.oauth.oidc-enabled.description": "Whether OpenID Connect login is enabled",
|
||||
"admin.config.oauth.oidc-discovery-uri": "OpenID Connect Discovery URI",
|
||||
"admin.config.oauth.oidc-discovery-uri.description": "Discovery URI of the OpenID Connect OAuth app",
|
||||
"admin.config.oauth.oidc-sign-out": "Sign out from OpenID Connect",
|
||||
"admin.config.oauth.oidc-sign-out.description": "Whether the “Sign out” button will sign out from the OpenID Connect provider",
|
||||
"admin.config.oauth.oidc-username-claim": "OpenID Connect username claim",
|
||||
"admin.config.oauth.oidc-username-claim.description": "Username claim in OpenID Connect ID token. Leave it blank if you don't know what this config is.",
|
||||
"admin.config.oauth.oidc-role-path": "Path to roles in OpenID Connect token",
|
||||
@@ -405,14 +414,14 @@ export default {
|
||||
"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": "Enabled 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 which will be used to execute the user search",
|
||||
"admin.config.ldap.bind-dn.description": "Default user used to perform the user search",
|
||||
"admin.config.ldap.bind-password": "Bind password",
|
||||
"admin.config.ldap.bind-password.description": "Password for the user search user",
|
||||
"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",
|
||||
@@ -437,10 +446,10 @@ export default {
|
||||
"error.msg.no_user": "與此 {0} 帳號關聯的使用者不存在。",
|
||||
"error.msg.no_email": "無法從此 {0} 帳號取得Email地址。",
|
||||
"error.msg.already_linked": "此 {0} 帳號已與另一個帳號關聯。",
|
||||
"error.msg.not_linked": "此 {0} 帳號尚未關聯到任何帳號。",
|
||||
"error.msg.not_linked": "This {0} account hasn't been linked to any account yet.",
|
||||
"error.msg.unverified_account": "This {0} account is unverified, please try again after verification.",
|
||||
"error.msg.user_not_allowed": "You are not allowed to sign in.",
|
||||
"error.msg.cannot_get_user_info": "Can not get your user info from this {0} account.",
|
||||
"error.msg.cannot_get_user_info": "Cannot get your user info from this {0} account.",
|
||||
"error.param.provider_github": "GitHub",
|
||||
"error.param.provider_google": "Google",
|
||||
"error.param.provider_microsoft": "Microsoft",
|
||||
@@ -458,7 +467,7 @@ export default {
|
||||
"common.button.generate": "自動產生",
|
||||
"common.button.done": "完成",
|
||||
"common.text.link": "聯結",
|
||||
"common.text.navigate-to-link": "Go to the link",
|
||||
"common.text.navigate-to-link": "Visit link",
|
||||
"common.text.or": "或",
|
||||
"common.text.redirecting": "Redirecting...",
|
||||
"common.button.go-back": "返回",
|
||||
@@ -470,6 +479,8 @@ export default {
|
||||
"common.error.invalid-email": "Email地址不可用",
|
||||
"common.error.too-short": "必須不少於 {length} 個字元",
|
||||
"common.error.too-long": "必須不超過 {length} 個字元",
|
||||
"common.error.number-too-small": "Must be at least {min}",
|
||||
"common.error.number-too-large": "Must be at most {max}",
|
||||
"common.error.exact-length": "必須為 {length} 個字元",
|
||||
"common.error.invalid-number": "必須為數字",
|
||||
"common.error.field-required": "必填"
|
||||
|
||||
@@ -9,9 +9,10 @@ import { ModalsProvider } from "@mantine/modals";
|
||||
import { Notifications } from "@mantine/notifications";
|
||||
import axios from "axios";
|
||||
import { getCookie, setCookie } from "cookies-next";
|
||||
import moment from "moment";
|
||||
import "moment/min/locales";
|
||||
import { GetServerSidePropsContext } from "next";
|
||||
import type { AppProps } from "next/app";
|
||||
import getConfig from "next/config";
|
||||
import Head from "next/head";
|
||||
import { useRouter } from "next/router";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
@@ -29,8 +30,6 @@ import Config from "../types/config.type";
|
||||
import { CurrentUser } from "../types/user.type";
|
||||
import i18nUtil from "../utils/i18n.util";
|
||||
import userPreferences from "../utils/userPreferences.util";
|
||||
import "moment/min/locales";
|
||||
import moment from "moment";
|
||||
|
||||
const excludeDefaultLayoutRoutes = ["/admin/config/[category]"];
|
||||
|
||||
@@ -154,8 +153,6 @@ function App({ Component, pageProps }: AppProps) {
|
||||
// Fetch user and config variables on server side when the first request is made
|
||||
// These will get passed as a page prop to the App component and stored in the contexts
|
||||
App.getInitialProps = async ({ ctx }: { ctx: GetServerSidePropsContext }) => {
|
||||
const { apiURL } = getConfig().serverRuntimeConfig;
|
||||
|
||||
let pageProps: {
|
||||
user?: CurrentUser;
|
||||
configVariables?: Config[];
|
||||
@@ -169,6 +166,7 @@ App.getInitialProps = async ({ ctx }: { ctx: GetServerSidePropsContext }) => {
|
||||
};
|
||||
|
||||
if (ctx.req) {
|
||||
const apiURL = process.env.API_URL || "http://localhost:8080";
|
||||
const cookieHeader = ctx.req.headers.cookie;
|
||||
|
||||
pageProps.user = await axios(`${apiURL}/api/users/me`, {
|
||||
|
||||
@@ -279,10 +279,7 @@ const Account = () => {
|
||||
) : (
|
||||
<Button
|
||||
component="a"
|
||||
href={getOAuthUrl(
|
||||
config.get("general.appUrl"),
|
||||
provider,
|
||||
)}
|
||||
href={getOAuthUrl(window.location.origin, provider)}
|
||||
>
|
||||
{t("account.card.oauth.link")}
|
||||
</Button>
|
||||
@@ -414,8 +411,10 @@ const Account = () => {
|
||||
},
|
||||
confirmProps: { color: "red" },
|
||||
onConfirm: async () => {
|
||||
await userService.removeCurrentUser();
|
||||
window.location.reload();
|
||||
await userService
|
||||
.removeCurrentUser()
|
||||
.then(window.location.reload)
|
||||
.catch(toast.axiosError);
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -37,8 +37,6 @@ const MyShares = () => {
|
||||
|
||||
const config = useConfig();
|
||||
|
||||
const appUrl = config.get("general.appUrl");
|
||||
|
||||
const [reverseShares, setReverseShares] = useState<MyReverseShare[]>();
|
||||
|
||||
const getReverseShares = () => {
|
||||
@@ -146,7 +144,7 @@ const MyShares = () => {
|
||||
{reverseShare.shares.map((share) => (
|
||||
<Group key={share.id} mb={4}>
|
||||
<Anchor
|
||||
href={`${appUrl}/share/${share.id}`}
|
||||
href={`${window.location.origin}/share/${share.id}`}
|
||||
target="_blank"
|
||||
>
|
||||
<Text maw={120} truncate>
|
||||
@@ -159,14 +157,12 @@ const MyShares = () => {
|
||||
size={25}
|
||||
onClick={() => {
|
||||
if (window.isSecureContext) {
|
||||
clipboard.copy(`${appUrl}/s/${share.id}`);
|
||||
clipboard.copy(
|
||||
`${window.location.origin}/s/${share.id}`,
|
||||
);
|
||||
toast.success(t("common.notify.copied"));
|
||||
} else {
|
||||
showShareLinkModal(
|
||||
modals,
|
||||
share.id,
|
||||
config.get("general.appUrl"),
|
||||
);
|
||||
showShareLinkModal(modals, share.id);
|
||||
}
|
||||
}}
|
||||
>
|
||||
@@ -197,7 +193,7 @@ const MyShares = () => {
|
||||
onClick={() => {
|
||||
if (window.isSecureContext) {
|
||||
clipboard.copy(
|
||||
`${config.get("general.appUrl")}/upload/${
|
||||
`${window.location.origin}/upload/${
|
||||
reverseShare.token
|
||||
}`,
|
||||
);
|
||||
@@ -206,7 +202,6 @@ const MyShares = () => {
|
||||
showReverseShareLinkModal(
|
||||
modals,
|
||||
reverseShare.token,
|
||||
config.get("general.appUrl"),
|
||||
);
|
||||
}
|
||||
}}
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
Button,
|
||||
Center,
|
||||
Group,
|
||||
MediaQuery,
|
||||
Space,
|
||||
Stack,
|
||||
Table,
|
||||
@@ -109,7 +108,6 @@ const MyShares = () => {
|
||||
showShareInformationsModal(
|
||||
modals,
|
||||
share,
|
||||
config.get("general.appUrl"),
|
||||
parseInt(config.get("share.maxSize")),
|
||||
);
|
||||
}}
|
||||
@@ -123,15 +121,11 @@ const MyShares = () => {
|
||||
onClick={() => {
|
||||
if (window.isSecureContext) {
|
||||
clipboard.copy(
|
||||
`${config.get("general.appUrl")}/s/${share.id}`,
|
||||
`${window.location.origin}/s/${share.id}`,
|
||||
);
|
||||
toast.success(t("common.notify.copied"));
|
||||
} else {
|
||||
showShareLinkModal(
|
||||
modals,
|
||||
share.id,
|
||||
config.get("general.appUrl"),
|
||||
);
|
||||
showShareLinkModal(modals, share.id);
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -68,6 +68,8 @@ export default function AppShellDemo() {
|
||||
})
|
||||
.catch(toast.axiosError);
|
||||
void config.refresh();
|
||||
} else {
|
||||
toast.success("No changes to save");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import httpProxyMiddleware from "next-http-proxy-middleware";
|
||||
import getConfig from "next/config";
|
||||
|
||||
export const config = {
|
||||
api: {
|
||||
@@ -9,7 +8,7 @@ export const config = {
|
||||
},
|
||||
};
|
||||
|
||||
const { apiURL } = getConfig().serverRuntimeConfig;
|
||||
const apiURL = process.env.API_URL || "http://localhost:8080";
|
||||
|
||||
// A proxy to the API server only used in development.
|
||||
// In production this route gets overridden by Caddy.
|
||||
|
||||
@@ -2,12 +2,13 @@ import { LoadingOverlay } from "@mantine/core";
|
||||
import { useModals } from "@mantine/modals";
|
||||
import { GetServerSidePropsContext } from "next";
|
||||
import { useEffect, useState } from "react";
|
||||
import Meta from "../../../components/Meta";
|
||||
import showErrorModal from "../../../components/share/showErrorModal";
|
||||
import EditableUpload from "../../../components/upload/EditableUpload";
|
||||
import useConfirmLeave from "../../../hooks/confirm-leave.hook";
|
||||
import useTranslate from "../../../hooks/useTranslate.hook";
|
||||
import shareService from "../../../services/share.service";
|
||||
import { Share as ShareType } from "../../../types/share.type";
|
||||
import useTranslate from "../../../hooks/useTranslate.hook";
|
||||
import EditableUpload from "../../../components/upload/EditableUpload";
|
||||
import Meta from "../../../components/Meta";
|
||||
|
||||
export function getServerSideProps(context: GetServerSidePropsContext) {
|
||||
return {
|
||||
@@ -18,9 +19,15 @@ export function getServerSideProps(context: GetServerSidePropsContext) {
|
||||
const Share = ({ shareId }: { shareId: string }) => {
|
||||
const t = useTranslate();
|
||||
const modals = useModals();
|
||||
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [share, setShare] = useState<ShareType>();
|
||||
|
||||
useConfirmLeave({
|
||||
message: t("upload.notify.confirm-leave"),
|
||||
enabled: isLoading,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
shareService
|
||||
.getFromOwner(shareId)
|
||||
|
||||
@@ -39,6 +39,8 @@ const Share = ({ shareId }: { shareId: string }) => {
|
||||
t("share.error.visitor-limit-exceeded.description"),
|
||||
"go-home",
|
||||
);
|
||||
} else if (error == "share_password_required") {
|
||||
showEnterPasswordModal(modals, getShareToken);
|
||||
} else {
|
||||
toast.axiosError(e);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { useEffect, useState } from "react";
|
||||
import Upload from ".";
|
||||
import showErrorModal from "../../components/share/showErrorModal";
|
||||
import shareService from "../../services/share.service";
|
||||
import useTranslate from "../../hooks/useTranslate.hook";
|
||||
|
||||
export function getServerSideProps(context: GetServerSidePropsContext) {
|
||||
return {
|
||||
@@ -14,6 +15,7 @@ export function getServerSideProps(context: GetServerSidePropsContext) {
|
||||
|
||||
const Share = ({ reverseShareToken }: { reverseShareToken: string }) => {
|
||||
const modals = useModals();
|
||||
const t = useTranslate();
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
|
||||
const [maxShareSize, setMaxShareSize] = useState(0);
|
||||
@@ -30,8 +32,8 @@ const Share = ({ reverseShareToken }: { reverseShareToken: string }) => {
|
||||
.catch(() => {
|
||||
showErrorModal(
|
||||
modals,
|
||||
"Invalid Link",
|
||||
"This link is invalid. Please check your link.",
|
||||
t("upload.reverse-share.error.invalid.title"),
|
||||
t("upload.reverse-share.error.invalid.description"),
|
||||
"go-home",
|
||||
);
|
||||
setIsLoading(false);
|
||||
|
||||
@@ -11,6 +11,7 @@ import FileList from "../../components/upload/FileList";
|
||||
import showCompletedUploadModal from "../../components/upload/modals/showCompletedUploadModal";
|
||||
import showCreateUploadModal from "../../components/upload/modals/showCreateUploadModal";
|
||||
import useConfig from "../../hooks/config.hook";
|
||||
import useConfirmLeave from "../../hooks/confirm-leave.hook";
|
||||
import useTranslate from "../../hooks/useTranslate.hook";
|
||||
import useUser from "../../hooks/user.hook";
|
||||
import shareService from "../../services/share.service";
|
||||
@@ -39,6 +40,11 @@ const Upload = ({
|
||||
const [files, setFiles] = useState<FileUpload[]>([]);
|
||||
const [isUploading, setisUploading] = useState(false);
|
||||
|
||||
useConfirmLeave({
|
||||
message: t("upload.notify.confirm-leave"),
|
||||
enabled: isUploading,
|
||||
});
|
||||
|
||||
const chunkSize = useRef(parseInt(config.get("share.chunkSize")));
|
||||
|
||||
maxShareSize ??= parseInt(config.get("share.maxSize"));
|
||||
@@ -129,12 +135,12 @@ const Upload = ({
|
||||
{
|
||||
isUserSignedIn: user ? true : false,
|
||||
isReverseShare,
|
||||
appUrl: config.get("general.appUrl"),
|
||||
allowUnauthenticatedShares: config.get(
|
||||
"share.allowUnauthenticatedShares",
|
||||
),
|
||||
enableEmailRecepients: config.get("email.enableShareEmailRecipients"),
|
||||
maxExpirationInHours: config.get("share.maxExpiration"),
|
||||
shareIdLength: config.get("share.shareIdLength"),
|
||||
simplified,
|
||||
},
|
||||
files,
|
||||
@@ -183,7 +189,7 @@ const Upload = ({
|
||||
.completeShare(createdShare.id)
|
||||
.then((share) => {
|
||||
setisUploading(false);
|
||||
showCompletedUploadModal(modals, share, config.get("general.appUrl"));
|
||||
showCompletedUploadModal(modals, share);
|
||||
setFiles([]);
|
||||
})
|
||||
.catch(() => toast.error(t("upload.notify.generic-error")));
|
||||
|
||||
@@ -29,8 +29,11 @@ const signUp = async (email: string, username: string, password: string) => {
|
||||
};
|
||||
|
||||
const signOut = async () => {
|
||||
await api.post("/auth/signOut");
|
||||
window.location.reload();
|
||||
const response = await api.post("/auth/signOut");
|
||||
|
||||
if (URL.canParse(response.data?.redirectURI))
|
||||
window.location.href = response.data.redirectURI;
|
||||
else window.location.reload();
|
||||
};
|
||||
|
||||
const refreshAccessToken = async () => {
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pingvin-share",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pingvin-share",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"devDependencies": {
|
||||
"conventional-changelog-cli": "^3.0.0"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pingvin-share",
|
||||
"version": "1.1.3",
|
||||
"version": "1.5.0",
|
||||
"scripts": {
|
||||
"format": "cd frontend && npm run format && cd ../backend && npm run format",
|
||||
"lint": "cd frontend && npm run lint && cd ../backend && npm run lint",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
:3000 {
|
||||
# Reverse proxy for /api
|
||||
reverse_proxy /api/* http://localhost:8080
|
||||
reverse_proxy /api/* http://localhost:{$BACKEND_PORT:8080}
|
||||
|
||||
# Reverse proxy for all other requests
|
||||
reverse_proxy http://localhost:3333
|
||||
reverse_proxy http://localhost:{$PORT:3333}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
:3000 {
|
||||
reverse_proxy /* http://localhost:3333 {
|
||||
reverse_proxy /* http://localhost:{$PORT:3333} {
|
||||
trusted_proxies 0.0.0.0/0
|
||||
}
|
||||
|
||||
reverse_proxy /api/* http://localhost:8080 {
|
||||
reverse_proxy /api/* http://localhost:{$BACKEND_PORT:8080} {
|
||||
trusted_proxies 0.0.0.0/0
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user