mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-24 02:39:18 -05:00
Compare commits
6 Commits
preview-fi
...
preview-pa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41a7b492d6 | ||
|
|
12b428a662 | ||
|
|
8b54dace38 | ||
|
|
01c3cb8b47 | ||
|
|
e995dc4a26 | ||
|
|
96fb5c4988 |
@@ -702,15 +702,6 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "RankWeis",
|
||||
"name": "RankWeis",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/733691?v=4",
|
||||
"profile": "https://github.com/RankWeis",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
8
.github/workflows/cypress.yml
vendored
8
.github/workflows/cypress.yml
vendored
@@ -36,11 +36,3 @@ jobs:
|
||||
# Fix test titles in cypress dashboard
|
||||
COMMIT_INFO_MESSAGE: ${{github.event.pull_request.title}}
|
||||
COMMIT_INFO_SHA: ${{github.event.pull_request.head.sha}}
|
||||
- name: Upload video files
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: cypress-videos
|
||||
path: |
|
||||
cypress/videos
|
||||
cypress/screenshots
|
||||
|
||||
16
README.md
16
README.md
@@ -11,7 +11,7 @@
|
||||
<a href="http://translate.jellyseerr.dev/engage/jellyseerr/"><img src="http://translate.jellyseerr.dev/widget/jellyseerr/jellyseerr-frontend/svg-badge.svg" alt="Translation status" /></a>
|
||||
<a href="https://github.com/fallenbagel/jellyseerr/blob/develop/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/fallenbagel/jellyseerr"></a>
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-77-orange.svg"/></a>
|
||||
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-67-orange.svg"/></a>
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
**Jellyseerr** is a free and open source software application for managing requests for your media library. It integrates with the media server of your choice: [Jellyfin](https://jellyfin.org), [Plex](https://plex.tv), and [Emby](https://emby.media/). In addition, it integrates with your existing services, such as **[Sonarr](https://sonarr.tv/)**, **[Radarr](https://radarr.video/)**.
|
||||
@@ -96,7 +96,7 @@ Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcon
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/CyferShepard"><img src="https://avatars.githubusercontent.com/u/24864904?v=4?s=100" width="100px;" alt="Thegan Govender"/><br /><sub><b>Thegan Govender</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=CyferShepard" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jab416171"><img src="https://avatars.githubusercontent.com/u/345752?v=4?s=100" width="100px;" alt="jab416171"/><br /><sub><b>jab416171</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=jab416171" title="Documentation">📖</a> <a href="https://github.com/fallenbagel/jellyseerr/commits?author=jab416171" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jab416171"><img src="https://avatars.githubusercontent.com/u/345752?v=4?s=100" width="100px;" alt="jab416171"/><br /><sub><b>jab416171</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=jab416171" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://nvds.be"><img src="https://avatars.githubusercontent.com/u/5257222?v=4?s=100" width="100px;" alt="Nicolai Van der Storm"/><br /><sub><b>Nicolai Van der Storm</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=NicolaiVdS" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Smexhy"><img src="https://avatars.githubusercontent.com/u/4880625?v=4?s=100" width="100px;" alt="Smexhy"/><br /><sub><b>Smexhy</b></sub></a><br /><a href="#translation-Smexhy" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dd06-dev.fr"><img src="https://avatars.githubusercontent.com/u/58089504?v=4?s=100" width="100px;" alt="dd060606"/><br /><sub><b>dd060606</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=dd060606" title="Code">💻</a></td>
|
||||
@@ -171,18 +171,6 @@ Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcon
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrewkolda"><img src="https://avatars.githubusercontent.com/u/158614532?v=4?s=100" width="100px;" alt="andrewkolda"/><br /><sub><b>andrewkolda</b></sub></a><br /><a href="#design-andrewkolda" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ishanjain.me"><img src="https://avatars.githubusercontent.com/u/7921368?v=4?s=100" width="100px;" alt="Ishan Jain"/><br /><sub><b>Ishan Jain</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=ishanjain28" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://michaelt.xyz"><img src="https://avatars.githubusercontent.com/u/18223295?v=4?s=100" width="100px;" alt="Michael Thomas"/><br /><sub><b>Michael Thomas</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=michaelhthomas" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://josephrisk.com"><img src="https://avatars.githubusercontent.com/u/18372584?v=4?s=100" width="100px;" alt="Joseph Risk"/><br /><sub><b>Joseph Risk</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=j0srisk" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loetwiek"><img src="https://avatars.githubusercontent.com/u/79059734?v=4?s=100" width="100px;" alt="Loetwiek"/><br /><sub><b>Loetwiek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Loetwiek" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fuochi"><img src="https://avatars.githubusercontent.com/u/4720478?v=4?s=100" width="100px;" alt="Fuochi"/><br /><sub><b>Fuochi</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Fuochi" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/demrich"><img src="https://avatars.githubusercontent.com/u/30092389?v=4?s=100" width="100px;" alt="David Emrich"/><br /><sub><b>David Emrich</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=demrich" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://maxtrier.dk"><img src="https://avatars.githubusercontent.com/u/5898152?v=4?s=100" width="100px;" alt="Max T. Kristiansen"/><br /><sub><b>Max T. Kristiansen</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=maxnatamo" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://damsdev.me"><img src="https://avatars.githubusercontent.com/u/60252259?v=4?s=100" width="100px;" alt="Damien Fajole"/><br /><sub><b>Damien Fajole</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=DamsDev1" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AhmedNSidd"><img src="https://avatars.githubusercontent.com/u/36286128?v=4?s=100" width="100px;" alt="Ahmed Siddiqui"/><br /><sub><b>Ahmed Siddiqui</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=AhmedNSidd" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JackW6809"><img src="https://avatars.githubusercontent.com/u/53652452?v=4?s=100" width="100px;" alt="JackOXI"/><br /><sub><b>JackOXI</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=JackW6809" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://indicus.ro"><img src="https://avatars.githubusercontent.com/u/1199404?v=4?s=100" width="100px;" alt="Stancu Florin"/><br /><sub><b>Stancu Florin</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=StancuFlorin" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RankWeis"><img src="https://avatars.githubusercontent.com/u/733691?v=4?s=100" width="100px;" alt="RankWeis"/><br /><sub><b>RankWeis</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=RankWeis" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -3,8 +3,8 @@ kubeVersion: ">=1.23.0-0"
|
||||
name: jellyseerr-chart
|
||||
description: Jellyseerr helm chart for Kubernetes
|
||||
type: application
|
||||
version: 2.2.0
|
||||
appVersion: "2.4.0"
|
||||
version: 2.1.1
|
||||
appVersion: "2.3.0"
|
||||
maintainers:
|
||||
- name: Jellyseerr
|
||||
url: https://github.com/Fallenbagel/jellyseerr
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# jellyseerr-chart
|
||||
|
||||
  
|
||||
  
|
||||
|
||||
Jellyseerr helm chart for Kubernetes
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ export default defineConfig({
|
||||
projectId: 'xkm1b4',
|
||||
e2e: {
|
||||
baseUrl: 'http://localhost:5055',
|
||||
video: true,
|
||||
experimentalSessionAndOrigin: true,
|
||||
},
|
||||
env: {
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
"partialRequestsEnabled": true,
|
||||
"enableSpecialEpisodes": false,
|
||||
"forceIpv4First": false,
|
||||
"dnsServers": "",
|
||||
"locale": "en"
|
||||
},
|
||||
"plex": {
|
||||
|
||||
@@ -255,8 +255,7 @@ To run jellyseerr as a service:
|
||||
1. Download the [Non-Sucking Service Manager](https://nssm.cc/download)
|
||||
2. Install NSSM:
|
||||
```powershell
|
||||
nssm install Jellyseerr "C:\Program Files\nodejs\node.exe" "C:\jellyseerr\dist\index.js"
|
||||
nssm set Jellyseerr AppDirectory "C:\jellyseerr"
|
||||
nssm install Jellyseerr "C:\Program Files\nodejs\node.exe" ["C:\jellyseerr\dist\index.js"]
|
||||
nssm set Jellyseerr AppEnvironmentExtra NODE_ENV=production
|
||||
```
|
||||
3. Start the service:
|
||||
|
||||
@@ -194,6 +194,9 @@ components:
|
||||
forceIpv4First:
|
||||
type: boolean
|
||||
example: false
|
||||
dnsServers:
|
||||
type: string
|
||||
example: '1.1.1.1'
|
||||
trustProxy:
|
||||
type: boolean
|
||||
example: true
|
||||
@@ -3812,11 +3815,6 @@ paths:
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- in: query
|
||||
name: includeIds
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: A JSON array of all users
|
||||
|
||||
2
next-env.d.ts
vendored
2
next-env.d.ts
vendored
@@ -2,4 +2,4 @@
|
||||
/// <reference types="next/image-types/global" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
|
||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||
|
||||
34
package.json
34
package.json
@@ -32,7 +32,6 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@dr.pogodin/csurf": "^1.14.1",
|
||||
"@formatjs/intl-displaynames": "6.2.6",
|
||||
"@formatjs/intl-locale": "3.1.1",
|
||||
"@formatjs/intl-pluralrules": "5.1.10",
|
||||
@@ -48,15 +47,16 @@
|
||||
"bcrypt": "5.1.0",
|
||||
"bowser": "2.11.0",
|
||||
"connect-typeorm": "1.1.4",
|
||||
"cookie-parser": "1.4.7",
|
||||
"cookie-parser": "1.4.6",
|
||||
"copy-to-clipboard": "3.3.3",
|
||||
"country-flag-icons": "1.5.5",
|
||||
"cronstrue": "2.23.0",
|
||||
"csurf": "1.11.0",
|
||||
"date-fns": "2.29.3",
|
||||
"dayjs": "1.11.7",
|
||||
"email-templates": "12.0.1",
|
||||
"email-templates": "9.0.0",
|
||||
"email-validator": "2.0.4",
|
||||
"express": "4.21.2",
|
||||
"express": "4.18.2",
|
||||
"express-openapi-validator": "4.13.8",
|
||||
"express-rate-limit": "6.7.0",
|
||||
"express-session": "1.17.3",
|
||||
@@ -64,15 +64,15 @@
|
||||
"gravatar-url": "3.1.0",
|
||||
"lodash": "4.17.21",
|
||||
"mime": "3",
|
||||
"next": "^14.2.24",
|
||||
"next": "^14.2.4",
|
||||
"node-cache": "5.1.2",
|
||||
"node-gyp": "9.3.1",
|
||||
"node-schedule": "2.1.1",
|
||||
"nodemailer": "6.10.0",
|
||||
"openpgp": "5.11.2",
|
||||
"nodemailer": "6.9.1",
|
||||
"openpgp": "5.7.0",
|
||||
"pg": "8.11.0",
|
||||
"plex-api": "5.3.2",
|
||||
"pug": "3.0.3",
|
||||
"pug": "3.0.2",
|
||||
"react": "^18.3.1",
|
||||
"react-ace": "10.1.0",
|
||||
"react-animate-height": "2.1.2",
|
||||
@@ -91,14 +91,14 @@
|
||||
"react-use-clipboard": "1.0.9",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"secure-random-password": "0.2.3",
|
||||
"semver": "7.7.1",
|
||||
"semver": "7.3.8",
|
||||
"sharp": "^0.33.4",
|
||||
"sqlite3": "5.1.7",
|
||||
"sqlite3": "5.1.4",
|
||||
"swagger-ui-express": "4.6.2",
|
||||
"swr": "2.2.5",
|
||||
"tailwind-merge": "^2.6.0",
|
||||
"typeorm": "0.3.11",
|
||||
"undici": "^7.3.0",
|
||||
"undici": "^6.20.1",
|
||||
"web-push": "3.5.0",
|
||||
"wink-jaro-distance": "^2.0.0",
|
||||
"winston": "3.8.2",
|
||||
@@ -106,7 +106,7 @@
|
||||
"xml2js": "0.4.23",
|
||||
"yamljs": "0.3.0",
|
||||
"yup": "0.32.11",
|
||||
"zod": "3.24.2"
|
||||
"zod": "3.20.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "17.4.4",
|
||||
@@ -116,8 +116,8 @@
|
||||
"@semantic-release/exec": "6.0.3",
|
||||
"@semantic-release/git": "10.0.1",
|
||||
"@tailwindcss/aspect-ratio": "0.4.2",
|
||||
"@tailwindcss/forms": "0.5.10",
|
||||
"@tailwindcss/typography": "0.5.16",
|
||||
"@tailwindcss/forms": "0.5.3",
|
||||
"@tailwindcss/typography": "0.5.9",
|
||||
"@types/bcrypt": "5.0.0",
|
||||
"@types/cookie-parser": "1.4.3",
|
||||
"@types/country-flag-icons": "1.2.0",
|
||||
@@ -146,7 +146,7 @@
|
||||
"commitizen": "4.3.0",
|
||||
"copyfiles": "2.4.1",
|
||||
"cy-mobile-commands": "0.3.0",
|
||||
"cypress": "14.1.0",
|
||||
"cypress": "12.7.0",
|
||||
"cz-conventional-changelog": "3.3.0",
|
||||
"eslint": "8.35.0",
|
||||
"eslint-config-next": "^14.2.4",
|
||||
@@ -159,8 +159,8 @@
|
||||
"eslint-plugin-react-hooks": "4.6.0",
|
||||
"husky": "8.0.3",
|
||||
"lint-staged": "13.1.2",
|
||||
"nodemon": "3.1.9",
|
||||
"postcss": "8.4.31",
|
||||
"nodemon": "2.0.20",
|
||||
"postcss": "8.4.21",
|
||||
"prettier": "2.8.4",
|
||||
"prettier-plugin-organize-imports": "3.2.2",
|
||||
"prettier-plugin-tailwindcss": "0.2.3",
|
||||
|
||||
2766
pnpm-lock.yaml
generated
2766
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import ExternalAPI from '@server/api/externalapi';
|
||||
import { ApiErrorCode } from '@server/constants/error';
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
import availabilitySync from '@server/lib/availabilitySync';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import logger from '@server/logger';
|
||||
import { ApiError } from '@server/types/error';
|
||||
import { getAppVersion } from '@server/utils/appVersion';
|
||||
@@ -94,22 +92,14 @@ export interface JellyfinLibraryItemExtended extends JellyfinLibraryItem {
|
||||
DateCreated?: string;
|
||||
}
|
||||
|
||||
export interface JellyfinItemsReponse {
|
||||
Items: JellyfinLibraryItemExtended[];
|
||||
TotalRecordCount: number;
|
||||
StartIndex: number;
|
||||
}
|
||||
|
||||
class JellyfinAPI extends ExternalAPI {
|
||||
private userId?: string;
|
||||
private mediaServerType: MediaServerType;
|
||||
|
||||
constructor(
|
||||
jellyfinHost: string,
|
||||
authToken?: string | null,
|
||||
deviceId?: string | null
|
||||
) {
|
||||
const settings = getSettings();
|
||||
let authHeaderVal: string;
|
||||
if (authToken) {
|
||||
authHeaderVal = `MediaBrowser Client="Jellyseerr", Device="Jellyseerr", DeviceId="${deviceId}", Version="${getAppVersion()}", Token="${authToken}"`;
|
||||
@@ -126,8 +116,6 @@ class JellyfinAPI extends ExternalAPI {
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
this.mediaServerType = settings.main.mediaServerType;
|
||||
}
|
||||
|
||||
public async login(
|
||||
@@ -308,15 +296,18 @@ class JellyfinAPI extends ExternalAPI {
|
||||
|
||||
public async getLibraryContents(id: string): Promise<JellyfinLibraryItem[]> {
|
||||
try {
|
||||
const libraryItemsResponse = await this.get<any>(`/Items`, {
|
||||
SortBy: 'SortName',
|
||||
SortOrder: 'Ascending',
|
||||
IncludeItemTypes: 'Series,Movie,Others',
|
||||
Recursive: 'true',
|
||||
StartIndex: '0',
|
||||
ParentId: id,
|
||||
collapseBoxSetItems: 'false',
|
||||
});
|
||||
const libraryItemsResponse = await this.get<any>(
|
||||
`/Users/${this.userId}/Items`,
|
||||
{
|
||||
SortBy: 'SortName',
|
||||
SortOrder: 'Ascending',
|
||||
IncludeItemTypes: 'Series,Movie,Others',
|
||||
Recursive: 'true',
|
||||
StartIndex: '0',
|
||||
ParentId: id,
|
||||
collapseBoxSetItems: 'false',
|
||||
}
|
||||
);
|
||||
|
||||
return libraryItemsResponse.Items.filter(
|
||||
(item: JellyfinLibraryItem) => item.LocationType !== 'Virtual'
|
||||
@@ -333,22 +324,13 @@ class JellyfinAPI extends ExternalAPI {
|
||||
|
||||
public async getRecentlyAdded(id: string): Promise<JellyfinLibraryItem[]> {
|
||||
try {
|
||||
const endpoint =
|
||||
this.mediaServerType === MediaServerType.JELLYFIN
|
||||
? `/Items/Latest`
|
||||
: `/Users/${this.userId}/Items/Latest`;
|
||||
|
||||
const baseParams = {
|
||||
Limit: '12',
|
||||
ParentId: id,
|
||||
};
|
||||
|
||||
const params =
|
||||
this.mediaServerType === MediaServerType.JELLYFIN
|
||||
? { ...baseParams, userId: this.userId ?? `Me` }
|
||||
: baseParams;
|
||||
|
||||
const itemResponse = await this.get<any>(endpoint, params);
|
||||
const itemResponse = await this.get<any>(
|
||||
`/Users/${this.userId}/Items/Latest`,
|
||||
{
|
||||
Limit: '12',
|
||||
ParentId: id,
|
||||
}
|
||||
);
|
||||
|
||||
return itemResponse;
|
||||
} catch (e) {
|
||||
@@ -365,12 +347,11 @@ class JellyfinAPI extends ExternalAPI {
|
||||
id: string
|
||||
): Promise<JellyfinLibraryItemExtended | undefined> {
|
||||
try {
|
||||
const itemResponse = await this.get<JellyfinItemsReponse>(`/Items`, {
|
||||
ids: id,
|
||||
fields: 'ProviderIds,MediaSources,Width,Height,IsHD,DateCreated',
|
||||
});
|
||||
const itemResponse = await this.get<any>(
|
||||
`/Users/${this.userId}/Items/${id}`
|
||||
);
|
||||
|
||||
return itemResponse.Items?.[0];
|
||||
return itemResponse;
|
||||
} catch (e) {
|
||||
if (availabilitySync.running) {
|
||||
if (e.cause?.status === 500) {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import csurf from '@dr.pogodin/csurf';
|
||||
import PlexAPI from '@server/api/plexapi';
|
||||
import dataSource, { getRepository, isPgsql } from '@server/datasource';
|
||||
import DiscoverSlider from '@server/entity/DiscoverSlider';
|
||||
@@ -29,6 +28,7 @@ import restartFlag from '@server/utils/restartFlag';
|
||||
import { getClientIp } from '@supercharge/request-ip';
|
||||
import { TypeormStore } from 'connect-typeorm/out';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import csurf from 'csurf';
|
||||
import type { NextFunction, Request, Response } from 'express';
|
||||
import express from 'express';
|
||||
import * as OpenApiValidator from 'express-openapi-validator';
|
||||
@@ -83,6 +83,12 @@ app
|
||||
net.setDefaultAutoSelectFamily(false);
|
||||
}
|
||||
|
||||
if (settings.network.dnsServers.trim() !== '') {
|
||||
dns.setServers(
|
||||
settings.network.dnsServers.split(',').map((server) => server.trim())
|
||||
);
|
||||
}
|
||||
|
||||
// Register HTTP proxy
|
||||
if (settings.network.proxy.enabled) {
|
||||
await createCustomProxyAgent(settings.network.proxy);
|
||||
|
||||
@@ -50,7 +50,6 @@ class PreparedEmail extends Email {
|
||||
},
|
||||
send: true,
|
||||
transport: transport,
|
||||
preview: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ export interface MainSettings {
|
||||
export interface NetworkSettings {
|
||||
csrfProtection: boolean;
|
||||
forceIpv4First: boolean;
|
||||
dnsServers: string;
|
||||
trustProxy: boolean;
|
||||
proxy: ProxySettings;
|
||||
}
|
||||
@@ -509,6 +510,7 @@ class Settings {
|
||||
csrfProtection: false,
|
||||
trustProxy: false,
|
||||
forceIpv4First: false,
|
||||
dnsServers: '',
|
||||
proxy: {
|
||||
enabled: false,
|
||||
hostname: '',
|
||||
|
||||
@@ -10,6 +10,7 @@ const migrateNetworkSettings = (settings: any): AllSettings => {
|
||||
csrfProtection: settings.main.csrfProtection ?? false,
|
||||
trustProxy: settings.main.trustProxy ?? false,
|
||||
forceIpv4First: settings.main.forceIpv4First ?? false,
|
||||
dnsServers: settings.main.dnsServers ?? '',
|
||||
proxy: settings.main.proxy ?? {
|
||||
enabled: false,
|
||||
hostname: '',
|
||||
@@ -24,6 +25,7 @@ const migrateNetworkSettings = (settings: any): AllSettings => {
|
||||
delete settings.main.csrfProtection;
|
||||
delete settings.main.trustProxy;
|
||||
delete settings.main.forceIpv4First;
|
||||
delete settings.main.dnsServers;
|
||||
delete settings.main.proxy;
|
||||
return newSettings;
|
||||
};
|
||||
|
||||
@@ -352,7 +352,7 @@ settingsRoutes.get('/jellyfin/library', async (req, res, next) => {
|
||||
const account = await jellyfinClient.getUser();
|
||||
|
||||
// Automatic Library grouping is not supported when user views are used to get library
|
||||
if (account.Configuration.GroupedFolders?.length > 0) {
|
||||
if (account.Configuration.GroupedFolders.length > 0) {
|
||||
return next({
|
||||
status: 501,
|
||||
message: ApiErrorCode.SyncErrorGroupedFolders,
|
||||
|
||||
@@ -32,14 +32,7 @@ const router = Router();
|
||||
|
||||
router.get('/', async (req, res, next) => {
|
||||
try {
|
||||
const includeIds = [
|
||||
...new Set(
|
||||
req.query.includeIds ? req.query.includeIds.toString().split(',') : []
|
||||
),
|
||||
];
|
||||
const pageSize = req.query.take
|
||||
? Number(req.query.take)
|
||||
: Math.max(10, includeIds.length);
|
||||
const pageSize = req.query.take ? Number(req.query.take) : 10;
|
||||
const skip = req.query.skip ? Number(req.query.skip) : 0;
|
||||
const q = req.query.q ? req.query.q.toString().toLowerCase() : '';
|
||||
let query = getRepository(User).createQueryBuilder('user');
|
||||
@@ -51,33 +44,27 @@ router.get('/', async (req, res, next) => {
|
||||
);
|
||||
}
|
||||
|
||||
if (includeIds.length > 0) {
|
||||
query.andWhereInIds(includeIds);
|
||||
}
|
||||
|
||||
switch (req.query.sort) {
|
||||
case 'updated':
|
||||
query = query.orderBy('user.updatedAt', 'DESC');
|
||||
break;
|
||||
case 'displayname':
|
||||
query = query
|
||||
.addSelect(
|
||||
`CASE WHEN (user.username IS NULL OR user.username = '') THEN (
|
||||
CASE WHEN (user.plexUsername IS NULL OR user.plexUsername = '') THEN (
|
||||
CASE WHEN (user.jellyfinUsername IS NULL OR user.jellyfinUsername = '') THEN
|
||||
"user"."email"
|
||||
ELSE
|
||||
LOWER(user.jellyfinUsername)
|
||||
END)
|
||||
ELSE
|
||||
LOWER(user.jellyfinUsername)
|
||||
END)
|
||||
ELSE
|
||||
LOWER(user.username)
|
||||
END`,
|
||||
'displayname_sort_key'
|
||||
)
|
||||
.orderBy('displayname_sort_key', 'ASC');
|
||||
query = query.orderBy(
|
||||
`CASE WHEN (user.username IS NULL OR user.username = '') THEN (
|
||||
CASE WHEN (user.plexUsername IS NULL OR user.plexUsername = '') THEN (
|
||||
CASE WHEN (user.jellyfinUsername IS NULL OR user.jellyfinUsername = '') THEN
|
||||
"user"."email"
|
||||
ELSE
|
||||
LOWER(user.jellyfinUsername)
|
||||
END)
|
||||
ELSE
|
||||
LOWER(user.jellyfinUsername)
|
||||
END)
|
||||
ELSE
|
||||
LOWER(user.username)
|
||||
END`,
|
||||
'ASC'
|
||||
);
|
||||
break;
|
||||
case 'requests':
|
||||
query = query
|
||||
@@ -97,7 +84,6 @@ router.get('/', async (req, res, next) => {
|
||||
const [users, userCount] = await query
|
||||
.take(pageSize)
|
||||
.skip(skip)
|
||||
.distinct(true)
|
||||
.getManyAndCount();
|
||||
|
||||
return res.status(200).json({
|
||||
|
||||
4
server/types/custom.d.ts
vendored
4
server/types/custom.d.ts
vendored
@@ -1,4 +0,0 @@
|
||||
declare module '@dr.pogodin/csurf' {
|
||||
import csrf = require('csurf');
|
||||
export = csrf;
|
||||
}
|
||||
@@ -8,9 +8,8 @@ export default async function createCustomProxyAgent(
|
||||
) {
|
||||
const defaultAgent = new Agent({ keepAliveTimeout: 5000 });
|
||||
|
||||
const skipUrl = (url: string | URL) => {
|
||||
const hostname =
|
||||
typeof url === 'string' ? new URL(url).hostname : url.hostname;
|
||||
const skipUrl = (url: string) => {
|
||||
const hostname = new URL(url).hostname;
|
||||
|
||||
if (proxySettings.bypassLocalAddresses && isLocalAddress(hostname)) {
|
||||
return true;
|
||||
@@ -39,7 +38,8 @@ export default async function createCustomProxyAgent(
|
||||
dispatch: Dispatcher['dispatch']
|
||||
): Dispatcher['dispatch'] => {
|
||||
return (opts, handler) => {
|
||||
return opts.origin && skipUrl(opts.origin)
|
||||
const url = opts.origin?.toString();
|
||||
return url && skipUrl(url)
|
||||
? defaultAgent.dispatch(opts, handler)
|
||||
: dispatch(opts, handler);
|
||||
};
|
||||
@@ -60,10 +60,13 @@ export default async function createCustomProxyAgent(
|
||||
':' +
|
||||
proxySettings.port,
|
||||
token,
|
||||
interceptors: {
|
||||
Client: [noProxyInterceptor],
|
||||
},
|
||||
keepAliveTimeout: 5000,
|
||||
});
|
||||
|
||||
setGlobalDispatcher(proxyAgent.compose(noProxyInterceptor));
|
||||
setGlobalDispatcher(proxyAgent);
|
||||
} catch (e) {
|
||||
logger.error('Failed to connect to the proxy: ' + e.message, {
|
||||
label: 'Proxy',
|
||||
@@ -92,11 +95,7 @@ export default async function createCustomProxyAgent(
|
||||
}
|
||||
|
||||
function isLocalAddress(hostname: string) {
|
||||
if (
|
||||
hostname === 'localhost' ||
|
||||
hostname === '127.0.0.1' ||
|
||||
hostname === '::1'
|
||||
) {
|
||||
if (hostname === 'localhost' || hostname === '127.0.0.1') {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,8 @@ class RestartFlag {
|
||||
this.networkSettings.csrfProtection !== networkSettings.csrfProtection ||
|
||||
this.networkSettings.trustProxy !== networkSettings.trustProxy ||
|
||||
this.networkSettings.proxy.enabled !== networkSettings.proxy.enabled ||
|
||||
this.networkSettings.forceIpv4First !== networkSettings.forceIpv4First
|
||||
this.networkSettings.forceIpv4First !== networkSettings.forceIpv4First ||
|
||||
this.networkSettings.dnsServers !== networkSettings.dnsServers
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -590,7 +590,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
buttonSize={'md'}
|
||||
onClick={() => setShowBlacklistModal(true)}
|
||||
>
|
||||
<EyeSlashIcon />
|
||||
<EyeSlashIcon className={'h-3'} />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
)}
|
||||
@@ -608,9 +608,9 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
onClick={onClickWatchlistBtn}
|
||||
>
|
||||
{isUpdating ? (
|
||||
<Spinner />
|
||||
<Spinner className="h-3" />
|
||||
) : (
|
||||
<StarIcon className={'text-amber-300'} />
|
||||
<StarIcon className={'h-3 text-amber-300'} />
|
||||
)}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
@@ -623,7 +623,11 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
buttonSize={'md'}
|
||||
onClick={onClickDeleteWatchlistBtn}
|
||||
>
|
||||
{isUpdating ? <Spinner /> : <MinusCircleIcon />}
|
||||
{isUpdating ? (
|
||||
<Spinner className="h-3" />
|
||||
) : (
|
||||
<MinusCircleIcon className={'h-3'} />
|
||||
)}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
)}
|
||||
|
||||
@@ -578,10 +578,7 @@ export const UserSelector = ({
|
||||
|
||||
const users = defaultValue.split(',');
|
||||
|
||||
const res = await fetch(
|
||||
`/api/v1/user?includeIds=${encodeURIComponent(defaultValue)}`
|
||||
);
|
||||
|
||||
const res = await fetch(`/api/v1/user`);
|
||||
if (!res.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
|
||||
@@ -127,18 +127,18 @@ const OverrideRuleTiles = ({
|
||||
})
|
||||
);
|
||||
setKeywords(keywords);
|
||||
const allUsersFromRules = rules
|
||||
.map((rule) => rule.users)
|
||||
.filter((users) => users)
|
||||
.join(',');
|
||||
if (allUsersFromRules) {
|
||||
const res = await fetch(
|
||||
`/api/v1/user?includeIds=${encodeURIComponent(allUsersFromRules)}`
|
||||
);
|
||||
if (!res.ok) throw new Error();
|
||||
const users: User[] = (await res.json()).results;
|
||||
setUsers(users);
|
||||
}
|
||||
const users = await Promise.all(
|
||||
rules
|
||||
.map((rule) => rule.users?.split(','))
|
||||
.flat()
|
||||
.filter((userId) => userId)
|
||||
.map(async (userId) => {
|
||||
const res = await fetch(`/api/v1/user/${userId}`);
|
||||
if (!res.ok) throw new Error();
|
||||
const user: User = await res.json();
|
||||
return user;
|
||||
})
|
||||
);
|
||||
setUsers(users);
|
||||
})();
|
||||
}, [rules]);
|
||||
|
||||
@@ -45,6 +45,9 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
|
||||
forceIpv4First: 'Force IPv4 Resolution First',
|
||||
forceIpv4FirstTip:
|
||||
'Force Jellyseerr to resolve IPv4 addresses first instead of IPv6',
|
||||
dnsServers: 'Custom DNS Servers',
|
||||
dnsServersTip:
|
||||
'Comma-separated list of custom DNS servers, e.g. "1.1.1.1,[2606:4700:4700::1111]"',
|
||||
});
|
||||
|
||||
const SettingsNetwork = () => {
|
||||
@@ -90,6 +93,7 @@ const SettingsNetwork = () => {
|
||||
initialValues={{
|
||||
csrfProtection: data?.csrfProtection,
|
||||
forceIpv4First: data?.forceIpv4First,
|
||||
dnsServers: data?.dnsServers,
|
||||
trustProxy: data?.trustProxy,
|
||||
proxyEnabled: data?.proxy?.enabled,
|
||||
proxyHostname: data?.proxy?.hostname,
|
||||
@@ -112,6 +116,7 @@ const SettingsNetwork = () => {
|
||||
body: JSON.stringify({
|
||||
csrfProtection: values.csrfProtection,
|
||||
forceIpv4First: values.forceIpv4First,
|
||||
dnsServers: values.dnsServers,
|
||||
trustProxy: values.trustProxy,
|
||||
proxy: {
|
||||
enabled: values.proxyEnabled,
|
||||
@@ -421,6 +426,34 @@ const SettingsNetwork = () => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="dnsServers" className="checkbox-label">
|
||||
<span className="mr-2">
|
||||
{intl.formatMessage(messages.dnsServers)}
|
||||
</span>
|
||||
<SettingsBadge badgeType="advanced" className="mr-2" />
|
||||
<SettingsBadge badgeType="restartRequired" />
|
||||
<SettingsBadge badgeType="experimental" />
|
||||
<span className="label-tip">
|
||||
{intl.formatMessage(messages.dnsServersTip)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
id="dnsServers"
|
||||
name="dnsServers"
|
||||
type="text"
|
||||
inputMode="url"
|
||||
/>
|
||||
</div>
|
||||
{errors.dnsServers &&
|
||||
touched.dnsServers &&
|
||||
typeof errors.dnsServers === 'string' && (
|
||||
<div className="error">{errors.dnsServers}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="actions">
|
||||
<div className="flex justify-end">
|
||||
<span className="ml-3 inline-flex rounded-md shadow-sm">
|
||||
|
||||
@@ -528,7 +528,6 @@ const SettingsServices = () => {
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<Button
|
||||
buttonType="ghost"
|
||||
disabled={!radarrData?.length && !sonarrData?.length}
|
||||
onClick={() =>
|
||||
setOverrideRuleModal({
|
||||
open: true,
|
||||
|
||||
@@ -632,7 +632,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
|
||||
buttonSize={'md'}
|
||||
onClick={() => setShowBlacklistModal(true)}
|
||||
>
|
||||
<EyeSlashIcon />
|
||||
<EyeSlashIcon className={'h-3'} />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
)}
|
||||
@@ -650,9 +650,9 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
|
||||
onClick={onClickWatchlistBtn}
|
||||
>
|
||||
{isUpdating ? (
|
||||
<Spinner />
|
||||
<Spinner className="h-3" />
|
||||
) : (
|
||||
<StarIcon className={'text-amber-300'} />
|
||||
<StarIcon className={'h-3 text-amber-300'} />
|
||||
)}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
@@ -665,7 +665,11 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
|
||||
buttonSize={'md'}
|
||||
onClick={onClickDeleteWatchlistBtn}
|
||||
>
|
||||
{isUpdating ? <Spinner /> : <MinusCircleIcon />}
|
||||
{isUpdating ? (
|
||||
<Spinner className="h-3" />
|
||||
) : (
|
||||
<MinusCircleIcon className={'h-3'} />
|
||||
)}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
)}
|
||||
|
||||
@@ -781,7 +781,7 @@
|
||||
"components.Settings.externalUrl": "Externí adresa URL",
|
||||
"components.Settings.hostname": "Název hostitele nebo IP adresa",
|
||||
"components.Settings.manualscan": "Manuální skenování knihovny",
|
||||
"components.Settings.plexlibrariesDescription": "Knihovny ve kterých Jellyseerr vyhledává tituly. Nastavte a uložte nastavení připojení k Plex serveru a poté klikněte na tlačítko níže, pokud nejsou v seznamu uvedeny žádné knihovny.",
|
||||
"components.Settings.plexlibrariesDescription": "Knihovny Jellyseerr vyhledává tituly. Nastavte a uložte nastavení připojení k systému Plex a poté klikněte na tlačítko níže, pokud nejsou v seznamu uvedeny žádné knihovny.",
|
||||
"components.Settings.serverpresetLoad": "Stisknutím tlačítka načtete dostupné servery",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Při ukládání nastavení Tautulli se něco pokazilo.",
|
||||
"components.Settings.webAppUrl": "<WebAppLink>Webová aplikace</WebAppLink> Adresa URL",
|
||||
@@ -795,7 +795,7 @@
|
||||
"components.UserList.deleteconfirm": "Opravdu chcete tohoto uživatele odstranit? Všechny údaje o jeho žádosti budou trvale odstraněny.",
|
||||
"components.UserList.localLoginDisabled": "Nastavení <strong>Povolit místní přihlášení</strong> je v současné době zakázáno.",
|
||||
"components.UserList.userssaved": "Uživatelská oprávnění byla úspěšně uložena!",
|
||||
"components.UserList.validationEmail": "Emailová adresa je povinná",
|
||||
"components.UserList.validationEmail": "Musíte zadat platnou e-mailovou adresu",
|
||||
"components.UserProfile.ProfileHeader.userid": "ID uživatele: {userid}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Limit požadavků na filmy",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Limit požadavků na sérii",
|
||||
@@ -831,7 +831,7 @@
|
||||
"components.Settings.noDefault4kServer": "Server 4K {serverType} musí být označen jako výchozí, aby uživatelé mohli odesílat požadavky 4K {mediaType}.",
|
||||
"components.Settings.noDefaultNon4kServer": "Pokud máte pouze jeden server {serverType} pro obsah jiný než 4K i 4K (nebo pokud stahujete pouze obsah 4K), váš server {serverType} by <strong>neměl</strong> být označen jako server 4K.",
|
||||
"components.Settings.noDefaultServer": "Aby mohly být zpracovány požadavky typu {mediaType}, musí být alespoň jeden server typu {serverType} označen jako výchozí.",
|
||||
"components.Settings.plexsettingsDescription": "Nastavte připojení k Plex serveru. Jellyseerr prohledá knihovny Plex serveru aby zjistil dostupnost obsahu.",
|
||||
"components.Settings.plexsettingsDescription": "Knihovny Jellyseerr vyhledává tituly. Nastavte a uložte nastavení připojení k systému Plex a poté klikněte na tlačítko níže, pokud nejsou v seznamu uvedeny žádné knihovny.",
|
||||
"components.Settings.toastPlexRefresh": "Získání seznamu serverů z aplikace Plex…",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Seznam serverů Plex úspěšně načten!",
|
||||
"components.UserList.passwordinfodescription": "Nakonfigurujte adresu URL aplikace a povolte e-mailová oznámení, která umožní automatické generování hesla.",
|
||||
@@ -1023,7 +1023,7 @@
|
||||
"components.PermissionEdit.autorequestMovies": "Automatické vyžádání filmů",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Udělte oprávnění k automatickému odesílání žádostí o filmy v jiném rozlišení než 4K prostřednictvím Plex Watchlistu.",
|
||||
"components.PermissionEdit.viewrecentDescription": "Udělte oprávnění k zobrazení seznamu nedávno přidaných médií.",
|
||||
"components.Settings.restartrequiredTooltip": "Aby se projevily změny tohoto nastavení, musí být Jellyseerr restartován",
|
||||
"components.Settings.restartrequiredTooltip": "Aby se změny tohoto nastavení projevily, musí být Overserr restartován",
|
||||
"components.StatusChecker.reloadApp": "Znovu načíst {applicationTitle}",
|
||||
"components.TitleCard.cleardata": "Vyčistit data",
|
||||
"components.TitleCard.mediaerror": "{mediaType} Nenalezeno",
|
||||
@@ -1231,165 +1231,5 @@
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Typ anime série",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Výchozí zařízení",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Výchozí zařízení",
|
||||
"components.Settings.SonarrModal.seriesType": "Typ série",
|
||||
"components.Login.servertype": "Typ serveru",
|
||||
"components.Login.validationEmailFormat": "Neplatný email",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "Základ URL adresy musí obsahovat lomítko",
|
||||
"components.Login.validationEmailRequired": "Musíte poskytnout email",
|
||||
"components.Login.validationPortRequired": "Musíte poskytnout platné číslo portu",
|
||||
"components.Login.back": "Vrátit se",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "Základ URL adresy nesmí končit lomítkem",
|
||||
"components.Setup.back": "Vrátit se",
|
||||
"components.Login.validationusernamerequired": "Uživatelské jméno je povinné",
|
||||
"components.Setup.configemby": "Nastavit Emby",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Udělit oprávnění přidávat média na černou listinu.",
|
||||
"components.Login.signinwithjellyfin": "Použít Váš {mediaServerName} účet",
|
||||
"components.Settings.Notifications.userEmailRequired": "Vyžadovat email uživatelů",
|
||||
"components.TitleCard.addToWatchList": "Přidat na seznam sledování",
|
||||
"components.TvDetails.removefromwatchlist": "Odstranit ze seznamu sledování",
|
||||
"components.Login.credentialerror": "Nesprávné uživatelské jméno nebo heslo.",
|
||||
"components.Setup.servertype": "Zvolte typ serveru",
|
||||
"components.Settings.manualscanDescriptionJellyfin": "Obvykle se provádí pouze jednou za 24 hodin. Jellyseerr bude kontrolovat nedávno přidané položky vašeho {mediaServerName} serveru agresivněji. Pokud nastavujete Jellyseerr poprvé, doporučujeme provést jednorázovou úplnou ruční kontrolu knihoven!",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Toto nenávratně odstraní tento {mediaType} z {arr}, včetně všech souborů.",
|
||||
"components.Blacklist.blacklistdate": "datum",
|
||||
"components.Blacklist.mediaName": "Jméno",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> úspěšně odstraněno ze seznamu sledování!",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Musíte poskytnout platný port",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Musíte poskytnout platné ID Discord role",
|
||||
"components.Blacklist.blacklistedby": "{date} uživatelem {user}",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Heslo je povinné.",
|
||||
"components.Login.validationHostnameRequired": "Musíte poskytnout platné hostitelské jméno nebo IP adresu",
|
||||
"components.Selector.searchStatus": "Vyberte status…",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> úspěšně přidáno na seznam sledování!",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> není na černé listině.",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> úspěšně odstraněno ze seznamu sledování!",
|
||||
"component.BlacklistBlock.blacklistdate": "Datum přidání na černou listinu",
|
||||
"component.BlacklistBlock.blacklistedby": "Přidáno na černou listinu uživatelem",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Spravovat média na černé listině.",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb ID",
|
||||
"components.Blacklist.mediaType": "Typ",
|
||||
"components.Blacklist.blacklistsettings": "Nastavení černé listiny",
|
||||
"components.Discover.FilterSlideover.status": "Status",
|
||||
"components.Layout.Sidebar.blacklist": "Černá listina",
|
||||
"components.Layout.UserWarnings.emailInvalid": "Emailová adresa je neplatná.",
|
||||
"components.Layout.UserWarnings.emailRequired": "Emailová adresa je povinná.",
|
||||
"components.Login.emailtooltip": "Adresa nemusí být asociována s Vaší {mediaServerName} instancí.",
|
||||
"components.Login.enablessl": "Používat SSL",
|
||||
"components.Login.initialsignin": "Připojit",
|
||||
"components.Login.initialsigningin": "Připojování…",
|
||||
"components.Login.invalidurlerror": "Nelze se připojit k {mediaServerName} serveru.",
|
||||
"components.Login.port": "Port",
|
||||
"components.Login.save": "Přidat",
|
||||
"components.Login.saving": "Přidávání…",
|
||||
"components.Login.username": "Uživatelské jméno",
|
||||
"components.Login.validationemailformat": "Je požadován platný email",
|
||||
"components.Login.validationhostformat": "Je požadována platná URL",
|
||||
"components.Login.validationhostrequired": "Je požadována {mediaServerName} URL",
|
||||
"components.Login.validationservertyperequired": "Prosím zvolte typ serveru",
|
||||
"components.Login.hostname": "{mediaServerName} URL",
|
||||
"components.Login.urlBase": "Základ URL adresy",
|
||||
"components.Login.validationUrlTrailingSlash": "URL adresa nesmí končit lomítkem",
|
||||
"components.ManageSlideOver.removearr": "Odstranit z {arr}",
|
||||
"components.ManageSlideOver.removearr4k": "Odstranit z 4K {arr}",
|
||||
"components.MovieDetails.addtowatchlist": "Přidat na seznam sledování",
|
||||
"components.MovieDetails.downloadstatus": "Stav stahování",
|
||||
"components.MovieDetails.openradarr": "Otevřít film v Radarr",
|
||||
"components.MovieDetails.openradarr4k": "Otevřít film ve 4K Radarr",
|
||||
"components.MovieDetails.removefromwatchlist": "Odstranit ze seznamu sledování",
|
||||
"components.MovieDetails.watchlistError": "Něco se pokazilo. Zkuste to znovu.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> úspěšně přidáno na seznam sledování!",
|
||||
"components.PermissionEdit.blacklistedItems": "Přidat média na černou listinu.",
|
||||
"components.PermissionEdit.manageblacklist": "Spravovat černou listinu",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Udělit oprávnění spravovat černou listinu.",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Zobrazit černou listinu.",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Udělit oprávnění zobrazit černou listinu.",
|
||||
"components.RequestList.RequestItem.profileName": "Profil",
|
||||
"components.RequestList.RequestItem.removearr": "Odstranit z {arr}",
|
||||
"components.RequestList.sortDirection": "Přepnout směr řazení",
|
||||
"components.Selector.canceled": "Zrušeno",
|
||||
"components.Selector.inProduction": "V produkci",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Podpořit Jellyseerr",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Sken nedávno přidaných na Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Kompletní sken knihoven Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Obnovení Plex tokenu",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Filtrovat obsah podle dostupnosti v regionu",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) proxy",
|
||||
"components.Settings.SettingsMain.proxySsl": "Používat SSL pro proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Port proxy",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Heslo proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Uživatelské jméno proxy",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Streamovací region",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Zobrazit streamovací služby podle dostupnosti v regionu",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Region objevování",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Obcházet proxy pro lokální adresy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Hostitelské jméno proxy",
|
||||
"components.Settings.apiKey": "API klíč",
|
||||
"components.Settings.invalidurlerror": "Nelze se připojit k {mediaServerName} serveru.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "URL pro zapomenuté heslo",
|
||||
"components.Settings.jellyfinSettings": "Nastavení {mediaServerName}",
|
||||
"components.Settings.jellyfinSettingsSuccess": "{mediaServerName} nastavení úspěšně uloženo!",
|
||||
"components.Settings.jellyfinSyncFailedGenericError": "Něco se pokazilo při synchronizaci knihoven",
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Nebyly nalezeny žádné knihovny",
|
||||
"components.Settings.jellyfinlibraries": "{mediaServerName} knihovny",
|
||||
"components.Settings.jellyfinsettings": "Nastavení {mediaServerName}",
|
||||
"components.Settings.manualscanJellyfin": "Manuální skenování knihovny",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
"components.Settings.jellyfinlibrariesDescription": "Knihovny, ve kterých {mediaServerName} hledá tituly. Pokud nejsou v seznamu žádné knihovny, klikněte na tlačítko níže.",
|
||||
"components.Settings.jellyfinsettingsDescription": "Konfigurujte nastavení svého {mediaServerName} serveru. {mediaServerName} skenuje Vaše {mediaServerName} knihovny pro zjištění dostupnosti obsahu.",
|
||||
"components.Settings.save": "Uložit změny",
|
||||
"components.Settings.saving": "Ukládání…",
|
||||
"components.Settings.syncJellyfin": "Synchronizovat knihovny",
|
||||
"components.Settings.syncing": "Synchronizace",
|
||||
"components.Settings.tip": "Tip",
|
||||
"components.Setup.configjellyfin": "Nastavit Jellyfin",
|
||||
"components.Setup.configplex": "Nastavit Plex",
|
||||
"components.Setup.configuremediaserver": "Nastavit média server",
|
||||
"components.Setup.signin": "Přihlásit se",
|
||||
"components.Setup.signinWithEmby": "Zadejte údaje k Emby",
|
||||
"components.Setup.signinWithJellyfin": "Zadejte údaje k Jellyfin",
|
||||
"components.Setup.signinWithPlex": "Zadejte údaje k Plex",
|
||||
"components.Setup.subtitle": "Začněte výběrem média serveru",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.TitleCard.watchlistError": "Něco se pokazilo. Zkuste to znovu.",
|
||||
"components.TvDetails.addtowatchlist": "Přidat na seznam sledování",
|
||||
"components.TitleCard.watchlistCancel": "seznam sledování pro <strong>{title}</strong> zrušen.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> úspěšně přidáno na seznam sledování!",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> úspěšně odstraněno ze seznamu sledování!",
|
||||
"components.TvDetails.watchlistError": "Něco se pokazilo. Zkuste to znovu.",
|
||||
"components.UserList.importfromJellyfin": "Import uživatelů z {mediaServerName}",
|
||||
"components.UserList.importfromJellyfinerror": "Něco se pokazilo během importování uživatelů z {mediaServerName}.",
|
||||
"components.UserList.mediaServerUser": "{mediaServerName} uživatel",
|
||||
"components.UserList.noJellyfinuserstoimport": "{mediaServerName} nemá žádné uživatele k importování.",
|
||||
"components.UserList.username": "Uživatelské jméno",
|
||||
"components.UserList.validationUsername": "Musíte poskytnout uživatelské jméno",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Region pro objevování",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Filtrovat obsah podle dostupnosti v regionu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "E-mail",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.mediaServerUser": "{mediaServerName} uživatel",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Uložit změny",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "Ukládání…",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Streamovací region",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Zobrazit streamovací služby podle dostupnosti v regionu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Tento email už je používán!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Jiný uživatel už používá toto uživatelské jméno. Musíte si nastavit email",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Je požadován platný email",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "Emailová adresa je povinná",
|
||||
"components.UserProfile.localWatchlist": "Seznam sledování uživatele {username}",
|
||||
"i18n.addToBlacklist": "Přidat na černou listinu",
|
||||
"i18n.blacklistError": "Něco se pokazilo. Zkuste to znovu.",
|
||||
"i18n.blacklist": "Černá listina",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> už se nachází na černé listině.",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> bylo úspěšně přidáno na černou listinu.",
|
||||
"i18n.blacklisted": "Na černé listině",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> bylo úspěšně odstraněno z černé listiny.",
|
||||
"i18n.removefromBlacklist": "Odstranit z černé listiny",
|
||||
"components.Login.title": "Přidat email",
|
||||
"components.Login.adminerror": "Musíte se přihlásit administrátorským účtem.",
|
||||
"components.Login.description": "Protože je toto Vaše první přihlášení do {applicationName}, musíte přidat platnou emailovou adresu.",
|
||||
"components.Settings.jellyfinSettingsFailure": "Něco se pokazilo při ukládání nastavení {mediaServerName}.",
|
||||
"components.Settings.timeout": "Časový limit",
|
||||
"components.Selector.ended": "Ukončeno",
|
||||
"components.Selector.returningSeries": "Vracející se seriál",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Uživatelské avatary",
|
||||
"i18n.specials": "Speciály"
|
||||
"components.Settings.SonarrModal.seriesType": "Typ série"
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
"components.RequestModal.requestcancelled": "Forespørgslen for <strong>{title}</strong> er annulleret.",
|
||||
"components.RequestModal.requestedited": "Forespørgslen for <strong>{title}</strong> er redigeret!",
|
||||
"components.RequestModal.requesterror": "Noget gik galt under indsendelsen af forespørgslen.",
|
||||
"components.RequestModal.requestfrom": "{username}'s forespørgsel afventer godkendelse.",
|
||||
"components.RequestModal.requestfrom": "{username}s forespørgsel afventer godkendelse.",
|
||||
"components.RequestModal.requestseasons": "Forespørg om {seasonCount} {seasonCount, plural, one {Sæson} other {Sæsoner}}",
|
||||
"components.RequestModal.season": "Sæson",
|
||||
"components.ResetPassword.passwordreset": "Nulstil Kodeord",
|
||||
@@ -1227,13 +1227,5 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Enhedsstandard",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Notifikationslyd",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Enhedsstandard",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Notifikationslyd",
|
||||
"components.UserList.validationUsername": "Angiv et brugernavn",
|
||||
"components.Login.signinwithjellyfin": "Brug din {mediaServerName} konto",
|
||||
"components.Login.username": "Brugernavn",
|
||||
"components.Login.validationEmailFormat": "Ugyldig e-mail",
|
||||
"components.Login.validationEmailRequired": "Angiv en e-mail",
|
||||
"components.Login.validationusernamerequired": "Brugernavn kræves",
|
||||
"components.UserList.username": "Brugernavn",
|
||||
"components.Login.credentialerror": "Brugernavnet eller kodeordet er forkert."
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Notifikationslyd"
|
||||
}
|
||||
|
||||
@@ -449,8 +449,8 @@
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Pushbullet-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Pushbullet-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestFailed": "Pushbullet Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSending": "Pushbullet Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "Pushbullet Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSending": "Pushbullet test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "Pushbullet test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "Du musst ein Zugangstoken angeben",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Anwendungs API-Token",
|
||||
@@ -479,8 +479,8 @@
|
||||
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "Agent aktivieren",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Jellyseerr muss via HTTPS bereitgestellt werden, um Web-Push Benachrichtigungen empfangen zu können.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Web push Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Web push Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Web push test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "Web push Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingssaved": "Web push Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Dienst aktivieren",
|
||||
@@ -489,8 +489,8 @@
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Auf Standard zurücksetzen",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON-Inhalt erfolgreich zurückgesetzt!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Hilfe zu Vorlagenvariablen",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestFailed": "Webhook Test Benachrichtigung konnte nicht gesendet werden.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Webhook Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestFailed": "Webhook Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Webhook test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "Webhook Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "Du musst einen gültigen JSON-Inhalt angeben",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
@@ -532,15 +532,15 @@
|
||||
"components.Settings.Notifications.smtpPort": "SMTP-Port",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Telegram-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Telegram-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.Notifications.toastDiscordTestFailed": "Discord Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastDiscordTestSending": "Discord Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastDiscordTestSuccess": "Discord Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.toastEmailTestFailed": "E-Mail Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastEmailTestSending": "Email Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastEmailTestSuccess": "Email Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.toastTelegramTestFailed": "Telegram Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastTelegramTestSending": "Telegram Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastTelegramTestSuccess": "Telegram Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.toastDiscordTestFailed": "Discord test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastDiscordTestSending": "Discord test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastDiscordTestSuccess": "Discord test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.toastEmailTestFailed": "E-Mail test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastEmailTestSending": "Email test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastEmailTestSuccess": "Email test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.toastTelegramTestFailed": "Telegram test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.toastTelegramTestSending": "Telegram test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.toastTelegramTestSuccess": "Telegram test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Du musst ein Bot-Autorisierungstoken angeben",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Du musst eine gültige Chat-ID angeben",
|
||||
"components.Settings.Notifications.validationEmail": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
@@ -1071,7 +1071,7 @@
|
||||
"components.Discover.tmdbtvgenre": "TMDB Serien Genre",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB Serien Keyword",
|
||||
"components.Discover.tvgenres": "Serien Genre",
|
||||
"components.Settings.SettingsMain.apikey": "API-Schlüssel",
|
||||
"components.Settings.SettingsMain.apikey": "API Schlüssel",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Aktivere CSRF Schutz",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Anwendungstitel",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Limitiere externen API Zugriff auf Lese-Operationen (erfordert HTTPS)",
|
||||
@@ -1272,7 +1272,7 @@
|
||||
"components.Settings.jellyfinSettingsFailure": "Beim Speichern der Einstellungen von {mediaServerName} ist ein Fehler aufgetreten.",
|
||||
"components.Settings.manualscanDescriptionJellyfin": "Normalerweise wird dieser Vorgang nur einmal alle 24 Stunden durchgeführt. Jellyseerr wird die kürzlich hinzugefügten Bibliotheken deines {mediaServerName} Servers aggressiver überprüfen. Wenn dies das erste Mal ist, dass du Jellyseerr konfigurierst, wird ein einmaliger vollständiger manueller Bibliotheks-Scan empfohlen!",
|
||||
"components.Settings.save": "Änderungen speichern",
|
||||
"components.Settings.Notifications.userEmailRequired": "Benutzer-E-Mail erforderlich",
|
||||
"components.Settings.Notifications.userEmailRequired": "Benutzer-E-Mai",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Benachrichtigungston",
|
||||
"components.Settings.SonarrModal.seriesType": "TV-Serie Typ",
|
||||
"components.Settings.jellyfinlibrariesDescription": "Die Bibliotheken {mediaServerName} werden nach Titeln durchsucht. Klicke auf die Schaltfläche unten, wenn keine Bibliotheken aufgelistet sind.",
|
||||
@@ -1346,62 +1346,5 @@
|
||||
"components.Login.enablessl": "Benutze SSL",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "Passwort vergessen URL",
|
||||
"components.Settings.jellyfinSyncFailedAutomaticGroupedFolders": "Eine benutzerdefinierte Authentifizierung mit automatischer Bibliotheksbündelung wird nicht unterstützt",
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Es wurden keine Bibliotheken gefunden",
|
||||
"components.Settings.scanbackground": "Der Scanvorgang wird im Hintergrund ausgeführt. Sie können in der Zwischenzeit den Einrichtungsprozess fortsetzen.",
|
||||
"components.Blacklist.blacklistdate": "Datum",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Medien auf der Sperrliste anzeigen.",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Region entdecken",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> ist nicht auf der Sperrliste.",
|
||||
"components.PermissionEdit.manageblacklist": "Sperrliste verwalten",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Jellyfin Refresh Token",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Region entdecken",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> wurde bereits auf die Sperrliste gesetzt.",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Sie müssen eine gültige Discord Rollen-ID angeben",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "Die Rollen ID, die in der Webhook Nachricht erwähnt werden soll. Leer lassen, um Erwähnungen zu deaktivieren",
|
||||
"i18n.addToBlacklist": "Zur Sperrliste hinzufügen",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Autorisierung zum Sperren von Medien.",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Verwenden Sie ',' als Trennzeichen und '*.' als Platzhalter für Subdomains",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Streaming Region",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> wurde erfolgreich von der Sperrliste entfernt.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Streaming Region",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Streaming Seiten nach regionaler Verfügbarkeit anzeigen",
|
||||
"components.Blacklist.blacklistedby": "{date} durch {user}",
|
||||
"components.Blacklist.mediaName": "Name",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb Id",
|
||||
"components.Blacklist.mediaType": "Typ",
|
||||
"component.BlacklistBlock.blacklistdate": "Sperrdatum",
|
||||
"component.BlacklistBlock.blacklistedby": "Gesperrt durch",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Medien auf der Sperrliste verwalten.",
|
||||
"components.Blacklist.blacklistsettings": "Sperrlisteneinstellungen",
|
||||
"component.BlacklistModal.blacklisting": "Sperrliste",
|
||||
"components.Layout.Sidebar.blacklist": "Sperrliste",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Erlaubnis zur Verwaltung von Medien auf der Sperrliste erteilen.",
|
||||
"components.PermissionEdit.blacklistedItems": "Medien sperren.",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Erlaubnis zum Anzeigen von Medien auf der Sperrliste erteilen.",
|
||||
"components.RequestList.RequestItem.removearr": "Von {arr} entfernen",
|
||||
"components.RequestList.sortDirection": "Sortierrichtung umschalten",
|
||||
"components.Settings.Notifications.webhookRoleId": "Benachrichtigung Rollen ID",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Avatare der Nutzer",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Inhalte nach regionaler Verfügbarkeit filtern",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Proxy für lokale Adressen umgehen",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) Proxy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Proxy Hostname",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Proxy Passwort",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxy Port",
|
||||
"components.Settings.SettingsMain.proxySsl": "SSL für Proxy verwenden",
|
||||
"components.Settings.SettingsMain.proxyUser": "Proxy Benutzername",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "vom Proxy ignorierte Adressen",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Streaming Seiten nach regionaler Verfügbarkeit anzeigen",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Sie müssen einen gültigen Port angeben",
|
||||
"components.Settings.apiKey": "API-Schlüssel",
|
||||
"components.Settings.tip": "Tipp",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Inhalte nach regionaler Verfügbarkeit filtern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Diese E-Mail ist bereits vergeben!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Ein anderer Benutzer hat bereits diesen Benutzernamen. Sie müssen eine E-Mail festlegen",
|
||||
"i18n.blacklist": "Sperrliste",
|
||||
"i18n.blacklistError": "Etwas ist schief gelaufen, versuchen Sie es noch einmal.",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> wurde erfolgreich auf die Sperrliste gesetzt.",
|
||||
"i18n.blacklisted": "Gesperrt",
|
||||
"i18n.removefromBlacklist": "Von der Sperrliste entfernen",
|
||||
"i18n.specials": "Besonderheiten"
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Es wurden keine Bibliotheken gefunden"
|
||||
}
|
||||
|
||||
@@ -940,6 +940,8 @@
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Enable CSRF Protection",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Do NOT enable this setting unless you understand what you are doing!",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Set external API access to read-only (requires HTTPS)",
|
||||
"components.Settings.SettingsNetwork.dnsServers": "Custom DNS Servers",
|
||||
"components.Settings.SettingsNetwork.dnsServersTip": "Comma-separated list of custom DNS servers, e.g. \"1.1.1.1,[2606:4700:4700::1111]\"",
|
||||
"components.Settings.SettingsNetwork.docs": "documentation",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Force IPv4 Resolution First",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Force Jellyseerr to resolve IPv4 addresses first instead of IPv6",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -79,20 +79,20 @@
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Nombre de votes utilisateur TMDB",
|
||||
"components.Discover.FilterSlideover.to": "À",
|
||||
"components.Discover.FilterSlideover.voteCount": "Nombre de votes entre {minValue} et {maxValue}",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Films par genres",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Films par genres",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Genres de films",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Genres de films",
|
||||
"components.Discover.NetworkSlider.networks": "Diffuseurs",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Les médias ajoutés à votre <PlexWatchlistSupportLink>liste de lecture Plex</PlexWatchlistSupportLink> apparaîtront ici.",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Votre liste de lecture",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Récemment ajoutés",
|
||||
"components.Discover.StudioSlider.studios": "Studios",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Séries par genres",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Séries par genres",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Genres de séries",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Genres de séries",
|
||||
"components.Discover.createnewslider": "Créer un nouveau slider",
|
||||
"components.Discover.customizediscover": "Personnaliser Découvrir",
|
||||
"components.Discover.discover": "Découvrir",
|
||||
"components.Discover.emptywatchlist": "Les médias ajoutés à votre <PlexWatchlistSupportLink>liste de lecture Plex</PlexWatchlistSupportLink> apparaîtront ici.",
|
||||
"components.Discover.moviegenres": "Films par genres",
|
||||
"components.Discover.moviegenres": "Genres de films",
|
||||
"components.Discover.networks": "Diffuseurs",
|
||||
"components.Discover.plexwatchlist": "Votre liste de lecture",
|
||||
"components.Discover.popularmovies": "Films populaires",
|
||||
@@ -115,7 +115,7 @@
|
||||
"components.Discover.tmdbtvkeyword": "Mot-clé de la série TMDB",
|
||||
"components.Discover.tmdbtvstreamingservices": "Services de streaming TMDB TV",
|
||||
"components.Discover.trending": "Tendances",
|
||||
"components.Discover.tvgenres": "Séries par genres",
|
||||
"components.Discover.tvgenres": "Genres de séries",
|
||||
"components.Discover.upcoming": "Films à venir",
|
||||
"components.Discover.upcomingmovies": "Films à venir",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Rechercher films et séries",
|
||||
@@ -219,7 +219,7 @@
|
||||
"components.Settings.hostname": "Nom d'hôte ou adresse IP",
|
||||
"components.Settings.librariesRemaining": "Bibliothèques restantes : {count}",
|
||||
"components.Settings.manualscan": "Scan manuel des bibliothèques",
|
||||
"components.Settings.manualscanDescription": "Normalement, le scan sera effectué une fois toutes les 24 heures seulement. Jellyseerr vérifiera les ajouts récents de votre serveur Plex de façon proactive. Si c'est la première fois que vous configurez Plex, un scan complet de la bibliothèque est recommandé !",
|
||||
"components.Settings.manualscanDescription": "Normalement, le scan sera effectué une fois toutes les 24 heures seulement. Jellyseerr vérifiera les ajouts récents de votre serveur Plex de façon proactive. Si c'est la première fois que vous configurez Plex, un scan complet de la bibliothèque est recommandé!",
|
||||
"components.Settings.menuAbout": "À propos",
|
||||
"components.Settings.menuGeneralSettings": "Général",
|
||||
"components.Settings.menuJobs": "Tâches et cache",
|
||||
@@ -425,7 +425,7 @@
|
||||
"components.RequestBlock.profilechanged": "Profil de qualité",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Demande refusée",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Envoyer des notifications lorsqu'une demande de média est refusée.",
|
||||
"i18n.experimental": "Expérimental",
|
||||
"i18n.experimental": "Expérimentale",
|
||||
"components.RequestModal.requesterror": "Une erreur s'est produite lors de la demande.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nous n'avons pas pu associer cette série automatiquement. Veuillez sélectionner l'association correcte dans la liste ci-dessous.",
|
||||
"components.Login.signinwithplex": "Utilisez votre compte Plex",
|
||||
@@ -499,7 +499,7 @@
|
||||
"components.Settings.SettingsJobsCache.cacheflushed": "Cache de {cachename} vidé.",
|
||||
"components.Settings.SettingsJobsCache.cacheDescription": "Jellyseerr met en cache les demandes aux points de terminaison d'API externes pour optimiser les performances et éviter de faire des appels d'API inutiles.",
|
||||
"components.Settings.SettingsJobsCache.cache": "Cache",
|
||||
"i18n.advanced": "Avancé",
|
||||
"i18n.advanced": "Avancés",
|
||||
"components.UserList.users": "Utilisateurs",
|
||||
"components.Setup.setup": "Configuration",
|
||||
"components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "L'URL ne doit pas se terminer par une barre oblique finale",
|
||||
@@ -628,7 +628,7 @@
|
||||
"components.Settings.scan": "Synchroniser les bibliothèques",
|
||||
"components.Settings.SettingsJobsCache.sonarr-scan": "Scan de Sonarr",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Scan de Radarr",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Scan des ajouts récents Plex",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Scan des ajouts récents Plex.",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Scan complet des bibliothèques Plex.",
|
||||
"components.Settings.Notifications.validationUrl": "Vous devez fournir une URL valide",
|
||||
"components.Settings.Notifications.botAvatarUrl": "L'URL de l'avatar de votre Bot",
|
||||
@@ -778,7 +778,7 @@
|
||||
"components.Settings.Notifications.botUsernameTip": "Permet aux utilisateurs de démarrer également une conversation avec votre bot et de configurer leurs propres notifications personnelles",
|
||||
"components.RequestModal.pendingapproval": "Votre demande est en attente de validation.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} non trouvé",
|
||||
"components.RequestList.RequestItem.deleterequest": "Supprimer la demande",
|
||||
"components.RequestList.RequestItem.deleterequest": "Supprimer la Demande",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Annuler la demande",
|
||||
"components.RequestCard.mediaerror": "{mediaType} non trouvé",
|
||||
"components.RequestCard.deleterequest": "Supprimer la demande",
|
||||
@@ -1141,7 +1141,7 @@
|
||||
"components.Login.validationhostformat": "URL valide requise",
|
||||
"components.Login.validationhostrequired": "{mediaServerName} URL requise",
|
||||
"components.Login.validationusernamerequired": "Nom d'utilisateur requis",
|
||||
"components.MovieDetails.imdbuserscore": "Note des utilisateurs IMDB",
|
||||
"components.MovieDetails.imdbuserscore": "Note Utilisateurs",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Cela supprimera irréversiblement ce(tte) {mediaType} de {arr}, y compris tous les fichiers.",
|
||||
"components.ManageSlideOver.removearr": "Supprimer de {arr}",
|
||||
"components.ManageSlideOver.removearr4k": "Supprimer de {arr} 4K",
|
||||
@@ -1152,8 +1152,8 @@
|
||||
"components.MovieDetails.play": "Lire sur {mediaServerName}",
|
||||
"components.MovieDetails.play4k": "Lire en 4k sur {mediaServerName}",
|
||||
"components.MovieDetails.reportissue": "Signaler un problème",
|
||||
"components.MovieDetails.rtaudiencescore": "Score d’audience Rotten Tomatoes",
|
||||
"components.MovieDetails.rtcriticsscore": "Tomatomètre Rotten Tomatoes",
|
||||
"components.MovieDetails.rtaudiencescore": "Score d’audience de Rotten Tomatoes",
|
||||
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatomètre",
|
||||
"components.MovieDetails.tmdbuserscore": "Note des utilisateurs TMDB",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Autorise à voir les listes de lecture {mediaServerName} des autres utilisateurs.",
|
||||
"components.RequestBlock.approve": "Approuver la demande",
|
||||
@@ -1234,30 +1234,30 @@
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Ajouter automatiquement un tag supplémentaire avec l'ID utilisateur et le nom d'affichage du demandeur",
|
||||
"components.IssueModal.issueVideo": "Vidéo",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Son de notification",
|
||||
"components.Settings.jellyfinSettings": "Paramètres {mediaServerName}",
|
||||
"components.Settings.jellyfinSettings": "Paramètres pour {mediaServerName}",
|
||||
"components.Settings.jellyfinSettingsFailure": "Une erreur est survenue lors de l'enregistrement des paramètres pour {mediaServerName}.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "Les paramètres pour {mediaServerName} ont été enregistrés avec succès !",
|
||||
"components.Settings.jellyfinlibraries": "Bibliothèques {mediaServerName}",
|
||||
"components.Settings.jellyfinlibrariesDescription": "Les bibliothèques de {mediaServerName} sont en cours d'analyse. Cliquez sur le bouton ci-dessous si aucune bibliothèque n'est répertoriée.",
|
||||
"components.Settings.jellyfinsettings": "Paramètres {mediaServerName}",
|
||||
"components.Settings.jellyfinsettings": "Paramètres pour {mediaServerName}",
|
||||
"components.Settings.manualscanJellyfin": "Analyse manuelle de la bibliothèque",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
"components.Settings.save": "Enregistrer les modifications",
|
||||
"components.Settings.saving": "Sauvegarde en cours…",
|
||||
"components.Settings.syncing": "Synchronisation en cours",
|
||||
"components.Setup.signin": "Se connecter",
|
||||
"components.Setup.signinWithPlex": "Entrez vos identifiants Plex",
|
||||
"components.Setup.signinWithPlex": "Renseigner vos informations d'identification de Plex",
|
||||
"components.StatusBadge.managemedia": "Gérer {mediaType}",
|
||||
"components.StatusBadge.openinarr": "Ouvrir dans {arr}",
|
||||
"components.StatusBadge.playonplex": "Lire sur {mediaServerName}",
|
||||
"components.TitleCard.addToWatchList": "Ajouter à la liste de surveillance",
|
||||
"components.TitleCard.addToWatchList": "Ajouter à votre watchlist",
|
||||
"components.TitleCard.watchlistCancel": "Watchlist pour <strong>{title}</strong> annulée.",
|
||||
"components.TitleCard.watchlistError": "Une erreur est survenue. Veuillez réessayer.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> a été ajouté à votre watchlist avec succès !",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Une erreur est survenue lors de la récupération des données de la saison.",
|
||||
"components.TvDetails.manageseries": "Gérer les séries",
|
||||
"components.TvDetails.play": "Lire sur {mediaServerName}",
|
||||
"components.TvDetails.play4k": "Lire en 4K sur {mediaServerName}",
|
||||
"components.TvDetails.play": "Jouer sur {mediaServerName}",
|
||||
"components.TvDetails.play4k": "Jouer en 4K sur {mediaServerName}",
|
||||
"components.TvDetails.rtcriticsscore": "Tomatometer sur Rotten Tomatoes",
|
||||
"components.TvDetails.seasonnumber": "Saison {seasonNumber}",
|
||||
"components.TvDetails.seasonstitle": "Saisons",
|
||||
@@ -1287,8 +1287,8 @@
|
||||
"components.Setup.configuremediaserver": "Configurer le serveur multimédia",
|
||||
"components.TvDetails.rtaudiencescore": "Score de l'audience sur Rotten Tomatoes",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.mediaServerUser": "Utilisateur {mediaServerName}",
|
||||
"components.Setup.signinWithJellyfin": "Entrez vos identifiants Jellyfin",
|
||||
"components.UserList.mediaServerUser": "Utilisateur {mediaServerName}",
|
||||
"components.Setup.signinWithJellyfin": "Renseigner vos informations d'identification de Jellyfin",
|
||||
"components.UserList.mediaServerUser": "Utilisateur de {mediaServerName}",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Épisode} other {# Épisodes}}",
|
||||
"components.UserList.newJellyfinsigninenabled": "Le paramètre <strong>Activer la nouvelle connexion à {mediaServerName}</strong> est actuellement activé. Les utilisateurs de {mediaServerName} avec accès à la bibliothèque n'ont pas besoin d'être importés pour se connecter.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "E-mail",
|
||||
@@ -1343,7 +1343,7 @@
|
||||
"components.Setup.configemby": "Configurer Emby",
|
||||
"components.Setup.configjellyfin": "Configurer Jellyfin",
|
||||
"components.Setup.configplex": "Configurer Plex",
|
||||
"components.Setup.signinWithEmby": "Entrez vos identifiants Emby",
|
||||
"components.Setup.signinWithEmby": "Renseigner vos informations d'identification d'Emby",
|
||||
"components.Setup.subtitle": "Commencez par choisir votre serveur multimédia",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.Discover.FilterSlideover.status": "Statut",
|
||||
@@ -1355,53 +1355,8 @@
|
||||
"component.BlacklistBlock.blacklistdate": "Date de mise en liste noire",
|
||||
"component.BlacklistBlock.blacklistedby": "Mis en liste noire par",
|
||||
"component.BlacklistModal.blacklisting": "Ajout en liste noire",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> n'est pas dans la liste noire.",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Gérer le contenu en liste noire.",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> n'est pas en liste noire.",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Gérer le contenu en liste noire",
|
||||
"components.Blacklist.blacklistsettings": "Paramètres de la liste noire",
|
||||
"components.Layout.Sidebar.blacklist": "Liste noire",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Voir les médias dans la liste noire.",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> est déjà dans la liste noire.",
|
||||
"i18n.blacklistError": "Une erreur s'est produite, réessayez.",
|
||||
"components.PermissionEdit.blacklistedItems": "Ajouter le média à la liste noire.",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Vous devez fournir un identifiant Discord valide",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Pays à découvrir",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Accorder la permission de gérer la liste noire.",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Mot de passe du proxy",
|
||||
"components.RequestList.RequestItem.removearr": "Supprimer de {arr}",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Afficher les sites de streaming par disponibilité dans les pays",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Afficher les sites de streaming par disponibilité régionale",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Accorder la permission de mettre les médias sur liste noire.",
|
||||
"components.PermissionEdit.manageblacklist": "Gérer la liste noire",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Accorder la permission de voir la liste noire.",
|
||||
"components.RequestList.sortDirection": "Inverser la direction du tri",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Avatars des utilisateurs",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Filtrer le contenu par disponibilité dans les pays",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Utilisez ',' comme séparateur et '*.' comme caractère générique pour les sous-domaines",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "Proxy HTTP(S)",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Nom d'hôte du proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Port du proxy",
|
||||
"components.Settings.SettingsMain.proxySsl": "Utiliser SSL pour le proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Nom d'utilisateur du proxy",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Pays de diffusion",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Contourner le proxy pour les adresses locales",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Adresses proxy ignorées",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Vous devez fournir un port valide",
|
||||
"components.Settings.apiKey": "Clé API",
|
||||
"components.Settings.scanbackground": "L'analyse s'exécutera en arrière-plan. Vous pouvez poursuivre la configuration en attendant.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Pays à découvrir",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Filtrer le contenu par disponibilité régionale",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Pays de diffusion",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Cet email est déjà pris !",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Quelqu'un d'autre possède déjà ce nom d'utilisateur. Vous devez utiliser une adresse e-mail",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> a été ajouté dans la liste noire avec succès.",
|
||||
"i18n.blacklisted": "Sur liste noire",
|
||||
"i18n.addToBlacklist": "Ajouter à la liste noire",
|
||||
"i18n.blacklist": "Liste noire",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> a été retiré de la liste noire avec succès.",
|
||||
"i18n.removefromBlacklist": "Retirer de la liste noire",
|
||||
"i18n.specials": "Hors-série",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "L'ID à mentionner dans le message du webhook. Laissez ce champ vide pour désactiver les mentions",
|
||||
"components.Settings.Notifications.webhookRoleId": "ID de rôle de notification",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Rafraîchir le token Plex",
|
||||
"components.Settings.tip": "Conseil"
|
||||
"components.Layout.Sidebar.blacklist": "Liste noir"
|
||||
}
|
||||
|
||||
@@ -11,22 +11,22 @@
|
||||
"components.Layout.Sidebar.requests": "Verzoeken",
|
||||
"components.Layout.Sidebar.settings": "Instellingen",
|
||||
"components.Layout.Sidebar.users": "Gebruikers",
|
||||
"components.Layout.UserDropdown.signout": "Afmelden",
|
||||
"components.Layout.UserDropdown.signout": "Uitloggen",
|
||||
"components.MovieDetails.budget": "Budget",
|
||||
"components.MovieDetails.cast": "Cast",
|
||||
"components.MovieDetails.originallanguage": "Oorspronkelijke taal",
|
||||
"components.MovieDetails.overview": "Overzicht",
|
||||
"components.MovieDetails.overviewunavailable": "Overzicht niet beschikbaar.",
|
||||
"components.MovieDetails.recommendations": "Aanbevelingen",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Verschijningsdatum} other {Verschijningsdata}}",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Releasedatum} other {Releasedata}}",
|
||||
"components.MovieDetails.revenue": "Omzet",
|
||||
"components.MovieDetails.runtime": "{minutes} minuten",
|
||||
"components.MovieDetails.similar": "Vergelijkbare titels",
|
||||
"components.PersonDetails.appearsin": "Verschijningen",
|
||||
"components.PersonDetails.ascharacter": "als {character}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.RequestList.requests": "Verzoeken",
|
||||
"components.RequestModal.cancel": "Verzoek annuleren",
|
||||
"components.RequestModal.numberofepisodes": "Aantal afleveringen",
|
||||
@@ -34,11 +34,11 @@
|
||||
"components.RequestModal.requestCancel": "Verzoek voor <strong>{title}</strong> is geannuleerd.",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> is succesvol aangevraagd!",
|
||||
"components.RequestModal.requestadmin": "Dit verzoek zal automatisch goedgekeurd worden.",
|
||||
"components.RequestModal.requestfrom": "Het verzoek van {user} is in afwachting van goedkeuring.",
|
||||
"components.RequestModal.requestfrom": "Het verzoek van {user} is in behandeling.",
|
||||
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {seizoen} other {seizoenen}} aanvragen",
|
||||
"components.RequestModal.season": "Seizoen",
|
||||
"components.RequestModal.seasonnumber": "Seizoen {number}",
|
||||
"components.RequestModal.selectseason": "Seizoenen selecteren",
|
||||
"components.RequestModal.selectseason": "Seizoen(en) selecteren",
|
||||
"components.Search.searchresults": "Zoekresultaten",
|
||||
"components.Settings.Notifications.agentenabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.authPass": "SMTP-wachtwoord",
|
||||
@@ -240,7 +240,7 @@
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "Volledige crew",
|
||||
"components.CollectionDetails.requestcollection": "Collectie aanvragen",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex-{userCount, plural, one {gebruiker} other {gebruikers}} succesvol geïmporteerd!",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "Changelog voor {version}",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "{version} changelog",
|
||||
"components.Settings.SettingsAbout.Releases.releases": "Versies",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Instellingen voor Slack-meldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Instellingen voor Slack-meldingen konden niet opgeslagen worden.",
|
||||
@@ -261,7 +261,7 @@
|
||||
"components.RequestButton.requestmore4k": "Meer in 4K aanvragen",
|
||||
"components.RequestButton.approverequests": "{requestCount, plural, one {Verzoek} other {{requestCount} Verzoeken}} goedkeuren",
|
||||
"components.RequestButton.approve4krequests": "{requestCount, plural, one {4K-verzoek} other {{requestCount} 4K-verzoeken}} goedkeuren",
|
||||
"components.RequestButton.declinerequests": "{requestCount, plural, one {Verzoek} other {{requestCount} Verzoeken}} weigeren",
|
||||
"components.RequestButton.declinerequests": "{requestCount, plural, one {verzoek} other {{requestCount} verzoeken}} weigeren",
|
||||
"components.RequestButton.decline4krequests": "{requestCount, plural, one {4K-verzoek} other {{requestCount} 4K-verzoeken}} weigeren",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Instellingen voor webhook-meldingen succesvol opgeslagen!",
|
||||
@@ -297,7 +297,7 @@
|
||||
"components.Login.validationemailrequired": "Je moet een geldig e-mailadres opgeven",
|
||||
"components.Login.signinwithoverseerr": "{applicationTitle}-account gebruiken",
|
||||
"components.Login.password": "Wachtwoord",
|
||||
"components.Login.loginerror": "Er ging iets mis bij het aanmelden.",
|
||||
"components.Login.loginerror": "Er ging iets mis bij het inloggen.",
|
||||
"components.Login.email": "E-mailadres",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Meer",
|
||||
"i18n.edit": "Bewerken",
|
||||
@@ -323,9 +323,9 @@
|
||||
"components.Login.signinwithplex": "Plex-account gebruiken",
|
||||
"components.Login.signinheader": "Log in om verder te gaan",
|
||||
"components.Login.signingin": "Aanmelden…",
|
||||
"components.Login.signin": "Aanmelden",
|
||||
"components.Login.signin": "Inloggen",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Meldingsagenten configureren en inschakelen.",
|
||||
"components.PlexLoginButton.signinwithplex": "Aanmelden",
|
||||
"components.PlexLoginButton.signinwithplex": "Inloggen",
|
||||
"components.PlexLoginButton.signingin": "Aanmelden…",
|
||||
"components.PermissionEdit.advancedrequest": "Geavanceerde aanvragen",
|
||||
"components.PermissionEdit.admin": "Beheerder",
|
||||
@@ -407,7 +407,7 @@
|
||||
"components.Settings.RadarrModal.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Toestemming geven om mediaverzoeken van andere gebruikers te bekijken.",
|
||||
"components.PermissionEdit.viewrequests": "Verzoeken bekijken",
|
||||
"components.UserList.validationEmail": "E-mailadres vereist",
|
||||
"components.UserList.validationEmail": "E-mailadres verplicht",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Basis-URL mag niet eindigen op een schuine streep",
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Basis-URL moet met een schuine streep beginnen",
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "URL-basis mag niet eindigen op een schuine streep",
|
||||
@@ -425,7 +425,7 @@
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Wachtwoord is succesvol opnieuw ingesteld!",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Er wordt een link om het wachtwoord te resetten naar het opgegeven e-mailadres gestuurd als dat gekoppeld is aan een geldige gebruiker.",
|
||||
"components.ResetPassword.password": "Wachtwoord",
|
||||
"components.ResetPassword.gobacklogin": "Terug naar aanmeldpagina",
|
||||
"components.ResetPassword.gobacklogin": "Terug naar inlogpagina",
|
||||
"components.ResetPassword.emailresetlink": "Herstellink e-mailen",
|
||||
"components.ResetPassword.confirmpassword": "Wachtwoord bevestigen",
|
||||
"components.Login.forgotpassword": "Wachtwoord vergeten?",
|
||||
@@ -569,7 +569,7 @@
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Hervatten",
|
||||
"components.Settings.SettingsLogs.pauseLogs": "Pauze",
|
||||
"components.Settings.SettingsLogs.message": "Bericht",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Je kunt deze logboeken ook rechtstreeks bekijken via <code>stdout</code>, of in <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Je kunt deze logs ook rechtstreeks bekijken via <code>stdout</code>, of in <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logs": "Logboeken",
|
||||
"components.Settings.SettingsLogs.level": "Ernst",
|
||||
"components.Settings.SettingsLogs.label": "Label",
|
||||
@@ -616,7 +616,7 @@
|
||||
"components.Settings.SettingsUsers.tvRequestLimitLabel": "Globale aanvraaglimiet voor series",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.RequestModal.QuotaDisplay.season": "seizoen",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Je moet nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensverzoek} other {seizoensverzoeken}} over hebben om deze serie aan te vragen.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Je moet nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensverzoek} other {seizoensverzoek}} over hebben om deze serie aan te vragen.",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Geen} other {<strong>#</strong>}} {type}{remaining, plural, one {verzoek} other {verzoeken}} resterend",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Je kan een overzicht van de aanvraaglimieten van deze gebruiker bekijken op hun <ProfileLink>profielpagina</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Je kan een overzicht van je aanvraaglimieten bekijken op jouw <ProfileLink>profielpagina</ProfileLink>.",
|
||||
@@ -691,7 +691,7 @@
|
||||
"components.RequestModal.pendingapproval": "Je verzoek is in afwachting van goedkeuring.",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Verzoek annuleren",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Meldingtypes",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Er is voor jouw account momenteel geen wachtwoord ingesteld. Stel hieronder een wachtwoord in om aanmelden als \"lokale gebruiker\" (met je e-mailadres) in te schakelen.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Er is voor jouw account momenteel geen wachtwoord ingesteld. Configureer hieronder een wachtwoord om in te kunnen loggen als een \"lokale gebruiker\" met je e-mailadres.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Deze gebruikersaccount heeft momenteel geen wachtwoord ingesteld. Configureer hieronder een wachtwoord zodat deze account in staat is om zich aan te melden als een \"lokale gebruiker\".",
|
||||
"components.Settings.serviceSettingsDescription": "Stel je {serverType}-server(s) hieronder in. Je kunt meerdere {serverType}-servers verbinden, maar slechts twee ervan kunnen als standaard worden gemarkeerd (één niet-4K en één 4K). Beheerders kunnen vóór goedkeuring de server aanpassen die voor nieuwe aanvragen gebruikt wordt.",
|
||||
"components.Settings.noDefaultServer": "Ten minste één {serverType} server moet als standaard worden gemarkeerd om {mediaType}verzoeken te kunnen verwerken.",
|
||||
@@ -784,7 +784,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Om web-pushmeldingen te ontvangen, moet Jellyseerr via HTTPS worden weergegeven.",
|
||||
"components.RequestList.RequestItem.requesteddate": "Aangevraagd",
|
||||
"components.RequestCard.failedretry": "Er ging opnieuw iets mis tijdens het aanvragen.",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Sta gebruikers toe om zich aan te melden met hun e-mailadres en wachtwoord, in plaats van met {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Sta gebruikers toe om in te loggen met hun e-mailadres en wachtwoord, in plaats van met Plex OAuth",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Initiële machtigingen toegekend aan nieuwe gebruikers",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {seizoen} other {seizoenen}}",
|
||||
@@ -814,7 +814,7 @@
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nieuwe frequentie",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Er ging iets mis bij het opslaan van de taak.",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "Taak wijzigen",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Elk(e) {jobScheduleHours, plural, one {uur} other {{jobScheduleHours} uur}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Elk(e) {jobScheduleHours, plural, one {uur} other {{jobScheduleHours} uren}}",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Je voert de <code>develop</code>versie van Jellyseerr uit, die alleen wordt aanbevolen als je bijdraagt aan de ontwikkeling of de allereerste versies helpt testen.",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Weet je zeker dat je deze opmerking wilt verwijderen?",
|
||||
@@ -857,7 +857,7 @@
|
||||
"components.IssueDetails.toaststatusupdated": "Probleemstatus succesvol bijgewerkt!",
|
||||
"components.IssueDetails.closeissueandcomment": "Afsluiten met opmerking",
|
||||
"components.IssueModal.CreateIssueModal.problemseason": "Getroffen seizoen",
|
||||
"components.IssueDetails.openedby": "#{issueId} - {relativeTime} ingediend door {username}",
|
||||
"components.IssueDetails.openedby": "#{issueId} {relativeTime} ingediend door {username}",
|
||||
"components.IssueDetails.IssueDescription.description": "Beschrijving",
|
||||
"components.NotificationTypeSelector.issuecommentDescription": "Melding sturen wanneer problemen nieuwe opmerkingen krijgen.",
|
||||
"components.IssueModal.CreateIssueModal.toastviewissue": "Probleem bekijken",
|
||||
@@ -868,13 +868,13 @@
|
||||
"components.IssueDetails.episode": "Aflevering {episodeNumber}",
|
||||
"components.IssueDetails.issuepagetitle": "Probleem",
|
||||
"components.IssueDetails.issuetype": "Type",
|
||||
"components.IssueDetails.leavecomment": "Opmerking plaatsen",
|
||||
"components.IssueDetails.leavecomment": "Opmerking geven",
|
||||
"components.IssueDetails.deleteissueconfirm": "Weet je zeker dat je dit probleem wilt verwijderen?",
|
||||
"components.IssueDetails.unknownissuetype": "Onbekend",
|
||||
"components.IssueDetails.openinarr": "Openen in {arr}",
|
||||
"components.IssueDetails.toasteditdescriptionfailed": "Er ging iets mis bij het bewerken van de beschrijving van het probleem.",
|
||||
"components.IssueList.IssueItem.issuetype": "Type",
|
||||
"components.IssueList.IssueItem.opened": "Ingediend",
|
||||
"components.IssueList.IssueItem.opened": "Onopgelost",
|
||||
"components.IssueDetails.reopenissue": "Probleem opnieuw indienen",
|
||||
"components.IssueDetails.reopenissueandcomment": "Opnieuw indienen met opmerking",
|
||||
"components.IssueDetails.season": "Seizoen {seasonNumber}",
|
||||
@@ -892,7 +892,7 @@
|
||||
"components.IssueModal.CreateIssueModal.problemepisode": "Getroffen aflevering",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Probleemmelding voor <strong>{title}</strong> succesvol ingediend!",
|
||||
"components.PermissionEdit.viewissues": "Problemen weergeven",
|
||||
"components.IssueModal.issueOther": "Anders",
|
||||
"components.IssueModal.issueOther": "Andere",
|
||||
"components.Layout.Sidebar.issues": "Problemen",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Gegevens wissen",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Hiermee worden alle gegevens voor deze {mediaType} onomkeerbaar verwijderd, inclusief eventuele verzoeken. Als dit item in je {mediaServerName}-bibliotheek staat, worden de mediagegevens opnieuw aangemaakt tijdens de volgende scan.",
|
||||
@@ -900,9 +900,9 @@
|
||||
"components.ManageSlideOver.manageModalTitle": "{mediaType} beheren",
|
||||
"components.ManageSlideOver.tvshow": "serie",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Ontvang een melding wanneer problemen die jij hebt gemeld, opgelost zijn.",
|
||||
"components.NotificationTypeSelector.issuecomment": "Reactie op probleem",
|
||||
"components.NotificationTypeSelector.issuecomment": "Opmerking op probleem",
|
||||
"components.NotificationTypeSelector.issueresolvedDescription": "Stuur meldingen wanneer problemen opgelost zijn.",
|
||||
"components.ManageSlideOver.openarr4k": "Openen in 4K-{arr}",
|
||||
"components.ManageSlideOver.openarr4k": "Openen in 4K {arr}",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "Ontvang een melding wanneer andere gebruikers reageren op problemen.",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "Ontvang een melding wanneer er nieuwe reacties komen op problemen die jij hebt gemeld.",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "Ontvang een melding wanneer andere gebruikers problemen melden.",
|
||||
@@ -929,8 +929,8 @@
|
||||
"components.IssueDetails.playonplex": "Afspelen op {mediaServerName}",
|
||||
"components.IssueDetails.play4konplex": "Afspelen op {mediaServerName} in 4K",
|
||||
"components.IssueDetails.openin4karr": "Openen in 4K {arr}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {Aflevering} other {Afleveringen}}",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {aflevering} other {afleveringen}}",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.ManageSlideOver.manageModalIssues": "Onopgeloste problemen",
|
||||
"components.IssueModal.CreateIssueModal.extras": "Extra's",
|
||||
"components.NotificationTypeSelector.adminissueresolvedDescription": "Ontvang een melding wanneer problemen worden opgelost door andere gebruikers.",
|
||||
@@ -940,15 +940,15 @@
|
||||
"components.NotificationTypeSelector.userissuereopenedDescription": "Ontvang een bericht wanneer problemen die jij hebt gemeld, opnieuw worden ingediend.",
|
||||
"components.RequestModal.requestseasons4k": "{seasonCount} {seasonCount, plural, one {seizoen} other {seizoenen}} aanvragen in 4K",
|
||||
"components.RequestModal.requestmovies": "{count} {count, plural, one {film} other {films}} aanvragen",
|
||||
"components.RequestModal.selectmovies": "Films selecteren",
|
||||
"components.RequestModal.selectmovies": "Film(s) selecteren",
|
||||
"components.MovieDetails.productioncountries": "Productie{countryCount, plural, one {land} other {landen}}",
|
||||
"components.RequestModal.requestmovies4k": "{count} {count, plural, one {film} other {films}} in 4K aanvragen",
|
||||
"components.TvDetails.productioncountries": "Productie{countryCount, plural, one {land} other {landen}}",
|
||||
"components.IssueDetails.commentplaceholder": "Opmerking toevoegen…",
|
||||
"components.IssueDetails.commentplaceholder": "Voeg een opmerking toe…",
|
||||
"components.RequestModal.requestApproved": "Verzoek voor <strong>{title}</strong> goedgekeurd!",
|
||||
"components.RequestModal.approve": "Verzoek goedkeuren",
|
||||
"components.Settings.RadarrModal.inCinemas": "In de bioscoop",
|
||||
"components.Settings.RadarrModal.released": "Uitgebracht",
|
||||
"components.Settings.RadarrModal.released": "Uitgekomen",
|
||||
"components.Settings.RadarrModal.announced": "Aangekondigd",
|
||||
"components.Settings.Notifications.enableMentions": "Vermeldingen inschakelen",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Agent inschakelen",
|
||||
@@ -969,7 +969,7 @@
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Geavanceerd",
|
||||
"components.ManageSlideOver.alltime": "Altijd",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Alle seizoenen markeren als beschikbaar in 4K",
|
||||
"components.ManageSlideOver.opentautulli": "Openen in Tautulli",
|
||||
"components.ManageSlideOver.opentautulli": "In Tautulli openen",
|
||||
"components.ManageSlideOver.pastdays": "Afgelopen {days, number} dagen",
|
||||
"components.ManageSlideOver.playedby": "Afgespeeld door",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {keer afgespeeld} other {keer afgespeeld}}",
|
||||
@@ -999,8 +999,8 @@
|
||||
"components.StatusBadge.managemedia": "{mediaType} beheren",
|
||||
"components.StatusBadge.openinarr": "Openen in {arr}",
|
||||
"components.StatusBadge.playonplex": "Afspelen op {mediaServerName}",
|
||||
"components.UserProfile.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex-kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.MovieDetails.digitalrelease": "Digitale uitgave",
|
||||
"components.UserProfile.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.MovieDetails.digitalrelease": "Digitale release",
|
||||
"i18n.restartRequired": "Opnieuw opstarten vereist",
|
||||
"components.PermissionEdit.viewrecentDescription": "Toestemming geven om de lijst met onlangs toegevoegde media weer te geven.",
|
||||
"components.PermissionEdit.viewrecent": "Onlangs toegevoegd weergeven",
|
||||
@@ -1030,27 +1030,27 @@
|
||||
"components.TvDetails.seasonstitle": "Seizoenen",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Jouw kijklijst",
|
||||
"components.Discover.plexwatchlist": "Jouw kijklijst",
|
||||
"components.MovieDetails.physicalrelease": "Fysieke uitgave",
|
||||
"components.MovieDetails.physicalrelease": "Fysieke release",
|
||||
"components.PermissionEdit.autorequest": "Automatisch aanvragen",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex-kijklijst synchroniseren",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Kijklijst synchroniseren",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Series automatisch aanvragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch series op je <PlexWatchlistSupportLink>Plex-kijklijst</PlexWatchlistSupportLink> aanvragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch films op je <PlexWatchlistSupportLink>Plex-kijklijst</PlexWatchlistSupportLink> aanvragen",
|
||||
"components.PermissionEdit.autorequestDescription": "Toestemming geven om niet-4K media in je Plex-kijklijst automatisch aan te vragen.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch series op je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> aanvragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch films op je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> aanvragen",
|
||||
"components.PermissionEdit.autorequestDescription": "Toestemming geven om niet-4K media in je Plex Kijklijst automatisch aan te vragen.",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex-kijklijst",
|
||||
"components.MovieDetails.theatricalrelease": "Bioscoopuitgave",
|
||||
"components.MovieDetails.theatricalrelease": "Bioscooprelease",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Aanvraag automatisch ingediend",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Ontvang een melding wanneer er automatisch nieuwe mediaverzoeken worden ingediend voor items op je Plex-kijklijst.",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Toestemming geven om niet-4K series in je Plex-kijklijst automatisch aan te vragen.",
|
||||
"components.PermissionEdit.viewwatchlists": "Plex-kijklijsten bekijken",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Toestemming verlenen om de Plex-kijklijsten van andere gebruikers te bekijken.",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Ontvang een melding wanneer er automatisch nieuwe mediaverzoeken worden ingediend voor items op je Plex Kijklijst.",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Toestemming geven om niet-4K series in je Plex Kijklijst automatisch aan te vragen.",
|
||||
"components.PermissionEdit.viewwatchlists": "Plex Kijklijsten bekijken",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Toestemming verlenen om de Plex Kijklijsten van andere gebruikers te bekijken.",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Details bekijken",
|
||||
"components.Settings.advancedTooltip": "Deze instelling onjuist configureren, kan resulteren in gebroken functionaliteit",
|
||||
"components.StatusChecker.reloadApp": "{applicationTitle} opnieuw laden",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.StatusChecker.appUpdatedDescription": "Klik op de onderstaande knop om de toepassing opnieuw te laden.",
|
||||
"components.UserProfile.plexwatchlist": "Plex-kijklijst",
|
||||
"components.UserProfile.plexwatchlist": "Plex Kijklijst",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Films automatisch aanvragen",
|
||||
"components.TvDetails.manageseries": "Serie beheren",
|
||||
"components.MovieDetails.managemovie": "Film beheren",
|
||||
@@ -1075,7 +1075,7 @@
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmverzoeken",
|
||||
"components.Layout.UserDropdown.requests": "Verzoeken",
|
||||
"components.RequestBlock.decline": "Verzoek weigeren",
|
||||
"components.Discover.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex-kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.Discover.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.RequestBlock.delete": "Verzoek verwijderen",
|
||||
"components.RequestBlock.edit": "Verzoek bewerken",
|
||||
"components.RequestBlock.lastmodifiedby": "Laatst gewijzigd door",
|
||||
@@ -1107,7 +1107,7 @@
|
||||
"components.Discover.customizediscover": "Ontdekken aanpassen",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Verwijderen",
|
||||
"components.Discover.resetfailed": "Er is iets fout gegaan bij het resetten van de instellingen van Ontdekken.",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex-kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Jouw kijklijst",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Onlangs toegevoegd",
|
||||
"components.Discover.networks": "Netwerken",
|
||||
@@ -1138,7 +1138,7 @@
|
||||
"components.Discover.updatesuccess": "Instellingen Ontdekken bijgewerkt.",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Populariteit oplopend",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Populariteit aflopend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Verschijningsdatum oplopend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Releasedatum oplopend",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titel oplopend (A-Z)",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titel aflopend (Z-A)",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-beoordeling oplopend",
|
||||
@@ -1148,8 +1148,8 @@
|
||||
"components.Discover.DiscoverTv.discovertv": "Series",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Eerste uitzenddatum oplopend",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Populariteit aflopend",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel oplopend (A-Z)",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel aflopend (Z-A)",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel (A-Z) oplopend",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel (Z-A) aflopend",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# filter actief} other {# filters actief}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Actieve filters wissen",
|
||||
"components.Discover.FilterSlideover.filters": "Filters",
|
||||
@@ -1159,8 +1159,8 @@
|
||||
"components.Discover.FilterSlideover.keywords": "Trefwoorden",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Oorspronkelijke taal",
|
||||
"components.Discover.FilterSlideover.ratingText": "Beoordelingen tussen {minValue} en {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Verschijningsdatum",
|
||||
"components.Discover.FilterSlideover.runtime": "Speelduur",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Releasedatum",
|
||||
"components.Discover.FilterSlideover.runtime": "Duur",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} minuten looptijd",
|
||||
"components.Discover.FilterSlideover.studio": "Studio",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "TMDB-gebruikersscore",
|
||||
@@ -1189,7 +1189,7 @@
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# filter actief} other {# filters actief}}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Films",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-beoordeling aflopend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Verschijningsdatum aflopend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Releasedatum aflopend",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Populariteit oplopend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-beoordeling oplopend",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Eerste uitzenddatum aflopend",
|
||||
@@ -1290,24 +1290,24 @@
|
||||
"i18n.collection": "Collectie",
|
||||
"components.UserProfile.localWatchlist": "Kijklijst van {username}",
|
||||
"components.Setup.signinWithPlex": "Vul de Plex gegevens in",
|
||||
"components.Settings.jellyfinSettingsDescription": "Configureer optioneel de interne en externe eindpunten voor je {mediaServerName}-server. Meestal verschilt de externe URL van de interne URL. Als je wilt doorverwijzen naar een andere pagina voor wachtwoordherstel, kun je een aangepaste URL voor wachtwoordherstel instellen voor het aanmelden met {mediaServerName}. Je kunt ook de API-sleutel voor Jellyfin wijzigen, die eerder automatisch is gegenereerd.",
|
||||
"components.Settings.jellyfinSettingsDescription": "Configureer optioneel de interne en externe eindpunten voor de {mediaServerName} server. In de meeste gevallen verschilt de externe URL met de interne URL. Een aangepaste wachtwoord reset URL kan ook gebruikt worden voor de {mediaServerName} login, voor het geval dat je doorverwezen wilt worden naar een andere wachtwoord reset pagina. Je kunt ook de Jellyfin API-sleutel wijzigen, die eerder automatisch is gegenereerd.",
|
||||
"components.Settings.jellyfinsettingsDescription": "Configureer de instellingen voor uw {mediaServerName} server. {mediaServerName} scanned uw {mediaServerName} bibliotheken om te zien welke content beschikbaar is.",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Is succesvol verwijderd van de kijklijst!",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> succesvol toegevoegd aan de kijklijst!",
|
||||
"components.TitleCard.watchlistCancel": "kijklijst voor <strong>{title}</strong> is geannuleerd.",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName}-{userCount, plural, one {gebruiker} other {gebruikers}} succesvol geïmporteerd!",
|
||||
"components.UserList.newJellyfinsigninenabled": "De instelling <strong>Nieuwe {mediaServerName}-aanmelding gebruiken</strong> is momenteel ingeschakeld. {mediaServerName}-gebruikers met toegang tot de bibliotheek hoeven niet geïmporteerd te worden om zich te kunnen aanmelden.",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} succesvol geimporteerd!",
|
||||
"components.UserList.newJellyfinsigninenabled": "De <strong>Gebruik Nieuwe {mediaServerName} Login</strong> instelling staat momenteel aan. {mediaServerName} gebruikers met toegang tot de bibliotheek, hoeven niet geïmporteerd te worden om in te kunnen loggen.",
|
||||
"components.Login.back": "Ga terug",
|
||||
"components.Login.invalidurlerror": "Kan geen verbinding maken met de {mediaServerName} server.",
|
||||
"components.TvDetails.addtowatchlist": "Toevoegen aan kijklijst",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "URL basis mag niet eindigen met een schuine streep",
|
||||
"components.Selector.returningSeries": "Terugkerende serie",
|
||||
"components.MovieDetails.addtowatchlist": "Toevoegen aan kijklijst",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd van je kijklijst!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> is succesvol toegevoegd aan je kijklijst!",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd van de kijklijst!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Geldig e-mailadres vereist",
|
||||
"components.Login.adminerror": "Je moet een beheerdersaccount gebruiken om je aan te melden.",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd uit de kijklijst!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> is succesvol toegevoegd aan de kijklijst!",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd uit de kijklijst!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Geldig e-mailadres verplicht",
|
||||
"components.Login.adminerror": "Je moet een beheerdersaccount gebruiken om in te loggen.",
|
||||
"components.Selector.inProduction": "In productie",
|
||||
"components.Discover.FilterSlideover.status": "Status",
|
||||
"components.Login.hostname": "{mediaServerName} URL",
|
||||
@@ -1315,10 +1315,10 @@
|
||||
"components.Login.servertype": "Servertype",
|
||||
"components.Login.validationHostnameRequired": "Je moet een geldige hostnaam of IP-adres opgeven",
|
||||
"components.Login.validationPortRequired": "Je moet een geldig poortnummer opgeven",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "URL-basis moet beginnen met een schuine streep",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "URL basis moet beginnen met een schuine streep",
|
||||
"components.Login.validationUrlTrailingSlash": "URL mag niet eindigen met een schuine streep",
|
||||
"components.Login.validationservertyperequired": "Kies een servertype",
|
||||
"components.MovieDetails.removefromwatchlist": "Verwijderen van kijklijst",
|
||||
"components.MovieDetails.removefromwatchlist": "Verwijderen uit kijklijst",
|
||||
"components.MovieDetails.watchlistError": "Er is iets misgegaan, probeer het opnieuw.",
|
||||
"components.RequestList.RequestItem.profileName": "Profiel",
|
||||
"components.Selector.canceled": "Geannuleerd",
|
||||
@@ -1337,71 +1337,14 @@
|
||||
"components.Setup.configplex": "Configureer Plex",
|
||||
"components.Setup.servertype": "Kies servertype",
|
||||
"components.Setup.signinWithEmby": "Vul de Emby gegevens in",
|
||||
"components.Setup.subtitle": "Begin met het kiezen van je mediaserver",
|
||||
"components.Setup.subtitle": "egin met het kiezen van je mediaserver",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.TvDetails.removefromwatchlist": "Verwijderen uit kijklijst",
|
||||
"components.TvDetails.watchlistError": "Er is iets misgegaan, probeer het opnieuw.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> is succesvol toegevoegd aan de kijklijst!",
|
||||
"components.UserList.username": "Gebruikersnaam",
|
||||
"components.UserList.validationUsername": "Je moet een gebruikersnaam opgeven",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "E-mailadres vereist",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "E-mailadres verplicht",
|
||||
"components.Login.enablessl": "Gebruik SSL",
|
||||
"components.Login.urlBase": "URL basis",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Streamingdiensten tonen op regionale beschikbaarheid",
|
||||
"component.BlacklistBlock.blacklistdate": "Datum geblokkeerd",
|
||||
"components.Settings.scanbackground": "Het scannen gebeurt op de achtergrond. In de tussentijd kun je verdergaan met het instelproces.",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> staat niet op de blokkeerlijst.",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Je moet een geldige poort opgeven",
|
||||
"components.Layout.Sidebar.blacklist": "Blokkeerlijst",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Streamingdiensten tonen op regionale beschikbaarheid",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Toestemming geven om geblokkeerde media te beheren.",
|
||||
"components.RequestList.RequestItem.removearr": "Verwijderen van {arr}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Regio voor ontdekken",
|
||||
"components.Settings.apiKey": "API-sleutel",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> is succesvol geblokkeerd.",
|
||||
"i18n.addToBlacklist": "Toevoegen aan blokkeerlijst",
|
||||
"component.BlacklistBlock.blacklistedby": "Geblokkeerd door",
|
||||
"component.BlacklistModal.blacklisting": "Blokkeren",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Media op de blokkeerlijst beheren.",
|
||||
"components.Blacklist.blacklistdate": "datum",
|
||||
"components.Blacklist.blacklistedby": "{date} door {user}",
|
||||
"components.Blacklist.blacklistsettings": "Instellingen blokkeerlijst",
|
||||
"components.Blacklist.mediaName": "Naam",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb-id",
|
||||
"components.Blacklist.mediaType": "Type",
|
||||
"components.PermissionEdit.blacklistedItems": "Media blokkeren.",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Toestemming geven om media te blokkeren.",
|
||||
"components.PermissionEdit.manageblacklist": "Blokkeerlijst beheren",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Geblokkeerde media inzien.",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Toestemming geven om geblokkeerde media in te zien.",
|
||||
"components.RequestList.sortDirection": "Sorteerrichting wisselen",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Je moet een geldige Discord Role ID opgeven",
|
||||
"components.Settings.Notifications.webhookRoleId": "Role-id melding",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "De role-id die in het webhook-bericht vermeld moet worden. Laat leeg om vermeldingen uit te zetten",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Gebruikersavatars",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Regio voor Ontdekken",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Inhoud filteren op regionale beschikbaarheid",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Regio voor streamen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Inhoud filteren op regionale beschikbaarheid",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Regio voor streamen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Deze e-mail is bezet!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Een andere gebruiker heeft deze gebruikersnaam al. Je moet een e-mail instellen",
|
||||
"i18n.blacklist": "Blokkeerlijst",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> staat al op de blokkeerlijst.",
|
||||
"i18n.blacklistError": "Er ging iets mis; probeer opnieuw.",
|
||||
"i18n.blacklisted": "Geblokkeerd",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> is succesvol verwijderd van de blokkeerlijst.",
|
||||
"i18n.removefromBlacklist": "Verwijderen van blokkeerlijst",
|
||||
"i18n.specials": "Specials",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Plex-verversingstoken",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Genegeerde proxy-adressen",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Gebruik ',' als scheidingsteken en '*' als joker voor subdomeinen",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Proxy omzeilen voor lokale adressen",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S)-proxy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Hostnaam proxy",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Wachtwoord proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxypoort",
|
||||
"components.Settings.SettingsMain.proxySsl": "SSL/TLS gebruiken voor proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Gebruikersnaam proxy",
|
||||
"components.Settings.tip": "Tip"
|
||||
"components.Login.urlBase": "URL basis"
|
||||
}
|
||||
|
||||
@@ -1211,14 +1211,5 @@
|
||||
"components.Discover.emptywatchlist": "Mídia adicionadas à sua <PlexWatchlistSupportLink>Lista Para Assistir do Plex</PlexWatchlistSupportLink> aparecerão aqui.",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Título Desconhecido",
|
||||
"components.Selector.searchGenres": "Selecione os gêneros…",
|
||||
"components.Selector.searchKeywords": "Pesquisar palavras-chave…",
|
||||
"component.BlacklistBlock.blacklistdate": "Data de inclusão na lista negra",
|
||||
"components.Blacklist.blacklistsettings": "Definições da lista negra",
|
||||
"component.BlacklistBlock.blacklistedby": "Colocado na lista negra por",
|
||||
"component.BlacklistModal.blacklisting": "Lista negra",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}2</strong> não está na lista negra.",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Faça a gestão dos conteúdos multimédia colocados na lista negra.",
|
||||
"components.Blacklist.blacklistdate": "data",
|
||||
"components.Blacklist.blacklistedby": "{date} por {user}",
|
||||
"components.Blacklist.mediaName": "Nome"
|
||||
"components.Selector.searchKeywords": "Pesquisar palavras-chave…"
|
||||
}
|
||||
|
||||
@@ -1336,23 +1336,5 @@
|
||||
"components.Settings.invalidurlerror": "Не удалось подключиться к {mediaServerName} серверу.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "Забыли пароль URL",
|
||||
"components.Settings.jellyfinSyncFailedGenericError": "Что-то пошло не так при синхронизации библиотек",
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Библиотеки не найдены",
|
||||
"component.BlacklistBlock.blacklistdate": "Дата внесения в чёрный список",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Управлять медиа в чёрном списке.",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Предоставить разрешение на управление чёрным списком.",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Открыть чёрный список.",
|
||||
"components.Blacklist.mediaType": "Тип",
|
||||
"components.Layout.Sidebar.blacklist": "Чёрный список",
|
||||
"components.PermissionEdit.blacklistedItems": "Внести в чёрный список.",
|
||||
"components.Login.hostname": "Адрес {mediaServerName}",
|
||||
"component.BlacklistBlock.blacklistedby": "Внесено в чёрный список",
|
||||
"component.BlacklistModal.blacklisting": "Внесение в чёрный список",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> не в чёрном списке.",
|
||||
"components.Blacklist.blacklistdate": "дата",
|
||||
"components.Blacklist.blacklistedby": "{date}, {user}",
|
||||
"components.Blacklist.blacklistsettings": "Настройки чёрного списка",
|
||||
"components.Blacklist.mediaName": "Название",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb Id",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Дать права на внесение в чёрный список.",
|
||||
"components.PermissionEdit.manageblacklist": "Управлять чёрным списком"
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Библиотеки не найдены"
|
||||
}
|
||||
|
||||
@@ -272,10 +272,10 @@
|
||||
"components.ManageSlideOver.removearr": "{arr}'dan Kaldır",
|
||||
"components.ManageSlideOver.tvshow": "dizi",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Daha Fazla",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Tüm Oyuncular",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Tüm Kadro",
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "Tüm Ekip",
|
||||
"components.MovieDetails.budget": "Bütçe",
|
||||
"components.MovieDetails.cast": "Oyuncular",
|
||||
"components.MovieDetails.cast": "Kadro",
|
||||
"components.MovieDetails.digitalrelease": "Dijital Sürüm",
|
||||
"components.MovieDetails.downloadstatus": "İndirme Durumu",
|
||||
"components.MovieDetails.managemovie": "Filmi Yönet",
|
||||
@@ -375,7 +375,7 @@
|
||||
"components.PersonDetails.appearsin": "Yer Aldığı İçerikler",
|
||||
"components.PersonDetails.ascharacter": "{character} rolüyle",
|
||||
"components.PersonDetails.birthdate": "Doğumu {birthdate}",
|
||||
"components.PersonDetails.crewmember": "Bilinen İşleri",
|
||||
"components.PersonDetails.crewmember": "Ekibi",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "Giriş Yapılıyor…",
|
||||
"components.PlexLoginButton.signinwithplex": "Giriş Yap",
|
||||
@@ -929,7 +929,7 @@
|
||||
"components.Settings.Notifications.toastDiscordTestFailed": "Discord test bildirimi gönderilemedi.",
|
||||
"components.Settings.RadarrModal.selectMinimumAvailability": "Asgari erişilebilirlik ayarını seç",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Geçerli bir sunucu adresi girmelisin",
|
||||
"components.Settings.SettingsAbout.betawarning": "Bu BETA yazılımdır. Özellikler bozuk ve/veya dengesiz olabilir. Karşılaştığınız herhangi bir sorunu lütfen GitHub'da bildirin!",
|
||||
"components.Settings.SettingsAbout.betawarning": "Bu bir BETA yazılımdır. Özellikler hatalı ya da dengesiz olabilir. Bir hatala karşılaşırsanız lütfen GitHub'dan bildirin!",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Dış kaynaklardan alınan resimleri önbelleğe al (depolama kullanımını arttıracaktır)",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "<WebhookLink>Bir Webhook</WebhookLink> entegrasyonu oluştur",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Discord bildirim ayarları kaydedildi!",
|
||||
@@ -938,7 +938,7 @@
|
||||
"components.Settings.Notifications.webhookUrlTip": "Sunucunuz için bir <DiscordWebhookLink>Webhook</DiscordWebhookLink> entegrasyonu oluştur",
|
||||
"components.Settings.SettingsAbout.outofdate": "Eski Sürüm",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Jellyseerr'in yalnızca geliştirmeye katkıda bulunan veya en son testlere yardımcı olan kişiler için önerilen <code>develop</code> dalını çalıştırıyorsunuz.",
|
||||
"components.Settings.SettingsJobsCache.cachevsize": "Değer Boyutu",
|
||||
"components.Settings.SettingsJobsCache.cachevsize": "Önbelleğin Büyüklüğü",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Ayarlarda etkinleştirildiğinde, Jellyseerr önceden yapılandırılmış harici kaynaklardan gelen görüntüleri proxy'leyecek ve önbelleğe alacaktır. Önbelleğe alınan görüntüler yapılandırma klasörünüze kaydedilir. Dosyaları <code>{appDataPath}/cache/images</code> konumunda bulabilirsiniz.",
|
||||
"components.Settings.SettingsUsers.userSettingsDescription": "Genel ve varsayılan kullanıcı ayarlarını yapılandırın.",
|
||||
"components.Settings.SonarrModal.editsonarr": "Sonarr Sunucusunu Düzenle",
|
||||
@@ -1036,10 +1036,10 @@
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> izleme listesine başarıyla eklendi!",
|
||||
"components.TvDetails.Season.noepisodes": "Bölüm listesi mevcut değil.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Sezon verisi alınırken bir şeyler ters gitti.",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Dizinin Tüm Oyuncuları",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Dizinin Tam Kadrosu",
|
||||
"components.TvDetails.TvCrew.fullseriescrew": "Dizinin Tam Ekibi",
|
||||
"components.TvDetails.anime": "Anime",
|
||||
"components.TvDetails.cast": "Oyuncular",
|
||||
"components.TvDetails.cast": "Kadro",
|
||||
"components.TvDetails.episodeRuntime": "Bölümün Süresi",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} dakika",
|
||||
"components.TvDetails.firstAirDate": "İlk Yayın Tarihi",
|
||||
@@ -1291,7 +1291,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "30 karakterlik <UsersGroupsLink>kullanıcı ya da grup kimliği</UsersGroupsLink>",
|
||||
"components.UserProfile.emptywatchlist": "<PlexWatchlistSupportLink>Plex İzleme Listenize</PlexWatchlistSupportLink> eklenen içerikler burada gözükeceklerdir.",
|
||||
"i18n.restartRequired": "Yeniden Başlatma Gereklidir",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Discord kullanıcı hesabınızla ilişkili <FindDiscordIdLink>çok haneli kimlik numarası</FindDiscordIdLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Discord hesabınız ile bağıntılı <FindDiscordIdLink>numaralardan oluşan kullanıcı ID'niz</FindDiscordIdLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Pushbullet bildirim ayarları kaydedildi!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Bir sohbet başlatın</TelegramBotLink> ve <GetIdBotLink>@get_id_bot</GetIdBotLink> ID'li botunuzu ekleyin. Son olarak <code>/my_id</code> komutunu kullanın",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Geçerli bir uygulama token'i sağlamalısınız",
|
||||
|
||||
@@ -1375,8 +1375,5 @@
|
||||
"i18n.addToBlacklist": "Додати в чорний список",
|
||||
"i18n.blacklist": "Чорний список",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong>було успішно видалено з чорного списку.",
|
||||
"i18n.blacklisted": "У чорному списку",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Аватар користувача",
|
||||
"components.PermissionEdit.manageblacklist": "Керувати чорним списком",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Ви повинні надати дійсний ідентифікатор ролі Discord"
|
||||
"i18n.blacklisted": "У чорному списку"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2021",
|
||||
"target": "es5",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
|
||||
Reference in New Issue
Block a user